From f085865d92bbe75f32724120e5da6f189f636952 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 17:37:48 +0100
Subject: [PATCH] Make TaskDialog not create a new Task instance if it's
 editing one

---
 .../muni/fi/pv168/project/data/task/Task.java | 16 ++++++++++++
 .../pv168/project/ui/dialog/TaskDialog.java   | 26 +++++++++----------
 2 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/src/main/java/cz/muni/fi/pv168/project/data/task/Task.java b/src/main/java/cz/muni/fi/pv168/project/data/task/Task.java
index 2b40529a..f6c3d38f 100644
--- a/src/main/java/cz/muni/fi/pv168/project/data/task/Task.java
+++ b/src/main/java/cz/muni/fi/pv168/project/data/task/Task.java
@@ -42,6 +42,10 @@ public class Task implements ITask, Identifiable {
     public String getDescription() {
         return description;
     }
+    
+    public void setDescription(String description) {
+        this.description = description;
+    }
 
     public String getDueDateString() {
         return dueDate.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));
@@ -50,6 +54,10 @@ public class Task implements ITask, Identifiable {
     public LocalDate getDueDate() {
         return dueDate;
     }
+    
+    public void setDueDate(LocalDate dueDate) {
+        this.dueDate = dueDate;
+    }
 
     public TaskStatus getTaskStatus() {
         return taskStatus;
@@ -106,11 +114,19 @@ public class Task implements ITask, Identifiable {
     public Long getEstimatedTime() {
         return estimatedTime.getStandardHours();
     }
+    
+    public void setEstimatedTime(Duration estimatedTime) {
+        this.estimatedTime = estimatedTime;
+    }
 
     @Override
     public String getTitle() {
         return title;
     }
+    
+    public void setTitle(String title) {
+        this.title = title;
+    }
 
     public boolean shouldShowUrgency() {
         return isUrgent() && !this.taskStatus.equals(TaskStatus.FINISHED);
diff --git a/src/main/java/cz/muni/fi/pv168/project/ui/dialog/TaskDialog.java b/src/main/java/cz/muni/fi/pv168/project/ui/dialog/TaskDialog.java
index 06205642..45d59ea5 100644
--- a/src/main/java/cz/muni/fi/pv168/project/ui/dialog/TaskDialog.java
+++ b/src/main/java/cz/muni/fi/pv168/project/ui/dialog/TaskDialog.java
@@ -4,6 +4,7 @@ import cz.muni.fi.pv168.project.data.task.Task;
 import cz.muni.fi.pv168.project.model.LocalDateModel;
 import org.jdatepicker.DateModel;
 import org.jdatepicker.JDatePicker;
+import org.joda.time.Duration;
 
 import javax.swing.JLabel;
 import javax.swing.JPanel;
@@ -61,24 +62,23 @@ public class TaskDialog extends AbstractLaidOutDialog<Task> {
 
     @Override
     Task getEntity() {
-        var task = Task.builder(
-                titleField.getText(), Long.parseLong(estimatedTimeField.getText()), (LocalDate) datePicker.getModel().getValue()
-        )
+        if (entity != null) {
+            entity.setTitle(titleField.getText());
+            entity.setDescription(descriptionField.getText());
+            entity.setEstimatedTime(Duration.standardHours(Long.parseLong(estimatedTimeField.getText())));
+            entity.setDueDate((LocalDate) datePicker.getModel().getValue());
+
+            return entity;
+        }
+
+        return Task.builder(
+                        titleField.getText(), Long.parseLong(estimatedTimeField.getText()), (LocalDate) datePicker.getModel().getValue()
+                )
                 .setDescription(descriptionField.getText())
                 .setCategories(List.of())
                 .setSubTasks(List.of())
                 .setDependencyTasks(List.of())
                 .build();
-
-        if (entity != null) {
-            task.setTaskStatus(entity.getTaskStatus());
-            task.setCategories(entity.getCategories());
-            task.setSubTasks(entity.getSubTasks());
-            task.setDependencyTasks(entity.getDependencyTasks());
-            task.setId(entity.getId());
-        }
-
-        return task;
     }
 
     public void setEntity(Task initialEntity) {
-- 
GitLab