From 29ce87d6a1e4dd6cf193bef7c8973fed020715fc Mon Sep 17 00:00:00 2001 From: it232115 Date: Fri, 21 Jun 2024 10:54:27 +0900 Subject: [PATCH] =?UTF-8?q?intervalArray=E3=81=8B=E3=82=89=E5=AE=B6?= =?UTF-8?q?=E5=BA=AD=E8=A8=AA=E5=95=8F=E3=81=AE=E4=BC=91=E6=86=A9=E6=99=82?= =?UTF-8?q?=E9=96=93=E3=82=92=E9=99=A4=E5=8E=BB=E3=81=99=E3=82=8B=E5=87=A6?= =?UTF-8?q?=E7=90=86=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/oplogy/CreateRoot.java | 57 +++++++++++++++++-- 1 file changed, 51 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/example/oplogy/CreateRoot.java b/app/src/main/java/com/example/oplogy/CreateRoot.java index 2fd7d4f..f49a345 100644 --- a/app/src/main/java/com/example/oplogy/CreateRoot.java +++ b/app/src/main/java/com/example/oplogy/CreateRoot.java @@ -8,6 +8,7 @@ import androidx.room.Room; import com.google.firebase.Timestamp; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; @@ -19,6 +20,7 @@ import java.util.concurrent.Executors; public class CreateRoot { private Context context; private AppDatabase db; + private int arraySize; public CreateRoot(MainActivity activity) { this.context = activity; @@ -27,7 +29,7 @@ public class CreateRoot { public void receiveData(List myDataList) { for (int i = 0; i < myDataList.size(); i++) { - //希望時間帯の終了時刻から開始時刻を引いて希望時間帯の長さ(timezone)に入れる + // 希望時間帯の終了時刻から開始時刻を引いて希望時間帯の長さ(timezone)に入れる MyDataClass data = myDataList.get(i); List firstDay = data.getFirstDay(); Timestamp startTime = firstDay.get(0); @@ -35,7 +37,7 @@ public class CreateRoot { Long timezone = endTime.getSeconds() - startTime.getSeconds(); data.setTimezone(timezone); - //TimeStampを日付に変換 + // TimeStampを日付に変換 Date startDate = new Date(startTime.getSeconds() * 1000); Date endDate = new Date(endTime.getSeconds() * 1000); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); @@ -66,17 +68,60 @@ public class CreateRoot { Log.d("CreateRoot", "(index: " + i + ") timezone: " + myDataList.get(i).getTimezone()); Log.d("CreateRoot", "(index: " + i + ") startDate: " + myDataList.get(i).getStartDateString()); Log.d("CreateRoot", "(index: " + i + ") data: " + myDataList.get(i)); - } ExecutorService executor = Executors.newSingleThreadExecutor(); executor.execute(() -> { + // setUpActivityによって入力され、Roomに保存された値を取り出す処理 SetUpTableDao setUpTableDao = db.setUpTableDao(); - String startTime=setUpTableDao.getStartTime(); - String endTime=setUpTableDao.getEndTime(); + String startTime = setUpTableDao.getStartTime(); + String endTime = setUpTableDao.getEndTime(); + String intervalTime = setUpTableDao.getIntervalTime(); + String startBreakTime = setUpTableDao.getStartBreakTime(); + String endBreakTime = setUpTableDao.getEndBreakTime(); + // デバッグ用 Log.d("CreateRoot", "開始時間" + startTime); Log.d("CreateRoot", "終了時刻" + endTime); + Log.d("CreateRoot", "一家庭当たりの所要時間" + intervalTime); + Log.d("CreateRoot", "休憩開始時刻" + startBreakTime); + Log.d("CreateRoot", "休憩終了時刻" + endBreakTime); + // endTimeからstartTimeの値を引いた値をintervalTime+10で割って配列を作る + int startHour = Integer.parseInt(startTime.substring(0, 2)); + int endHour = Integer.parseInt(endTime.substring(0, 2)); + int startMinute = Integer.parseInt(startTime.substring(2, 4)); + int endMinute = Integer.parseInt(endTime.substring(2, 4)); + + int totalTime = (endHour - startHour) * 60 + (endMinute - startMinute); + int interval = Integer.parseInt(intervalTime) + 10; + arraySize = totalTime / interval; + + int startBreakHour = Integer.parseInt(startBreakTime.substring(0, 2)); + int startBreakMinute = Integer.parseInt(startBreakTime.substring(2, 4)); + int endBreakHour = Integer.parseInt(endBreakTime.substring(0, 2)); + int endBreakMinute = Integer.parseInt(endBreakTime.substring(2, 4)); + + int startBreakTimeMinutes = (startBreakHour - startHour) * 60 + (startBreakMinute - startMinute); + int endBreakTimeMinutes = (endBreakHour - startHour) * 60 + (endBreakMinute - startMinute); + + List intervalList = new ArrayList<>(); + + for (int i = 0; i < arraySize; i++) { + int intervalMinutes = i * interval; + if (intervalMinutes < startBreakTimeMinutes || intervalMinutes >= endBreakTimeMinutes) { + intervalList.add(intervalMinutes); + } + } + + int[] intervalArray = new int[intervalList.size()]; + for (int i = 0; i < intervalList.size(); i++) { + intervalArray[i] = intervalList.get(i); + } + + // デバッグ用ログ + for (int i = 0; i < intervalArray.length; i++) { + Log.d("CreateRoot", "家庭訪問時間" + intervalArray[i]); + } }); } -} +} \ No newline at end of file