From 787916b50d9ae2ef1327fad2466a40f8e301018c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Tue, 11 Dec 2012 18:56:12 +0100 Subject: [PATCH] Bug #1592: Save Order before showing it Otherwise the MutableTreeModel associated is initialized with a Order that is not saved yet. When it's used, e.g., when adding a subtask, it fails. The MutableTreeModel#nodesByDomainObject map wouldn't find the node associated to the Order, because the hashCode is different. At first the Order is a new object so it returns a different hashCode, once saved another. With these changes, when initializing the MutableTreeModel it has already been saved. --- .../libreplan/web/orders/OrderCRUDController.java | 5 ++++- .../web/orders/ProjectDetailsController.java | 14 ++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java index a34a7d3e2..3c0bb186f 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java @@ -940,6 +940,10 @@ public class OrderCRUDController extends GenericForwardComposer { prepareEditWindow(_("Edit project")); } + public IOrderModel getOrderModel() { + return orderModel; + } + private Desktop getDesktop() { return listWindow.getDesktop(); } @@ -1068,7 +1072,6 @@ public class OrderCRUDController extends GenericForwardComposer { detailsWindow.setVisible(false); setupOrderAuthorizationController(); detailsWindow.getAttributes(); - saveAndContinue(false); } public ProjectDetailsController getCreationPopup() { diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/ProjectDetailsController.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/ProjectDetailsController.java index 1f9f29e30..1a28c996a 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/ProjectDetailsController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/ProjectDetailsController.java @@ -42,6 +42,7 @@ import org.libreplan.web.planner.consolidations.AdvanceConsolidationController; import org.libreplan.web.planner.tabs.MultipleTabsPlannerController; import org.springframework.beans.factory.annotation.Autowired; import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Desktop; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.SuspendNotAllowedException; import org.zkoss.zk.ui.WrongValueException; @@ -138,13 +139,18 @@ public class ProjectDetailsController extends GenericForwardComposer { public void accept() { if (validate()) { - if (tabs != null) { - tabs.goToOrderDetails(orderController.getOrder()); - } + Desktop desktop = window.getDesktop(); + IOrderModel orderModel = orderController.getOrderModel(); if (bdProjectTemplate.getSelectedElement() != null) { OrderTemplate template = (OrderTemplate) bdProjectTemplate .getSelectedElement(); - orderController.createFromTemplate(template); + orderModel.prepareCreationFrom(template, desktop); + } else { + orderModel.initEdit(orderController.getOrder(), desktop); + } + orderModel.save(); + if (tabs != null) { + tabs.goToOrderDetails(orderController.getOrder()); } orderController.editNewCreatedOrder(window); }