From 0c569b0a57e9c6d02c253cc8e6c1bc7fcaf20113 Mon Sep 17 00:00:00 2001 From: nemukemo Date: Fri, 28 Jun 2024 12:40:00 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E3=83=87=E3=83=90=E3=83=83=E3=82=B0?= =?UTF-8?q?=E3=81=AA=E3=81=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/example/oplogy/AppDatabase.java | 2 +- app/src/main/java/com/example/oplogy/MainActivity.java | 8 ++++++-- app/src/main/java/com/example/oplogy/SetUpActivity.java | 7 ++----- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/example/oplogy/AppDatabase.java b/app/src/main/java/com/example/oplogy/AppDatabase.java index c52259d..091f71e 100644 --- a/app/src/main/java/com/example/oplogy/AppDatabase.java +++ b/app/src/main/java/com/example/oplogy/AppDatabase.java @@ -3,7 +3,7 @@ package com.example.oplogy; import androidx.room.Database; import androidx.room.RoomDatabase; -@Database(entities = {SetUpTable.class}, version = 2, exportSchema = false) +@Database(entities = {SetUpTable.class}, version = 3, exportSchema = false) public abstract class AppDatabase extends RoomDatabase { // データベースにアクセスするためのメソッドを提供する public abstract SetUpTableDao setUpTableDao(); diff --git a/app/src/main/java/com/example/oplogy/MainActivity.java b/app/src/main/java/com/example/oplogy/MainActivity.java index e759dc1..6f1aac7 100644 --- a/app/src/main/java/com/example/oplogy/MainActivity.java +++ b/app/src/main/java/com/example/oplogy/MainActivity.java @@ -176,7 +176,9 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe // タスク1: ローカルDBから生徒数を取得してtotalStudentと比較 executor.execute(() -> { - AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "SetUpTable").build(); + AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "SetUpTable") + .fallbackToDestructiveMigration() + .build(); SetUpTableDao setUpTableDao = db.setUpTableDao(); Log.d("MainActivity", "db" + setUpTableDao.getAll()); @@ -341,7 +343,9 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe //roomからclassIdを取得 ExecutorService executor = Executors.newSingleThreadExecutor(); executor.execute(() -> { - AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "SetUpTable").build(); + AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "SetUpTable") + .fallbackToDestructiveMigration() + .build(); SetUpTableDao setUpTableDao = db.setUpTableDao(); classId = setUpTableDao.getClassId(); }); diff --git a/app/src/main/java/com/example/oplogy/SetUpActivity.java b/app/src/main/java/com/example/oplogy/SetUpActivity.java index 851d0f1..1f769c6 100644 --- a/app/src/main/java/com/example/oplogy/SetUpActivity.java +++ b/app/src/main/java/com/example/oplogy/SetUpActivity.java @@ -127,11 +127,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の操作を行う -- 2.45.1 From 8d4c4a0c4c9e5dfd1ad2764ece4f258a58aa2fa5 Mon Sep 17 00:00:00 2001 From: nemukemo Date: Mon, 1 Jul 2024 19:18:01 +0900 Subject: [PATCH 2/2] =?UTF-8?q?classId=E3=81=AE=E3=83=AD=E3=82=B8=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=81=A8classId=E3=81=AE=E5=91=BC=E3=81=B3=E5=87=BA?= =?UTF-8?q?=E3=81=97=E3=82=92=E4=B8=A1=E6=96=B9=E5=90=8C=E3=81=98=E3=83=96?= =?UTF-8?q?=E3=83=A9=E3=83=B3=E3=83=81=E3=81=AB=E6=9B=B8=E3=81=84=E3=81=A1?= =?UTF-8?q?=E3=82=83=E3=81=A3=E3=81=9F=E2=98=86=E3=82=B3=E3=83=B3=E3=83=95?= =?UTF-8?q?=E3=83=AA=E3=81=A3=E3=81=9F=E3=82=89=E5=88=86=E3=81=91=E3=81=A6?= =?UTF-8?q?=E3=81=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/oplogy/CreateUUID.java | 14 ++++--- .../FirestoreReception_classIdDatabase.java | 9 ++--- .../oplogy/InsertClassIdforFirebase.java | 19 ++++++++++ .../java/com/example/oplogy/MainActivity.java | 37 +++++++++---------- 4 files changed, 49 insertions(+), 30 deletions(-) create mode 100644 app/src/main/java/com/example/oplogy/InsertClassIdforFirebase.java diff --git a/app/src/main/java/com/example/oplogy/CreateUUID.java b/app/src/main/java/com/example/oplogy/CreateUUID.java index f61e643..c801b77 100644 --- a/app/src/main/java/com/example/oplogy/CreateUUID.java +++ b/app/src/main/java/com/example/oplogy/CreateUUID.java @@ -5,12 +5,12 @@ import java.util.List; public class CreateUUID { - public static int generateUUID(List classIdList ){ + public static int generateUUID(List classIdList ){ while (true){ - String uuid = String.valueOf((int)(Math.random() * 1000000)); + int uuid = (int) (Math.random() * 100000); boolean isDuplicate = false; - for(String classId : classIdList){ - if(classId.equals(uuid)){ + for(int classId : classIdList){ + if(classId==uuid){ //重複があればフラグを立て、ループを抜ける isDuplicate = true; break; @@ -19,9 +19,11 @@ public class CreateUUID { //重複がなければ生成したUUIDを返す if (!isDuplicate) { //firestoreに挿入処理 + InsertClassIdforFirebase insertClassIdforFirebase = new InsertClassIdforFirebase(); + insertClassIdforFirebase.insertClassId(uuid); //テスト用 - uuid="100"; - return Integer.parseInt(uuid); + uuid=100; + return uuid; } } } diff --git a/app/src/main/java/com/example/oplogy/FirestoreReception_classIdDatabase.java b/app/src/main/java/com/example/oplogy/FirestoreReception_classIdDatabase.java index 258330a..5484d93 100644 --- a/app/src/main/java/com/example/oplogy/FirestoreReception_classIdDatabase.java +++ b/app/src/main/java/com/example/oplogy/FirestoreReception_classIdDatabase.java @@ -17,14 +17,14 @@ import java.util.List; import java.util.Map; public class FirestoreReception_classIdDatabase { private FirebaseFirestore db; - private List classIdList= new ArrayList<>(); + private List classIdList= new ArrayList<>(); public FirestoreReception_classIdDatabase() { db = FirebaseFirestore.getInstance(); } - public List getAllDocumentsFromClassIdDatabase() { + public List getAllDocumentsFromClassIdDatabase() { db.collection("classId_Database") .get() .addOnCompleteListener(new OnCompleteListener() { @@ -34,8 +34,7 @@ public class FirestoreReception_classIdDatabase { for (QueryDocumentSnapshot document : task.getResult()) { Log.d("結果", document.getId() + " => " + document.getData()); //データをListに追加 - classIdList.add((String) document.get("classId")); - } + classIdList.add(((Long) document.get("classId")).intValue()); } } else { Log.d("結果", "Error getting documents: ", task.getException()); } @@ -45,7 +44,7 @@ public class FirestoreReception_classIdDatabase { return classIdList; } - public List getClassIdList() { + public List getClassIdList() { return classIdList; } } \ No newline at end of file diff --git a/app/src/main/java/com/example/oplogy/InsertClassIdforFirebase.java b/app/src/main/java/com/example/oplogy/InsertClassIdforFirebase.java new file mode 100644 index 0000000..9785da8 --- /dev/null +++ b/app/src/main/java/com/example/oplogy/InsertClassIdforFirebase.java @@ -0,0 +1,19 @@ +package com.example.oplogy; + +import com.google.firebase.firestore.FirebaseFirestore; + +import java.util.HashMap; +import java.util.Map; + +public class InsertClassIdforFirebase { + public void insertClassId(int classId) { + FirebaseFirestore db = FirebaseFirestore.getInstance(); + + Map data = new HashMap<>(); + data.put("classId", classId); // classId is inserted as a number + + db.collection("classId_Database").add(data) + .addOnSuccessListener(documentReference -> System.out.println("DocumentSnapshot added with ID: " + documentReference.getId())) + .addOnFailureListener(e -> System.err.println("Error adding document: " + e)); + } +} diff --git a/app/src/main/java/com/example/oplogy/MainActivity.java b/app/src/main/java/com/example/oplogy/MainActivity.java index 6f1aac7..907ff9e 100644 --- a/app/src/main/java/com/example/oplogy/MainActivity.java +++ b/app/src/main/java/com/example/oplogy/MainActivity.java @@ -48,7 +48,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe private FirestoreReception_classIdDatabase firestoreReception_classIdDatabase; //取得するためのクラスID - private int classId=100000; + private int classId; @Override @@ -84,6 +84,22 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe db = FirebaseFirestore.getInstance(); firestoreReception = new FirestoreReception(); + //TODO:classIdの初期値を取得 + ExecutorService executor = Executors.newSingleThreadExecutor(); + executor.execute(() -> { + try{ + AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "SetUpTable") + .build(); + SetUpTableDao setUpTableDao = db.setUpTableDao(); + classId = setUpTableDao.getClassId(); + firestoreReception.getDocumentsByClassId(classId); + }catch (Exception e){ + //無視して続行 + e.printStackTrace(); + } + + }); + } @@ -141,7 +157,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe //UUIDを表示するかのダイアログ private void showUUIDYesNoDialog() { firestoreReception_classIdDatabase = new FirestoreReception_classIdDatabase(); - List classIdList = firestoreReception_classIdDatabase.getAllDocumentsFromClassIdDatabase(); + List classIdList = firestoreReception_classIdDatabase.getAllDocumentsFromClassIdDatabase(); AlertDialog.Builder builder = new AlertDialog.Builder(this); @@ -336,21 +352,4 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe alertDialog.dismiss(); } } - - @Override - protected void onResume(){ - super.onResume(); - //roomからclassIdを取得 - ExecutorService executor = Executors.newSingleThreadExecutor(); - executor.execute(() -> { - AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "SetUpTable") - .fallbackToDestructiveMigration() - .build(); - SetUpTableDao setUpTableDao = db.setUpTableDao(); - classId = setUpTableDao.getClassId(); - }); - if (classId != 100000 ) { - firestoreReception.getDocumentsByClassId(classId); - } - } } \ No newline at end of file -- 2.45.1