diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/FormBinder.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/FormBinder.java index 2f8cc764e..e038c24da 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/FormBinder.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/FormBinder.java @@ -1,11 +1,14 @@ package org.navalplanner.web.planner.allocation; +import static org.navalplanner.web.I18nHelper._; + import java.util.HashMap; import java.util.Map; import org.navalplanner.business.planner.entities.AggregateOfResourceAllocations; import org.navalplanner.business.planner.entities.CalculatedValue; 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.event.Events; @@ -178,4 +181,12 @@ class FormBinder { applyButton.setDisabled(false); } + public void markGenericAllocationMustBeNoZeroOrMoreAllocations( + AllocationDTO allocation) { + Decimalbox decimalbox = resourcesPerDayInputsByAllocationDTO + .get(allocation); + throw new WrongValueException(decimalbox, + _("it must be no zero or must add more allocations")); + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationsBeingEdited.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationsBeingEdited.java index 987ed4ef2..a5dc199b6 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationsBeingEdited.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationsBeingEdited.java @@ -119,7 +119,22 @@ public class ResourceAllocationsBeingEdited { return result; } + public void checkInvalidValues() { + if (thereIsJustOneEmptyGenericResourceAllocation()) { + formBinder + .markGenericAllocationMustBeNoZeroOrMoreAllocations(currentAllocations + .get(0)); + } + } + + private boolean thereIsJustOneEmptyGenericResourceAllocation() { + return currentAllocations.size() == 1 + && currentAllocations.get(0).isGeneric() + && currentAllocations.get(0).isEmptyResourcesPerDay(); + } + public AggregateOfResourceAllocations doAllocation() { + checkInvalidValues(); List allocations = asResourceAllocations(); switch (calculatedValue) { case NUMBER_OF_HOURS: