From 77bf52ee44e727416be658f2de7ff6e1083c992f Mon Sep 17 00:00:00 2001 From: Susana Montes Pedreira Date: Wed, 11 May 2011 14:06:20 +0200 Subject: [PATCH] [Bug #996] fixing bug in desconsolidation action. it only removes and adds the new day assignments that have been reassigned. FEA: ItEr74S04BugFixing --- .../planner/entities/ResourceAllocation.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) 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 4ec870d9d..fb4e263e0 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 @@ -1211,15 +1211,40 @@ public abstract class ResourceAllocation extends private void updateAssignments(AllocationInterval interval, List assignmentsCreated) { + /* + * removes assignments except those that are consolidated + */ removingAssignments(withoutConsolidated(interval .getAssignmentsOnInterval())); - addingAssignments(assignmentsCreated); + /* + * add the assignments except those that already are consolidated. At + * this moment all the assignments in the interval are consolidated. So + * that it removes the created assignments that have got same date and + * therefore are already added. + */ + addingAssignments(subtractAssignmentsWithSameDate(assignmentsCreated, + interval.getAssignmentsOnInterval())); updateConsolidatedAssignments(interval); updateOriginalTotalAssigment(); updateResourcesPerDay(); } + private Collection subtractAssignmentsWithSameDate( + List assignmentsCreated, + List assignmentsOnInterval) { + List toRemove = new ArrayList(); + for (DayAssignment each : assignmentsOnInterval) { + for (T assignment : assignmentsCreated) { + if (each.getDay().compareTo(assignment.getDay()) == 0) { + toRemove.add(assignment); + } + } + } + assignmentsCreated.removeAll(toRemove); + return assignmentsCreated; + } + private void updateConsolidatedAssignments(AllocationInterval interval) { for (DayAssignment day : interval.getAssignmentsOnInterval()) { day.setConsolidated(false);