diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/IMachineModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/IMachineModel.java index 4d0535c47..d836288da 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/IMachineModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/IMachineModel.java @@ -105,4 +105,7 @@ public interface IMachineModel extends IIntegrationEntityModel { boolean canRemove(Machine machine); void confirmRemove(Machine machine) throws InstanceNotFoundException; + + void removeCalendar(); + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/MachineCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/MachineCRUDController.java index d5e4c3a8d..5515c969b 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/MachineCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/MachineCRUDController.java @@ -397,8 +397,8 @@ public class MachineCRUDController extends GenericForwardComposer { @Override public void cancel() { + machineModel.removeCalendar(); resourceCalendarModel.cancel(); - machineModel.setCalendarOfMachine(null); reloadWindow(); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/MachineModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/MachineModel.java index 9a1bee852..ba6af9800 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/MachineModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/MachineModel.java @@ -86,6 +86,7 @@ public class MachineModel extends IntegrationEntityModel implements * */ private Machine machine; + private ResourceCalendar calendarToRemove = null; private Map criterions = new HashMap(); private Map workers = new HashMap(); private List machineList = new ArrayList(); @@ -259,9 +260,22 @@ public class MachineModel extends IntegrationEntityModel implements @Override @Transactional public void confirmSave() throws ValidationException { + removeCalendarIfNeeded(); resourceDAO.save(machine); } + private void removeCalendarIfNeeded() { + if (calendarToRemove != null) { + try { + resourceDAO.reattach(machine); + baseCalendarDAO.remove(calendarToRemove.getId()); + calendarToRemove = null; + } catch (InstanceNotFoundException e) { + LOG.error("Couldn't remove calendar"); + } + } + } + @Override @Transactional(readOnly = true) public List getBaseCalendars() { @@ -377,4 +391,11 @@ public class MachineModel extends IntegrationEntityModel implements public IntegrationEntity getCurrentEntity() { return this.machine; } + + @Override + public void removeCalendar() { + calendarToRemove = machine.getCalendar(); + machine.setCalendar(null); + } + }