From 1d61e93e7807633fe4ccd64aa2fb1bb2d28f341f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Wed, 27 Oct 2010 13:32:49 +0200 Subject: [PATCH] Pull up switchTo implementation FEA: ItEr62OTS04PlanificacionHaciaAtras --- .../entities/GenericResourceAllocation.java | 28 ++++++----------- .../planner/entities/ResourceAllocation.java | 31 ++++++++++++------- .../entities/SpecificResourceAllocation.java | 28 +++++++---------- 3 files changed, 41 insertions(+), 46 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/GenericResourceAllocation.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/GenericResourceAllocation.java index 5fb73faf4..22420363c 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/GenericResourceAllocation.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/GenericResourceAllocation.java @@ -285,13 +285,20 @@ public class GenericResourceAllocation extends return new GenericAllocation(new ArrayList(resources)); } + protected DayAssignmentsState explicitlySpecifiedState(Scenario scenario) { + GenericDayAssignmentsContainer container = retrieveOrCreateContainerFor(scenario); + return new ExplicitlySpecifiedScenarioState(container); + } + private class ExplicitlySpecifiedScenarioState extends DayAssignmentsState { private final GenericResourceAllocation outerGenericAllocation = GenericResourceAllocation.this; private final GenericDayAssignmentsContainer container; - ExplicitlySpecifiedScenarioState(Scenario scenario) { - this.container = retrieveOrCreateContainerFor(scenario); + ExplicitlySpecifiedScenarioState( + GenericDayAssignmentsContainer container) { + Validate.notNull(container); + this.container = container; } @Override @@ -321,12 +328,6 @@ public class GenericResourceAllocation extends container.resetTo(assignments); } - @Override - protected DayAssignmentsState switchTo(Scenario scenario) { - return new ExplicitlySpecifiedScenarioState( - scenario); - } - @Override IntraDayDate getIntraDayEnd() { return container.getIntraDayEnd(); @@ -350,12 +351,6 @@ public class GenericResourceAllocation extends protected void setParentFor(GenericDayAssignment each) { each.setGenericResourceAllocation(outerGenericAllocation); } - - protected DayAssignmentsState createExplicitlySpecifiedState( - Scenario scenario) { - return new ExplicitlySpecifiedScenarioState(scenario); - } - } private Set getUnorderedForScenario( @@ -386,11 +381,6 @@ public class GenericResourceAllocation extends return getUnorderedForScenario(scenario); } - @Override - protected DayAssignmentsState switchTo(Scenario scenario) { - return new ExplicitlySpecifiedScenarioState(scenario); - } - @Override protected IntraDayDate getIntraDayEndFor(Scenario scenario) { return retrieveOrCreateContainerFor(scenario).getIntraDayEnd(); 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 0adf25831..feb0a069a 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 @@ -962,7 +962,18 @@ public abstract class ResourceAllocation extends } } - protected abstract DayAssignmentsState switchTo(Scenario scenario); + final protected DayAssignmentsState switchTo(Scenario scenario) { + DayAssignmentsState result = explicitlySpecifiedState(scenario); + copyTransientPropertiesIfAppropiateTo(result); + return result; + } + + /** + * Override if necessary to do extra actions + */ + protected void copyTransientPropertiesIfAppropiateTo( + DayAssignmentsState newStateForScenario) { + } } protected abstract class TransientState extends DayAssignmentsState { @@ -1007,19 +1018,16 @@ public abstract class ResourceAllocation extends this.intraDayEnd = intraDayEnd; } - @Override - final protected DayAssignmentsState switchTo(Scenario scenario) { - DayAssignmentsState result = createExplicitlySpecifiedState(scenario); - result.resetTo(getUnorderedAssignments()); - result.setIntraDayEnd(getIntraDayEnd()); - return result; - } - - protected abstract DayAssignmentsState createExplicitlySpecifiedState( - Scenario scenario); + protected void copyTransientPropertiesIfAppropiateTo( + DayAssignmentsState newStateForScenario) { + newStateForScenario.resetTo(getUnorderedAssignments()); + newStateForScenario.setIntraDayEnd(getIntraDayEnd()); + }; } + protected abstract DayAssignmentsState explicitlySpecifiedState( + Scenario scenario); /** * It uses the current scenario retrieved from {@link IScenarioManager} in * order to return the assignments for that scenario. This state doesn't @@ -1085,6 +1093,7 @@ public abstract class ResourceAllocation extends protected abstract Collection getUnorderedAssignmentsForScenario( Scenario scenario); + } protected abstract DayAssignmentsState getDayAssignmentsState(); diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/SpecificResourceAllocation.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/SpecificResourceAllocation.java index a14c0d2ff..91dab1c28 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/SpecificResourceAllocation.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/SpecificResourceAllocation.java @@ -267,14 +267,20 @@ public class SpecificResourceAllocation extends return Collections.singletonList(resource); } + protected DayAssignmentsState explicitlySpecifiedState(Scenario scenario) { + SpecificDayAssignmentsContainer container = retrieveOrCreateContainerFor(scenario); + return new ExplicitlySpecifiedScenarioState(container); + } + private class ExplicitlySpecifiedScenarioState extends DayAssignmentsState { private SpecificResourceAllocation outerSpecificAllocation = SpecificResourceAllocation.this; private final SpecificDayAssignmentsContainer container; - private ExplicitlySpecifiedScenarioState(Scenario scenario) { - Validate.notNull(scenario); - this.container = retrieveOrCreateContainerFor(scenario); + private ExplicitlySpecifiedScenarioState( + SpecificDayAssignmentsContainer container) { + Validate.notNull(container); + this.container = container; } @Override @@ -315,11 +321,10 @@ public class SpecificResourceAllocation extends each.setSpecificResourceAllocation(outerSpecificAllocation); } - @Override - protected DayAssignmentsState switchTo(Scenario scenario) { - return new ExplicitlySpecifiedScenarioState( - scenario); + protected void copyTransientPropertiesIfAppropiateTo( + DayAssignmentsState newStateForScenario) { } + } private class TransientState extends @@ -335,10 +340,6 @@ public class SpecificResourceAllocation extends each.setSpecificResourceAllocation(outerSpecificAllocation); } - protected DayAssignmentsState createExplicitlySpecifiedState( - Scenario scenario) { - return new ExplicitlySpecifiedScenarioState(scenario); - } } private Set getUnorderedFor(Scenario scenario) { @@ -368,11 +369,6 @@ public class SpecificResourceAllocation extends return getUnorderedFor(scenario); } - @Override - protected DayAssignmentsState switchTo(Scenario scenario) { - return new ExplicitlySpecifiedScenarioState(scenario); - } - @Override protected IntraDayDate getIntraDayEndFor(Scenario scenario) { return retrieveOrCreateContainerFor(scenario).getIntraDayEnd();