From 676dd03142db1b5e05a2f8567d366efa23f564ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Dip=C4=8D=C3=A1r?= <492666@mail.muni.cz> Date: Thu, 3 Feb 2022 19:09:16 +0100 Subject: [PATCH] Fix TaskDao to also create only one instance of Category per Category --- .../muni/fi/pv168/project/db/task/TaskDao.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) 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 c3672585..477e7822 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); -- GitLab