]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.support.hibernate/src/main/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernate.java
Stabilize attachments and events
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.hibernate / src / main / java / org / argeo / slc / hibernate / test / tree / TreeTestResultDaoHibernate.java
index 9d40956bf0a132ee4ec68bc5670079f89bf70121..def44a8a15d94b78de11fee4fce67aa7e46e6406 100644 (file)
@@ -6,18 +6,20 @@ import java.util.List;
 import java.util.Map;\r
 import java.util.SortedMap;\r
 \r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.structure.StructureElement;\r
+import org.argeo.slc.SlcException;\r
+import org.argeo.slc.core.attachment.SimpleAttachment;\r
 import org.argeo.slc.core.structure.tree.TreeSPath;\r
 import org.argeo.slc.core.test.SimpleResultPart;\r
-import org.argeo.slc.core.test.TestResult;\r
 import org.argeo.slc.core.test.tree.PartSubList;\r
 import org.argeo.slc.core.test.tree.TreeTestResult;\r
 import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
+import org.argeo.slc.structure.StructureElement;\r
+import org.argeo.slc.test.TestResult;\r
 import org.hibernate.HibernateException;\r
 import org.hibernate.Session;\r
 import org.springframework.orm.hibernate3.HibernateCallback;\r
 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
+import org.springframework.util.Assert;\r
 \r
 /**\r
  * The Hibernate implementation for tree-based result of the test result dao.\r
@@ -88,7 +90,8 @@ public class TreeTestResultDaoHibernate extends HibernateDaoSupport implements
                                        treeTestResult.getResultParts().put(path, lst);\r
                                }\r
                                lst.getParts().add(resultPart);\r
-                               treeTestResult.getElements().putAll(relatedElements);\r
+                               if (relatedElements != null)\r
+                                       treeTestResult.getElements().putAll(relatedElements);\r
 \r
                                session.update(treeTestResult);\r
                                return treeTestResult;\r
@@ -97,6 +100,33 @@ public class TreeTestResultDaoHibernate extends HibernateDaoSupport implements
 \r
        }\r
 \r
+       public void addAttachment(final String testResultId,\r
+                       final SimpleAttachment attachment) {\r
+               getHibernateTemplate().execute(new HibernateCallback() {\r
+\r
+                       public Object doInHibernate(Session session)\r
+                                       throws HibernateException, SQLException {\r
+                               TreeTestResult treeTestResult = getTreeTestResult(session,\r
+                                               testResultId);\r
+\r
+                               // Check is there is already such an attachment\r
+                               Assert.notNull(attachment, "attachment is null");\r
+                               Assert.notNull(session, "session is null");\r
+                               SimpleAttachment att = (SimpleAttachment) session.get(\r
+                                               attachment.getClass(), attachment.getUuid());\r
+                               if (att != null)\r
+                                       throw new SlcException(\r
+                                                       "There is already an attachement with id "\r
+                                                                       + attachment.getUuid());\r
+\r
+                               treeTestResult.getAttachments().add(attachment);\r
+                               session.update(treeTestResult);\r
+                               return treeTestResult;\r
+                       }\r
+               });\r
+\r
+       }\r
+\r
        protected TreeTestResult getTreeTestResult(Session session,\r
                        String testResultId) {\r
                TreeTestResult treeTestResult = (TreeTestResult) session.get(\r