Fix bug validation 'OrderElement code must be unique' must be done for all OrderElements and not only for OrderLineGroups

FEA: ItEr61S07PerformanceOrderEdition
This commit is contained in:
Diego Pino Garcia 2010-09-29 12:08:40 +02:00
parent 5b0e11fb41
commit 681c3fdc18
6 changed files with 27 additions and 32 deletions

View file

@ -153,6 +153,6 @@ public interface IOrderElementDAO extends IIntegrationEntityDAO<OrderElement> {
* @param order
* @return
*/
OrderElement findRepeatedOrderCodeInDB(OrderLineGroup order);
OrderElement findRepeatedOrderCodeInDB(OrderElement order);
}

View file

@ -604,7 +604,7 @@ public class OrderElementDAO extends IntegrationEntityDAO<OrderElement>
@Override
@Transactional(readOnly= true, propagation = Propagation.REQUIRES_NEW)
public OrderElement findRepeatedOrderCodeInDB(OrderLineGroup order) {
public OrderElement findRepeatedOrderCodeInDB(OrderElement order) {
final Map<String, OrderElement> orderElements = createMapByCode(getOrderAndAllChildren(order));
final Map<String, OrderElement> orderElementsInDB = createMapByCode(getAll());
@ -622,7 +622,7 @@ public class OrderElementDAO extends IntegrationEntityDAO<OrderElement>
return null;
}
private List<OrderElement> getOrderAndAllChildren(OrderLineGroup order) {
private List<OrderElement> getOrderAndAllChildren(OrderElement order) {
List<OrderElement> result = new ArrayList<OrderElement>();
result.add(order);
result.addAll(order.getAllChildren());

View file

@ -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()));
}
}
}

View file

@ -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()));
}
}
}

View file

@ -1046,7 +1046,6 @@ public class OrderLineGroup extends OrderElement implements
return null;
}
public List<OrderElement> getAllOrderElements() {
List<OrderElement> result = new ArrayList<OrderElement>(
this.getChildren());

View file

@ -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);