]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.hibernate/src/main/java/org/argeo/slc/hibernate/process/SlcExecutionDaoHibernate.java
Adapt web services to lazy loading
[gpl/argeo-slc.git] / org.argeo.slc.hibernate / src / main / java / org / argeo / slc / hibernate / process / SlcExecutionDaoHibernate.java
index 9518d93fc5ad804b1fc4faab27d29a14ac1bc6fa..0e21b3a9d9ae768f154a18ffb93108d46206b1ca 100644 (file)
@@ -1,11 +1,17 @@
 package org.argeo.slc.hibernate.process;\r
 \r
+import java.sql.SQLException;\r
 import java.util.List;\r
 \r
+import org.springframework.orm.hibernate3.HibernateCallback;\r
 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
 \r
+import org.argeo.slc.core.SlcException;\r
 import org.argeo.slc.core.process.SlcExecution;\r
+import org.argeo.slc.core.process.SlcExecutionStep;\r
 import org.argeo.slc.dao.process.SlcExecutionDao;\r
+import org.hibernate.HibernateException;\r
+import org.hibernate.Session;\r
 \r
 public class SlcExecutionDaoHibernate extends HibernateDaoSupport implements\r
                SlcExecutionDao {\r
@@ -28,4 +34,25 @@ public class SlcExecutionDaoHibernate extends HibernateDaoSupport implements
                                SlcExecution.class);\r
        }\r
 \r
+       public void addSteps(final String slcExecutionId,\r
+                       final List<SlcExecutionStep> additionalSteps) {\r
+               getHibernateTemplate().execute(new HibernateCallback() {\r
+\r
+                       public Object doInHibernate(Session session)\r
+                                       throws HibernateException, SQLException {\r
+                               SlcExecution slcExecution = (SlcExecution) session.get(\r
+                                               SlcExecution.class, slcExecutionId);\r
+\r
+                               if (slcExecution == null)\r
+                                       throw new SlcException("Could not find SLC execution "\r
+                                                       + slcExecutionId);\r
+\r
+                               slcExecution.getSteps().addAll(additionalSteps);\r
+                               session.update(slcExecution);\r
+                               return slcExecution;\r
+                       }\r
+               });\r
+\r
+       }\r
+\r
 }\r