1 package org
.argeo
.slc
.hibernate
.test
.tree
;
3 import java
.sql
.SQLException
;
7 import java
.util
.SortedMap
;
9 import org
.argeo
.slc
.SlcException
;
10 import org
.argeo
.slc
.core
.attachment
.SimpleAttachment
;
11 import org
.argeo
.slc
.core
.structure
.tree
.TreeSPath
;
12 import org
.argeo
.slc
.core
.test
.SimpleResultPart
;
13 import org
.argeo
.slc
.core
.test
.tree
.PartSubList
;
14 import org
.argeo
.slc
.core
.test
.tree
.TreeTestResult
;
15 import org
.argeo
.slc
.dao
.test
.tree
.TreeTestResultDao
;
16 import org
.argeo
.slc
.structure
.StructureElement
;
17 import org
.argeo
.slc
.test
.TestResult
;
18 import org
.hibernate
.HibernateException
;
19 import org
.hibernate
.Session
;
20 import org
.springframework
.orm
.hibernate3
.HibernateCallback
;
21 import org
.springframework
.orm
.hibernate3
.support
.HibernateDaoSupport
;
22 import org
.springframework
.util
.Assert
;
25 * The Hibernate implementation for tree-based result of the test result dao.
29 public class TreeTestResultDaoHibernate
extends HibernateDaoSupport
implements
32 public void create(TestResult testResult
) {
33 getHibernateTemplate().save(testResult
);
36 public void update(TestResult testResult
) {
37 getHibernateTemplate().saveOrUpdate(testResult
);
40 public TreeTestResult
getTestResult(String uuid
) {
41 List
<?
> list
= getHibernateTemplate().find(
42 "from TreeTestResult where uuid=?", uuid
);
43 if (list
.size() == 0) {
46 return (TreeTestResult
) list
.get(0);
51 public List
<TreeTestResult
> listTestResults() {
52 return (List
<TreeTestResult
>) getHibernateTemplate().find(
53 "from TreeTestResult");
56 public List
<TreeTestResult
> listResults(TreeSPath path
) {
57 List
<TreeTestResult
> list
= getHibernateTemplate().find(
58 "from TreeTestResult res where ? in indices(res.resultParts)",
59 path
.getAsUniqueString());
63 public void close(final String testResultId
, final Date closeDate
) {
64 getHibernateTemplate().execute(new HibernateCallback() {
66 public Object
doInHibernate(Session session
)
67 throws HibernateException
, SQLException
{
68 TreeTestResult treeTestResult
= getTreeTestResult(session
,
70 treeTestResult
.setCloseDate(closeDate
);
71 session
.update(treeTestResult
);
72 return treeTestResult
;
77 public void addResultPart(final String testResultId
, final TreeSPath path
,
78 final SimpleResultPart resultPart
,
79 final Map
<TreeSPath
, StructureElement
> relatedElements
) {
81 getHibernateTemplate().execute(new HibernateCallback() {
83 public Object
doInHibernate(Session session
)
84 throws HibernateException
, SQLException
{
85 TreeTestResult treeTestResult
= getTreeTestResult(session
,
87 PartSubList lst
= treeTestResult
.getResultParts().get(path
);
89 lst
= new PartSubList();
90 treeTestResult
.getResultParts().put(path
, lst
);
92 lst
.getParts().add(resultPart
);
93 if (relatedElements
!= null)
94 treeTestResult
.getElements().putAll(relatedElements
);
96 session
.update(treeTestResult
);
97 return treeTestResult
;
103 public void addAttachment(final String testResultId
,
104 final SimpleAttachment attachment
) {
105 getHibernateTemplate().execute(new HibernateCallback() {
107 public Object
doInHibernate(Session session
)
108 throws HibernateException
, SQLException
{
109 TreeTestResult treeTestResult
= getTreeTestResult(session
,
112 // Check is there is already such an attachment
113 Assert
.notNull(attachment
, "attachment is null");
114 Assert
.notNull(session
, "session is null");
115 SimpleAttachment att
= (SimpleAttachment
) session
.get(
116 attachment
.getClass(), attachment
.getUuid());
118 throw new SlcException(
119 "There is already an attachement with id "
120 + attachment
.getUuid());
122 treeTestResult
.getAttachments().add(attachment
);
123 session
.update(treeTestResult
);
124 return treeTestResult
;
130 protected TreeTestResult
getTreeTestResult(Session session
,
131 String testResultId
) {
132 TreeTestResult treeTestResult
= (TreeTestResult
) session
.get(
133 TreeTestResult
.class, testResultId
);
134 if (treeTestResult
== null)
135 throw new SlcException("No result with id " + testResultId
);
136 return treeTestResult
;
139 public void updateAttributes(final String testResultId
,
140 final Map
<String
, String
> attributes
) {
141 getHibernateTemplate().execute(new HibernateCallback() {
143 public Object
doInHibernate(Session session
)
144 throws HibernateException
, SQLException
{
145 TreeTestResult treeTestResult
= getTreeTestResult(session
,
147 treeTestResult
.setAttributes(attributes
);
149 session
.update(treeTestResult
);
150 return treeTestResult
;