From c0b64a0bef4616665f5bfda920342709c56e7572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Thu, 16 Sep 2010 19:14:42 +0200 Subject: [PATCH] Define an order relationship for TaskDates FEA: ItEr60S19TimeUnitDataType --- .../business/workingday/TaskDate.java | 23 ++++++++++++++++++- .../test/workingday/TaskDateTest.java | 17 ++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workingday/TaskDate.java b/navalplanner-business/src/main/java/org/navalplanner/business/workingday/TaskDate.java index 510bb33ec..5b41b0506 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/workingday/TaskDate.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/workingday/TaskDate.java @@ -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 { + + 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; + } + } diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/workingday/TaskDateTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/workingday/TaskDateTest.java index 83bf2e64a..448ad2fe5 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/workingday/TaskDateTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/workingday/TaskDateTest.java @@ -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)); + } }