--- /dev/null
+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.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
+\r
+ public void create(TreeTestResultCollection ttrCollection) {\r
+ getHibernateTemplate().save(ttrCollection);\r
+ }\r
+\r
+ public TreeTestResultCollection getTestResultCollection(String id) {\r
+ return (TreeTestResultCollection) getHibernateTemplate().get(\r
+ TreeTestResultCollection.class, id);\r
+ }\r
+\r
+ public void update(TreeTestResultCollection ttrCollection) {\r
+ getHibernateTemplate().update(ttrCollection);\r
+ }\r
+\r
+ public SortedSet<TreeTestResultCollection> listCollections() {\r
+ return new TreeSet<TreeTestResultCollection>(getHibernateTemplate()\r
+ .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