From 84ff46e5da92920d75ecdfc584bca3769f2e81ea Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Thu, 24 Dec 2009 07:56:47 +0100 Subject: [PATCH] ItEr40S22CUProcuraOrganizacionsTraballoItEr32S10: Generated order elements code automatically. --- .../business/orders/entities/Order.java | 2 +- .../business/orders/entities/OrderLine.java | 8 +++++-- .../navalplanner/web/orders/OrderModel.java | 23 +++++++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) 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 84fa02452..d4366cdad 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 @@ -154,7 +154,7 @@ public class Order extends OrderLineGroup { return dayAssignments; } - private List getAllOrderElements() { + public List getAllOrderElements() { List result = new ArrayList( this .getChildren()); diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLine.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLine.java index dab233e18..cc535cc99 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLine.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLine.java @@ -99,8 +99,12 @@ public class OrderLine extends OrderElement { // removed the direct criterion requirements removeAllDirectCriterionRequirement(); - this.setName(getName() + " (copy)"); - this.setCode(getCode() + " (copy)"); + if (getName() != null) { + this.setName(getName() + " (copy)"); + } + if (getCode() != null) { + this.setCode(getCode() + " (copy)"); + } result.add(this); return result; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java index 21b7bf92e..2d13f80b8 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java @@ -41,6 +41,7 @@ import org.navalplanner.business.calendars.entities.BaseCalendar; import org.navalplanner.business.common.daos.IConfigurationDAO; import org.navalplanner.business.common.daos.IOrderSequenceDAO; import org.navalplanner.business.common.entities.Configuration; +import org.navalplanner.business.common.entities.OrderSequence; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.labels.daos.ILabelDAO; @@ -311,12 +312,34 @@ public class OrderModel implements IOrderModel { public void save() throws ValidationException { reattachCriterions(); reattachTasksForTasksSources(); + + if (order.isCodeAutogenerated()) { + generateOrderElementCodes(); + } + this.orderDAO.save(order); reattachCurrentTaskSources(); deleteOrderElementWithoutParent(); synchronizeWithSchedule(order); } + private void generateOrderElementCodes() { + OrderSequence orderSequence = orderSequenceDAO.getActiveOrderSequence(); + int numberOfDigits = orderSequence.getNumberOfDigits(); + + for (OrderElement orderElement : order.getAllOrderElements()) { + if ((orderElement.getCode() == null) + || (orderElement.getCode().isEmpty())) { + order.incrementLastOrderElementSequenceCode(); + String orderElementCode = OrderSequence + .formatValue(numberOfDigits, order + .getLastOrderElementSequenceCode()); + orderElement.setCode(order.getCode() + + OrderSequence.CODE_SEPARATOR + orderElementCode); + } + } + } + private void reattachCurrentTaskSources() { for (TaskSource each : order.getTaskSourcesFromBottomToTop()) { taskSourceDAO.reattach(each);