From bb5a1927ea08f6eff8d1fc6c1ba3886e396bb152 Mon Sep 17 00:00:00 2001 From: Susana Montes Pedreira Date: Mon, 21 Dec 2009 16:34:41 +0100 Subject: [PATCH] ItEr40S05ValidacionEProbasFuncionaisItEr39S05 : It adds validations to the criteria assigned to the machines and it sorts satisfaction criteria. --- .../AssignedMachineCriterionsModel.java | 16 ++++---- .../IAssignedMachineCriterionsModel.java | 5 +-- .../machine/MachineCRUDController.java | 38 +++++++++++++++++-- .../worker/CriterionsController.java | 7 ++-- .../worker/CriterionsMachineController.java | 25 ++++++++++-- .../webapp/resources/machine/_editMachine.zul | 6 +-- .../resources/machine/_machineCriterions.zul | 26 ++++++------- 7 files changed, 86 insertions(+), 37 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/AssignedMachineCriterionsModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/AssignedMachineCriterionsModel.java index 94bea01e9..66f026e9e 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/AssignedMachineCriterionsModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/AssignedMachineCriterionsModel.java @@ -124,17 +124,17 @@ public class AssignedMachineCriterionsModel implements IAssignedMachineCriterion } @Override - public Set getAllCriterionSatisfactions() { + public List getAllCriterionSatisfactions() { if (resource == null) { - return new HashSet(); + return new ArrayList(); } return allSatisfactionsDTO(); } @Override - public Set getFilterCriterionSatisfactions() { + public List getFilterCriterionSatisfactions() { if (resource == null) { - return new HashSet(); + return new ArrayList(); } return filterSatisfactionsDTO(); } @@ -145,8 +145,8 @@ public class AssignedMachineCriterionsModel implements IAssignedMachineCriterion this.criterionSatisfactionDTOs.add(criterionSatisfactionDTO); } - private Set allSatisfactionsDTO() { - Set satisfactions = new HashSet(); + private List allSatisfactionsDTO() { + List satisfactions = new ArrayList(); for (CriterionSatisfactionDTO criterionSatisfactionDTO : criterionSatisfactionDTOs) { if (!criterionSatisfactionDTO.isIsDeleted()) { satisfactions.add(criterionSatisfactionDTO); @@ -155,8 +155,8 @@ public class AssignedMachineCriterionsModel implements IAssignedMachineCriterion return satisfactions; } - private Set filterSatisfactionsDTO() { - Set satisfactions = new HashSet(); + private List filterSatisfactionsDTO() { + List satisfactions = new ArrayList(); for (CriterionSatisfactionDTO criterionSatisfactionDTO : criterionSatisfactionDTOs) { if ((!criterionSatisfactionDTO.isIsDeleted()) && (criterionSatisfactionDTO.isCurrent())) { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/IAssignedMachineCriterionsModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/IAssignedMachineCriterionsModel.java index 7b550f6a6..fc47e34d7 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/IAssignedMachineCriterionsModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/machine/IAssignedMachineCriterionsModel.java @@ -21,7 +21,6 @@ package org.navalplanner.web.resources.machine; import java.util.List; -import java.util.Set; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.resources.entities.CriterionWithItsType; @@ -44,13 +43,13 @@ public interface IAssignedMachineCriterionsModel { public boolean checkSameCriterionAndSameInterval( CriterionSatisfactionDTO satisfaction); - Set getAllCriterionSatisfactions(); + List getAllCriterionSatisfactions(); List getCriterionWithItsType(); List getCriterionWorkersWithItsType(); - Set getFilterCriterionSatisfactions(); + List getFilterCriterionSatisfactions(); void prepareForEdit(Resource resource); 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 8ad759144..edfd14ecd 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 @@ -34,6 +34,7 @@ import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.resources.entities.Machine; import org.navalplanner.web.calendars.BaseCalendarEditionController; import org.navalplanner.web.calendars.IBaseCalendarModel; +import org.navalplanner.web.common.ConstraintChecker; import org.navalplanner.web.common.IMessagesForUser; import org.navalplanner.web.common.Level; import org.navalplanner.web.common.MessagesForUser; @@ -203,9 +204,12 @@ public class MachineCRUDController extends GenericForwardComposer { } public void save() { + validateConstraints(); try { saveCalendar(); - saveCriterions(); + if (!confirmCriterions()) { + return; + } machineModel.confirmSave(); goToList(); messagesForUser.showMessage(Level.INFO, _("Machine saved")); @@ -215,9 +219,12 @@ public class MachineCRUDController extends GenericForwardComposer { } public void saveAndContinue() { + validateConstraints(); try { saveCalendar(); - saveCriterions(); + if (!confirmCriterions()) { + return; + } machineModel.confirmSave(); goToEditForm(machineModel.getMachine()); messagesForUser.showMessage(Level.INFO,_("Machine saved")); @@ -227,6 +234,26 @@ public class MachineCRUDController extends GenericForwardComposer { } } + private void validateConstraints() { + Tab tab = (Tab) editWindow.getFellowIfAny("tbMachineData"); + try { + validateMachineDataTab(); + tab = (Tab) editWindow.getFellowIfAny("assignedCriteriaTab"); + criterionsController.validateConstraints(); + tab = (Tab) editWindow.getFellowIfAny("costCategoryAssignmentTab"); + resourcesCostCategoryAssignmentController.validateConstraints(); + // TODO: check 'calendar' tab + } catch (WrongValueException e) { + tab.setSelected(true); + throw e; + } + } + + private void validateMachineDataTab() { + ConstraintChecker.isValid(editWindow + .getFellowIfAny("machineDataTabpanel")); + } + private String showInvalidValues(ValidationException e) { String result = ""; for (InvalidValue each : e.getInvalidValues()) @@ -243,11 +270,14 @@ public class MachineCRUDController extends GenericForwardComposer { } } - private void saveCriterions() throws ValidationException { + private boolean confirmCriterions() throws ValidationException { if (criterionsController != null) { - criterionsController.validate(); + if (!criterionsController.validate()) { + return false; + } criterionsController.save(); } + return true; } private void goToList() { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/CriterionsController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/CriterionsController.java index b47ef9124..d28aca3e0 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/CriterionsController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/CriterionsController.java @@ -40,7 +40,7 @@ import org.zkoss.zul.Row; import org.zkoss.zul.Rows; /** - * + * Controller for {@link Criterion} worker
* @author Susana Montes Pedreira */ public class CriterionsController extends GenericForwardComposer { @@ -194,8 +194,9 @@ public class CriterionsController extends GenericForwardComposer { throw new WrongValueException(comp, _("Start date is not valid, the new start date must be lower than the end date")); }else if(!criterionSatisfactionDTO.isPreviousStartDate((Date) value)){ - throw new WrongValueException(comp, - _("End date is not valid, the new end date must be later the current end date")); + throw new WrongValueException( + comp, + _("Start date is not valid, the new start date must be previous the current start date")); } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/CriterionsMachineController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/CriterionsMachineController.java index 57e2d7ca2..54cc3c04b 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/CriterionsMachineController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/CriterionsMachineController.java @@ -10,7 +10,6 @@ import static org.navalplanner.web.common.InvalidInputsChecker.thereAreInvalidIn import java.util.Date; import java.util.List; -import java.util.Set; import org.hibernate.validator.InvalidValue; import org.navalplanner.business.common.exceptions.ValidationException; @@ -18,6 +17,7 @@ import org.navalplanner.business.resources.entities.CriterionSatisfaction; import org.navalplanner.business.resources.entities.CriterionWithItsType; import org.navalplanner.business.resources.entities.Machine; import org.navalplanner.business.workreports.entities.WorkReportLine; +import org.navalplanner.web.common.ConstraintChecker; import org.navalplanner.web.common.IMessagesForUser; import org.navalplanner.web.common.Level; import org.navalplanner.web.common.MessagesForUser; @@ -27,12 +27,14 @@ import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Bandbox; +import org.zkoss.zul.Column; import org.zkoss.zul.Combobox; import org.zkoss.zul.Comboitem; import org.zkoss.zul.Constraint; import org.zkoss.zul.Datebox; import org.zkoss.zul.Grid; import org.zkoss.zul.Hbox; +import org.zkoss.zul.ListModelExt; import org.zkoss.zul.Listitem; import org.zkoss.zul.Row; import org.zkoss.zul.Rows; @@ -67,13 +69,14 @@ public class CriterionsMachineController extends GenericForwardComposer { public void prepareForEdit(Machine machine) { machine.getConfigurationUnits(); assignedMachineCriterionsModel.prepareForEdit(machine); + reload(); } public void prepareForCreate(Machine machine) { assignedMachineCriterionsModel.prepareForCreate(machine); } - public Set getCriterionSatisfactionDTOs() { + public List getCriterionSatisfactionDTOs() { Comboitem comboitem = comboboxFilter.getSelectedItem(); if((comboitem != null) && (comboitem.getLabel().equals("in force"))) { return assignedMachineCriterionsModel @@ -98,6 +101,18 @@ public class CriterionsMachineController extends GenericForwardComposer { public void reload() { Util.reloadBindings(listingCriterions); + forceSortGridSatisfaction(); + } + + public void forceSortGridSatisfaction() { + Column column = (Column) listingCriterions.getColumns().getFirstChild(); + ListModelExt model = (ListModelExt) listingCriterions.getModel(); + if ("ascending".equals(column.getSortDirection())) { + model.sort(column.getSortAscending(), true); + } + if ("descending".equals(column.getSortDirection())) { + model.sort(column.getSortDescending(), false); + } } public void remove(CriterionSatisfactionDTO criterionSatisfactionDTO){ @@ -195,7 +210,7 @@ public class CriterionsMachineController extends GenericForwardComposer { } else if (!criterionSatisfactionDTO.isPreviousStartDate((Date) value)) { throw new WrongValueException( comp, - _("End date is not valid, the new end date must be later the current end date")); + _("Start date is not valid, the new start date must be previous the current start date")); } } @@ -364,4 +379,8 @@ public class CriterionsMachineController extends GenericForwardComposer { private Bandbox getBandType(Row row) { return (Bandbox) ((Hbox) row.getChildren().get(0)).getChildren().get(0); } + + public void validateConstraints() { + ConstraintChecker.isValid(self); + } } diff --git a/navalplanner-webapp/src/main/webapp/resources/machine/_editMachine.zul b/navalplanner-webapp/src/main/webapp/resources/machine/_editMachine.zul index 8478daccf..57122debc 100644 --- a/navalplanner-webapp/src/main/webapp/resources/machine/_editMachine.zul +++ b/navalplanner-webapp/src/main/webapp/resources/machine/_editMachine.zul @@ -26,13 +26,13 @@ - + - + - + diff --git a/navalplanner-webapp/src/main/webapp/resources/machine/_machineCriterions.zul b/navalplanner-webapp/src/main/webapp/resources/machine/_machineCriterions.zul index 205cef429..69f11f881 100644 --- a/navalplanner-webapp/src/main/webapp/resources/machine/_machineCriterions.zul +++ b/navalplanner-webapp/src/main/webapp/resources/machine/_machineCriterions.zul @@ -15,25 +15,25 @@ - + - - - - - + + + + + - - @@ -48,7 +48,7 @@ - - +