+++ /dev/null
-package org.argeo.slc.hibernate.test.tree;\r
-\r
-import java.util.Date;\r
-import java.util.List;\r
-\r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.test.TestResult;\r
-import org.argeo.slc.core.test.tree.TreeTestResult;\r
-import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
-import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
-\r
-/**\r
- * The Hibernate implementation for tree-based result of the test result dao.\r
- * \r
- * @see TreeTestResult\r
- */\r
-public class TestResultDaoHibernate 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
- public List<TreeTestResult> listTestResults() {\r
- return (List<TreeTestResult>) getHibernateTemplate().find(\r
- "from TreeTestResult");\r
- }\r
-\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(String id, Date closeDate) {\r
- // TreeTestResult ttr = (TreeTestResult) getHibernateTemplate().load(\r
- // TreeTestResult.class, id);\r
- TreeTestResult ttr = getTestResult(id);\r
- if (ttr != null) {\r
- ttr.setCloseDate(closeDate);\r
- getHibernateTemplate().update(ttr);\r
- } else {\r
- throw new SlcException("Result with id " + id\r
- + " could not be closed because it was not found.");\r
- }\r
- }\r
-\r
-}\r
--- /dev/null
+package org.argeo.slc.hibernate.test.tree;\r
+\r
+import java.util.Date;\r
+import java.util.List;\r
+\r
+import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.test.TestResult;\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
+import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\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
+ public List<TreeTestResult> listTestResults() {\r
+ return (List<TreeTestResult>) getHibernateTemplate().find(\r
+ "from TreeTestResult");\r
+ }\r
+\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(String id, Date closeDate) {\r
+ // TreeTestResult ttr = (TreeTestResult) getHibernateTemplate().load(\r
+ // TreeTestResult.class, id);\r
+ TreeTestResult ttr = getTestResult(id);\r
+ if (ttr != null) {\r
+ ttr.setCloseDate(closeDate);\r
+ getHibernateTemplate().update(ttr);\r
+ } else {\r
+ throw new SlcException("Result with id " + id\r
+ + " could not be closed because it was not found.");\r
+ }\r
+ }\r
+\r
+}\r
+++ /dev/null
-org.argeo.slc.ant.SlcProjectHelper
\ No newline at end of file
</bean>\r
\r
<bean id="slcTemplates.dao.testResultDao"\r
- class="org.argeo.slc.hibernate.test.tree.TestResultDaoHibernate"\r
+ class="org.argeo.slc.hibernate.test.tree.TreeTestResultDaoHibernate"\r
abstract="true">\r
</bean>\r
\r
-<?xml version="1.0"?>\r
+<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC\r
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
<id name="tid" column="T_ID">\r
<generator class="native" />\r
</id>\r
- <list name="parts" cascade="all" lazy="false">\r
+ <list name="parts" cascade="all">\r
<key column="PART_SUBLIST_ID" />\r
<list-index column="INDX" />\r
- <composite-element\r
- class="org.argeo.slc.core.test.SimpleResultPart">\r
- <property name="status" column="STATUS" not-null="true" />\r
- <property name="message" column="MESSAGE"\r
- not-null="true" />\r
- <property name="exceptionMessage"\r
- column="EXCEPTION_MESSAGE" not-null="false" />\r
- <property name="testRunUuid" column="TEST_RUN_UUID"\r
- not-null="false" />\r
- </composite-element>\r
- </list>\r
- </class>\r
+ <composite-element
+ class="org.argeo.slc.core.test.SimpleResultPart">
+ <property name="status" column="STATUS" not-null="true" />
+ <property name="message" column="MESSAGE"
+ not-null="true" />
+ <property name="exceptionMessage"
+ column="EXCEPTION_MESSAGE" not-null="false" />
+ <property name="testRunUuid" column="TEST_RUN_UUID"
+ not-null="false" />
+ </composite-element>
+ </list>
+ </class>
</hibernate-mapping>
\ No newline at end of file
-<?xml version="1.0"?>\r
+<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC\r
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
<hibernate-mapping package="org.argeo.slc.core.test.tree">\r
<class name="TreeTestResult" table="TREE_TEST_RESULT">\r
- <id name="uuid" column="UUID"/>\r
+ <id name="uuid" column="UUID" />\r
\r
- <property name="closeDate" column="CLOSE_DATE" type="timestamp"\r
- not-null="false" />\r
-\r
- <map name="resultParts" table="RESULT_PARTS_MAP" cascade="all"\r
- lazy="false" sort="natural">\r
- <key column="PARENT_ID" />\r
- <composite-map-key\r
- class="org.argeo.slc.core.structure.tree.TreeSPath">\r
- <key-property name="asUniqueString" column="PATH" />\r
- </composite-map-key>\r
- <many-to-many class="PartSubList" column="PART_SUB_LIST_ID"\r
- unique="true" lazy="false" />\r
- </map>\r
-\r
- <map name="elements" table="RESULT_ELEMENTS_MAP"\r
- cascade="all" lazy="false" sort="natural">\r
- <key column="PARENT_ID" />\r
- <composite-map-key\r
- class="org.argeo.slc.core.structure.tree.TreeSPath">\r
- <key-property name="asUniqueString" column="PATH" />\r
- </composite-map-key>\r
- <many-to-many class="org.argeo.slc.core.structure.SimpleSElement" column="ELEMENT_ID"\r
- unique="true" lazy="false" />\r
- </map>\r
- </class>\r
+ <property name="closeDate" column="CLOSE_DATE" type="timestamp"
+ not-null="false" />
+
+ <map name="resultParts" table="RESULT_PARTS_MAP" cascade="all"
+ sort="natural">
+ <key column="PARENT_ID" />
+ <composite-map-key
+ class="org.argeo.slc.core.structure.tree.TreeSPath">
+ <key-property name="asUniqueString" column="PATH" />
+ </composite-map-key>
+ <many-to-many class="PartSubList" column="PART_SUB_LIST_ID"
+ unique="true" />
+ </map>
+
+ <map name="elements" table="RESULT_ELEMENTS_MAP" cascade="all"
+ sort="natural">
+ <key column="PARENT_ID" />
+ <composite-map-key
+ class="org.argeo.slc.core.structure.tree.TreeSPath">
+ <key-property name="asUniqueString" column="PATH" />
+ </composite-map-key>
+ <many-to-many
+ class="org.argeo.slc.core.structure.SimpleSElement"
+ column="ELEMENT_ID" unique="true" />
+ </map>
+ </class>
</hibernate-mapping>
\ No newline at end of file
package org.argeo.slc.hibernate.test.tree;\r
\r
+import java.sql.SQLException;\r
+\r
import org.argeo.slc.core.structure.SimpleSElement;\r
import org.argeo.slc.core.structure.tree.TreeSPath;\r
import org.argeo.slc.core.structure.tree.TreeSRegistry;\r
import org.argeo.slc.unit.AbstractSpringTestCase;\r
import org.argeo.slc.unit.test.tree.TreeTestResultTestUtils;\r
import org.argeo.slc.unit.test.tree.UnitTestTreeUtil;\r
+import org.hibernate.HibernateException;\r
+import org.hibernate.LockMode;\r
+import org.hibernate.Session;\r
+import org.hibernate.SessionFactory;\r
+import org.hibernate.Transaction;\r
+import org.springframework.orm.hibernate3.HibernateCallback;\r
+import org.springframework.orm.hibernate3.HibernateTemplate;\r
\r
public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase {\r
private TreeTestResultDao testResultDao = null;\r
+ private HibernateTemplate template = null;\r
\r
@Override\r
public void setUp() {\r
- testResultDao = (TreeTestResultDao) getContext().getBean(\r
- "testResultDao");\r
+ testResultDao = getBean(TreeTestResultDao.class);\r
+ template = new HibernateTemplate(getBean(SessionFactory.class));\r
}\r
\r
public void testCreate() {\r
TreeTestResult ttrPersisted = (TreeTestResult) testResultDao\r
.getTestResult(ttr.getUuid());\r
\r
- UnitTestTreeUtil.assertTreeTestResult(ttr, ttrPersisted);\r
+ assertInHibernate(ttr, ttrPersisted);\r
}\r
\r
public void testUpdate() {\r
.createCompleteTreeTestResult();\r
testResultDao.create(ttr);\r
\r
- TreeTestResult ttrUpdated = (TreeTestResult) testResultDao\r
+ final TreeTestResult ttrUpdated = (TreeTestResult) testResultDao\r
.getTestResult(ttr.getUuid());\r
\r
// Modifying ttrUpdated\r
*/\r
\r
String pathStr = "/test";\r
- TreeSPath path = TreeSPath.parseToCreatePath(pathStr);\r
+ final TreeSPath path = new TreeSPath(pathStr);\r
\r
- TreeSRegistry registry = new TreeSRegistry();\r
+ final TreeSRegistry registry = new TreeSRegistry();\r
SimpleSElement elem = new SimpleSElement("Unit Test");\r
elem.getTags().put("myTag", "myTagValue");\r
registry.register(path, elem);\r
\r
- ttrUpdated.notifyCurrentPath(registry, path);\r
+ template.execute(new HibernateCallback() {\r
+\r
+ public Object doInHibernate(Session session)\r
+ throws HibernateException, SQLException {\r
+ session.refresh(ttrUpdated);\r
+ ttrUpdated.notifyCurrentPath(registry, path);\r
\r
- ttrUpdated.addResultPart(TreeTestResultTestUtils\r
- .createSimpleResultPartPassed());\r
- ttrUpdated.addResultPart(TreeTestResultTestUtils\r
- .createSimpleResultPartFailed());\r
- ttrUpdated.addResultPart(TreeTestResultTestUtils\r
- .createSimpleResultPartError());\r
+ ttrUpdated.addResultPart(TreeTestResultTestUtils\r
+ .createSimpleResultPartPassed());\r
+ ttrUpdated.addResultPart(TreeTestResultTestUtils\r
+ .createSimpleResultPartFailed());\r
+ ttrUpdated.addResultPart(TreeTestResultTestUtils\r
+ .createSimpleResultPartError());\r
+ return null;\r
+ }\r
+ });\r
\r
testResultDao.update(ttrUpdated);\r
\r
TreeTestResult ttrRetrieved = (TreeTestResult) testResultDao\r
.getTestResult(ttr.getUuid());\r
\r
- UnitTestTreeUtil.assertTreeTestResult(ttrRetrieved, ttrUpdated);\r
+ assertInHibernate(ttrUpdated, ttrRetrieved);\r
}\r
\r
public void testMultipleUpdateScenario() throws Exception {\r
ttr.close();\r
\r
testResultDao.close(ttr.getUuid(), ttr.getCloseDate());\r
+\r
+ TreeTestResult ttrRetrieved = (TreeTestResult) testResultDao\r
+ .getTestResult(ttr.getUuid());\r
+\r
+ assertInHibernate(ttr, ttrRetrieved);\r
+\r
}\r
\r
@Override\r
return "org/argeo/slc/hibernate/applicationContext.xml";\r
}\r
\r
+ public void assertInHibernate(final TreeTestResult ttrExpected,\r
+ final TreeTestResult ttrPersisted) {\r
+ template.execute(new HibernateCallback() {\r
+ public Object doInHibernate(Session session) {\r
+ session.refresh(ttrPersisted);\r
+ UnitTestTreeUtil\r
+ .assertTreeTestResult(ttrExpected, ttrPersisted);\r
+ return null;\r
+ }\r
+\r
+ });\r
+\r
+ }\r
+\r
}\r