From e83acbdcccc52fdeda3b98cdb78263551e3046cf Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Tue, 24 Nov 2009 13:28:51 +0100 Subject: [PATCH] ItEr35S08CUAsignacionCalendarioLaboralRecursoItEr25S09: Removed options to create machine calendars. --- .../web/resources/machine/IMachineModel.java | 9 +- .../machine/MachineCRUDController.java | 107 ++++++++---------- .../web/resources/machine/MachineModel.java | 47 ++++++++ .../webapp/resources/machine/_calendar.zul | 45 +------- 4 files changed, 108 insertions(+), 100 deletions(-) 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 677574b40..bc0c8ccfc 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 @@ -88,4 +88,11 @@ public interface IMachineModel { List getBaseCalendars(); void removeConfigurationUnit(MachineWorkersConfigurationUnit unit); -} \ No newline at end of file + + void setCalendar(ResourceCalendar resourceCalendar); + + ResourceCalendar getCalendar(); + + BaseCalendar getDefaultCalendar(); + +} 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 590f9d2f7..ea0f45e02 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 @@ -47,7 +47,7 @@ import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Combobox; import org.zkoss.zul.Comboitem; -import org.zkoss.zul.Radio; +import org.zkoss.zul.ComboitemRenderer; import org.zkoss.zul.Tab; import org.zkoss.zul.api.Window; @@ -85,6 +85,8 @@ public class MachineCRUDController extends GenericForwardComposer { } + private BaseCalendarsComboitemRenderer baseCalendarsComboitemRenderer = new BaseCalendarsComboitemRenderer(); + public List getMachines() { return machineModel.getMachines(); } @@ -211,6 +213,9 @@ public class MachineCRUDController extends GenericForwardComposer { if (baseCalendarEditionController != null) { baseCalendarEditionController.save(); } + if (machineModel.getCalendar() == null) { + createCalendar(); + } } private void saveCriterions() throws ValidationException { @@ -229,73 +234,30 @@ public class MachineCRUDController extends GenericForwardComposer { goToList(); } - public void calendarChecked(Radio radio) { - Combobox comboboxDerived = (Combobox) radio - .getFellow("createDerivedCalendar"); - Combobox comboboxCopy = (Combobox) radio - .getFellow("createCopyCalendar"); - - String selectedId = radio.getId(); - if (selectedId.equals("createFromScratch")) { - comboboxDerived.setDisabled(true); - comboboxCopy.setDisabled(true); - } else if (selectedId.equals("createDerived")) { - comboboxDerived.setDisabled(false); - comboboxCopy.setDisabled(true); - } else if (selectedId.equals("createCopy")) { - comboboxDerived.setDisabled(true); - comboboxCopy.setDisabled(false); - } - } - public List getBaseCalendars() { return machineModel.getBaseCalendars(); } private IBaseCalendarModel resourceCalendarModel; - public void createCalendar(String optionId) { - if (optionId.equals("createFromScratch")) { - resourceCalendarModel.initCreate(); - } else if (optionId.equals("createDerived")) { - Combobox combobox = (Combobox) editWindow - .getFellow("createDerivedCalendar"); - Comboitem selectedItem = combobox.getSelectedItem(); - if (selectedItem == null) { - throw new WrongValueException(combobox, - _("Please, select a calendar")); - } - BaseCalendar parentCalendar = (BaseCalendar) combobox - .getSelectedItem().getValue(); - resourceCalendarModel.initCreateDerived(parentCalendar); - } else if (optionId.equals("createCopy")) { - Combobox combobox = (Combobox) editWindow - .getFellow("createCopyCalendar"); - Comboitem selectedItem = combobox.getSelectedItem(); - if (selectedItem == null) { - throw new WrongValueException(combobox, - _("Please, select a calendar")); - } - BaseCalendar origCalendar = (BaseCalendar) combobox - .getSelectedItem().getValue(); - resourceCalendarModel.initCreateCopy(origCalendar); - } else { - throw new RuntimeException(_("Unknow option {0} to create a resource calendar", optionId)); + private void createCalendar() { + Combobox combobox = (Combobox) editWindow + .getFellow("createDerivedCalendar"); + Comboitem selectedItem = combobox.getSelectedItem(); + if (selectedItem == null) { + throw new WrongValueException(combobox, + _("Please, select a calendar")); } - updateCalendarController(); - machineModel.setCalendarOfMachine((ResourceCalendar) resourceCalendarModel + BaseCalendar parentCalendar = (BaseCalendar) combobox.getSelectedItem() + .getValue(); + if (parentCalendar == null) { + parentCalendar = machineModel.getDefaultCalendar(); + } + resourceCalendarModel.initCreateDerived(parentCalendar); + + machineModel.setCalendar((ResourceCalendar) resourceCalendarModel .getBaseCalendar()); - try { - baseCalendarEditionController.doAfterCompose(editCalendarWindow); - } catch (Exception e) { - throw new RuntimeException(e); - } - - baseCalendarEditionController.setSelectedDay(new Date()); - Util.reloadBindings(editCalendarWindow); - Util.reloadBindings(createNewVersionWindow); - reloadWindow(); } private Window editCalendarWindow; @@ -373,4 +335,29 @@ public class MachineCRUDController extends GenericForwardComposer { return configurationController; } -} + public BaseCalendarsComboitemRenderer getBaseCalendarsComboitemRenderer() { + return baseCalendarsComboitemRenderer; + } + + private class BaseCalendarsComboitemRenderer implements ComboitemRenderer { + + @Override + public void render(Comboitem item, Object data) throws Exception { + BaseCalendar calendar = (BaseCalendar) data; + item.setLabel(calendar.getName()); + item.setValue(calendar); + + if (isDefaultCalendar(calendar)) { + Combobox combobox = (Combobox) item.getParent(); + combobox.setSelectedItem(item); + } + } + + private boolean isDefaultCalendar(BaseCalendar calendar) { + BaseCalendar defaultCalendar = machineModel.getDefaultCalendar(); + return defaultCalendar.getId().equals(calendar.getId()); + } + + } + +} \ No newline at end of file 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 1e599b73e..2bf8a3a74 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 @@ -30,9 +30,12 @@ import org.apache.commons.lang.Validate; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.validator.ClassValidator; +import org.hibernate.validator.InvalidValue; import org.navalplanner.business.calendars.daos.IBaseCalendarDAO; import org.navalplanner.business.calendars.entities.BaseCalendar; +import org.navalplanner.business.calendars.entities.CalendarData; import org.navalplanner.business.calendars.entities.ResourceCalendar; +import org.navalplanner.business.common.daos.IConfigurationDAO; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.resources.daos.ICriterionDAO; @@ -90,6 +93,8 @@ public class MachineModel implements IMachineModel { private ICriterionTypeDAO criterionTypeDAO; @Autowired private IWorkerDAO workerDAO; + @Autowired + private IConfigurationDAO configurationDAO; private ClassValidator validator = new ClassValidator( Machine.class); @@ -146,6 +151,13 @@ public class MachineModel implements IMachineModel { reattachWorkersCache(); loadCriterionSatisfactions(); loadConfigurationUnits(); + loadCalendar(); + } + + private void loadCalendar() { + if (machine.getCalendar() != null) { + forceLoadCalendar(machine.getCalendar()); + } } private void loadCriterionSatisfactions() { @@ -268,4 +280,39 @@ public class MachineModel implements IMachineModel { public void removeConfigurationUnit(MachineWorkersConfigurationUnit unit) { machine.removeMachineWorkersConfigurationUnit(unit); } + + @Override + public void setCalendar(ResourceCalendar resourceCalendar) { + if (machine != null) { + machine.setCalendar(resourceCalendar); + } + } + + @Override + public ResourceCalendar getCalendar() { + if (machine != null) { + return machine.getCalendar(); + } + return null; + } + + @Override + @Transactional(readOnly = true) + public BaseCalendar getDefaultCalendar() { + BaseCalendar defaultCalendar = configurationDAO.getConfiguration() + .getDefaultCalendar(); + forceLoadCalendar(defaultCalendar); + return defaultCalendar; + } + + private void forceLoadCalendar(BaseCalendar baseCalendar) { + for (CalendarData calendarData : baseCalendar.getCalendarDataVersions()) { + calendarData.getHoursPerDay().size(); + if (calendarData.getParent() != null) { + forceLoadCalendar(calendarData.getParent()); + } + } + baseCalendar.getExceptions().size(); + } + } diff --git a/navalplanner-webapp/src/main/webapp/resources/machine/_calendar.zul b/navalplanner-webapp/src/main/webapp/resources/machine/_calendar.zul index 667eaf358..137691645 100644 --- a/navalplanner-webapp/src/main/webapp/resources/machine/_calendar.zul +++ b/navalplanner-webapp/src/main/webapp/resources/machine/_calendar.zul @@ -25,46 +25,13 @@
- - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - -