Define an order relationship for TaskDates

FEA: ItEr60S19TimeUnitDataType
This commit is contained in:
Óscar González Fernández 2010-09-16 19:14:42 +02:00
parent f63248e7d5
commit c0b64a0bef
2 changed files with 39 additions and 1 deletions

View file

@ -19,6 +19,8 @@
*/
package org.navalplanner.business.workingday;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import org.apache.commons.lang.Validate;
@ -31,7 +33,17 @@ import org.joda.time.LocalDate;
* @author Óscar González Fernández
*
*/
public class TaskDate {
public class TaskDate implements Comparable<TaskDate> {
public static TaskDate min(TaskDate... dates) {
Validate.noNullElements(dates);
return Collections.min(Arrays.asList(dates));
}
public static TaskDate max(TaskDate... dates) {
Validate.noNullElements(dates);
return Collections.max(Arrays.asList(dates));
}
public static TaskDate create(LocalDate date, EffortDuration effortDuration) {
return new TaskDate(date, effortDuration);
@ -92,4 +104,13 @@ public class TaskDate {
return this.date.toDateTimeAtStartOfDay();
}
@Override
public int compareTo(TaskDate other) {
int result = date.compareTo(other.date);
if (result == 0) {
result = effortDuration.compareTo(other.effortDuration);
}
return result;
}
}

View file

@ -82,4 +82,21 @@ public class TaskDateTest {
.toDateTimeAtStartOfDay();
assertThat(dateTime, equalTo(today.toDateTimeAtStartOfDay()));
}
@Test
public void implementsComparable() {
assertTrue(Comparable.class.isAssignableFrom(TaskDate.class));
assertTrue(TaskDate.create(today, halfHour).compareTo(
TaskDate.create(today, oneHour)) < 0);
assertTrue(TaskDate.create(today, oneHour).compareTo(
TaskDate.create(tomorrow, halfHour)) < 0);
}
@Test
public void hasMaxAndMinMethods() {
TaskDate a = TaskDate.create(today, halfHour);
TaskDate b = TaskDate.create(today, oneHour);
assertThat(TaskDate.min(a, b), equalTo(a));
assertThat(TaskDate.max(a, b), equalTo(b));
}
}