From 050f333c70c2e4a36bb6dd81fa668a7d217e107f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Wed, 5 Aug 2009 14:07:15 +0200 Subject: [PATCH] ItEr20S04ArquitecturaServidorItEr19S04: Doing the reattach of the criterions before the reattachment of worker. --- .../org/navalplanner/web/orders/OrderModel.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) 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 a76e48ef1..04a353de8 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 @@ -16,6 +16,7 @@ import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.orders.entities.OrderElement; import org.navalplanner.business.orders.services.IOrderService; import org.navalplanner.business.planner.services.ITaskElementService; +import org.navalplanner.business.resources.daos.ICriterionDAO; import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.CriterionType; import org.navalplanner.business.resources.services.ICriterionService; @@ -58,6 +59,9 @@ public class OrderModel implements IOrderModel { private final ITaskElementService taskElementService; + @Autowired + private ICriterionDAO criterionDAO; + @Autowired public OrderModel(IOrderService orderService, ITaskElementService taskElementService) { @@ -89,7 +93,6 @@ public class OrderModel implements IOrderModel { public void prepareEditFor(Order order) { Validate.notNull(order); loadCriterions(); - this.order = getFromDB(order); this.orderElementTreeModel = new OrderElementTreeModel(this.order); } @@ -114,6 +117,7 @@ public class OrderModel implements IOrderModel { @Override @Transactional public void save() throws ValidationException { + reattachCriterions(); InvalidValue[] invalidValues = orderValidator.getInvalidValues(order); if (invalidValues.length > 0) throw new ValidationException(invalidValues); @@ -121,6 +125,14 @@ public class OrderModel implements IOrderModel { this.orderService.save(order); } + private void reattachCriterions() { + for (List list : mapCriterions.values()) { + for (Criterion criterion : list) { + criterionDAO.reattachUnmodifiedEntity(criterion); + } + } + } + @Override public IOrderLineGroup getOrder() { return order; @@ -146,7 +158,9 @@ public class OrderModel implements IOrderModel { } @Override + @Transactional(readOnly = true) public IOrderElementModel getOrderElementModel(OrderElement orderElement) { + reattachCriterions(); orderElementModel.setCurrent(orderElement, this); return orderElementModel; }