From 7d54dc32f043218ce8cb27b303918d3a4558bc3b Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Thu, 27 Aug 2009 14:14:16 +0200 Subject: [PATCH] ItEr23S08CUEdicionCalendarioLaboral: Added new method getCalendarVersion, that returns the valid calendar for a concrete date. Fixed two mistakes on methods newVersion and newCopy (return statement missing). --- .../calendars/entities/BaseCalendar.java | 18 ++++++++++++++++-- .../calendars/entities/BaseCalendarTest.java | 14 ++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/BaseCalendar.java b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/BaseCalendar.java index c28cbc615..3e7adc950 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/BaseCalendar.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/BaseCalendar.java @@ -444,7 +444,7 @@ public class BaseCalendar extends BaseEntity implements IValidable { public BaseCalendar newVersion(LocalDate date) throws IllegalArgumentException { if (nextCalendar != null) { - nextCalendar.newVersion(date); + return nextCalendar.newVersion(date); } if (previousCalendar != null) { @@ -466,7 +466,7 @@ public class BaseCalendar extends BaseEntity implements IValidable { public BaseCalendar newCopy() { if (nextCalendar != null) { - nextCalendar.newCopy(); + return nextCalendar.newCopy(); } BaseCalendar copy = create(); @@ -504,4 +504,18 @@ public class BaseCalendar extends BaseEntity implements IValidable { this.parent = parent; } + public BaseCalendar getCalendarVersion(Date date) { + return getCalendarVersion(new LocalDate(date)); + } + + public BaseCalendar getCalendarVersion(LocalDate date) { + if (shouldUsePreviousCalendar(date)) { + return previousCalendar.getCalendarVersion(date); + } else if (shouldUseNextCalendar(date)) { + return nextCalendar.getCalendarVersion(date); + } else { + return this; + } + } + } diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/calendars/entities/BaseCalendarTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/calendars/entities/BaseCalendarTest.java index 31d289824..2ae243f5a 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/calendars/entities/BaseCalendarTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/calendars/entities/BaseCalendarTest.java @@ -588,4 +588,18 @@ public class BaseCalendarTest { assertThat(newVersion.getOwnExceptions().size(), equalTo(1)); } + @Test + public void testGetVersion() { + BaseCalendar calendar = createBasicCalendar(); + BaseCalendar newVersion = calendar.newVersion(WEDNESDAY_LOCAL_DATE); + BaseCalendar lastVersion = newVersion.newVersion(SATURDAY_LOCAL_DATE); + + assertThat(lastVersion.getCalendarVersion(MONDAY_LOCAL_DATE), + equalTo(calendar)); + assertThat(lastVersion.getCalendarVersion(THURSDAY_LOCAL_DATE), + equalTo(newVersion)); + assertThat(lastVersion.getCalendarVersion(SUNDAY_LOCAL_DATE), + equalTo(lastVersion)); + } + }