・重複時のダイアログに保護者の情報が表示されるように調整しました。 #50
|
@ -5,12 +5,12 @@ import java.util.List;
|
||||||
|
|
||||||
public class CreateUUID {
|
public class CreateUUID {
|
||||||
|
|
||||||
public static int generateUUID(List<Integer> classIdList ){
|
public static int generateUUID(List<Integer> classIdList) {
|
||||||
while (true){
|
while (true) {
|
||||||
int uuidInt = (int)(Math.random() * 1000000);
|
int uuidInt = (int) (Math.random() * 1000000);
|
||||||
boolean isDuplicate = false;
|
boolean isDuplicate = false;
|
||||||
for(int classIdInt : classIdList){
|
for (int classIdInt : classIdList) {
|
||||||
if(classIdInt==uuidInt){
|
if (classIdInt == uuidInt) {
|
||||||
//重複があればフラグを立て、ループを抜ける
|
//重複があればフラグを立て、ループを抜ける
|
||||||
isDuplicate = true;
|
isDuplicate = true;
|
||||||
break;
|
break;
|
||||||
|
@ -22,7 +22,7 @@ public class CreateUUID {
|
||||||
InsertClassIdforFirebase insertClassIdforFirebase = new InsertClassIdforFirebase();
|
InsertClassIdforFirebase insertClassIdforFirebase = new InsertClassIdforFirebase();
|
||||||
insertClassIdforFirebase.insertClassId(uuidInt);
|
insertClassIdforFirebase.insertClassId(uuidInt);
|
||||||
//テスト用
|
//テスト用
|
||||||
uuidInt=100;
|
uuidInt = 100;
|
||||||
return uuidInt;
|
return uuidInt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,15 +16,14 @@ import java.util.Map;
|
||||||
|
|
||||||
public class FirestoreReception {
|
public class FirestoreReception {
|
||||||
|
|
||||||
|
//firestoreから受け取ったデータを束ねるためのマップ
|
||||||
|
public List<MyDataClass> myDataList = new ArrayList<>();
|
||||||
private FirebaseFirestore db;
|
private FirebaseFirestore db;
|
||||||
|
|
||||||
public FirestoreReception() {
|
public FirestoreReception() {
|
||||||
db = FirebaseFirestore.getInstance();
|
db = FirebaseFirestore.getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
//firestoreから受け取ったデータを束ねるためのマップ
|
|
||||||
public List<MyDataClass> myDataList = new ArrayList<>();
|
|
||||||
|
|
||||||
//ClassIdを引数にデータの作成を行う
|
//ClassIdを引数にデータの作成を行う
|
||||||
public void getDocumentsByClassId(int classId) {
|
public void getDocumentsByClassId(int classId) {
|
||||||
myDataList.clear();
|
myDataList.clear();
|
||||||
|
|
|
@ -19,6 +19,8 @@ import com.google.gson.Gson;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
@ -135,51 +137,65 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
|
||||||
// ルート作成のクリック処理
|
// ルート作成のクリック処理
|
||||||
if (view == root) {
|
if (view == root) {
|
||||||
imageRoot.setImageResource(R.drawable.pin);
|
imageRoot.setImageResource(R.drawable.pin);
|
||||||
fetchDataAndCreateRoute();
|
checkSetupAndCreateRoute(this::fetchDataAndCreateRoute);
|
||||||
|
|
||||||
}
|
}
|
||||||
if (view == imageRoot) {
|
if (view == imageRoot) {
|
||||||
imageRoot.setImageResource(R.drawable.pin);
|
imageRoot.setImageResource(R.drawable.pin);
|
||||||
fetchDataAndCreateRoute();
|
checkSetupAndCreateRoute(this::fetchDataAndCreateRoute);
|
||||||
}
|
}
|
||||||
// 提出状況のクリック処理
|
// 提出状況のクリック処理
|
||||||
if (view == submission) {
|
if (view == submission) {
|
||||||
ArrayList<SubmissionStudent> submissionStudents = getSubmissionStudents();
|
checkSetupAndCreateRoute(() -> {
|
||||||
Intent toSubmission = new Intent(MainActivity.this, SubmissionActivity.class);
|
ArrayList<SubmissionStudent> submissionStudents = getSubmissionStudents();
|
||||||
toSubmission.putParcelableArrayListExtra("submissionStudents", submissionStudents);
|
Intent toSubmission = new Intent(MainActivity.this, SubmissionActivity.class);
|
||||||
startActivity(toSubmission);
|
toSubmission.putParcelableArrayListExtra("submissionStudents", submissionStudents);
|
||||||
|
startActivity(toSubmission);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
if (view == imageSubmission) {
|
if (view == imageSubmission) {
|
||||||
ArrayList<SubmissionStudent> submissionStudents = getSubmissionStudents();
|
checkSetupAndCreateRoute(() -> {
|
||||||
Intent toSubmission = new Intent(MainActivity.this, SubmissionActivity.class);
|
ArrayList<SubmissionStudent> submissionStudents = getSubmissionStudents();
|
||||||
toSubmission.putParcelableArrayListExtra("submissionStudents", submissionStudents);
|
Intent toSubmission = new Intent(MainActivity.this, SubmissionActivity.class);
|
||||||
startActivity(toSubmission);
|
toSubmission.putParcelableArrayListExtra("submissionStudents", submissionStudents);
|
||||||
|
startActivity(toSubmission);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//UUIDを表示するかのダイアログ
|
//ID作成、表示に関する処理
|
||||||
private void showUUIDYesNoDialog() {
|
private void showUUIDYesNoDialog() {
|
||||||
firestoreReception_classIdDatabase = new FirestoreReception_classIdDatabase();
|
firestoreReception_classIdDatabase = new FirestoreReception_classIdDatabase();
|
||||||
List<Integer> classIdList = firestoreReception_classIdDatabase.getAllDocumentsFromClassIdDatabase();
|
List<Integer> classIdList = firestoreReception_classIdDatabase.getAllDocumentsFromClassIdDatabase();
|
||||||
|
|
||||||
|
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||||
builder.setTitle("クラスID");
|
builder.setTitle("ID");
|
||||||
builder.setMessage("あなたのクラスIDを表示しますか?");
|
builder.setMessage("あなたのIDを表示/もしくは新規で作成しますか?");
|
||||||
|
|
||||||
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
|
//作成処理
|
||||||
|
builder.setPositiveButton("作成", new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
classId = CreateUUID.generateUUID(classIdList);
|
classId = CreateUUID.generateUUID(classIdList);
|
||||||
Toast.makeText(MainActivity.this, "クラスID: " + classId, Toast.LENGTH_SHORT).show();
|
// 生成されたIDを表示するメソッド
|
||||||
imageUuid.setImageResource(R.drawable.checked_image);
|
showClassIdDialog("生成されたID", classId);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
|
//表示処理
|
||||||
|
builder.setNegativeButton("表示", new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
Log.d("DialogNO", "DialogでNoが選ばれました");
|
//roomを扱うため非同期処理
|
||||||
imageUuid.setImageResource(R.drawable.checked_image);
|
ExecutorService executor = Executors.newSingleThreadExecutor();
|
||||||
|
executor.execute(() -> {
|
||||||
|
// 現在のクラスIDを取得
|
||||||
|
int currentClassId = getCurrentClassIdFromRoom();
|
||||||
|
runOnUiThread(() -> {
|
||||||
|
// 現在のクラスIDを表示するダイアログ
|
||||||
|
showClassIdDialog("現在のID", currentClassId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
executor.shutdown();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -188,6 +204,79 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int getCurrentClassIdFromRoom() {
|
||||||
|
AppDatabase db = getDatabaseInstance();
|
||||||
|
SetUpTableDao setUpTableDao = db.setUpTableDao();
|
||||||
|
|
||||||
|
// 現在のクラスIDを取得
|
||||||
|
return setUpTableDao.getClassId();
|
||||||
|
}
|
||||||
|
|
||||||
|
//クラスIDを表示するダイアログ
|
||||||
|
private void showClassIdDialog(String title, int classId) {
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||||
|
builder.setTitle(title);
|
||||||
|
builder.setMessage("ID: " + classId);
|
||||||
|
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
dialog.dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
AlertDialog dialog = builder.create();
|
||||||
|
dialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//ルート作成、提出状況の遷移を行う前のチェックを行う処理
|
||||||
|
private void checkSetupAndCreateRoute(Runnable onSetupComplete) {
|
||||||
|
if (isClassIdSet()) {
|
||||||
|
isSetupExists(classId).thenAccept(setupExists -> {
|
||||||
|
if (setupExists) {
|
||||||
|
runOnUiThread(onSetupComplete);
|
||||||
|
} else {
|
||||||
|
runOnUiThread(() -> {
|
||||||
|
Toast.makeText(this, "先にセットアップを済ませてください", Toast.LENGTH_LONG).show();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).exceptionally(ex -> {
|
||||||
|
ex.printStackTrace();
|
||||||
|
runOnUiThread(() -> {
|
||||||
|
Toast.makeText(this, "エラーが発生しました", Toast.LENGTH_LONG).show();
|
||||||
|
});
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
Toast.makeText(this, "先にIDの作成を行ってください", Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// クラスIDが設定されているかどうかを判定
|
||||||
|
private boolean isClassIdSet() {
|
||||||
|
// classIdが0より大きい場合、trueを返す
|
||||||
|
return classId > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// セットアップが存在するかどうかを判定
|
||||||
|
private CompletableFuture<Boolean> isSetupExists(int classId) {
|
||||||
|
final ExecutorService executorService = Executors.newSingleThreadExecutor();
|
||||||
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
|
AppDatabase db = getDatabaseInstance();
|
||||||
|
SetUpTableDao setUpTableDao = db.setUpTableDao();
|
||||||
|
//データベースの値を全取得
|
||||||
|
List<SetUpTable> checkData = setUpTableDao.getAll();
|
||||||
|
for (SetUpTable setUpTable : checkData) {
|
||||||
|
//SetUpTableのclassIdと引数のclassIdが一致する場合、trueを返す
|
||||||
|
if (setUpTable.classId == classId) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
//処理完了時にexecutorServiceをシャットダウン
|
||||||
|
}, executorService).whenComplete((result, throwable) -> executorService.shutdown());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//ルート作成の非同期処理
|
//ルート作成の非同期処理
|
||||||
private void fetchDataAndCreateRoute() {
|
private void fetchDataAndCreateRoute() {
|
||||||
ExecutorService executor = Executors.newSingleThreadExecutor();
|
ExecutorService executor = Executors.newSingleThreadExecutor();
|
||||||
|
|
|
@ -2,7 +2,6 @@ package com.example.oplogy;
|
||||||
|
|
||||||
import static android.content.ContentValues.TAG;
|
import static android.content.ContentValues.TAG;
|
||||||
|
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.app.DatePickerDialog;
|
import android.app.DatePickerDialog;
|
||||||
import android.app.TimePickerDialog;
|
import android.app.TimePickerDialog;
|
||||||
|
@ -42,6 +41,16 @@ public class SetUpActivity extends FragmentActivity
|
||||||
String startBreakTimeString;
|
String startBreakTimeString;
|
||||||
String endBreakTimeString;
|
String endBreakTimeString;
|
||||||
int totalStudentString;
|
int totalStudentString;
|
||||||
|
String stringYearString;
|
||||||
|
String stringMonthString;
|
||||||
|
String stringDayOfMonthString;
|
||||||
|
String stringHourOfDayString;
|
||||||
|
String stringMinuteString;
|
||||||
|
Button setFirstDay;
|
||||||
|
Button setSecondDay;
|
||||||
|
Button setThirdDay;
|
||||||
|
Button setStartTimeButton;
|
||||||
|
Button setEndTimeButton;
|
||||||
private TextView setTeacherName;
|
private TextView setTeacherName;
|
||||||
private TextView setStartPoint;
|
private TextView setStartPoint;
|
||||||
private TextView setStartTime;
|
private TextView setStartTime;
|
||||||
|
@ -52,29 +61,13 @@ public class SetUpActivity extends FragmentActivity
|
||||||
private int isDateSelectedInt;
|
private int isDateSelectedInt;
|
||||||
private int isStartTimeSelectedInt;
|
private int isStartTimeSelectedInt;
|
||||||
|
|
||||||
String stringYearString;
|
|
||||||
String stringMonthString;
|
|
||||||
String stringDayOfMonthString;
|
|
||||||
|
|
||||||
|
|
||||||
String stringHourOfDayString;
|
|
||||||
String stringMinuteString;
|
|
||||||
|
|
||||||
Button setFirstDay;
|
|
||||||
Button setSecondDay;
|
|
||||||
Button setThirdDay;
|
|
||||||
Button setStartTimeButton;
|
|
||||||
Button setEndTimeButton;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@SuppressLint("MissingInflatedId")
|
@SuppressLint("MissingInflatedId")
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_set_up);
|
setContentView(R.layout.activity_set_up);
|
||||||
|
|
||||||
int classIdInt= getIntent().getIntExtra("classId", 100000);
|
int classIdInt = getIntent().getIntExtra("classId", 100000);
|
||||||
|
|
||||||
setTeacherName = findViewById(R.id.teacherName); //先生の名前
|
setTeacherName = findViewById(R.id.teacherName); //先生の名前
|
||||||
setStartPoint = findViewById(R.id.startPoint); //開始地点
|
setStartPoint = findViewById(R.id.startPoint); //開始地点
|
||||||
|
@ -104,7 +97,7 @@ public class SetUpActivity extends FragmentActivity
|
||||||
Button reset = findViewById(R.id.resetButton);
|
Button reset = findViewById(R.id.resetButton);
|
||||||
|
|
||||||
toMain.setOnClickListener(view -> {
|
toMain.setOnClickListener(view -> {
|
||||||
Intent intent = new Intent(SetUpActivity.this,MainActivity.class); //main画面へ戻る処理
|
Intent intent = new Intent(SetUpActivity.this, MainActivity.class); //main画面へ戻る処理
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -119,7 +112,7 @@ public class SetUpActivity extends FragmentActivity
|
||||||
Log.d(TAG, "Third Day:" + thirdDayString);
|
Log.d(TAG, "Third Day:" + thirdDayString);
|
||||||
Log.d(TAG, "Start Time" + startTimeString);
|
Log.d(TAG, "Start Time" + startTimeString);
|
||||||
Log.d(TAG, "End Time" + endTimeString);
|
Log.d(TAG, "End Time" + endTimeString);
|
||||||
if (setTenMinute.isChecked()){ //ラジオボタンの状態を取得
|
if (setTenMinute.isChecked()) { //ラジオボタンの状態を取得
|
||||||
intervalTimeString = "10";
|
intervalTimeString = "10";
|
||||||
} else if (setFifteenMinute.isChecked()) {
|
} else if (setFifteenMinute.isChecked()) {
|
||||||
intervalTimeString = "15";
|
intervalTimeString = "15";
|
||||||
|
@ -172,12 +165,12 @@ public class SetUpActivity extends FragmentActivity
|
||||||
runOnUiThread(() -> Toast.makeText(SetUpActivity.this, "登録しました", Toast.LENGTH_SHORT).show());
|
runOnUiThread(() -> Toast.makeText(SetUpActivity.this, "登録しました", Toast.LENGTH_SHORT).show());
|
||||||
}
|
}
|
||||||
//家庭訪問日を保存する共有プリファレンス
|
//家庭訪問日を保存する共有プリファレンス
|
||||||
SharedPreferences sharedPreferences=getSharedPreferences("visitingDate",MODE_PRIVATE);
|
SharedPreferences sharedPreferences = getSharedPreferences("visitingDate", MODE_PRIVATE);
|
||||||
SharedPreferences.Editor editor= sharedPreferences.edit();
|
SharedPreferences.Editor editor = sharedPreferences.edit();
|
||||||
|
|
||||||
editor.putString("day1",firstDayString);
|
editor.putString("day1", firstDayString);
|
||||||
editor.putString("day2",secondDayString);
|
editor.putString("day2", secondDayString);
|
||||||
editor.putString("day3",thirdDayString);
|
editor.putString("day3", thirdDayString);
|
||||||
|
|
||||||
editor.apply();
|
editor.apply();
|
||||||
|
|
||||||
|
@ -186,17 +179,17 @@ public class SetUpActivity extends FragmentActivity
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
setFirstDay.setOnClickListener(v ->{
|
setFirstDay.setOnClickListener(v -> {
|
||||||
isDateSelectedInt = 1;
|
isDateSelectedInt = 1;
|
||||||
showDatePickerDialog(); //DatePickerの表示
|
showDatePickerDialog(); //DatePickerの表示
|
||||||
});
|
});
|
||||||
|
|
||||||
setSecondDay.setOnClickListener(v ->{
|
setSecondDay.setOnClickListener(v -> {
|
||||||
isDateSelectedInt = 2;
|
isDateSelectedInt = 2;
|
||||||
showDatePickerDialog();
|
showDatePickerDialog();
|
||||||
});
|
});
|
||||||
|
|
||||||
setThirdDay.setOnClickListener(v ->{
|
setThirdDay.setOnClickListener(v -> {
|
||||||
isDateSelectedInt = 3;
|
isDateSelectedInt = 3;
|
||||||
showDatePickerDialog();
|
showDatePickerDialog();
|
||||||
});
|
});
|
||||||
|
@ -245,7 +238,7 @@ public class SetUpActivity extends FragmentActivity
|
||||||
@Override
|
@Override
|
||||||
public void onDateSet(DatePicker datePicker, int year, int month, int dayOfMonth) { //Dateを成形する
|
public void onDateSet(DatePicker datePicker, int year, int month, int dayOfMonth) { //Dateを成形する
|
||||||
// DatePickerDialogで選択された日付を処理する
|
// DatePickerDialogで選択された日付を処理する
|
||||||
String str = String.format(Locale.JAPAN, "%02d/%02d", month + 1, dayOfMonth); // TextViewに表示する日付の形式を設定
|
String str = String.format(Locale.JAPAN, "%02d/%02d", month + 1, dayOfMonth); // TextViewに表示する日付の形式を設定
|
||||||
|
|
||||||
if (isDateSelectedInt == 1) {
|
if (isDateSelectedInt == 1) {
|
||||||
stringYearString = String.valueOf(year); //年
|
stringYearString = String.valueOf(year); //年
|
||||||
|
@ -291,7 +284,7 @@ public class SetUpActivity extends FragmentActivity
|
||||||
} else if (isStartTimeSelectedInt == 3) {
|
} else if (isStartTimeSelectedInt == 3) {
|
||||||
stringHourOfDayString = String.format("%02d", hourOfDay);
|
stringHourOfDayString = String.format("%02d", hourOfDay);
|
||||||
stringMinuteString = String.format("%02d", minute);
|
stringMinuteString = String.format("%02d", minute);
|
||||||
startBreakTimeString =stringHourOfDayString + stringMinuteString;
|
startBreakTimeString = stringHourOfDayString + stringMinuteString;
|
||||||
setStartBreakTime.setText(" " + str + " ");
|
setStartBreakTime.setText(" " + str + " ");
|
||||||
|
|
||||||
} else if (isStartTimeSelectedInt == 4) {
|
} else if (isStartTimeSelectedInt == 4) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user