diff --git a/app/src/main/java/com/example/oplogy/CreateRoot.java b/app/src/main/java/com/example/oplogy/CreateRoot.java index c921b6d..1ea50d4 100644 --- a/app/src/main/java/com/example/oplogy/CreateRoot.java +++ b/app/src/main/java/com/example/oplogy/CreateRoot.java @@ -1,5 +1,8 @@ package com.example.oplogy; +import android.content.Context; +import android.location.Address; +import android.location.Geocoder; import android.content.Context; import android.content.SharedPreferences; import android.util.Log; @@ -7,13 +10,17 @@ import android.util.Log; import androidx.appcompat.app.AppCompatActivity; import androidx.room.Room; +import com.google.android.gms.maps.model.LatLng; +import com.google.android.gms.maps.model.LatLng; import com.google.firebase.Timestamp; +import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Comparator; import java.util.Date; import java.util.List; +import java.util.Locale; import java.util.TimeZone; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -34,8 +41,10 @@ public class CreateRoot { private final AppDatabase db; private int arraySize; + boolean Duplicates=true; + boolean secondDuplicates=true; - boolean secondDuplicates; + private Context context; // String testdata[] = {"20240604", "20240605", "20240606"}; String[] testdata; @@ -97,12 +106,12 @@ public class CreateRoot { outPutLogIntervalArray(intervalArray); //スケジュール作成 - boolean Duplicates = createSchedule(myDataList, intervalArray); + Duplicates = createSchedule(myDataList, intervalArray); //重複によるエラー確認 if (!Duplicates) { sortSchedule(myDataList); - outPutLogSchedule(myDataList); + } else { //第二希望日で同じ処理を行う Log.d("CreateRoot", "第二希望"); @@ -111,13 +120,16 @@ public class CreateRoot { secondDuplicates = secondCreateSchedule(myDataList, intervalArray); if (!secondDuplicates) { sortSchedule(myDataList); - outPutLogSchedule(myDataList); + } else { Log.d("CreateRoot", "重複によるエラー"); } } }); + if (!secondDuplicates) { + geocodeAddress(myDataList); + outPutLogSchedule(myDataList); return true; } else { return false; @@ -360,12 +372,30 @@ public class CreateRoot { myDataList.sort(comparator); } + + + private void geocodeAddress(List myDataList) { + try { + Geocoder geocoder = new Geocoder(context, Locale.getDefault()); + for(int i=0;i addresses = geocoder.getFromLocationName(myDataList.get(i).getAddress().toString(), 1); + if (addresses != null && !addresses.isEmpty()) { + Address addressResult = addresses.get(0); + double latitude = addressResult.getLatitude(); + double longitude = addressResult.getLongitude(); + myDataList.get(i).setLatLng(new LatLng(latitude, longitude)); + } + } + } catch (IOException e) { + Log.e("CreateRoot", "緯度経度の取得に失敗: " +e); + } + } + private void outPutLogSchedule(List 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:outPutLogSchedule", "(index: " + i + ") date: " + myDataList.get(i).getStartDateString()); + Log.d("CreateRoot","(index: " + i + ") LatLng"+myDataList.get(i).getLatLng()); } } - } diff --git a/app/src/main/java/com/example/oplogy/MyDataClass.java b/app/src/main/java/com/example/oplogy/MyDataClass.java index c3d4d11..c3108cb 100644 --- a/app/src/main/java/com/example/oplogy/MyDataClass.java +++ b/app/src/main/java/com/example/oplogy/MyDataClass.java @@ -1,10 +1,12 @@ package com.example.oplogy; +import com.google.android.gms.maps.model.LatLng; import com.google.firebase.Timestamp; import java.util.List; public class MyDataClass { + String patronName; int classId; List address; @@ -28,6 +30,7 @@ public class MyDataClass { private Long secondDayTimezone; private String secondDayParentStartTimeString; private String secondDayParentEndTimeString; + private LatLng latLng; public MyDataClass(String patronName, int classId, List address, List firstDay, int studentNumber, String childName, List thirdDay, List secondDay) { @@ -235,4 +238,12 @@ public class MyDataClass { public String getSecondDayStartDateString() { return secondDayStartDateString; } + + public void setLatLng(LatLng latLng) { + this.latLng=latLng; + } + + public LatLng getLatLng() { + return latLng; + } } diff --git a/app/src/main/java/com/example/oplogy/SetUpActivity.java b/app/src/main/java/com/example/oplogy/SetUpActivity.java index 418f933..d533095 100644 --- a/app/src/main/java/com/example/oplogy/SetUpActivity.java +++ b/app/src/main/java/com/example/oplogy/SetUpActivity.java @@ -141,11 +141,8 @@ public class SetUpActivity extends FragmentActivity executor.execute(() -> { //roomのインスタンスを作成 - AppDatabase db = Room.databaseBuilder( - getApplicationContext(), - AppDatabase.class, - "SetUpTable" - ) + AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "SetUpTable") + .fallbackToDestructiveMigration() .build(); SetUpTableDao setUpTableDao = db.setUpTableDao(); // Roomの操作を行う