From 02b96cb10fa59e4a19b04ca3252487df002376bb Mon Sep 17 00:00:00 2001 From: nemukemo Date: Mon, 8 Jul 2024 09:21:00 +0900 Subject: [PATCH] =?UTF-8?q?ID=E4=BD=9C=E6=88=90=E3=80=81=E3=82=BB=E3=83=83?= =?UTF-8?q?=E3=83=88=E3=82=A2=E3=83=83=E3=83=97=E3=81=AE=E5=87=A6=E7=90=86?= =?UTF-8?q?=E3=82=92=E3=81=97=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F=E5=A0=B4?= =?UTF-8?q?=E5=90=88=E3=81=AB=E3=83=AB=E3=83=BC=E3=83=88=E8=A1=A8=E7=A4=BA?= =?UTF-8?q?=E3=82=92=E6=8A=BC=E3=81=97=E3=81=9F=E3=81=A8=E3=81=8D=E3=81=AB?= =?UTF-8?q?=E5=85=A5=E5=8A=9B=E3=82=92=E4=BF=83=E3=81=99=E3=83=80=E3=82=A4?= =?UTF-8?q?=E3=82=A2=E3=83=AD=E3=82=B0=E3=81=AE=E8=A1=A8=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/oplogy/MainActivity.java | 50 +++++++++++++++++-- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/example/oplogy/MainActivity.java b/app/src/main/java/com/example/oplogy/MainActivity.java index fa7b8f5..1062542 100644 --- a/app/src/main/java/com/example/oplogy/MainActivity.java +++ b/app/src/main/java/com/example/oplogy/MainActivity.java @@ -8,6 +8,7 @@ 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; @@ -18,9 +19,13 @@ import com.google.gson.Gson; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; public class MainActivity extends AppCompatActivity implements View.OnClickListener { @@ -88,7 +93,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe Log.d("MainActivity", "geocodeAddress"); - //TODO:classIdの初期値を取得 ExecutorService executor = Executors.newSingleThreadExecutor(); executor.execute(() -> { try { @@ -137,9 +141,28 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe // ルート作成のクリック処理 if (view == root) { imageRoot.setImageResource(R.drawable.pin); - fetchDataAndCreateRoute(); - + if (isClassIdSet()) { + isSetupExists(classId).thenAccept(setupExists -> { + if (setupExists) { + fetchDataAndCreateRoute(); + } else { + runOnUiThread(() -> { + Toast.makeText(this, "セットアップが設定されていません", Toast.LENGTH_SHORT).show(); + }); + } + }).exceptionally(ex -> { + ex.printStackTrace(); + runOnUiThread(() -> { + Toast.makeText(this, "エラーが発生しました", Toast.LENGTH_SHORT).show(); + }); + return null; + }); + } else { + Toast.makeText(this, "クラスIDが設定されていません", Toast.LENGTH_SHORT).show(); + } } + + if (view == imageRoot) { imageRoot.setImageResource(R.drawable.pin); fetchDataAndCreateRoute(); @@ -220,6 +243,25 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe dialog.show(); } + private boolean isClassIdSet() { + // classIdが0より大きい場合、trueを返す + return classId > 0; + } + + private CompletableFuture isSetupExists(int classId) { + final ExecutorService executorService = Executors.newSingleThreadExecutor(); + return CompletableFuture.supplyAsync(() -> { + AppDatabase db = getDatabaseInstance(); + SetUpTableDao setUpTableDao = db.setUpTableDao(); + List checkData = setUpTableDao.getAll(); + for (SetUpTable setUpTable : checkData) { + if (setUpTable.classId == classId) { + return true; + } + } + return false; + }, executorService).whenComplete((result, throwable) -> executorService.shutdown()); + } //ルート作成の非同期処理 private void fetchDataAndCreateRoute() { @@ -334,7 +376,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe private AppDatabase getDatabaseInstance() { - return Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "SetUpTable").build(); + return Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "SetUpTable").fallbackToDestructiveMigration().build(); }