From 681c3fdc181f4f8446e61b173fa0312476693b65 Mon Sep 17 00:00:00 2001 From: Diego Pino Garcia Date: Wed, 29 Sep 2010 12:08:40 +0200 Subject: [PATCH] Fix bug validation 'OrderElement code must be unique' must be done for all OrderElements and not only for OrderLineGroups FEA: ItEr61S07PerformanceOrderEdition --- .../orders/daos/IOrderElementDAO.java | 2 +- .../business/orders/daos/OrderElementDAO.java | 4 +-- .../business/orders/entities/Order.java | 27 ------------------- .../orders/entities/OrderElement.java | 23 ++++++++++++++++ .../orders/entities/OrderLineGroup.java | 1 - .../ws/common/impl/OrderElementConverter.java | 2 +- 6 files changed, 27 insertions(+), 32 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/IOrderElementDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/IOrderElementDAO.java index ddea45057..a69a44a66 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/IOrderElementDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/IOrderElementDAO.java @@ -153,6 +153,6 @@ public interface IOrderElementDAO extends IIntegrationEntityDAO { * @param order * @return */ - OrderElement findRepeatedOrderCodeInDB(OrderLineGroup order); + OrderElement findRepeatedOrderCodeInDB(OrderElement order); } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/OrderElementDAO.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/OrderElementDAO.java index 0be52853d..c8e6d4c04 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/OrderElementDAO.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/daos/OrderElementDAO.java @@ -604,7 +604,7 @@ public class OrderElementDAO extends IntegrationEntityDAO @Override @Transactional(readOnly= true, propagation = Propagation.REQUIRES_NEW) - public OrderElement findRepeatedOrderCodeInDB(OrderLineGroup order) { + public OrderElement findRepeatedOrderCodeInDB(OrderElement order) { final Map orderElements = createMapByCode(getOrderAndAllChildren(order)); final Map orderElementsInDB = createMapByCode(getAll()); @@ -622,7 +622,7 @@ public class OrderElementDAO extends IntegrationEntityDAO return null; } - private List getOrderAndAllChildren(OrderLineGroup order) { + private List getOrderAndAllChildren(OrderElement order) { List result = new ArrayList(); result.add(order); result.addAll(order.getAllChildren()); diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/Order.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/Order.java index c8383d4a6..a6a79629f 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/Order.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/Order.java @@ -499,31 +499,4 @@ public class Order extends OrderLineGroup { return false; } - public static void checkConstraintOrderUniqueCode(OrderElement orderElement) { - if (orderElement instanceof OrderLineGroup) { - checkConstraintOrderUniqueCode((OrderLineGroup) orderElement); - } - } - - public static void checkConstraintOrderUniqueCode(OrderLineGroup order) { - OrderElement repeatedOrder; - - // Check no code is repeated in this order - repeatedOrder = order.findRepeatedOrderCode(); - if (repeatedOrder != null) { - throw new ValidationException(_( - "Repeated Order code {0} in Order {1}", - repeatedOrder.getCode(), repeatedOrder.getName())); - } - - // Check no code is repeated within the DB - repeatedOrder = Registry.getOrderElementDAO() - .findRepeatedOrderCodeInDB(order); - if (repeatedOrder != null) { - throw new ValidationException(_( - "Repeated Order code {0} in Order {1}", - repeatedOrder.getCode(), repeatedOrder.getName())); - } - } - } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java index bc997ca87..4d4066d64 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java @@ -1276,4 +1276,27 @@ public abstract class OrderElement extends IntegrationEntity implements } } + public static void checkConstraintOrderUniqueCode(OrderElement order) { + OrderElement repeatedOrder; + + // Check no code is repeated in this order + if (order instanceof OrderLineGroup) { + repeatedOrder = ((OrderLineGroup) order).findRepeatedOrderCode(); + if (repeatedOrder != null) { + throw new ValidationException(_( + "Repeated Order code {0} in Order {1}", + repeatedOrder.getCode(), repeatedOrder.getName())); + } + } + + // Check no code is repeated within the DB + repeatedOrder = Registry.getOrderElementDAO() + .findRepeatedOrderCodeInDB(order); + if (repeatedOrder != null) { + throw new ValidationException(_( + "Repeated Order code {0} in Order {1}", + repeatedOrder.getCode(), repeatedOrder.getName())); + } + } + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java index 824b78a8d..8734d2694 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java @@ -1046,7 +1046,6 @@ public class OrderLineGroup extends OrderElement implements return null; } - public List getAllOrderElements() { List result = new ArrayList( this.getChildren()); 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 bc3f55359..f1438747d 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 @@ -443,7 +443,7 @@ public final class OrderElementConverter { addAdvanceMeasurements(orderElement, orderElementDTO); } - // Validate code must be unique + // Validate OrderElement.code and HoursGroup.code must be unique Order.checkConstraintOrderUniqueCode(orderElement); HoursGroup.checkConstraintHoursGroupUniqueCode(orderElement);