Merge branch 'feature_taskList_m2' into feature_notification_m3

This commit is contained in:
schrom01 2022-11-25 11:14:47 +01:00
commit e48be29d59
3 changed files with 31 additions and 15 deletions

View File

@ -9,6 +9,7 @@ import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Collectors;
public class GardenSchedule {
@ -136,10 +137,22 @@ public class GardenSchedule {
* @throws IOException If the database cannot be accessed
*/
public List<List<Task>> getTasksUpcomingWeek() throws IOException {
final int listLength = 7;
List<Task> weekTasks = taskList.getTaskList(LocalDate.now(), LocalDate.now().plusDays(listLength - 1));
List<List<Task>> dayTaskList = new ArrayList<>();
for(int i = 0; i < 7; i++) {
for(int i = 0; i < listLength; i++) {
LocalDate date = LocalDate.now().plusDays(i);
dayTaskList.add(taskList.getTaskList(date, date));
dayTaskList.add(new ArrayList<>());
final int finalI = i;
weekTasks.forEach(task -> {
LocalDate checkDate = task.getNextExecution();
do {
if (date.equals(checkDate) && !date.isAfter(task.getEndDate().orElse(LocalDate.MIN))) {
dayTaskList.get(finalI).add(task);
}
checkDate = checkDate.plusDays(task.getInterval().orElse(0));
} while (task.getInterval().isPresent() && checkDate.isBefore(LocalDate.now().plusDays(listLength)));
});
}
return dayTaskList;
}
@ -150,11 +163,8 @@ public class GardenSchedule {
* @throws IOException If the database cannot be accessed
*/
public List<List<Task>> getTasksUpcomingWeekForCrop(Long cropId) throws IOException {
List<List<Task>> dayTaskList = new ArrayList<>();
for(int i = 0; i < 7; i++) {
LocalDate date = LocalDate.now().plusDays(i);
dayTaskList.add(filterListByCrop(taskList.getTaskList(date, date), cropId));
}
List<List<Task>> dayTaskList = getTasksUpcomingWeek();
dayTaskList.forEach(taskList -> taskList.removeIf(task -> task.getCropId() != cropId));
return dayTaskList;
}

View File

@ -27,6 +27,7 @@ public class Task {
name= "";
description= "";
startDate = LocalDate.now();
endDate = startDate;
nextExecution = startDate;
}
@ -34,6 +35,7 @@ public class Task {
this.name = name;
this.description = description;
this.startDate = startDate;
this.endDate = startDate;
nextExecution = startDate;
this.cropId = cropId;
}
@ -63,7 +65,7 @@ public class Task {
}
public boolean isInTimePeriode(LocalDate searchStartDate, LocalDate searchEndDate){
return startDate.isAfter(searchStartDate) && startDate.isBefore(searchEndDate);
return endDate.isAfter(searchStartDate) && startDate.isBefore(searchEndDate);
}
public void done(){

View File

@ -15,7 +15,7 @@ import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
class GardenScheduleTest {
LocalDate exampleStartDate = LocalDate.of(2020, 02, 02);
LocalDate exampleStartDate = LocalDate.of(2020, 2, 2);
TaskList taskList;
PlantList plantList;
List<Plant> examplePlantList;
@ -43,6 +43,7 @@ class GardenScheduleTest {
private TaskList mockTaskDatabase(List<Task> exampleTaskList) throws IOException {
TaskList taskList = mock(JsonTaskList.class);
when(taskList.getTaskList(LocalDate.MIN, LocalDate.MAX)).thenReturn(exampleTaskList);
when(taskList.getTaskList(LocalDate.now(), LocalDate.now().plusDays(7 - 1))).thenReturn(exampleTaskList);
when(taskList.getTaskList(LocalDate.now(), LocalDate.MAX)).thenReturn((exampleTaskList.subList(1, 4)));
@ -105,7 +106,7 @@ class GardenScheduleTest {
exampleTaskList.add(new Task("name", "description", LocalDate.now().plusDays(1), 2L));
exampleTaskList.add(new Task("name", "description", LocalDate.now(), 1L));
exampleTaskList.add(new Task("name", "description", LocalDate.of(9019, 5, 5), 1L));
exampleTaskList.add(new Task("name", "description", LocalDate.of(2019, 5, 5), 2L));
exampleTaskList.add(new Task("name", "description", LocalDate.now().minusDays(10), LocalDate.now().plusDays(4),2, 2L));
}
@Test
@ -157,19 +158,22 @@ class GardenScheduleTest {
assertEquals(7, dayList.size());
//Check day 0
assertEquals(1, dayList.get(0).size());
assertEquals(exampleTaskList.get(2), dayList.get(0).get(0));
assertEquals(2, dayList.get(0).size());
assertTrue(dayList.get(0).contains(exampleTaskList.get(2)));
assertTrue(dayList.get(0).contains(exampleTaskList.get(4)));
//Check day 1
assertEquals(1, dayList.get(1).size());
assertEquals(exampleTaskList.get(1), dayList.get(1).get(0));
assertTrue(dayList.get(1).contains(exampleTaskList.get(1)));
//Check day 2
assertEquals(0, dayList.get(2).size());
assertEquals(1, dayList.get(2).size());
assertTrue(dayList.get(2).contains(exampleTaskList.get(4)));
//Check day 3
assertEquals(0, dayList.get(3).size());
//Check day 4
assertEquals(0, dayList.get(4).size());
assertEquals(1, dayList.get(4).size());
assertTrue(dayList.get(4).contains(exampleTaskList.get(4)));
//Check day 5
assertEquals(0, dayList.get(5).size());
//Check day 6