]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Adapt web services to lazy loading
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 27 Jun 2008 22:02:48 +0000 (22:02 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 27 Jun 2008 22:02:48 +0000 (22:02 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1297 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.hibernate/src/main/java/org/argeo/slc/hibernate/process/SlcExecutionDaoHibernate.java
org.argeo.slc.hibernate/src/main/java/org/argeo/slc/hibernate/test/tree/TreeTestResultCollectionDaoHibernate.java
org.argeo.slc.hibernate/src/main/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernate.java
org.argeo.slc.hibernate/src/test/java/org/argeo/slc/hibernate/process/SlcExecutionHibernateTest.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
index b080720582812510523fda754aa552fa2cb72abb..513a1212347f002884e65d8bf655640077562d1f 100644 (file)
@@ -1,12 +1,18 @@
 package org.argeo.slc.hibernate.test.tree;\r
 \r
+import java.sql.SQLException;\r
 import java.util.SortedSet;\r
 import java.util.TreeSet;\r
 \r
+import org.springframework.orm.hibernate3.HibernateCallback;\r
 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
 \r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
 import org.argeo.slc.core.test.tree.TreeTestResultCollection;\r
 import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao;\r
+import org.hibernate.HibernateException;\r
+import org.hibernate.Session;\r
+import org.hibernate.action.Executable;\r
 \r
 public class TreeTestResultCollectionDaoHibernate extends HibernateDaoSupport\r
                implements TreeTestResultCollectionDao {\r
@@ -29,4 +35,34 @@ public class TreeTestResultCollectionDaoHibernate extends HibernateDaoSupport
                                .find("from TreeTestResultCollection"));\r
        }\r
 \r
+       public void addResultToCollection(final TreeTestResultCollection ttrc,\r
+                       final String resultUuid) {\r
+               getHibernateTemplate().execute(new HibernateCallback() {\r
+                       public Object doInHibernate(Session session)\r
+                                       throws HibernateException, SQLException {\r
+                               session.refresh(ttrc);\r
+                               TreeTestResult ttr = (TreeTestResult) session.get(\r
+                                               TreeTestResult.class, resultUuid);\r
+                               ttrc.getResults().add(ttr);\r
+                               session.update(ttrc);\r
+                               return ttrc;\r
+                       }\r
+               });\r
+       }\r
+\r
+       public void removeResultFromCollection(final TreeTestResultCollection ttrc,\r
+                       final String resultUuid) {\r
+               getHibernateTemplate().execute(new HibernateCallback() {\r
+                       public Object doInHibernate(Session session)\r
+                                       throws HibernateException, SQLException {\r
+                               session.refresh(ttrc);\r
+                               TreeTestResult ttr = (TreeTestResult) session.get(\r
+                                               TreeTestResult.class, resultUuid);\r
+                               if (ttrc.getResults().remove(ttr))\r
+                                       session.update(ttrc);\r
+                               return ttrc;\r
+                       }\r
+               });\r
+       }\r
+\r
 }\r
index 17c7d856d8418527c3ff2358ca111ca2c8458b94..04ff23738c344a671a36219068cd96bf55e10686 100644 (file)
@@ -1,13 +1,21 @@
 package org.argeo.slc.hibernate.test.tree;\r
 \r
+import java.sql.SQLException;\r
 import java.util.Date;\r
 import java.util.List;\r
+import java.util.Map;\r
 \r
 import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.structure.StructureElement;\r
 import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.test.SimpleResultPart;\r
 import org.argeo.slc.core.test.TestResult;\r
+import org.argeo.slc.core.test.tree.PartSubList;\r
 import org.argeo.slc.core.test.tree.TreeTestResult;\r
 import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
