]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.hibernate/src/main/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernate.java
Introduce JMS based notifications
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.hibernate / src / main / java / org / argeo / slc / hibernate / test / tree / TreeTestResultDaoHibernate.java
1 package org.argeo.slc.hibernate.test.tree;
2
3 import java.sql.SQLException;
4 import java.util.Date;
5 import java.util.List;
6 import java.util.Map;
7 import java.util.SortedMap;
8
9 import org.argeo.slc.SlcException;
10 import org.argeo.slc.core.structure.tree.TreeSPath;
11 import org.argeo.slc.core.test.SimpleResultPart;
12 import org.argeo.slc.core.test.tree.PartSubList;
13 import org.argeo.slc.core.test.tree.TreeTestResult;
14 import org.argeo.slc.dao.test.tree.TreeTestResultDao;
15 import org.argeo.slc.structure.StructureElement;
16 import org.argeo.slc.test.TestResult;
17 import org.hibernate.HibernateException;
18 import org.hibernate.Session;
19 import org.springframework.orm.hibernate3.HibernateCallback;
20 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
21
22 /**
23 * The Hibernate implementation for tree-based result of the test result dao.
24 *
25 * @see TreeTestResult
26 */
27 public class TreeTestResultDaoHibernate extends HibernateDaoSupport implements
28 TreeTestResultDao {
29
30 public void create(TestResult testResult) {
31 getHibernateTemplate().save(testResult);
32 }
33
34 public void update(TestResult testResult) {
35 getHibernateTemplate().saveOrUpdate(testResult);
36 }
37
38 public TreeTestResult getTestResult(String uuid) {
39 List<?> list = getHibernateTemplate().find(
40 "from TreeTestResult where uuid=?", uuid);
41 if (list.size() == 0) {
42 return null;
43 } else {
44 return (TreeTestResult) list.get(0);
45 }
46
47 }
48
49 public List<TreeTestResult> listTestResults() {
50 return (List<TreeTestResult>) getHibernateTemplate().find(
51 "from TreeTestResult");
52 }
53
54 public List<TreeTestResult> listResults(TreeSPath path) {
55 List<TreeTestResult> list = getHibernateTemplate().find(
56 "from TreeTestResult res where ? in indices(res.resultParts)",
57 path.getAsUniqueString());
58 return list;
59 }
60
61 public void close(final String testResultId, final Date closeDate) {
62 getHibernateTemplate().execute(new HibernateCallback() {
63
64 public Object doInHibernate(Session session)
65 throws HibernateException, SQLException {
66 TreeTestResult treeTestResult = getTreeTestResult(session,
67 testResultId);
68 treeTestResult.setCloseDate(closeDate);
69 session.update(treeTestResult);
70 return treeTestResult;
71 }
72 });
73 }
74
75 public void addResultPart(final String testResultId, final TreeSPath path,
76 final SimpleResultPart resultPart,
77 final Map<TreeSPath, StructureElement> relatedElements) {
78
79 getHibernateTemplate().execute(new HibernateCallback() {
80
81 public Object doInHibernate(Session session)
82 throws HibernateException, SQLException {
83 TreeTestResult treeTestResult = getTreeTestResult(session,
84 testResultId);
85 PartSubList lst = treeTestResult.getResultParts().get(path);
86 if (lst == null) {
87 lst = new PartSubList();
88 treeTestResult.getResultParts().put(path, lst);
89 }
90 lst.getParts().add(resultPart);
91 if (relatedElements != null)
92 treeTestResult.getElements().putAll(relatedElements);
93
94 session.update(treeTestResult);
95 return treeTestResult;
96 }
97 });
98
99 }
100
101 protected TreeTestResult getTreeTestResult(Session session,
102 String testResultId) {
103 TreeTestResult treeTestResult = (TreeTestResult) session.get(
104 TreeTestResult.class, testResultId);
105 if (treeTestResult == null)
106 throw new SlcException("No result with id " + testResultId);
107 return treeTestResult;
108 }
109
110 public void updateAttributes(final String testResultId,
111 final Map<String, String> attributes) {
112 getHibernateTemplate().execute(new HibernateCallback() {
113
114 public Object doInHibernate(Session session)
115 throws HibernateException, SQLException {
116 TreeTestResult treeTestResult = getTreeTestResult(session,
117 testResultId);
118 treeTestResult.setAttributes(attributes);
119
120 session.update(treeTestResult);
121 return treeTestResult;
122 }
123 });
124 }
125
126 }