diff --git a/src/main/java/cz/muni/fi/pv168/project/db/task/TaskDao.java b/src/main/java/cz/muni/fi/pv168/project/db/task/TaskDao.java index c3672585fbe417497a0bb9ac8dbf93afd5cf51cd..477e78229fb401b624313b814e7173ceb913434b 100644 --- a/src/main/java/cz/muni/fi/pv168/project/db/task/TaskDao.java +++ b/src/main/java/cz/muni/fi/pv168/project/db/task/TaskDao.java @@ -1,5 +1,6 @@ package cz.muni.fi.pv168.project.db.task; +import cz.muni.fi.pv168.project.data.category.Category; import cz.muni.fi.pv168.project.data.task.Task; import cz.muni.fi.pv168.project.data.task.TaskStatus; import cz.muni.fi.pv168.project.db.DataAccessException; @@ -19,7 +20,6 @@ import java.sql.Types; import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; import java.util.stream.Collectors; public class TaskDao implements DataAccessObject<Task> { @@ -94,15 +94,21 @@ public class TaskDao implements DataAccessObject<Task> { public Collection<Task> getAll() throws DataAccessException { try (var connection = dataSource.getConnection(); var st = connection.prepareStatement("SELECT ID, TITLE, DUE_DATE, ESTIMATED_TIME, DESCRIPTION, TASK_STATUS FROM TASK")) { - Map<Long, Task> taskMap = new LinkedHashMap<>(); + var taskMap = new LinkedHashMap<Long, Task>(); try (var rs = st.executeQuery()) { while (rs.next()) { Task task = getFullTaskFromDb(rs); taskMap.put(task.getId(), task); } + var categoryMap = new LinkedHashMap<Long, Category>(); + categoryDao.getAll().forEach(category -> { + categoryMap.put(category.getId(), category); + }); + taskMap.forEach((id, task) -> { task.setDependencyTasks(dependencyDao.getAllIdsFor(id).stream().map(taskMap::get).collect(Collectors.toList())); + task.setCategories(taskCategoryDao.getAllIdsFor(id).stream().map(categoryMap::get).collect(Collectors.toList())); }); } return taskMap.values(); @@ -142,12 +148,7 @@ public class TaskDao implements DataAccessObject<Task> { rs.getDate("DUE_DATE").toLocalDate()) .setSubTasks(subTaskDao.getAllEntitiesFor(taskId)) .setDependencyTasks(List.of()) - .setCategories(taskCategoryDao - .getAllIdsFor(taskId) - .stream() - .map(categoryDao::fetch) - .collect(Collectors.toList()) - ); + .setCategories(List.of()); var description = rs.getString("DESCRIPTION"); if (!rs.wasNull()) { taskBuilder.setDescription(description);