Refactor DateAndHour.max and add DateAndHour.min

Remove Validation date not null in constructor

FEA: ItEr65OTS04CorreccionsRecursosLimitantes
This commit is contained in:
Diego Pino Garcia 2010-12-14 17:08:35 +01:00
parent 0670d99e57
commit c3f78fcc8f
4 changed files with 23 additions and 21 deletions

View file

@ -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<DateAndHour> {
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<DateAndHour> {
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) {

View file

@ -53,7 +53,7 @@ public class InsertionRequirements {
private static DateAndHour calculateEarliestPossibleEnd(
LimitingResourceQueueElement element,
List<LimitingResourceQueueDependency> 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<LimitingResourceQueueDependency> 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<Integer> hours = gap.getHoursInGapUntilAllocatingAndGoingToTheEnd(

View file

@ -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);
}

View file

@ -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<Edge> 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<Edge> 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());
}