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); }