Improve thereAreHoursOn

If the start day is not complete it starts looking for available hours
in the next day.

FEA: ItEr62S05BugFixing
This commit is contained in:
Óscar González Fernández 2010-10-12 21:37:13 +02:00
parent 73a3f2cfaf
commit 643de53a0e
2 changed files with 8 additions and 8 deletions

View file

@ -241,7 +241,7 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
@Override
protected boolean thereAreAvailableHoursFrom(
LocalDate start,
IntraDayDate start,
ResourcesPerDayModification resourcesPerDayModification,
EffortDuration effortToAllocate) {
ICalendar calendar = getCalendar(resourcesPerDayModification);
@ -249,7 +249,7 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
.getGoal();
AvailabilityTimeLine availability = resourcesPerDayModification
.getAvailability();
availability.invalidUntil(start);
availability.invalidUntil(start.asExclusiveEnd());
return calendar.thereAreCapacityFor(availability,
resourcesPerDay, effortToAllocate);
}

View file

@ -31,7 +31,6 @@ import java.util.Map;
import java.util.Map.Entry;
import org.apache.commons.lang.Validate;
import org.joda.time.LocalDate;
import org.navalplanner.business.common.ProportionalDistributor;
import org.navalplanner.business.planner.entities.DayAssignment;
import org.navalplanner.business.planner.entities.ResourceAllocation;
@ -67,7 +66,7 @@ public abstract class AllocatorForSpecifiedResourcesPerDayAndHours {
task.getFirstDayNotConsolidated(), task.getIntraDayStartDate());
int i = 0;
IntraDayDate currentEnd = start;
for (EffortPerAllocation each : effortPerAllocation(start.getDate(),
for (EffortPerAllocation each : effortPerAllocation(start,
effortToAllocate)) {
IntraDayDate endCandidate = untilAllocating(start, each.allocation,
each.duration);
@ -78,7 +77,7 @@ public abstract class AllocatorForSpecifiedResourcesPerDayAndHours {
return currentEnd;
}
private List<EffortPerAllocation> effortPerAllocation(LocalDate start,
private List<EffortPerAllocation> effortPerAllocation(IntraDayDate start,
EffortDuration toBeAssigned) {
return new HoursPerAllocationCalculator(allocations)
.calculateEffortsPerAllocation(start, toBeAssigned);
@ -142,7 +141,7 @@ public abstract class AllocatorForSpecifiedResourcesPerDayAndHours {
ResourcesPerDayModification allocation, PartialDay day,
EffortDuration limit);
protected abstract boolean thereAreAvailableHoursFrom(LocalDate start,
protected abstract boolean thereAreAvailableHoursFrom(IntraDayDate start,
ResourcesPerDayModification resourcesPerDayModification,
EffortDuration remainingDuration);
@ -193,7 +192,7 @@ public abstract class AllocatorForSpecifiedResourcesPerDayAndHours {
}
public List<EffortPerAllocation> calculateEffortsPerAllocation(
LocalDate start, EffortDuration toAssign) {
IntraDayDate start, EffortDuration toAssign) {
do {
List<EffortDuration> durations = divideEffort(toAssign);
List<EffortPerAllocation> result = EffortPerAllocation.wrap(
@ -212,7 +211,8 @@ public abstract class AllocatorForSpecifiedResourcesPerDayAndHours {
}
private List<ResourcesPerDayModification> getUnsatisfied(
LocalDate start, List<EffortPerAllocation> hoursPerAllocations) {
IntraDayDate start,
List<EffortPerAllocation> hoursPerAllocations) {
List<ResourcesPerDayModification> cannotSatisfy = new ArrayList<ResourcesPerDayModification>();
for (EffortPerAllocation each : hoursPerAllocations) {
if (!thereAreAvailableHoursFrom(start, each.allocation,