From 65503d0318a6c75574c9646a5f1f2ab5959d1ef8 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Fri, 28 Aug 2009 14:46:43 +0200 Subject: [PATCH] ItEr23S08CUEdicionCalendarioLaboral: Checking and managing errors when expiring date is set. --- .../calendars/entities/BaseCalendarTest.java | 8 ++++++ .../calendars/BaseCalendarCRUDController.java | 26 +++++++++++++++---- .../web/calendars/BaseCalendarModel.java | 10 ++++++- .../web/calendars/IBaseCalendarModel.java | 2 ++ .../src/main/webapp/calendars/_edition.zul | 3 ++- 5 files changed, 42 insertions(+), 7 deletions(-) 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 cd3f70e2d..c0813f795 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 @@ -651,4 +651,12 @@ public class BaseCalendarTest { calendar.newVersion(new LocalDate()); } + @Test(expected = UnsupportedOperationException.class) + public void testNotAllowSetExpiringDateIfNotNextCalendar() { + BaseCalendar calendar = createBasicCalendar(); + assertThat(calendar.getNextCalendar(), nullValue()); + + calendar.setExpiringDate(WEDNESDAY_LOCAL_DATE); + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarCRUDController.java index ea2b0df8a..6899a5bcb 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarCRUDController.java @@ -461,13 +461,16 @@ public class BaseCalendarCRUDController extends GenericForwardComposer { } public void setDateValidFrom(Date date) { + Component component = editWindow.getFellow("dateValidFrom"); + try { baseCalendarModel.setDateValidFrom(date); } catch (IllegalArgumentException e) { - throw new WrongValueException( - editWindow.getFellow("dateValidFrom"), - e.getMessage()); + throw new WrongValueException(component, e.getMessage()); + } catch (UnsupportedOperationException e) { + throw new WrongValueException(component, e.getMessage()); } + Clients.closeErrorBox(component); } public Date getExpiringDate() { @@ -475,8 +478,17 @@ public class BaseCalendarCRUDController extends GenericForwardComposer { } public void setExpiringDate(Date date) { - // TODO check possible wrong dates - baseCalendarModel.setExpiringDate(date); + Component component = editWindow.getFellow("expiringDate"); + + try { + baseCalendarModel.setExpiringDate((new LocalDate(date)).plusDays(1) + .toDateTimeAtStartOfDay().toDate()); + } catch (IllegalArgumentException e) { + throw new WrongValueException(component, e.getMessage()); + } catch (UnsupportedOperationException e) { + throw new WrongValueException(component, e.getMessage()); + } + Clients.closeErrorBox(component); } public void goToCreateCopyForm(BaseCalendar baseCalendar) { @@ -801,4 +813,8 @@ public class BaseCalendarCRUDController extends GenericForwardComposer { Util.reloadBindings(createNewVersion); } + public boolean isLastVersion() { + return baseCalendarModel.isLastVersion(); + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java index 059e93c2f..0cf440b82 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java @@ -359,7 +359,7 @@ public class BaseCalendarModel implements IBaseCalendarModel { if ((getBaseCalendar() != null) && (getBaseCalendar().getExpiringDate() != null)) { getBaseCalendar() - .setExpiringDate((new LocalDate(date)).plusDays(1)); + .setExpiringDate(date); } } @@ -412,6 +412,14 @@ public class BaseCalendarModel implements IBaseCalendarModel { } } + @Override + public boolean isLastVersion() { + if (getBaseCalendar() != null) { + return (getBaseCalendar().getNextCalendar() == null); + } + return false; + } + /* * Final conversation steps */ diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java index d057bf8a4..8dd8f2df7 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java @@ -116,6 +116,8 @@ public interface IBaseCalendarModel { void createNewVersion(Date date); + boolean isLastVersion(); + /* * Final conversation steps */ diff --git a/navalplanner-webapp/src/main/webapp/calendars/_edition.zul b/navalplanner-webapp/src/main/webapp/calendars/_edition.zul index e0b9e4362..84ea2ada8 100644 --- a/navalplanner-webapp/src/main/webapp/calendars/_edition.zul +++ b/navalplanner-webapp/src/main/webapp/calendars/_edition.zul @@ -85,7 +85,8 @@