added new Methods to filter List by Crop ID

This commit is contained in:
schrom01 2022-11-06 17:29:21 +01:00
parent 38288f8561
commit b7d08944a6
1 changed files with 46 additions and 0 deletions

View File

@ -12,6 +12,7 @@ import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class TaskListModel { public class TaskListModel {
@ -78,6 +79,10 @@ public class TaskListModel {
taskDatabase.removeTask(task); taskDatabase.removeTask(task);
} }
private List<Task> filterListByCrop(List<Task> taskList, Long cropId) {
return taskList.stream().filter(task -> task.getCropId() == cropId).collect(Collectors.toList());
}
/** /**
* Method to get all Tasks * Method to get all Tasks
* @return List of all Tasks * @return List of all Tasks
@ -87,6 +92,15 @@ public class TaskListModel {
return getFilteredTaskList(LocalDate.MIN, LocalDate.MAX); return getFilteredTaskList(LocalDate.MIN, LocalDate.MAX);
} }
/**
* Method to get all Tasks for specific Crop
* @return List of all Tasks for with given CropID
* @throws IOException If the database cannot be accessed
*/
public List<Task> getTaskListForCrop(Long cropId) throws IOException {
return filterListByCrop(getTaskList(), cropId);
}
/** /**
* Method to get all Tasks which are today or in future * Method to get all Tasks which are today or in future
* @return List of Tasks * @return List of Tasks
@ -96,6 +110,15 @@ public class TaskListModel {
return getFilteredTaskList(LocalDate.now(), LocalDate.MAX); return getFilteredTaskList(LocalDate.now(), LocalDate.MAX);
} }
/**
* Method to get all Tasks which are today or in future for specific Crop
* @return List of Tasks with given crop ID
* @throws IOException If the database cannot be accessed
*/
public List<Task> getFutureTasksForCrop(Long cropId) throws IOException {
return filterListByCrop(getFutureTasks(), cropId);
}
/** /**
* Method to get all Tasks which are today or in past * Method to get all Tasks which are today or in past
* @return List of Tasks * @return List of Tasks
@ -105,6 +128,15 @@ public class TaskListModel {
return getFilteredTaskList(LocalDate.MIN, LocalDate.now()); return getFilteredTaskList(LocalDate.MIN, LocalDate.now());
} }
/**
* Method to get all Tasks which are today or in past for specifc crop
* @return List of Tasks with given grop id
* @throws IOException If the database cannot be accessed
*/
public List<Task> getPastTasksForCrop(Long cropId) throws IOException {
return filterListByCrop(getPastTasks(), cropId);
}
/** /**
* Method to get an List of 7 Tasklists for the next 7 days. Index 0 is Tasklist for Today. * Method to get an List of 7 Tasklists for the next 7 days. Index 0 is Tasklist for Today.
* @return List with length 7 (List<List<Task>>) * @return List with length 7 (List<List<Task>>)
@ -119,6 +151,20 @@ public class TaskListModel {
return dayTaskList; return dayTaskList;
} }
/**
* Method to get an List of 7 Tasklists for the next 7 days. (Filtered Index 0 is Tasklist for Today.
* @return List with length 7 (List<List<Task>>)
* @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(taskDatabase.getTaskList(date, date), cropId));
}
return dayTaskList;
}
/** /**
* Method to get Tasklist filtered by date. * Method to get Tasklist filtered by date.
* @param start the start date for the filter * @param start the start date for the filter