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 cbf6899b9..7312c00c1 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 @@ -136,7 +136,7 @@ public class BaseCalendarCRUDController extends GenericForwardComposer { try { validateCalendarExceptionCodes(); baseCalendarModel.generateCalendarCodes(); - baseCalendarModel.confirmSave(); + baseCalendarModel.confirmSaveAndContinue(); messagesForUser.showMessage(Level.INFO, _( "Base calendar \"{0}\" saved", baseCalendarModel .getBaseCalendar().getName())); 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 a12baa892..ef7d3a223 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 @@ -34,14 +34,14 @@ import org.joda.time.LocalDate; import org.navalplanner.business.calendars.daos.IBaseCalendarDAO; import org.navalplanner.business.calendars.daos.ICalendarExceptionTypeDAO; import org.navalplanner.business.calendars.entities.BaseCalendar; +import org.navalplanner.business.calendars.entities.BaseCalendar.DayType; import org.navalplanner.business.calendars.entities.CalendarAvailability; import org.navalplanner.business.calendars.entities.CalendarData; +import org.navalplanner.business.calendars.entities.CalendarData.Days; import org.navalplanner.business.calendars.entities.CalendarException; import org.navalplanner.business.calendars.entities.CalendarExceptionType; import org.navalplanner.business.calendars.entities.Capacity; import org.navalplanner.business.calendars.entities.ResourceCalendar; -import org.navalplanner.business.calendars.entities.BaseCalendar.DayType; -import org.navalplanner.business.calendars.entities.CalendarData.Days; import org.navalplanner.business.common.IntegrationEntity; import org.navalplanner.business.common.daos.IConfigurationDAO; import org.navalplanner.business.common.entities.Configuration; @@ -489,8 +489,28 @@ public class BaseCalendarModel extends IntegrationEntityModel implements @Override @Transactional(rollbackFor = ValidationException.class) public void confirmSave() throws ValidationException { - checkInvalidValuesCalendar(getBaseCalendar()); - baseCalendarDAO.save(getBaseCalendar()); + confirmSave(getBaseCalendar()); + } + + @Transactional(rollbackFor = ValidationException.class) + private void confirmSave(BaseCalendar calendar) throws ValidationException { + checkInvalidValuesCalendar(calendar); + baseCalendarDAO.save(calendar); + } + + @Override + @Transactional(rollbackFor = ValidationException.class) + public void confirmSaveAndContinue() throws ValidationException { + BaseCalendar baseCalendar = getBaseCalendar(); + confirmSave(baseCalendar); + dontPoseAsTransientObjectAnymore(baseCalendar); + } + + private void dontPoseAsTransientObjectAnymore(BaseCalendar baseCalendar) { + baseCalendar.dontPoseAsTransientObjectAnymore(); + for (CalendarData each: baseCalendar.getCalendarDataVersions()) { + each.dontPoseAsTransientObjectAnymore(); + } } @Override 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 32521b0b6..b86b33e00 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 @@ -194,6 +194,8 @@ public interface IBaseCalendarModel extends IIntegrationEntityModel { void confirmSave() throws ValidationException; + void confirmSaveAndContinue() throws ValidationException; + void confirmRemove(BaseCalendar calendar); void cancel(); @@ -207,4 +209,5 @@ public interface IBaseCalendarModel extends IIntegrationEntityModel { boolean isLastActivationPeriod(CalendarAvailability calendarAvailability); boolean isOwnException(CalendarException exception); -} + +} \ No newline at end of file