+import org.hibernate.HibernateException;\r
+import org.hibernate.Session;\r
+import org.springframework.orm.hibernate3.HibernateCallback;\r
 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
 \r
 /**\r
@@ -49,17 +57,51 @@ public class TreeTestResultDaoHibernate extends HibernateDaoSupport implements
                return list;\r
        }\r
 \r
-       public void close(String id, Date closeDate) {\r
-               // TreeTestResult ttr = (TreeTestResult) getHibernateTemplate().load(\r
-               // TreeTestResult.class, id);\r
-               TreeTestResult ttr = getTestResult(id);\r
-               if (ttr != null) {\r
-                       ttr.setCloseDate(closeDate);\r
-                       getHibernateTemplate().update(ttr);\r
-               } else {\r
-                       throw new SlcException("Result with id " + id\r
-                                       + " could not be closed because it was not found.");\r
-               }\r
+       public void close(final String testResultId, final Date closeDate) {\r
+               getHibernateTemplate().execute(new HibernateCallback() {\r
+\r
+                       public Object doInHibernate(Session session)\r
+                                       throws HibernateException, SQLException {\r
+                               TreeTestResult treeTestResult = getTreeTestResult(session,\r
+                                               testResultId);\r
+                               treeTestResult.setCloseDate(closeDate);\r
+                               session.update(treeTestResult);\r
+                               return treeTestResult;\r
+                       }\r
+               });\r
+       }\r
+\r
+       public void addResultPart(final String testResultId, final TreeSPath path,\r
+                       final SimpleResultPart resultPart,\r
+                       final Map<TreeSPath, StructureElement> relatedElements) {\r
+\r
+               getHibernateTemplate().execute(new HibernateCallback() {\r
+\r
+                       public Object doInHibernate(Session session)\r
+                                       throws HibernateException, SQLException {\r
+                               TreeTestResult treeTestResult = getTreeTestResult(session,\r
+                                               testResultId);\r
+                               PartSubList lst = treeTestResult.getResultParts().get(path);\r
+                               if (lst == null) {\r
+                                       lst = new PartSubList();\r
+                                       treeTestResult.getResultParts().put(path, lst);\r
+                               }\r
+                               lst.getParts().add(resultPart);\r
+                               treeTestResult.getElements().putAll(relatedElements);\r
+\r
+                               session.update(treeTestResult);\r
+                               return treeTestResult;\r
+                       }\r
+               });\r
+\r
        }\r
 \r
+       protected TreeTestResult getTreeTestResult(Session session,\r
+                       String testResultId) {\r
+               TreeTestResult treeTestResult = (TreeTestResult) session.get(\r
+                               TreeTestResult.class, testResultId);\r
+               if (treeTestResult == null)\r
+                       throw new SlcException("No result with id " + testResultId);\r
+               return treeTestResult;\r
+       }\r
 }\r
index 2bbb092d51107a0e6d6e1ba536be49975527bbf3..28c7babcde76e73d663d044186f89b0f3f5682b1 100644 (file)
@@ -18,8 +18,8 @@ public class SlcExecutionHibernateTest extends HibernateTestCase {
                SlcExecutionDao dao = getBean(SlcExecutionDao.class);\r
 \r
                SlcExecution slcExec = SlcExecutionTestUtils.createSimpleSlcExecution();\r
-               slcExec.getSteps().add(new SlcExecutionStep("LOG", "A log line"));\r
-               slcExec.getSteps().add(new SlcExecutionStep("LOG", "Two log\nlines"));\r
+               slcExec.getSteps().add(new SlcExecutionStep("A log line"));\r
+               slcExec.getSteps().add(new SlcExecutionStep("Two log\nlines"));\r
 \r
                dao.create(slcExec);\r
 \r
@@ -32,8 +32,8 @@ public class SlcExecutionHibernateTest extends HibernateTestCase {
 \r
                // slcExecution Creation\r
                SlcExecution slcExec = SlcExecutionTestUtils.createSimpleSlcExecution();\r
-               slcExec.getSteps().add(new SlcExecutionStep("LOG", "A log line"));\r
-               slcExec.getSteps().add(new SlcExecutionStep("LOG", "Two log\nlines"));\r
+               slcExec.getSteps().add(new SlcExecutionStep("A log line"));\r
+               slcExec.getSteps().add(new SlcExecutionStep("Two log\nlines"));\r
 \r
                dao.create(slcExec);\r
 \r
@@ -54,7 +54,7 @@ public class SlcExecutionHibernateTest extends HibernateTestCase {
                                slcExecRetrieved.getSteps().get(0)\r
                                                .setLogLines(logLineListStep0);\r
                                slcExecRetrieved.getSteps().add(\r
-                                               new SlcExecutionStep("LOG", "Three \n log \n lines"));\r
+                                               new SlcExecutionStep("Three \n log \n lines"));\r
                                return null;\r
                        }\r
                });\r