From 160c379116a4a516ff783011aae5833cf2405cc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20B=C3=B6ckelmann?= Date: Sat, 16 Mar 2024 10:33:35 +0100 Subject: [PATCH] Adapt Task to consider subtasks and implement service to create Subtasks --- .../java/core/entities/timemanager/Task.java | 28 +++++++++++++++++++ .../main/java/core/services/TaskService.java | 16 ++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/core/entities/timemanager/Task.java b/backend/src/main/java/core/entities/timemanager/Task.java index dbb92c5..b66b9c5 100644 --- a/backend/src/main/java/core/entities/timemanager/Task.java +++ b/backend/src/main/java/core/entities/timemanager/Task.java @@ -33,6 +33,13 @@ public class Task { @OneToOne(mappedBy = "task", cascade = CascadeType.ALL, orphanRemoval = true) private TaskSerieItem taskSerieItem; + @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true) + private Set subtasks; + + @ManyToOne + @JoinColumn(name = "parent") + private Task parent; + public Task() { this.basicTaskSchedules = new ArrayList<>(); } @@ -149,6 +156,27 @@ public class Task { this.basicTaskSchedules = basicTaskSchedules; } + public void addSubtask(Task subtask) { + subtask.setParent(this); + this.subtasks.add(subtask); + } + + public Set getSubtasks() { + return subtasks; + } + + public void setSubtasks(Set subtasks) { + this.subtasks = subtasks; + } + + public Task getParent() { + return parent; + } + + public void setParent(Task parent) { + this.parent = parent; + } + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/backend/src/main/java/core/services/TaskService.java b/backend/src/main/java/core/services/TaskService.java index 292b442..2074798 100644 --- a/backend/src/main/java/core/services/TaskService.java +++ b/backend/src/main/java/core/services/TaskService.java @@ -49,6 +49,21 @@ public class TaskService { return new ServiceResult<>(task); } + public ServiceResult createSubTask(Task parentTask, TaskFieldInfo taskFieldInfo) { + if(taskFieldInfo.getStartDate().isBefore(parentTask.getStartDate()) || + taskFieldInfo.getDeadline().isAfter(parentTask.getDeadline()) || + taskFieldInfo.getDeadline().isBefore(taskFieldInfo.getStartDate())) { + return new ServiceResult<>(ServiceExitCode.INVALID_PARAMETER); + } + + Task task = new Task(parentTask.getTaskgroup(), taskFieldInfo); + parentTask.getTaskgroup().getTasks().add(task); + parentTask.addSubtask(task); + + taskRepository.save(task); + return new ServiceResult<>(task); + } + private boolean existTaskByName(Collection tasks, String name) { for(Task task : tasks) { if(task.getTaskName().equals(name)) { @@ -94,7 +109,6 @@ public class TaskService { taskSeriesService.deleteTaskSeriesItem(task); } taskRepository.delete(task); - } public void clearTasks(Taskgroup taskgroup) {