From a0d7316a5af4fd16c46db7cdd6b66d6b6c026ab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Thu, 27 May 2010 14:17:41 +0200 Subject: [PATCH] ItEr58S04ValidacionEProbasFuncionaisItEr57S04: [Bug #473] Avoid bug. The data is inconsistent. The start date and end date from tasks and the ones from allocations are inconsistent. This happenend on a limiting resource. Make advance allocation resillient to incosistent data. --- .../planner/entities/ResourceAllocation.java | 8 ++++++++ .../allocation/AdvancedAllocationController.java | 16 ++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java index fc7ad4ed8..1a9b46676 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java @@ -836,6 +836,14 @@ public abstract class ResourceAllocation extends return Collections.unmodifiableSet(derivedAllocations); } + public LocalDate getStartConsideringAssignments() { + List assignments = getAssignments(); + if (assignments.isEmpty()) { + return getStartDate(); + } + return assignments.get(0).getDay(); + } + public LocalDate getStartDate() { return LocalDate.fromDateFields(task.getStartDate()); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AdvancedAllocationController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AdvancedAllocationController.java index 147f5a879..fb273dfea 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AdvancedAllocationController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AdvancedAllocationController.java @@ -139,12 +139,24 @@ public class AdvancedAllocationController extends GenericForwardComposer { return new Interval(task.getStartDate(), task .getEndDate()); } else { - LocalDate start = all.get(0).getStartDate(); - LocalDate end = getEnd(all); + LocalDate start = min(all.get(0) + .getStartConsideringAssignments(), all.get(0) + .getStartDate()); + LocalDate taskEndDate = LocalDate.fromDateFields(task + .getEndDate()); + LocalDate end = max(getEnd(all), taskEndDate); return new Interval(asDate(start), asDate(end)); } } + private LocalDate min(LocalDate... dates) { + return Collections.min(Arrays.asList(dates), null); + } + + private LocalDate max(LocalDate... dates) { + return Collections.max(Arrays.asList(dates), null); + } + private static LocalDate getEnd(List> all) { ArrayList> reversed = reverse(all); LocalDate end = reversed.get(0).getEndDate();