diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/HoursGroup.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/HoursGroup.java index 14ef62fc3..1c9d3be10 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/HoursGroup.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/HoursGroup.java @@ -52,8 +52,6 @@ public class HoursGroup extends IntegrationEntity implements Cloneable, private static final Log LOG = LogFactory.getLog(HoursGroup.class); - private String code; - private ResourceEnum resourceType = ResourceEnum.WORKER; private Integer workingHours = 0; @@ -88,11 +86,11 @@ public class HoursGroup extends IntegrationEntity implements Cloneable, public static HoursGroup createUnvalidated(String code, ResourceEnum resourceType, Integer workingHours) { - HoursGroup result = new HoursGroup(); + HoursGroup result = create(new HoursGroup()); result.setCode(code); result.setResourceType(resourceType); result.setWorkingHours(workingHours); - return create(result); + return result; } /** @@ -158,7 +156,7 @@ public class HoursGroup extends IntegrationEntity implements Cloneable, private HoursGroup(OrderLine parentOrderLine) { this.parentOrderLine = parentOrderLine; String code = parentOrderLine.getCode(); - this.code = code != null ? code : ""; + this.setCode(code != null ? code : ""); this.setOrderLineTemplate(null); } @@ -167,15 +165,6 @@ public class HoursGroup extends IntegrationEntity implements Cloneable, this.setParentOrderLine(null); } - @NotEmpty(message = "code not specified") - public String getCode() { - return code; - } - - public void setCode(String code) { - this.code = code; - } - public ResourceEnum getResourceType() { return resourceType; } @@ -415,6 +404,13 @@ public class HoursGroup extends IntegrationEntity implements Cloneable, return Registry.getHoursGroupDAO(); } + @Override + public boolean checkConstraintUniqueCode() { + // the automatic checking of this constraint is avoided because it uses + // the wrong code property + return true; + } + public static void checkConstraintHoursGroupUniqueCode(OrderElement order) { HoursGroup repeatedHoursGroup; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/impl/OrderElementConverter.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/impl/OrderElementConverter.java index f1438747d..cd087f216 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/impl/OrderElementConverter.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/impl/OrderElementConverter.java @@ -252,9 +252,14 @@ public final class OrderElementConverter { } OrderElement orderElement = toEntityExceptCriterionRequirements( orderVersion, orderElementDTO, configuration); + // Validate OrderElement.code and HoursGroup.code must be unique + Order.checkConstraintOrderUniqueCode(orderElement); + HoursGroup.checkConstraintHoursGroupUniqueCode(orderElement); + if (configuration.isCriterionRequirements()) { addOrCriterionRequirements(orderElement, orderElementDTO); } + return orderElement; } @@ -356,6 +361,7 @@ public final class OrderElementConverter { OrderElementDTO orderElementDTO, ConfigurationOrderElementConverter configuration) throws ValidationException { + Validate.notNull(parentOrderVersion); OrderElement orderElement; @@ -443,10 +449,6 @@ public final class OrderElementConverter { addAdvanceMeasurements(orderElement, orderElementDTO); } - // Validate OrderElement.code and HoursGroup.code must be unique - Order.checkConstraintOrderUniqueCode(orderElement); - HoursGroup.checkConstraintHoursGroupUniqueCode(orderElement); - return orderElement; } diff --git a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/orders/OrderElementServiceTest.java b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/orders/OrderElementServiceTest.java index e86889bf3..a36242b0c 100644 --- a/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/orders/OrderElementServiceTest.java +++ b/navalplanner-webapp/src/test/java/org/navalplanner/web/test/ws/orders/OrderElementServiceTest.java @@ -339,8 +339,8 @@ public class OrderElementServiceTest { List constraintViolations = instanceConstraintViolationsList .get(0).constraintViolations; - // Mandatory fields: code, workingHours - assertThat(constraintViolations.size(), equalTo(2)); + // Mandatory fields: code + assertThat(constraintViolations.size(), equalTo(1)); for (ConstraintViolationDTO constraintViolationDTO : constraintViolations) { assertThat(constraintViolationDTO.fieldName, anyOf(mustEnd("code"),