Pull up switchTo implementation

FEA: ItEr62OTS04PlanificacionHaciaAtras
This commit is contained in:
Óscar González Fernández 2010-10-27 13:32:49 +02:00
parent 303078bf5a
commit 1d61e93e78
3 changed files with 41 additions and 46 deletions

View file

@ -285,13 +285,20 @@ public class GenericResourceAllocation extends
return new GenericAllocation(new ArrayList<Resource>(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<GenericDayAssignment> 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();

View file

@ -962,7 +962,18 @@ public abstract class ResourceAllocation<T extends DayAssignment> 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<T extends DayAssignment> 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<T extends DayAssignment> extends
protected abstract Collection<T> getUnorderedAssignmentsForScenario(
Scenario scenario);
}
protected abstract DayAssignmentsState getDayAssignmentsState();

View file

@ -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<SpecificDayAssignment> 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();