From d9c7c68a601f9cf885362d649bea87e76809d1d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 12 Oct 2009 15:46:21 +0200 Subject: [PATCH] When setting zero hours on interval the assignments are removed --- .../planner/entities/ResourceAllocation.java | 14 ++++++++------ .../entities/SpecificResourceAllocationTest.java | 12 ++++++++++++ 2 files changed, 20 insertions(+), 6 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 bf41227fc..961fe63cd 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 @@ -328,12 +328,14 @@ public abstract class ResourceAllocation extends Validate.isTrue(startInclusive.compareTo(endExclusive) <= 0, "the end must be equal or posterior than start"); List assignmentsCreated = new ArrayList(); - List days = getDays(startInclusive, endExclusive); - int[] hoursEachDay = hoursDistribution(days, hours); - int i = 0; - for (LocalDate day : getDays(startInclusive, endExclusive)) { - assignmentsCreated.addAll(distributeForDay(day, - hoursEachDay[i++])); + if (hours > 0) { + List days = getDays(startInclusive, endExclusive); + int[] hoursEachDay = hoursDistribution(days, hours); + int i = 0; + for (LocalDate day : getDays(startInclusive, endExclusive)) { + assignmentsCreated.addAll(distributeForDay(day, + hoursEachDay[i++])); + } } removingAssignments(getAssignments(startInclusive, endExclusive)); addingAssignments(assignmentsCreated); diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/SpecificResourceAllocationTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/SpecificResourceAllocationTest.java index 64d5d0528..5f30bf08e 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/SpecificResourceAllocationTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/entities/SpecificResourceAllocationTest.java @@ -220,6 +220,18 @@ public class SpecificResourceAllocationTest { 3, 3)); } + @Test + public void allocatingZeroHoursOnIntervalRemovesThem() { + givenResourceCalendarAlwaysReturning(3); + LocalDate start = new LocalDate(2000, 2, 4); + givenSpecificResourceAllocation(start, 4); + specificResourceAllocation.allocate(ResourcesPerDay.amount(1)); + specificResourceAllocation.onInterval(start, start.plusDays(2)) + .allocateHours(0); + assertThat(specificResourceAllocation.getAssignments(), from(start + .plusDays(2))); + } + @Test public void theResourcesPerDayAreRecalculatedWhenAllocationHoursOnInterval() { givenResourceCalendarAlwaysReturning(3);