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 aabb354a9..5b8dcb6d6 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 @@ -11,18 +11,24 @@ import java.util.List; import java.util.Set; import org.navalplanner.business.common.exceptions.ValidationException; +import org.navalplanner.business.resources.entities.Criterion; +import org.navalplanner.business.resources.entities.CriterionType; import org.navalplanner.business.resources.entities.CriterionWithItsType; import org.navalplanner.business.resources.entities.Machine; +import org.navalplanner.business.resources.entities.ResourceEnum; import org.navalplanner.web.common.Util; import org.navalplanner.web.resources.machine.IAssignedMachineCriterionsModel; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.WrongValueException; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Bandbox; import org.zkoss.zul.Combobox; import org.zkoss.zul.Comboitem; import org.zkoss.zul.Constraint; import org.zkoss.zul.Grid; +import org.zkoss.zul.Listbox; import org.zkoss.zul.Listitem; import org.zkoss.zul.Row; @@ -38,6 +44,8 @@ public class CriterionsMachineController extends GenericForwardComposer { private Grid listingCriterions; + private Listbox lbCriterions; + public CriterionsMachineController() { } @@ -46,6 +54,37 @@ public class CriterionsMachineController extends GenericForwardComposer { public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); comp.setVariable("assignedCriterionsController", this, true); + lbCriterions.addEventListener("onChange", new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + System.out.println("### onChange"); + final Criterion criterion = (Criterion) event.getData(); + System.out.println("### criterion: " + criterion); + final String resource = criterion.getType().getResource(); + if (!isValid(resource)) { + throw new WrongValueException(event.getTarget(), + _("resource not valid")); + } + } + }); + + lbCriterions.addEventListener("onSelect", new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + // System.out.println("### onSelect"); + // final Criterion criterion = (Criterion) event.getData(); + // Listitem item = lbCriterions.getSelectedItem(); + // System.out.println("### selected item: " + item); +// System.out.println("### criterion: " + criterion); +// final String resource = criterion.getType().getResource(); +// if (!isValid(resource)) { +// throw new WrongValueException(event.getTarget(), +// _("resource not valid")); +// } + } + }); } public void prepareForEdit(Machine machine) { @@ -79,18 +118,46 @@ public class CriterionsMachineController extends GenericForwardComposer { reload(); } - public void selectCriterionAndType(Listitem item,Bandbox bandbox, + public void selectCriterionAndType(Listitem item, Bandbox bandbox, CriterionSatisfactionDTO criterionSatisfactionDTO){ if(item != null){ + CriterionWithItsType criterionAndType = (CriterionWithItsType)item.getValue(); + CriterionType criterionType = (CriterionType) criterionAndType + .getType(); + final String resource = criterionType.getResource(); + // System.out.println("### criterionType: " + criterionType); + // System.out.println("### resource: " + resource); + if (!isValid(resource)) { + throw new WrongValueException(item, + _("cannot apply criterion to machine")); + } bandbox.setValue(criterionAndType.getNameAndType()); setCriterionWithItsType(criterionAndType,criterionSatisfactionDTO,bandbox); - }else{ + } else { bandbox.setValue(""); } bandbox.close(); } + private boolean isValid(String resource) { + // return (ResourceEnum.RESOURCE.toString().equals(resource) || + // ResourceEnum.MACHINE + // .toString().equals(resource)); + return isValid(ResourceEnum.valueOf(resource)); + } + + /** + * Can only apply criterion types of resource type RESOURCE or MACHINE + * + * @param resource + * @return + */ + private boolean isValid(ResourceEnum resource) { + return (ResourceEnum.RESOURCE.equals(resource) || ResourceEnum.MACHINE + .equals(resource)); + } + public void setCriterionWithItsType(CriterionWithItsType criterionAndType, CriterionSatisfactionDTO satisfaction,Bandbox bandbox) throws WrongValueException{ this.assignedMachineCriterionsModel.setCriterionWithItsType( diff --git a/navalplanner-webapp/src/main/webapp/resources/machine/_machineCriterions.zul b/navalplanner-webapp/src/main/webapp/resources/machine/_machineCriterions.zul index dc0ac5360..a3033c9cc 100644 --- a/navalplanner-webapp/src/main/webapp/resources/machine/_machineCriterions.zul +++ b/navalplanner-webapp/src/main/webapp/resources/machine/_machineCriterions.zul @@ -27,11 +27,12 @@ + - diff --git a/pom.xml b/pom.xml index 749b3dd2f..defa07a75 100644 --- a/pom.xml +++ b/pom.xml @@ -78,7 +78,7 @@ dev - true + false true true update