From bdb94ab0492a0c3644dc89bceed750e5b3bec596 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Thu, 27 Aug 2009 20:07:38 +0200 Subject: [PATCH] ItEr23S08CUEdicionCalendarioLaboral: Adding button to create a new version. --- .../calendars/entities/BaseCalendar.java | 4 ++ .../calendars/entities/BaseCalendarTest.java | 16 +++++++ .../calendars/BaseCalendarCRUDController.java | 42 +++++++++++++++++++ .../web/calendars/BaseCalendarModel.java | 7 ++++ .../web/calendars/IBaseCalendarModel.java | 2 + .../src/main/webapp/calendars/_edition.zul | 3 ++ .../src/main/webapp/calendars/calendars.zul | 17 ++++++++ 7 files changed, 91 insertions(+) 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 42812896d..14b207104 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 @@ -154,6 +154,10 @@ public class BaseCalendar extends BaseEntity implements IValidable { "Can not set the expiring date " + "because of it does not have a next calendar"); } + if (expiringDate.compareTo(new LocalDate()) <= 0) { + throw new IllegalArgumentException( + "Expering date must be greater than current date"); + } if (previousCalendar != null) { if (expiringDate.compareTo(previousCalendar.getExpiringDate()) <= 0) { throw new IllegalArgumentException( 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 bc529c531..159f8514f 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 @@ -628,4 +628,20 @@ public class BaseCalendarTest { calendar.removeExceptionDay(pastMonth); } + @Test + public void testNotAllowSetExpiringDateInThePast() { + BaseCalendar calendar = createBasicCalendar(); + + LocalDate pastMonth = (new LocalDate()).minusMonths(1); + calendar.newVersion(pastMonth); + + LocalDate pastWeek = (new LocalDate()).minusWeeks(1); + try { + calendar.setExpiringDate(pastWeek); + fail("It should throw an exception"); + } catch (IllegalArgumentException e) { + + } + } + } 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 97fef757f..7b24d6c8a 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 @@ -60,8 +60,12 @@ public class BaseCalendarCRUDController extends GenericForwardComposer { private Window confirmRemove; + private Window createNewVersion; + private boolean confirmingRemove = false; + private boolean creatingNewVersion = false; + private OnlyOneVisible visibility; private IMessagesForUser messagesForUser; @@ -751,4 +755,42 @@ public class BaseCalendarCRUDController extends GenericForwardComposer { } + public Date getDateValidFromNewVersion() { + return new Date(); + } + + public void setDateValidFromNewVersion(Date date) { + // Just for ZK binding not needed + } + + public boolean isCreatingNewVersion() { + return creatingNewVersion; + } + + public void createNewVersion() { + creatingNewVersion = true; + try { + Util.reloadBindings(createNewVersion); + createNewVersion.doModal(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public void aceptCreateNewVersion(Date date) { + // TODO manage errors if date is current date or date is not greater + // than last expiring date + baseCalendarModel.createNewVersion(date); + + creatingNewVersion = false; + Util.reloadBindings(createNewVersion); + setSelectedDay(date); + Util.reloadBindings(editWindow); + } + + public void cancelNewVersion() { + creatingNewVersion = false; + Util.reloadBindings(createNewVersion); + } + } 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 5c7afca7b..059e93c2f 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 @@ -405,6 +405,13 @@ public class BaseCalendarModel implements IBaseCalendarModel { return history; } + @Override + public void createNewVersion(Date date) { + if (getBaseCalendar() != null) { + this.baseCalendar = getBaseCalendar().newVersion(date); + } + } + /* * 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 bee3c95bd..d057bf8a4 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 @@ -114,6 +114,8 @@ public interface IBaseCalendarModel { List getHistoryVersions(); + void createNewVersion(Date date); + /* * Final conversation steps */ diff --git a/navalplanner-webapp/src/main/webapp/calendars/_edition.zul b/navalplanner-webapp/src/main/webapp/calendars/_edition.zul index 28b23bdf5..e0b9e4362 100644 --- a/navalplanner-webapp/src/main/webapp/calendars/_edition.zul +++ b/navalplanner-webapp/src/main/webapp/calendars/_edition.zul @@ -93,6 +93,9 @@ label="${arg.save_button_label}" />