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();