1 package org
.argeo
.slc
.hibernate
.test
.tree
;
3 import java
.sql
.SQLException
;
7 import java
.util
.SortedMap
;
9 import org
.argeo
.slc
.core
.SlcException
;
10 import org
.argeo
.slc
.core
.structure
.StructureElement
;
11 import org
.argeo
.slc
.core
.structure
.tree
.TreeSPath
;
12 import org
.argeo
.slc
.core
.test
.SimpleResultPart
;
13 import org
.argeo
.slc
.core
.test
.TestResult
;
14 import org
.argeo
.slc
.core
.test
.tree
.PartSubList
;
15 import org
.argeo
.slc
.core
.test
.tree
.TreeTestResult
;
16 import org
.argeo
.slc
.dao
.test
.tree
.TreeTestResultDao
;
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
;
23 * The Hibernate implementation for tree-based result of the test result dao.
27 public class TreeTestResultDaoHibernate
extends HibernateDaoSupport
implements
30 public void create(TestResult testResult
) {
31 getHibernateTemplate().save(testResult
);
34 public void update(TestResult testResult
) {
35 getHibernateTemplate().saveOrUpdate(testResult
);
38 public TreeTestResult
getTestResult(String uuid
) {
39 List
<?
> list
= getHibernateTemplate().find(
40 "from TreeTestResult where uuid=?", uuid
);
41 if (list
.size() == 0) {
44 return (TreeTestResult
) list
.get(0);
49 public List
<TreeTestResult
> listTestResults() {
50 return (List
<TreeTestResult
>) getHibernateTemplate().find(
51 "from TreeTestResult");
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());
61 public void close(final String testResultId
, final Date closeDate
) {
62 getHibernateTemplate().execute(new HibernateCallback() {
64 public Object
doInHibernate(Session session
)
65 throws HibernateException
, SQLException
{
66 TreeTestResult treeTestResult
= getTreeTestResult(session
,
68 treeTestResult
.setCloseDate(closeDate
);
69 session
.update(treeTestResult
);
70 return treeTestResult
;
75 public void addResultPart(final String testResultId
, final TreeSPath path
,
76 final SimpleResultPart resultPart
,
77 final Map
<TreeSPath
, StructureElement
> relatedElements
) {
79 getHibernateTemplate().execute(new HibernateCallback() {
81 public Object
doInHibernate(Session session
)
82 throws HibernateException
, SQLException
{
83 TreeTestResult treeTestResult
= getTreeTestResult(session
,
85 PartSubList lst
= treeTestResult
.getResultParts().get(path
);
87 lst
= new PartSubList();
88 treeTestResult
.getResultParts().put(path
, lst
);
90 lst
.getParts().add(resultPart
);
91 treeTestResult
.getElements().putAll(relatedElements
);
93 session
.update(treeTestResult
);
94 return treeTestResult
;
100 protected TreeTestResult
getTreeTestResult(Session session
,
101 String testResultId
) {
102 TreeTestResult treeTestResult
= (TreeTestResult
) session
.get(
103 TreeTestResult
.class, testResultId
);
104 if (treeTestResult
== null)
105 throw new SlcException("No result with id " + testResultId
);
106 return treeTestResult
;
109 public void updateAttributes(final String testResultId
,
110 final Map
<String
, String
> attributes
) {
111 getHibernateTemplate().execute(new HibernateCallback() {
113 public Object
doInHibernate(Session session
)
114 throws HibernateException
, SQLException
{
115 TreeTestResult treeTestResult
= getTreeTestResult(session
,
117 treeTestResult
.setAttributes(attributes
);
119 session
.update(treeTestResult
);
120 return treeTestResult
;