From 47000bc477944d625d31665d77ff58463610bdf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Tue, 27 Sep 2011 18:23:50 +0200 Subject: [PATCH] [Bug #1192] Fix bug Also fix some other problems that prevented to create an order from a template. FEA: ItEr75S04BugFixing --- .../orders/entities/OrderElement.java | 4 ++++ .../navalplanner/web/orders/OrderModel.java | 2 +- .../planner/order/PlanningStateCreator.java | 21 ++++++++++++++++--- .../web/planner/order/SaveCommandBuilder.java | 1 + 4 files changed, 24 insertions(+), 4 deletions(-) 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 bfd4d2583..881eacc04 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 @@ -1444,4 +1444,8 @@ public abstract class OrderElement extends IntegrationEntity implements } } + public List getOrderVersions() { + return new ArrayList(schedulingDatasForVersion.keySet()); + } + } 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 81ff1d806..54d7719ed 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 @@ -398,7 +398,7 @@ public class OrderModel extends IntegrationEntityModel implements IOrderModel { loadNeededDataForConversation(); Order order = createOrderFrom((OrderTemplate) templateDAO .findExistingEntity(template.getId())); - planningStateCreator.createOn(desktop, order); + planningState = planningStateCreator.createOn(desktop, order); forceLoadAdvanceAssignmentsAndMeasurements(planningState.getOrder()); initializeOrder(); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/PlanningStateCreator.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/PlanningStateCreator.java index 3f2137475..f64029561 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/PlanningStateCreator.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/PlanningStateCreator.java @@ -169,6 +169,9 @@ public class PlanningStateCreator { } void setupScenario(Order order) { + if (!order.hasNoVersions()) { + return; + } Scenario currentScenario = scenarioManager.getCurrent(); OrderVersion orderVersion = currentScenario.addOrder(order); order.setVersionForScenario(currentScenario, orderVersion); @@ -428,8 +431,8 @@ public class PlanningStateCreator { public void saveVersioningInfo() throws IllegalStateException { current.saveVersioningInfo(); - } + } public void afterCommit() { if (current instanceof ChangeScenarioInfoOnSave) { current = new UsingOwnerScenario(current.getCurrentScenario(), @@ -466,12 +469,24 @@ public class PlanningStateCreator { public void saveVersioningInfo() { OrderVersion orderVersion = order.getCurrentVersionInfo() .getOrderVersion(); + if (order.isNewObject()) { + scenarioDAO.updateDerivedScenariosWithNewVersion(null, order, + currentScenario, orderVersion); + } orderVersion.savingThroughOwner(); - synchronizeWithSchedule(order, - TaskSource.persistTaskSources(taskSourceDAO)); + synchronizeWithSchedule(order, getPersistence()); order.writeSchedulingDataChanges(); } + IOptionalPersistence getPersistence() { + if (order.isNewObject()) { + return TaskSource + .persistButDontRemoveTaskSources(taskSourceDAO); + } else { + return TaskSource.persistTaskSources(taskSourceDAO); + } + } + @Override public void afterCommit() { // do nothing diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/SaveCommandBuilder.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/SaveCommandBuilder.java index b69e14bf6..4f16ce22a 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/SaveCommandBuilder.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/SaveCommandBuilder.java @@ -748,6 +748,7 @@ public class SaveCommandBuilder { private void dontPoseAsTransientObjectAnymore(OrderElement orderElement) { orderElement.dontPoseAsTransientObjectAnymore(); + dontPoseAsTransientObjectAnymore(orderElement.getOrderVersions()); dontPoseAsTransientObjectAnymore(orderElement .getTaskSourcesFromBottomToTop()); dontPoseAsTransientObjectAnymore(orderElement