From 41517ca7e00c92acc6eb80f0dc57656f89caa7b4 Mon Sep 17 00:00:00 2001 From: Diego Pino Garcia Date: Thu, 9 Dec 2010 14:14:21 +0100 Subject: [PATCH] [Bug #732] NullPointerException in allocation of limiting resource FEA: ItEr64S03BugFixing --- .../planner/limiting/entities/DateAndHour.java | 10 ++++++++++ .../business/planner/limiting/entities/Gap.java | 13 +++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/limiting/entities/DateAndHour.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/limiting/entities/DateAndHour.java index 04d9ffef9..ab215e03c 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/limiting/entities/DateAndHour.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/limiting/entities/DateAndHour.java @@ -49,6 +49,12 @@ public class DateAndHour implements Comparable { this.hour = hour; } + public DateAndHour(DateAndHour dateAndHour) { + Validate.notNull(dateAndHour.getDate()); + this.date = dateAndHour.getDate(); + this.hour = dateAndHour.getHour(); + } + public LocalDate getDate() { return date; } @@ -147,4 +153,8 @@ public class DateAndHour implements Comparable { }; } + public void plusYears(int years) { + date = date.plusYears(years); + } + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/limiting/entities/Gap.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/limiting/entities/Gap.java index d03931303..61ec0b0c3 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/limiting/entities/Gap.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/limiting/entities/Gap.java @@ -150,13 +150,22 @@ public class Gap implements Comparable { public List getHoursInGapUntilAllocatingAndGoingToTheEnd( BaseCalendar calendar, DateAndHour realStart, DateAndHour allocationEnd, int total) { - Validate.isTrue(getEndTime() == null || allocationEnd.compareTo(getEndTime()) <= 0); + + Validate.isTrue(endTime == null || allocationEnd.compareTo(endTime) <= 0); Validate.isTrue(startTime == null || realStart.compareTo(startTime) >= 0); Validate.isTrue(total >= 0); List result = new ArrayList(); + + // If endTime is null (last tasks) assume the end is in 10 years from now + DateAndHour endDate = getEndTime(); + if (endDate == null) { + endDate = new DateAndHour(realStart); + endDate.plusYears(10); + } + Iterator daysUntilEnd = realStart.toIntraDayDate() - .daysUntil(getEndTime().toIntraDayDate()).iterator(); + .daysUntil(endDate.toIntraDayDate()).iterator(); while (daysUntilEnd.hasNext()) { PartialDay each = daysUntilEnd.next(); int hoursAtDay = calendar.getCapacityOn(each).roundToHours();