[Bug #996] fixing bug in desconsolidation action.

it only removes and adds the new day assignments that have been reassigned.

FEA: ItEr74S04BugFixing
This commit is contained in:
Susana Montes Pedreira 2011-05-11 14:06:20 +02:00
parent b6f76b9ee4
commit 77bf52ee44

View file

@ -1211,15 +1211,40 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
private void updateAssignments(AllocationInterval interval,
List<T> 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<? extends T> subtractAssignmentsWithSameDate(
List<T> assignmentsCreated,
List<DayAssignment> assignmentsOnInterval) {
List<T> toRemove = new ArrayList<T>();
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);