From ede7870ae73f8bb11d5a47592014fb315450cab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Thu, 10 Jun 2010 00:49:22 +0200 Subject: [PATCH] ItEr57S04ValidacionEProbasFuncionaisItEr56S04: [Bug #489] Fix bug. ReturningNewAssignments was always adding the initial new assignments (assignments for the current order and scenario that are still not saved). But removals and addings can happen on these new assignments but ReturningNewAssignments kept using the initial new assignments. Instead of passing the initial new assignmetns to ReturningNewAssignments, they are added to resource using @AfterCopy mechanism. --- .../planner/entities/DayAssignment.java | 2 ++ .../web/planner/order/OrderPlanningModel.java | 26 ++----------------- 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/DayAssignment.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/DayAssignment.java index 2498e6d4c..c5905092c 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/DayAssignment.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/DayAssignment.java @@ -40,6 +40,7 @@ import org.joda.time.LocalDate; import org.navalplanner.business.common.BaseEntity; import org.navalplanner.business.resources.entities.Resource; import org.navalplanner.business.scenarios.entities.Scenario; +import org.navalplanner.business.util.deepcopy.AfterCopy; import org.navalplanner.business.util.deepcopy.OnCopy; import org.navalplanner.business.util.deepcopy.Strategy; @@ -229,6 +230,7 @@ public abstract class DayAssignment extends BaseEntity { && day.compareTo(endExclusive) < 0; } + @AfterCopy protected void associateToResource() { getResource().addNewAssignments(Arrays.asList(this)); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java index aecd232f8..1890b8150 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java @@ -270,26 +270,10 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { IAssignmentsOnResourceCalculator { private Set previousAssignmentsSet; - private Map> newAssignments; - public ReturningNewAssignments(List previousAssignments, - List newAssignments) { + public ReturningNewAssignments(List previousAssignments) { this.previousAssignmentsSet = new HashSet( previousAssignments); - this.newAssignments = byResource(newAssignments); - } - - private Map> byResource(List newAssignments) { - Map> result = new HashMap>(); - for (DayAssignment each : newAssignments) { - Resource resource = each.getResource(); - List list = result.get(resource); - if (list == null) { - result.put(resource, new ArrayList()); - } - result.get(resource).add(each); - } - return result; } @Override @@ -300,15 +284,9 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { result.add(each); } } - result.addAll(newAssignmentsFor(resource)); return result; } - private List newAssignmentsFor(Resource resource) { - List result = newAssignments.get(resource); - return result == null ? Collections. emptyList() - : result; - } } private final class TaskElementNavigator implements @@ -1001,7 +979,7 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { .createInitialVersion(currentScenario); orderReloaded.writeSchedulingDataChangesTo(currentScenario, newVersion); assigmentsOnResourceCalculator = new ReturningNewAssignments( - previousAssignments, orderReloaded.getDayAssignments()); + previousAssignments); return createScenarioInfoForNotOwnerScenario(orderReloaded, previousVersion, newVersion); }