From d15ab1f3f75b12edc94c9a4cf9b2f004aec06803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Fri, 24 Jul 2009 20:31:45 +0200 Subject: [PATCH] ItEr19S08CUCreacionProxectoPlanificacionItEr18S08: Adding parent relationship. --- .../navalplanner/business/planner/entities/Task.java | 3 +++ .../business/planner/entities/TaskElement.java | 9 +++++++++ .../business/planner/entities/TaskGroup.java | 1 + .../business/planner/entities/Tasks.hbm.xml | 2 ++ .../test/planner/entities/TaskElementTest.java | 4 +++- .../business/test/planner/entities/TaskGroupTest.java | 8 ++++++++ .../test/planner/services/TaskElementServiceTest.java | 11 +++++++++++ 7 files changed, 37 insertions(+), 1 deletion(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java index b8549feb1..e2d249900 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java @@ -109,6 +109,9 @@ public class Task extends TaskElement { "the shares don't sum up the work hours"); TaskGroup result = new TaskGroup(); result.copyPropertiesFrom(this); + if (this.getParent() != null) { + this.getParent().addTaskElement(result); + } for (int i = 0; i < shares.length; i++) { Task task = Task.createTask(hoursGroup); task.copyPropertiesFrom(this); diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java index 35c343275..073902072 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java @@ -29,6 +29,8 @@ public abstract class TaskElement { private String notes; + private TaskGroup parent; + @NotNull private OrderElement orderElement; @@ -45,6 +47,10 @@ public abstract class TaskElement { this.orderElement = task.getOrderElement(); } + public TaskGroup getParent() { + return parent; + } + public String getName() { return name; } @@ -142,4 +148,7 @@ public abstract class TaskElement { public abstract List getChildren(); + protected void setParent(TaskGroup taskGroup) { + this.parent = taskGroup; + } } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskGroup.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskGroup.java index aaf8d17ae..a58554d53 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskGroup.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskGroup.java @@ -15,6 +15,7 @@ public class TaskGroup extends TaskElement { public void addTaskElement(TaskElement task) { Validate.notNull(task); + task.setParent(this); taskElements.add(task); } diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml index da810e332..fb069edc9 100644 --- a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml @@ -14,6 +14,8 @@ + + diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/TaskElementTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/TaskElementTest.java index 9dc4b4114..49b81531b 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/TaskElementTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/TaskElementTest.java @@ -141,7 +141,9 @@ public class TaskElementTest { @Test public void splittingATaskIntoSeveralKeepsDependencies() { HoursGroup hoursGroup = new HoursGroup(); + TaskGroup root = new TaskGroup(); Task taskBeingSplitted = Task.createTask(hoursGroup); + root.addTaskElement(taskBeingSplitted); Task sourceDependencyTask = Task.createTask(new HoursGroup()); Task destinationDependencyTask = Task.createTask(new HoursGroup()); taskBeingSplitted.setName("prueba"); @@ -158,7 +160,7 @@ public class TaskElementTest { int[] shares = { 50, 50 }; TaskGroup taskResultOfSplit = taskBeingSplitted.split(shares); - + assertThat(taskResultOfSplit.getParent(), equalTo(root)); assertThat(taskResultOfSplit.getDependenciesWithThisDestination() .size(), equalTo(1)); Dependency withTaskResultOfSplitDestination = taskResultOfSplit diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/TaskGroupTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/TaskGroupTest.java index d54b919dc..a960b8249 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/TaskGroupTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/TaskGroupTest.java @@ -8,6 +8,7 @@ import java.util.Arrays; import java.util.List; import org.junit.Test; +import org.navalplanner.business.orders.entities.HoursGroup; import org.navalplanner.business.planner.entities.Task; import org.navalplanner.business.planner.entities.TaskElement; import org.navalplanner.business.planner.entities.TaskGroup; @@ -38,6 +39,13 @@ public class TaskGroupTest { child2))); } + @Test + public void addingTaskElementToTaskGroupSetsTheParentProperty() { + Task child = Task.createTask(new HoursGroup()); + taskGroup.addTaskElement(child); + assertThat(child.getParent(), equalTo(taskGroup)); + } + @Test(expected = IllegalArgumentException.class) public void cantAddNullTaskElement() { taskGroup.addTaskElement(null); diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/services/TaskElementServiceTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/services/TaskElementServiceTest.java index c5e5471a3..f108a4e83 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/services/TaskElementServiceTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/services/TaskElementServiceTest.java @@ -114,6 +114,17 @@ public class TaskElementServiceTest { checkProperties(taskGroup, reloaded); } + @Test + public void theParentPropertyIsPresentWhenRetrievingTasks() { + TaskGroup taskGroup = createValidTaskGroup(); + taskGroup.addTaskElement(createValidTask()); + taskElementService.save(taskGroup); + flushAndEvict(taskGroup); + TaskElement reloaded = taskElementService.findById(taskGroup.getId()); + TaskElement child = reloaded.getChildren().get(0); + assertThat(child.getParent(), equalTo(reloaded)); + } + private TaskGroup createValidTaskGroup() { TaskGroup result = new TaskGroup(); OrderLine orderLine = createOrderLine();