From 643de53a0e237954965c31bbd5f3d8486de58f6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Tue, 12 Oct 2010 21:37:13 +0200 Subject: [PATCH] Improve thereAreHoursOn If the start day is not complete it starts looking for available hours in the next day. FEA: ItEr62S05BugFixing --- .../planner/entities/ResourceAllocation.java | 4 ++-- ...AllocatorForSpecifiedResourcesPerDayAndHours.java | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java index 80cd0fbeb..41945be62 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java @@ -241,7 +241,7 @@ public abstract class ResourceAllocation 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 extends .getGoal(); AvailabilityTimeLine availability = resourcesPerDayModification .getAvailability(); - availability.invalidUntil(start); + availability.invalidUntil(start.asExclusiveEnd()); return calendar.thereAreCapacityFor(availability, resourcesPerDay, effortToAllocate); } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/AllocatorForSpecifiedResourcesPerDayAndHours.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/AllocatorForSpecifiedResourcesPerDayAndHours.java index 5c82e3348..e8b390033 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/AllocatorForSpecifiedResourcesPerDayAndHours.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/AllocatorForSpecifiedResourcesPerDayAndHours.java @@ -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(LocalDate start, + private List 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 calculateEffortsPerAllocation( - LocalDate start, EffortDuration toAssign) { + IntraDayDate start, EffortDuration toAssign) { do { List durations = divideEffort(toAssign); List result = EffortPerAllocation.wrap( @@ -212,7 +211,8 @@ public abstract class AllocatorForSpecifiedResourcesPerDayAndHours { } private List getUnsatisfied( - LocalDate start, List hoursPerAllocations) { + IntraDayDate start, + List hoursPerAllocations) { List cannotSatisfy = new ArrayList(); for (EffortPerAllocation each : hoursPerAllocations) { if (!thereAreAvailableHoursFrom(start, each.allocation,