Remove ExplicitlySpecifiedScenarioState for specific and generic resource allocation.

Using base class in ResourceAllocation instead.

FEA: ItEr62OTS04PlanificacionHaciaAtras
This commit is contained in:
Óscar González Fernández 2010-10-27 16:56:17 +02:00
parent 5086f3cb9b
commit b945d4f512
3 changed files with 58 additions and 105 deletions

View file

@ -166,7 +166,8 @@ public class GenericResourceAllocation extends
this.assignmentsState = buildInitialTransientState();
}
private GenericDayAssignmentsContainer retrieveOrCreateContainerFor(
@Override
protected GenericDayAssignmentsContainer retrieveOrCreateContainerFor(
Scenario scenario) {
Map<Scenario, GenericDayAssignmentsContainer> containers = containersByScenario();
GenericDayAssignmentsContainer retrieved = containers.get(scenario);
@ -281,54 +282,6 @@ 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 GenericDayAssignmentsContainer container;
ExplicitlySpecifiedScenarioState(
GenericDayAssignmentsContainer container) {
Validate.notNull(container);
this.container = container;
}
@Override
protected Collection<GenericDayAssignment> getUnorderedAssignments() {
return container.getDayAssignments();
}
@Override
protected void removeAssignments(
List<? extends DayAssignment> assignments) {
container.removeAll(assignments);
}
@Override
protected void addAssignments(
Collection<? extends GenericDayAssignment> assignments) {
container.addAll(assignments);
}
@Override
protected void resetTo(Collection<GenericDayAssignment> assignments) {
container.resetTo(assignments);
}
@Override
IntraDayDate getIntraDayEnd() {
return container.getIntraDayEnd();
}
@Override
public void setIntraDayEnd(IntraDayDate intraDayEnd) {
container.setIntraDayEnd(intraDayEnd);
}
}
@Override
protected void setItselfAsParentFor(GenericDayAssignment dayAssignment) {
dayAssignment.setGenericResourceAllocation(this);

View file

@ -1038,7 +1038,13 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
}
protected abstract DayAssignmentsState explicitlySpecifiedState(
private DayAssignmentsState explicitlySpecifiedState(Scenario scenario) {
IDayAssignmentsContainer<T> container;
container = retrieveOrCreateContainerFor(scenario);
return new ExplicitlySpecifiedScenarioState(container);
}
protected abstract IDayAssignmentsContainer<T> retrieveOrCreateContainerFor(
Scenario scenario);
/**
* It uses the current scenario retrieved from {@link IScenarioManager} in
@ -1108,6 +1114,53 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
}
protected class ExplicitlySpecifiedScenarioState extends
DayAssignmentsState {
private final IDayAssignmentsContainer<T> container;
ExplicitlySpecifiedScenarioState(IDayAssignmentsContainer<T> container) {
Validate.notNull(container);
this.container = container;
}
@Override
protected void addAssignments(Collection<? extends T> assignments) {
container.addAll(assignments);
}
@Override
protected Collection<T> getUnorderedAssignments() {
return container.getDayAssignments();
}
@Override
protected void removeAssignments(
List<? extends DayAssignment> assignments) {
container.removeAll(assignments);
}
@Override
protected void resetTo(Collection<T> assignmentsCopied) {
container.resetTo(assignmentsCopied);
}
@Override
IntraDayDate getIntraDayEnd() {
return container.getIntraDayEnd();
}
@Override
public void setIntraDayEnd(IntraDayDate intraDayEnd) {
container.setIntraDayEnd(intraDayEnd);
}
protected void copyTransientPropertiesIfAppropiateTo(
DayAssignmentsState newStateForScenario) {
}
}
protected abstract DayAssignmentsState getDayAssignmentsState();
public int getConsolidatedHours() {

View file

@ -112,7 +112,8 @@ public class SpecificResourceAllocation extends
state = buildFromDBState();
}
private SpecificDayAssignmentsContainer retrieveOrCreateContainerFor(
@Override
protected SpecificDayAssignmentsContainer retrieveOrCreateContainerFor(
Scenario scenario) {
Map<Scenario, SpecificDayAssignmentsContainer> containers = containersByScenario();
SpecificDayAssignmentsContainer retrieved = containers.get(scenario);
@ -257,60 +258,6 @@ 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 final SpecificDayAssignmentsContainer container;
private ExplicitlySpecifiedScenarioState(
SpecificDayAssignmentsContainer container) {
Validate.notNull(container);
this.container = container;
}
@Override
protected void addAssignments(
Collection<? extends SpecificDayAssignment> assignments) {
container.addAll(assignments);
}
@Override
protected Collection<SpecificDayAssignment> getUnorderedAssignments() {
return container.getDayAssignments();
}
@Override
protected void removeAssignments(
List<? extends DayAssignment> assignments) {
container.removeAll(assignments);
}
@Override
protected void resetTo(
Collection<SpecificDayAssignment> assignmentsCopied) {
container.resetTo(assignmentsCopied);
}
@Override
IntraDayDate getIntraDayEnd() {
return container.getIntraDayEnd();
}
@Override
public void setIntraDayEnd(IntraDayDate intraDayEnd) {
container.setIntraDayEnd(intraDayEnd);
}
protected void copyTransientPropertiesIfAppropiateTo(
DayAssignmentsState newStateForScenario) {
}
}
@Override
protected void setItselfAsParentFor(SpecificDayAssignment dayAssignment) {
dayAssignment.setSpecificResourceAllocation(this);