From d9e424f56faeef837eee37e73c752ebf1f287fe0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Tue, 28 Jul 2009 20:17:49 +0200 Subject: [PATCH] ItEr18S09CUCreacionProxectoPlanificacionItEr17S10: splitting a task keeps its share of hours if present --- .../business/planner/entities/Task.java | 7 ++---- .../planner/entities/TaskElement.java | 10 +++++++- .../business/planner/entities/TaskGroup.java | 2 +- .../business/planner/entities/Tasks.hbm.xml | 2 +- .../planner/entities/TaskElementTest.java | 23 +++++++++++++++++-- 5 files changed, 34 insertions(+), 10 deletions(-) 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 9cb1d0b6e..a50288f96 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 @@ -35,8 +35,6 @@ public class Task extends TaskElement { private Set resourceAllocations = new HashSet(); - private Integer shareOfHours; - /** * For hibernate, DO NOT USE */ @@ -177,9 +175,7 @@ public class Task extends TaskElement { } @Override - public Integer getWorkHours() { - if (shareOfHours != null) - return shareOfHours; + public Integer defaultWorkHours() { return hoursGroup.getWorkingHours(); } @@ -190,6 +186,7 @@ public class Task extends TaskElement { "the shares don't sum up the work hours"); TaskGroup result = new TaskGroup(); result.copyPropertiesFrom(this); + result.shareOfHours = this.shareOfHours; if (this.getParent() != null) { this.getParent().addTaskElement(result); } 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 6d4917b56..55a53d69c 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 @@ -31,6 +31,8 @@ public abstract class TaskElement { private TaskGroup parent; + protected Integer shareOfHours; + @NotNull private OrderElement orderElement; @@ -38,7 +40,13 @@ public abstract class TaskElement { private Set dependenciesWithThisDestination = new HashSet(); - public abstract Integer getWorkHours(); + public Integer getWorkHours() { + if (shareOfHours != null) + return shareOfHours; + return defaultWorkHours(); + } + + protected abstract Integer defaultWorkHours(); protected void copyPropertiesFrom(Task task) { this.name = task.getName(); 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 f171862dc..bda30237d 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 @@ -30,7 +30,7 @@ public class TaskGroup extends TaskElement { } @Override - public Integer getWorkHours() { + public Integer defaultWorkHours() { return getOrderElement().getWorkHours(); } 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 8d4b829b0..132248d79 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 @@ -7,6 +7,7 @@ + @@ -28,7 +29,6 @@ - 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 60984da25..5abfce75a 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 @@ -125,6 +125,25 @@ public class TaskElementTest { assertThat(third.getWorkHours(), equalTo(50)); } + @Test + public void splittingATaskKeepsItsShareOfHoursIfPresent() { + HoursGroup hoursGroup = new HoursGroup(); + Task initial = Task.createTask(hoursGroup); + initial.setName("prueba"); + initial.setNotes("blabla"); + initial.setStartDate(new Date()); + OrderLine orderLine = new OrderLine(); + hoursGroup.setWorkingHours(100); + orderLine.addHoursGroup(hoursGroup); + initial.setOrderElement(orderLine); + int[] shares = { 50, 50 }; + TaskGroup group = initial.split(shares); + Task t = (Task) group.getChildren().get(0); + TaskGroup childSplittedGroup = t.split(new int[] { 25, 25 }); + assertThat("the work hours must be the same that it had", + childSplittedGroup.getWorkHours(), equalTo(50)); + } + private void checkPopertiesAreKept(Task taskBeingSplitted, TaskElement oneOfTheResult) { assertThat(oneOfTheResult.getName(), equalTo(taskBeingSplitted @@ -208,8 +227,8 @@ public class TaskElementTest { taskToDetach.setStartDate(new Date()); Dependency.createDependency(sourceDependencyTask, taskToDetach, Type.END_START); - Dependency.createDependency(taskToDetach, - destinationDependencyTask, Type.END_START); + Dependency.createDependency(taskToDetach, destinationDependencyTask, + Type.END_START); taskToDetach.detach(); assertThat(sourceDependencyTask.getDependenciesWithThisOrigin().size(), equalTo(0));