Pull up asHoursModification
Just for being consistent with asResourcesPerDayModification FEA: ItEr73S04BugFixing
This commit is contained in:
parent
27aabfa7bb
commit
adebb0348b
3 changed files with 53 additions and 24 deletions
|
|
@ -37,7 +37,6 @@ import org.navalplanner.business.calendars.entities.AvailabilityTimeLine;
|
|||
import org.navalplanner.business.calendars.entities.ICalendar;
|
||||
import org.navalplanner.business.planner.entities.EffortDistributor.IResourceSelector;
|
||||
import org.navalplanner.business.planner.entities.EffortDistributor.ResourceWithAssignedDuration;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.HoursModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.ResourcesPerDayModification;
|
||||
import org.navalplanner.business.resources.daos.IResourceDAO;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
|
|
@ -284,12 +283,6 @@ public class GenericResourceAllocation extends
|
|||
return allocation;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HoursModification asHoursModification() {
|
||||
return HoursModification.create(this, getIntendedHours(),
|
||||
getAssociatedResources());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourcesPerDayModification withDesiredResourcesPerDay(
|
||||
ResourcesPerDay resourcesPerDay) {
|
||||
|
|
|
|||
|
|
@ -601,6 +601,27 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
return originalTotalAssignment;
|
||||
}
|
||||
|
||||
public interface IVisitor<T> {
|
||||
|
||||
T on(SpecificResourceAllocation specificAllocation);
|
||||
|
||||
T on(GenericResourceAllocation genericAllocation);
|
||||
}
|
||||
|
||||
public static <T> T visit(ResourceAllocation<?> allocation,
|
||||
IVisitor<T> visitor) {
|
||||
Validate.notNull(allocation);
|
||||
Validate.notNull(visitor);
|
||||
if (allocation instanceof GenericResourceAllocation) {
|
||||
GenericResourceAllocation generic = (GenericResourceAllocation) allocation;
|
||||
return visitor.on(generic);
|
||||
} else if (allocation instanceof SpecificResourceAllocation) {
|
||||
SpecificResourceAllocation specific = (SpecificResourceAllocation) allocation;
|
||||
return visitor.on(specific);
|
||||
}
|
||||
throw new RuntimeException("can't handle: " + allocation.getClass());
|
||||
}
|
||||
|
||||
public abstract ResourcesPerDayModification withDesiredResourcesPerDay(
|
||||
ResourcesPerDay resourcesPerDay);
|
||||
|
||||
|
|
@ -608,19 +629,40 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
if (getIntendedResourcesPerDay().isZero()) {
|
||||
return null;
|
||||
}
|
||||
if (this instanceof GenericResourceAllocation) {
|
||||
GenericResourceAllocation generic = (GenericResourceAllocation) this;
|
||||
return ResourcesPerDayModification.create(generic,
|
||||
getIntendedResourcesPerDay(), getAssociatedResources());
|
||||
} else if (this instanceof SpecificResourceAllocation) {
|
||||
SpecificResourceAllocation specific = (SpecificResourceAllocation) this;
|
||||
return ResourcesPerDayModification.create(specific,
|
||||
getIntendedResourcesPerDay());
|
||||
}
|
||||
throw new RuntimeException("can't handle: " + this.getClass());
|
||||
return visit(this, new IVisitor<ResourcesPerDayModification>() {
|
||||
|
||||
@Override
|
||||
public ResourcesPerDayModification on(
|
||||
SpecificResourceAllocation specificAllocation) {
|
||||
return ResourcesPerDayModification.create(specificAllocation,
|
||||
getIntendedResourcesPerDay());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourcesPerDayModification on(
|
||||
GenericResourceAllocation genericAllocation) {
|
||||
return ResourcesPerDayModification.create(genericAllocation,
|
||||
getIntendedResourcesPerDay(), getAssociatedResources());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public abstract HoursModification asHoursModification();
|
||||
public final HoursModification asHoursModification(){
|
||||
return visit(this, new IVisitor<HoursModification>() {
|
||||
|
||||
@Override
|
||||
public HoursModification on(GenericResourceAllocation genericAllocation) {
|
||||
return HoursModification.create(genericAllocation, getIntendedHours(),
|
||||
getAssociatedResources());
|
||||
}
|
||||
|
||||
@Override
|
||||
public HoursModification on(SpecificResourceAllocation specificAllocation) {
|
||||
return HoursModification.create(specificAllocation,
|
||||
getIntendedHours());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public abstract IAllocatable withPreviousAssociatedResources();
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@ import org.navalplanner.business.calendars.entities.AvailabilityTimeLine.Interva
|
|||
import org.navalplanner.business.calendars.entities.CombinedWorkHours;
|
||||
import org.navalplanner.business.calendars.entities.ICalendar;
|
||||
import org.navalplanner.business.common.ProportionalDistributor;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.HoursModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.ResourcesPerDayModification;
|
||||
import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueueElement;
|
||||
import org.navalplanner.business.resources.daos.IResourceDAO;
|
||||
|
|
@ -243,11 +242,6 @@ public class SpecificResourceAllocation extends
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HoursModification asHoursModification() {
|
||||
return HoursModification.create(this, getIntendedHours());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourcesPerDayModification withDesiredResourcesPerDay(
|
||||
ResourcesPerDay resourcesPerDay) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue