From c3f78fcc8f9d995ba5fcc8969c278f7457b16684 Mon Sep 17 00:00:00 2001 From: Diego Pino Garcia Date: Tue, 14 Dec 2010 17:08:35 +0100 Subject: [PATCH] Refactor DateAndHour.max and add DateAndHour.min Remove Validation date not null in constructor FEA: ItEr65OTS04CorreccionsRecursosLimitantes --- .../limiting/entities/DateAndHour.java | 22 ++++++++++--------- .../entities/InsertionRequirements.java | 8 +++---- .../entities/LimitingResourceAllocator.java | 4 ++-- .../LimitingResourceQueueModel.java | 10 ++++----- 4 files changed, 23 insertions(+), 21 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 ab215e03c..7f0e2c6e5 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 @@ -20,8 +20,12 @@ package org.navalplanner.business.planner.limiting.entities; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.Iterator; +import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.Validate; import org.joda.time.DateTime; import org.joda.time.LocalDate; @@ -44,13 +48,11 @@ public class DateAndHour implements Comparable { private Integer hour; public DateAndHour(LocalDate date, Integer hour) { - Validate.notNull(date); this.date = date; this.hour = hour; } public DateAndHour(DateAndHour dateAndHour) { - Validate.notNull(dateAndHour.getDate()); this.date = dateAndHour.getDate(); this.hour = dateAndHour.getHour(); } @@ -92,14 +94,14 @@ public class DateAndHour implements Comparable { return IntraDayDate.create(date, EffortDuration.hours(hour)); } - public static DateAndHour Max(DateAndHour arg0, DateAndHour arg1) { - if (arg0 == null) { - return arg1; - } - if (arg1 == null) { - return arg0; - } - return (arg0.compareTo(arg1) > 0) ? arg0 : arg1; + public static DateAndHour max(DateAndHour... dates) { + dates = (DateAndHour[]) ArrayUtils.removeElement(dates, null); + return dates.length > 0 ? Collections.max(Arrays.asList(dates)) : null; + } + + public static DateAndHour min(DateAndHour... dates) { + dates = (DateAndHour[]) ArrayUtils.removeElement(dates, null); + return dates.length > 0 ? Collections.min(Arrays.asList(dates)) : null; } public boolean isBefore(DateAndHour dateAndHour) { diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/limiting/entities/InsertionRequirements.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/limiting/entities/InsertionRequirements.java index 4c2410ee9..f476839a5 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/limiting/entities/InsertionRequirements.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/limiting/entities/InsertionRequirements.java @@ -53,7 +53,7 @@ public class InsertionRequirements { private static DateAndHour calculateEarliestPossibleEnd( LimitingResourceQueueElement element, List dependenciesAffectingEnd) { - return DateAndHour.Max(asDateAndHour(element + return DateAndHour.max(asDateAndHour(element .getEarliestEndDateBecauseOfGantt()), max(dependenciesAffectingEnd)); } @@ -61,7 +61,7 @@ public class InsertionRequirements { private static DateAndHour calculateEarliestPossibleStart( LimitingResourceQueueElement element, List dependenciesAffectingStart) { - return DateAndHour.Max(asDateAndHour(element + return DateAndHour.max(asDateAndHour(element .getEarlierStartDateBecauseOfGantt()), max(dependenciesAffectingStart)); } @@ -71,7 +71,7 @@ public class InsertionRequirements { DateAndHour result = null; for (LimitingResourceQueueDependency each : dependencies) { assert !each.getHasAsOrigin().isDetached(); - result = DateAndHour.Max(result, each.getDateFromOrigin()); + result = DateAndHour.max(result, each.getDateFromOrigin()); } return result; } @@ -108,7 +108,7 @@ public class InsertionRequirements { if (!isPotentiallyValid(gap)) { return AllocationSpec.invalidOn(gapOnQueue); } - DateAndHour realStart = DateAndHour.Max(earliestPossibleStart, gap + DateAndHour realStart = DateAndHour.max(earliestPossibleStart, gap .getStartTime()); Resource resource = gapOnQueue.getOriginQueue().getResource(); List hours = gap.getHoursInGapUntilAllocatingAndGoingToTheEnd( diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/limiting/entities/LimitingResourceAllocator.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/limiting/entities/LimitingResourceAllocator.java index 940c9fa7c..a2ddd8fd2 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/limiting/entities/LimitingResourceAllocator.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/limiting/entities/LimitingResourceAllocator.java @@ -258,7 +258,7 @@ public class LimitingResourceAllocator { if (pos > 0) { LimitingResourceQueueElement previous = elements.get(pos - 1); return Gap.create(resource, DateAndHour - .Max(previous.getEndTime(), startTimeBecauseOfGantt), next + .max(previous.getEndTime(), startTimeBecauseOfGantt), next .getStartTime()); } @@ -275,7 +275,7 @@ public class LimitingResourceAllocator { final DateAndHour queueEndTime = (lastElement != null) ? lastElement .getEndTime() : null; - DateAndHour startTime = DateAndHour.Max(_startTime, queueEndTime); + DateAndHour startTime = DateAndHour.max(_startTime, queueEndTime); return Gap .create(resource, startTime, null); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java index f7cbc0cc2..b7be0e463 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java @@ -514,9 +514,9 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel { AllocationSpec previous = allocationsToBeDoneByElement.get(each .getKey()); if (previous != null) { - newStart = DateAndHour.Max(newStart, getStartFrom(previous, + newStart = DateAndHour.max(newStart, getStartFrom(previous, each.getValue())); - newEnd = DateAndHour.Max(newEnd, getEndFrom(previous, each + newEnd = DateAndHour.max(newEnd, getEndFrom(previous, each .getValue())); } } @@ -537,7 +537,7 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel { List edges) { DateAndHour result = null; for (Edge each : edges) { - result = DateAndHour.Max(result, + result = DateAndHour.max(result, calculateStart(previous, each.type)); } return result; @@ -556,7 +556,7 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel { private DateAndHour getEndFrom(AllocationSpec previous, List edges) { DateAndHour result = null; for (Edge each : edges) { - result = DateAndHour.Max(result, calculateEnd(previous, each.type)); + result = DateAndHour.max(result, calculateEnd(previous, each.type)); } return result; } @@ -648,7 +648,7 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel { DateAndHour endTime = endFor(dayAssignments); // the assignments can be generated after the required start - startTime = DateAndHour.Max(startTime, startFor(dayAssignments)); + startTime = DateAndHour.max(startTime, startFor(dayAssignments)); if (sameDay(startTime, endTime)) { endTime = new DateAndHour(endTime.getDate(), startTime.getHour() + endTime.getHour()); }