+++ /dev/null
-/*\r
- * Copyright (C) 2007-2012 Mathieu Baudier\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-package org.argeo.slc.hibernate.test.tree;\r
-\r
-import java.sql.SQLException;\r
-import java.util.Date;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.SortedMap;\r
-\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.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
- * \r
- * @see TreeTestResult\r
- */\r
-public class TreeTestResultDaoHibernate extends HibernateDaoSupport implements\r
- TreeTestResultDao {\r
-\r
- public void create(TestResult testResult) {\r
- getHibernateTemplate().save(testResult);\r
- }\r
-\r
- public void update(TestResult testResult) {\r
- getHibernateTemplate().saveOrUpdate(testResult);\r
- }\r
-\r
- public TreeTestResult getTestResult(String uuid) {\r
- List<?> list = getHibernateTemplate().find(\r
- "from TreeTestResult where uuid=?", uuid);\r
- if (list.size() == 0) {\r
- return null;\r
- } else {\r
- return (TreeTestResult) list.get(0);\r
- }\r
-\r
- }\r
-\r
- @SuppressWarnings("unchecked")\r
- public List<TreeTestResult> listTestResults() {\r
- return (List<TreeTestResult>) getHibernateTemplate().find(\r
- "from TreeTestResult");\r
- }\r
-\r
- @SuppressWarnings("unchecked")\r
- public List<TreeTestResult> listResults(TreeSPath path) {\r
- List<TreeTestResult> list = getHibernateTemplate().find(\r
- "from TreeTestResult res where ? in indices(res.resultParts)",\r
- path.getAsUniqueString());\r
- return list;\r
- }\r
-\r
- public void close(final String testResultId, final Date closeDate) {\r
- getHibernateTemplate().execute(new HibernateCallback() {\r
-\r
- public Object doInHibernate(Session session)\r
- throws HibernateException, SQLException {\r
- TreeTestResult treeTestResult = getTreeTestResult(session,\r
- testResultId);\r
- treeTestResult.setCloseDate(closeDate);\r
- session.update(treeTestResult);\r
- return treeTestResult;\r
- }\r
- });\r
- }\r
-\r
- public void addResultPart(final String testResultId, final TreeSPath path,\r
- final SimpleResultPart resultPart,\r
- final Map<TreeSPath, StructureElement> relatedElements) {\r
-\r
- getHibernateTemplate().execute(new HibernateCallback() {\r
-\r
- public Object doInHibernate(Session session)\r
- throws HibernateException, SQLException {\r
- TreeTestResult treeTestResult = getTreeTestResult(session,\r
- testResultId);\r
- PartSubList lst = treeTestResult.getResultParts().get(path);\r
- if (lst == null) {\r
- lst = new PartSubList();\r
- treeTestResult.getResultParts().put(path, lst);\r
- }\r
- lst.getParts().add(resultPart);\r
- if (relatedElements != null)\r
- treeTestResult.getElements().putAll(relatedElements);\r
-\r
- session.update(treeTestResult);\r
- return treeTestResult;\r
- }\r
- });\r
-\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
- TreeTestResult.class, testResultId);\r
- if (treeTestResult == null)\r
- throw new SlcException("No result with id " + testResultId);\r
- return treeTestResult;\r
- }\r
-\r
- public void updateAttributes(final String testResultId,\r
- final SortedMap<String, String> attributes) {\r
- getHibernateTemplate().execute(new HibernateCallback() {\r
-\r
- public Object doInHibernate(Session session)\r
- throws HibernateException, SQLException {\r
- TreeTestResult treeTestResult = getTreeTestResult(session,\r
- testResultId);\r
- treeTestResult.setAttributes(attributes);\r
-\r
- session.update(treeTestResult);\r
- return treeTestResult;\r
- }\r
- });\r
- }\r
-\r
-}\r