From a307b549e1718a7878eb8b8d926acddd9ce7c0dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Sun, 3 Jan 2010 17:18:34 +0100 Subject: [PATCH] ItEr41S20CUGravacionModelosUnidadesTraballoItEr40S25: When saving all templates are marked as not transient to avoid problem when hitting save&continue several times --- .../entities/OrderElementTemplate.java | 3 +++ .../entities/OrderLineGroupTemplate.java | 6 +++++ .../templates/entities/OrderLineTemplate.java | 8 +++++++ .../web/templates/OrderTemplatesModel.java | 24 +++++++++++++++++-- 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderElementTemplate.java b/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderElementTemplate.java index b9ebe50c9..7dcc05705 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderElementTemplate.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderElementTemplate.java @@ -20,6 +20,7 @@ package org.navalplanner.business.templates.entities; import java.util.Date; +import java.util.List; import org.apache.commons.lang.Validate; import org.hibernate.validator.Min; @@ -103,6 +104,8 @@ public abstract class OrderElementTemplate extends BaseEntity { return infoComponent; } + public abstract List getChildrenTemplates(); + @Min(0) public Integer getDeadlineAsDaysFromBeginning() { return deadlineAsDaysFromBeginning; diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderLineGroupTemplate.java b/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderLineGroupTemplate.java index 3f276357a..5315f482d 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderLineGroupTemplate.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderLineGroupTemplate.java @@ -20,6 +20,7 @@ package org.navalplanner.business.templates.entities; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.navalplanner.business.orders.entities.OrderElement; @@ -56,4 +57,9 @@ public class OrderLineGroupTemplate extends OrderElementTemplate { private List children = new ArrayList(); + @Override + public List getChildrenTemplates() { + return Collections.unmodifiableList(children); + } + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderLineTemplate.java b/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderLineTemplate.java index a9b72c4f3..a839d849f 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderLineTemplate.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderLineTemplate.java @@ -19,6 +19,9 @@ */ package org.navalplanner.business.templates.entities; +import java.util.Collections; +import java.util.List; + import org.navalplanner.business.orders.entities.OrderLine; /** @@ -31,4 +34,9 @@ public class OrderLineTemplate extends OrderElementTemplate { return create(new OrderLineTemplate(), orderLine); } + @Override + public List getChildrenTemplates() { + return Collections.emptyList(); + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java index 6a0db5f4c..bb5997dd7 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java @@ -21,6 +21,8 @@ package org.navalplanner.web.templates; import java.util.List; +import org.navalplanner.business.common.IAdHocTransactionService; +import org.navalplanner.business.common.IOnTransaction; import org.navalplanner.business.orders.daos.IOrderElementDAO; import org.navalplanner.business.orders.entities.OrderElement; import org.navalplanner.business.templates.daos.IOrderElementTemplateDAO; @@ -45,6 +47,9 @@ public class OrderTemplatesModel implements IOrderTemplatesModel { @Autowired private IOrderElementTemplateDAO dao; + @Autowired + private IAdHocTransactionService transaction; + private OrderElementTemplate template; @Override @@ -58,9 +63,24 @@ public class OrderTemplatesModel implements IOrderTemplatesModel { } @Override - @Transactional public void confirmSave() { - dao.save(template); + transaction.runOnTransaction(new IOnTransaction() { + @Override + public Void execute() { + dao.save(template); + return null; + } + }); + dontPoseAsTransient(template); + } + + private void dontPoseAsTransient(OrderElementTemplate template) { + template.dontPoseAsTransientObjectAnymore(); + List childrenTemplates = template + .getChildrenTemplates(); + for (OrderElementTemplate each : childrenTemplates) { + dontPoseAsTransient(each); + } } @Override