Skip to content
Snippets Groups Projects
Commit 676dd031 authored by Matej Dipčár's avatar Matej Dipčár Committed by Ondřej Hrdlička
Browse files

Fix TaskDao to also create only one instance of Category per Category

parent ce0f2d3a
No related branches found
No related tags found
2 merge requests!52Final project MR,!50Bugfix
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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment