docking #36

Merged
Utahshi merged 4 commits from docking into master 2024-07-05 03:04:51 +00:00
6 changed files with 86 additions and 38 deletions

View File

@ -6,7 +6,7 @@
<GradleProjectSettings>
<option name="testRunner" value="GRADLE" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="Embedded JDK" />
<option name="gradleJvm" value="jbr-17" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />

View File

@ -46,9 +46,6 @@
<activity
android:name=".RootSearchActivity"
android:exported="false" />
<activity
android:name=".CreateUUID"
android:exported="false" />
<activity
android:name=".DialogFragment"
android:exported="false" />

View File

@ -23,7 +23,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
//保護者の希望とSetUpActivityによって設定された情報をもとにスケジュールとルートを作成する
public class CreateRoot {
public class CreateSchedule {
MyDataClass data;//Firestoreから受け取ったdataを入れる変数
String startTimeHomeVisitString;//家庭訪問の開始時間
String endTimeHomeVisitString;//家庭訪問の終了時間
@ -43,7 +43,7 @@ public class CreateRoot {
String[] testdata = {"20240604", "20240605", "20240606"};
public CreateRoot(AppCompatActivity activity) {
public CreateSchedule(AppCompatActivity activity) {
this.db = Room.databaseBuilder(activity.getApplicationContext(), AppDatabase.class, "SetUpTable").build();
}
@ -92,7 +92,7 @@ public class CreateRoot {
//スケジュールの重複の確認
if (!notDuplicatesBoolean) {
//第二希望日で同じ処理を行う
Log.d("CreateRoot", "第二希望");
Log.d("CreateSchedule", "第二希望");
secondSetData(myDataList);
secondTimeZoneSort(myDataList);
notSecondDuplicatesBoolean = secondCreateSchedule(myDataList, intervalArrayInt);
@ -104,7 +104,7 @@ public class CreateRoot {
outPutLogSchedule(myDataList);
return notSecondDuplicatesBoolean;
}
Log.d("CreateRoot", "重複によるエラー");
Log.d("CreateSchedule", "重複によるエラー");
return !notSecondDuplicatesBoolean;
}
@ -211,12 +211,12 @@ public class CreateRoot {
private void outPutLogSort(List<MyDataClass> myDataList) {
for (int i = 0; i < myDataList.size(); i++) {
Log.d("CreateRoot", "(index: " + i + ") data: " + myDataList.get(i).getPatronName());
Log.d("CreateRoot", "(index: " + i + ") data: " + myDataList.get(i).getClass());
Log.d("CreateRoot", "(index: " + i + ") timezone: " + myDataList.get(i).getTimezone());
Log.d("CreateRoot", "(index: " + i + ") startDate: " + myDataList.get(i).getStartDateString());
Log.d("CreateRoot:outPutLogBeforeSort", "parentStartTimeString: " + myDataList.get(i).getParentStartTimeString());
Log.d("CreateRoot:outPutLogBeforeSort", "parentEndTimeString: " + myDataList.get(i).getParentEndTimeString());
Log.d("CreateSchedule", "(index: " + i + ") data: " + myDataList.get(i).getPatronName());
Log.d("CreateSchedule", "(index: " + i + ") data: " + myDataList.get(i).getClass());
Log.d("CreateSchedule", "(index: " + i + ") timezone: " + myDataList.get(i).getTimezone());
Log.d("CreateSchedule", "(index: " + i + ") startDate: " + myDataList.get(i).getStartDateString());
Log.d("CreateSchedule:outPutLogBeforeSort", "parentStartTimeString: " + myDataList.get(i).getParentStartTimeString());
Log.d("CreateSchedule:outPutLogBeforeSort", "parentEndTimeString: " + myDataList.get(i).getParentEndTimeString());
}
}
@ -234,11 +234,11 @@ public class CreateRoot {
//Roomからのデータ取得に関するログ
void outPutLogRoomData() {
Log.d("CreateRoot:outPutLogRoomData", "開始時間" + startTimeHomeVisitString);
Log.d("CreateRoot:outPutLogRoomData", "終了時刻" + endTimeHomeVisitString);
Log.d("CreateRoot:outPutLogRoomData", "一家庭当たりの所要時間" + intervalTimeString);
Log.d("CreateRoot:outPutLogRoomData", "休憩開始時刻" + startBreakTimeString);
Log.d("CreateRoot:outPutLogRoomData", "休憩終了時刻" + endBreakTimeString);
Log.d("CreateSchedule:outPutLogRoomData", "開始時間" + startTimeHomeVisitString);
Log.d("CreateSchedule:outPutLogRoomData", "終了時刻" + endTimeHomeVisitString);
Log.d("CreateSchedule:outPutLogRoomData", "一家庭当たりの所要時間" + intervalTimeString);
Log.d("CreateSchedule:outPutLogRoomData", "休憩開始時刻" + startBreakTimeString);
Log.d("CreateSchedule:outPutLogRoomData", "休憩終了時刻" + endBreakTimeString);
}
private void timeCalculation(String endTimeHomeVisitString, String startBreakTime, String endBreakTime) {
@ -284,7 +284,7 @@ public class CreateRoot {
private void outPutLogIntervalArray(int[][][] intervalArrayInt) {
for (int i = 0; i < intervalArrayInt[0].length; i++) {
Log.d("CreateRoot", "inteintervalArray:(intex:" + i + ") :" + intervalArrayInt[0][i][0]);
Log.d("CreateSchedule", "inteintervalArray:(intex:" + i + ") :" + intervalArrayInt[0][i][0]);
}
}
@ -360,19 +360,19 @@ public class CreateRoot {
double latitudeDouble = addressResult.getLatitude();
double longitudeDouble = addressResult.getLongitude();
//保護者の住所の緯度経度をmyDataListに追加する
myDataList.get(i).setLatLng(new LatLng(latitudeDouble, longitudeDouble));
myDataList.get(i).setLatLngString(String.valueOf(new LatLng(latitudeDouble, longitudeDouble)));
}
}
} catch (IOException e) {
Log.e("CreateRoot", "緯度経度の取得に失敗: " + e);
Log.e("CreateSchedule", "緯度経度の取得に失敗: " + e);
}
}
private void outPutLogSchedule(List<MyDataClass> myDataList) {
for (int i = 0; i < myDataList.size(); i++) {
Log.d("CreateRoot:outPutLogSchedule", "(index: " + i + ") data: " + myDataList.get(i));
Log.d("CreateRoot:outPutLogSchedule", "(index: " + i + ") Schedule: " + myDataList.get(i).getSchedule());
Log.d("CreateRoot", "(index: " + i + ") LatLng" + myDataList.get(i).getLatLng());
Log.d("CreateSchedule:outPutLogSchedule", "(index: " + i + ") data: " + myDataList.get(i));
Log.d("CreateSchedule:outPutLogSchedule", "(index: " + i + ") Schedule: " + myDataList.get(i).getSchedule());
Log.d("CreateSchedule", "(index: " + i + ") LatLng" + myDataList.get(i).getLatLngString());
}
}
}

View File

@ -2,18 +2,19 @@ package com.example.oplogy;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.room.Room;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
@ -87,6 +88,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
Log.d("MainActivity", "geocodeAddress");
//TODO:classIdの初期値を取得
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(() -> {
try {
@ -274,12 +276,13 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
//final宣言することによってスレッドセーフになる(ラムダ式内で使えるようにする)
final List<MyDataClass> finalMyDataList = myDataList;
CreateRoot createRoot = new CreateRoot(MainActivity.this);
Boolean notDuplicates = createRoot.receiveData(finalMyDataList, getApplicationContext());
CreateSchedule createSchedule = new CreateSchedule(MainActivity.this);
Boolean notDuplicates = createSchedule.receiveData(myDataList, getApplicationContext());
runOnUiThread(() -> {
if (notDuplicates) {
Log.d("MainActivity", "スケジュール作成成功");
saveMyDataList(finalMyDataList);
Intent toRoot = new Intent(MainActivity.this, Maps.class);
startActivity(toRoot);
} else {
@ -292,6 +295,19 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
executor.shutdown();
});
}
private void saveMyDataList(List<MyDataClass> myDataList) {
// 共有プリファレンスのインスタンスを取得
SharedPreferences sharedPreferences = getSharedPreferences("MyDataList", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
// MyDataListをJSON形式に変換
Gson gson = new Gson();
String json = gson.toJson(myDataList);
// JSON形式のデータを共有プリファレンスに保存
editor.putString("myDataList", json);
editor.apply();
}
private void showErrorDialog(List<MyDataClass> myDataList) {
List<Integer> studentNumbers = new ArrayList<>();

View File

@ -1,7 +1,10 @@
package com.example.oplogy;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Parcelable;
import android.util.Log;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
@ -11,13 +14,19 @@ import android.widget.ImageView;
import androidx.fragment.app.FragmentActivity;
import com.example.oplogy.databinding.MapsBinding;
import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
public class Maps extends FragmentActivity implements View.OnClickListener {
private WebView webView;
ImageView backMain;
private MapsBinding binding;
private ArrayList<Parcelable> myDataList;;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -32,9 +41,36 @@ public class Maps extends FragmentActivity implements View.OnClickListener {
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
List<MyDataClass> myDataList=getMyDataList();
String latlngString = "";
for (int i = 0; i < myDataList.size(); i++) {
String latlng = myDataList.get(i).getLatLngString();
int startIndex = latlng.indexOf("(") + 1;
int endIndex = latlng.indexOf(")");
String latlngOnly = latlng.substring(startIndex, endIndex);
latlngString += latlngOnly;
if (i < myDataList.size() - 1) {
latlngString += "/";
}
}
Log.d("Maps","latlngString"+latlngString);
loadMapInWebView(latlngString);
}
// ここにデータを入れておいてください処理は[/]で区切っています
loadMapInWebView("35.09050879999539,136.87845379325216/35.09284820618655,136.88165119390393/35.09364708442631,136.88171563326418");
// 共有プリファレンスからMyDataListを取得するメソッド
private List<MyDataClass> getMyDataList() {
// 共有プリファレンスのインスタンスを取得
SharedPreferences sharedPreferences = getSharedPreferences("MyDataList", MODE_PRIVATE);
// 共有プリファレンスからJSON形式のデータを取得
String json = sharedPreferences.getString("myDataList", "");
// JSON形式のデータをMyDataListに変換
Gson gson = new Gson();
Type type = new TypeToken<List<MyDataClass>>() {}.getType();
List<MyDataClass> myDataList = gson.fromJson(json, type);
return myDataList;
}
// WebViewの処理ですMapの中の処理をやっています

View File

@ -1,6 +1,5 @@
package com.example.oplogy;
import com.google.android.gms.maps.model.LatLng;
import com.google.firebase.Timestamp;
import java.util.List;
@ -30,7 +29,7 @@ public class MyDataClass {
private Long secondDayTimezoneLong;
private String secondDayParentStartTimeString;
private String secondDayParentEndTimeString;
private LatLng latLng;
private String latLngString;
public MyDataClass(String patronName, int classId, List<String> address, List<Timestamp> firstDay, int studentNumber, String childName, List<Timestamp> thirdDay, List<Timestamp> secondDay) {
@ -239,11 +238,11 @@ public class MyDataClass {
return secondDayStartDateString;
}
public void setLatLng(LatLng latLng) {
this.latLng=latLng;
public void setLatLngString(String latLng) {
this.latLngString=latLng;
}
public LatLng getLatLng() {
return latLng;
public String getLatLngString() {
return latLngString;
}
}