]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.hibernate/src/main/java/org/argeo/slc/hibernate/test/tree/TreeTestResultCollectionDaoHibernate.java
Improve error management:
[gpl/argeo-slc.git] / org.argeo.slc.hibernate / src / main / java / org / argeo / slc / hibernate / test / tree / TreeTestResultCollectionDaoHibernate.java
index b080720582812510523fda754aa552fa2cb72abb..65fb02de27308c5065c142b2da8ce06cf9aaa405 100644 (file)
@@ -1,12 +1,17 @@
 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.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.LockMode;\r
+import org.hibernate.Session;\r
+import org.springframework.orm.hibernate3.HibernateCallback;\r
+import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
 \r
 public class TreeTestResultCollectionDaoHibernate extends HibernateDaoSupport\r
                implements TreeTestResultCollectionDao {\r
@@ -29,4 +34,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.lock(ttrc, LockMode.NONE);\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.lock(ttrc, LockMode.NONE);\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