[Bug #911] Declare the truly required type in Resource
It only works with Criterion, not with other ICriterion implementations. FEA: ItEr74S04BugFixing
This commit is contained in:
parent
f02c853599
commit
302cc95caa
8 changed files with 28 additions and 33 deletions
|
|
@ -28,7 +28,6 @@ import org.navalplanner.business.calendars.entities.AvailabilityTimeLine;
|
|||
import org.navalplanner.business.calendars.entities.ResourceCalendar;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
import org.navalplanner.business.resources.entities.CriterionSatisfaction;
|
||||
import org.navalplanner.business.resources.entities.ICriterion;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
|
||||
/**
|
||||
|
|
@ -65,9 +64,9 @@ public class AvailabilityCalculator {
|
|||
}
|
||||
|
||||
public static AvailabilityTimeLine getCriterionsAvailabilityFor(
|
||||
Collection<? extends ICriterion> criterions, Resource resource) {
|
||||
Collection<? extends Criterion> criterions, Resource resource) {
|
||||
AvailabilityTimeLine result = AvailabilityTimeLine.allValid();
|
||||
for (ICriterion each : criterions) {
|
||||
for (Criterion each : criterions) {
|
||||
result = result.and(buildTimeline(resource
|
||||
.getSatisfactionsFor(each)));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -363,7 +363,7 @@ public class GenericResourceAllocation extends
|
|||
}
|
||||
|
||||
@Override
|
||||
public EffortDuration getAssignedEffort(ICriterion criterion,
|
||||
public EffortDuration getAssignedEffort(Criterion criterion,
|
||||
LocalDate start, LocalDate endExclusive) {
|
||||
return super.getAssignedDuration(start, endExclusive);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ import org.navalplanner.business.planner.entities.allocationalgorithms.Resources
|
|||
import org.navalplanner.business.planner.entities.allocationalgorithms.UntilFillingHoursAllocator;
|
||||
import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueueElement;
|
||||
import org.navalplanner.business.resources.daos.IResourcesSearcher;
|
||||
import org.navalplanner.business.resources.entities.ICriterion;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
import org.navalplanner.business.resources.entities.Machine;
|
||||
import org.navalplanner.business.resources.entities.MachineWorkersConfigurationUnit;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
|
|
@ -1771,7 +1771,8 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
return getAssignedDuration(start, endExclusive).roundToHours();
|
||||
}
|
||||
|
||||
public abstract EffortDuration getAssignedEffort(ICriterion criterion, LocalDate start,
|
||||
public abstract EffortDuration getAssignedEffort(Criterion criterion,
|
||||
LocalDate start,
|
||||
LocalDate endExclusive);
|
||||
|
||||
private List<DayAssignment> filter(List<DayAssignment> assignments,
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ import org.navalplanner.business.common.ProportionalDistributor;
|
|||
import org.navalplanner.business.planner.entities.allocationalgorithms.ResourcesPerDayModification;
|
||||
import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueueElement;
|
||||
import org.navalplanner.business.resources.daos.IResourcesSearcher;
|
||||
import org.navalplanner.business.resources.entities.ICriterion;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
import org.navalplanner.business.resources.entities.Worker;
|
||||
import org.navalplanner.business.scenarios.entities.Scenario;
|
||||
|
|
@ -338,7 +338,8 @@ public class SpecificResourceAllocation extends
|
|||
}
|
||||
|
||||
@Override
|
||||
public EffortDuration getAssignedEffort(ICriterion criterion, LocalDate startInclusive,
|
||||
public EffortDuration getAssignedEffort(Criterion criterion,
|
||||
LocalDate startInclusive,
|
||||
LocalDate endExclusive) {
|
||||
EffortDuration result = EffortDuration.zero();
|
||||
for (Interval each : getIntervalsRelatedWith(criterion, startInclusive,
|
||||
|
|
@ -352,7 +353,7 @@ public class SpecificResourceAllocation extends
|
|||
return result;
|
||||
}
|
||||
|
||||
private List<Interval> getIntervalsRelatedWith(ICriterion criterion,
|
||||
private List<Interval> getIntervalsRelatedWith(Criterion criterion,
|
||||
LocalDate startInclusive, LocalDate endExclusive) {
|
||||
Interval queryInterval = AvailabilityTimeLine.Interval.create(
|
||||
startInclusive, endExclusive);
|
||||
|
|
@ -366,7 +367,8 @@ public class SpecificResourceAllocation extends
|
|||
return result;
|
||||
}
|
||||
|
||||
private List<Interval> getIntervalsThisAllocationInterferesWith(ICriterion criterion) {
|
||||
private List<Interval> getIntervalsThisAllocationInterferesWith(
|
||||
Criterion criterion) {
|
||||
AvailabilityTimeLine availability = AvailabilityCalculator
|
||||
.getCriterionsAvailabilityFor(Collections.singleton(criterion),
|
||||
resource);
|
||||
|
|
@ -375,7 +377,7 @@ public class SpecificResourceAllocation extends
|
|||
return availability.getValidPeriods();
|
||||
}
|
||||
|
||||
public boolean interferesWith(ICriterion criterion,
|
||||
public boolean interferesWith(Criterion criterion,
|
||||
LocalDate startInclusive, LocalDate endExclusive) {
|
||||
List<Interval> intervalsRelatedWith = getIntervalsRelatedWith(
|
||||
criterion, startInclusive, endExclusive);
|
||||
|
|
|
|||
|
|
@ -338,26 +338,19 @@ public class Criterion extends IntegrationEntity implements ICriterion {
|
|||
|
||||
}
|
||||
|
||||
public boolean isEquivalent(ICriterion criterion) {
|
||||
if (criterion instanceof Criterion) {
|
||||
Criterion other = (Criterion) criterion;
|
||||
return new EqualsBuilder().append(getName(), other.getName())
|
||||
.append(getType(), other.getType()).isEquals();
|
||||
}
|
||||
return false;
|
||||
public boolean isEquivalent(Criterion other) {
|
||||
return new EqualsBuilder().append(getName(), other.getName())
|
||||
.append(getType(), other.getType()).isEquals();
|
||||
}
|
||||
|
||||
public boolean isEquivalentOrIncludedIn(ICriterion criterion) {
|
||||
if (criterion instanceof Criterion) {
|
||||
Criterion other = (Criterion) criterion;
|
||||
if (isEquivalent(other)) {
|
||||
public boolean isEquivalentOrIncludedIn(Criterion other) {
|
||||
if (isEquivalent(other)) {
|
||||
return true;
|
||||
}
|
||||
for (Criterion each : other.getChildren()) {
|
||||
if (isEquivalentOrIncludedIn(each)) {
|
||||
return true;
|
||||
}
|
||||
for (Criterion each : other.getChildren()) {
|
||||
if (isEquivalentOrIncludedIn(each)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -309,7 +309,7 @@ public abstract class Resource extends IntegrationEntity {
|
|||
});
|
||||
}
|
||||
|
||||
public Query from(final ICriterion criterion) {
|
||||
public Query from(final Criterion criterion) {
|
||||
return withNewPredicate(new IPredicate() {
|
||||
|
||||
@Override
|
||||
|
|
@ -410,7 +410,7 @@ public abstract class Resource extends IntegrationEntity {
|
|||
return query().from(type).result();
|
||||
}
|
||||
|
||||
public List<CriterionSatisfaction> getSatisfactionsFor(ICriterion criterion) {
|
||||
public List<CriterionSatisfaction> getSatisfactionsFor(Criterion criterion) {
|
||||
return query().from(criterion).result();
|
||||
}
|
||||
|
||||
|
|
@ -424,7 +424,7 @@ public abstract class Resource extends IntegrationEntity {
|
|||
}
|
||||
|
||||
public List<CriterionSatisfaction> getCurrentSatisfactionsFor(
|
||||
ICriterion criterion) {
|
||||
Criterion criterion) {
|
||||
return query().from(criterion).current().result();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -67,7 +67,6 @@ import org.navalplanner.business.planner.entities.Task;
|
|||
import org.navalplanner.business.planner.entities.allocationalgorithms.ResourcesPerDayModification;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
import org.navalplanner.business.resources.entities.CriterionSatisfaction;
|
||||
import org.navalplanner.business.resources.entities.ICriterion;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
import org.navalplanner.business.resources.entities.VirtualWorker;
|
||||
import org.navalplanner.business.resources.entities.Worker;
|
||||
|
|
@ -236,7 +235,7 @@ public class GenericResourceAllocationTest {
|
|||
return loadSpec.getLoad(date);
|
||||
}
|
||||
}).anyTimes();
|
||||
expect(result.getSatisfactionsFor(isA(ICriterion.class))).andReturn(
|
||||
expect(result.getSatisfactionsFor(isA(Criterion.class))).andReturn(
|
||||
satisfactionsForPredefinedCriterions(result)).anyTimes();
|
||||
replay(result);
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -251,7 +251,8 @@ public class CriterionDAOTest {
|
|||
|
||||
@Override
|
||||
public boolean contains(ICriterion c) {
|
||||
return criterion.isEquivalent(c);
|
||||
return c instanceof Criterion
|
||||
&& criterion.isEquivalent((Criterion) c);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue