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 @@
-
+