From 6b93954ec4565b220408fbc308ab03119d2dc6c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Thu, 11 Nov 2010 16:30:00 +0100 Subject: [PATCH] Now workableDays is persistent It is used to calculate the new end when it exists. If the calcualted value is END_DATE it is null. FEA: ItEr61OTS04PlanificacionHaciaAtras --- .../business/planner/entities/Task.java | 18 ++++++++++++++++-- .../business/planner/entities/Tasks.hbm.xml | 2 ++ .../planner/allocation/AllocationResult.java | 2 +- 3 files changed, 19 insertions(+), 3 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 3eb0f1154..c0a4a53da 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 @@ -361,7 +361,8 @@ public class Task extends TaskElement implements ITaskLeafConstraint { List modifications, Collection> toRemove) { this.calculatedValue = calculatedValue; - this.workableDays = newWorkableDays; + this.workableDays = calculatedValue == CalculatedValue.END_DATE ? null + : newWorkableDays; setIntraDayStartDate(start); setIntraDayEndDate(end); for (ModifiedAllocation pair : modifications) { @@ -455,6 +456,10 @@ public class Task extends TaskElement implements ITaskLeafConstraint { @Override protected IntraDayDate calculateNewEndGiven(IntraDayDate newStartDate) { + if (workableDays != null) { + return IntraDayDate.startOfDay(calculateEndGivenWorkableDays( + newStartDate.getDate(), workableDays)); + } return calculateEndKeepingLength(newStartDate); } @@ -687,13 +692,16 @@ public class Task extends TaskElement implements ITaskLeafConstraint { return workableDays; } - public Integer getDaysBetweenDates() { Days daysBetween = Days.daysBetween(getStartAsLocalDate(), getIntraDayEndDate().asExclusiveEnd()); return daysBetween.getDays(); } + public Integer getSpecifiedWorkableDays() { + return workableDays; + } + private Integer getWorkableDaysBetweenDates() { LocalDate end = getIntraDayEndDate().asExclusiveEnd(); return getWorkableDaysUntil(end); @@ -713,6 +721,12 @@ public class Task extends TaskElement implements ITaskLeafConstraint { public LocalDate calculateEndGivenWorkableDays(int workableDays) { LocalDate result = getIntraDayStartDate().getDate(); + return calculateEndGivenWorkableDays(result, workableDays); + } + + private LocalDate calculateEndGivenWorkableDays(LocalDate start, + int workableDays) { + LocalDate result = start; for (int i = 0; i < workableDays; result = result.plusDays(1)) { if (isWorkable(result)) { i++; 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 ec665ae97..9eb6a7b85 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 @@ -67,6 +67,8 @@ + + diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationResult.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationResult.java index f7b8a7932..b6a19e10a 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationResult.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationResult.java @@ -70,7 +70,7 @@ public class AllocationResult { scenario, resourceAllocations); AggregateOfResourceAllocations aggregate = new AggregateOfResourceAllocations( ModifiedAllocation.modified(modifiedAllocations)); - return new AllocationResult(task, task.getWorkableDays(), + return new AllocationResult(task, task.getSpecifiedWorkableDays(), task.getCalculatedValue(), aggregate, Collections.> emptyList(), modifiedAllocations);