]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.hibernate/src/main/java/org/argeo/slc/hibernate/test/tree/TreeTestResultCollectionDaoHibernate.java
Introduce transaction management
[gpl/argeo-slc.git] / org.argeo.slc.hibernate / src / main / java / org / argeo / slc / hibernate / test / tree / TreeTestResultCollectionDaoHibernate.java
1 package org.argeo.slc.hibernate.test.tree;
2
3 import java.sql.SQLException;
4 import java.util.SortedSet;
5 import java.util.TreeSet;
6
7 import org.springframework.orm.hibernate3.HibernateCallback;
8 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
9
10 import org.argeo.slc.core.test.tree.TreeTestResult;
11 import org.argeo.slc.core.test.tree.TreeTestResultCollection;
12 import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao;
13 import org.hibernate.HibernateException;
14 import org.hibernate.LockMode;
15 import org.hibernate.Session;
16 import org.hibernate.action.Executable;
17
18 public class TreeTestResultCollectionDaoHibernate extends HibernateDaoSupport
19 implements TreeTestResultCollectionDao {
20
21 public void create(TreeTestResultCollection ttrCollection) {
22 getHibernateTemplate().save(ttrCollection);
23 }
24
25 public TreeTestResultCollection getTestResultCollection(String id) {
26 return (TreeTestResultCollection) getHibernateTemplate().get(
27 TreeTestResultCollection.class, id);
28 }
29
30 public void update(TreeTestResultCollection ttrCollection) {
31 getHibernateTemplate().update(ttrCollection);
32 }
33
34 public SortedSet<TreeTestResultCollection> listCollections() {
35 return new TreeSet<TreeTestResultCollection>(getHibernateTemplate()
36 .find("from TreeTestResultCollection"));
37 }
38
39 public void addResultToCollection(final TreeTestResultCollection ttrc,
40 final String resultUuid) {
41 getHibernateTemplate().execute(new HibernateCallback() {
42 public Object doInHibernate(Session session)
43 throws HibernateException, SQLException {
44 session.lock(ttrc, LockMode.NONE);
45 TreeTestResult ttr = (TreeTestResult) session.get(
46 TreeTestResult.class, resultUuid);
47 ttrc.getResults().add(ttr);
48 session.update(ttrc);
49 return ttrc;
50 }
51 });
52 }
53
54 public void removeResultFromCollection(final TreeTestResultCollection ttrc,
55 final String resultUuid) {
56 getHibernateTemplate().execute(new HibernateCallback() {
57 public Object doInHibernate(Session session)
58 throws HibernateException, SQLException {
59 session.lock(ttrc, LockMode.NONE);
60 TreeTestResult ttr = (TreeTestResult) session.get(
61 TreeTestResult.class, resultUuid);
62 if (ttrc.getResults().remove(ttr))
63 session.update(ttrc);
64 return ttrc;
65 }
66 });
67 }
68
69 }