* Complex implementation of a test result compatible with a tree based\r
* structure.\r
*/\r
-public class TreeTestResult implements TestResult, StructureAware<TreeSPath> {\r
+public class TreeTestResult implements TestResult, StructureAware<TreeSPath>,Comparable<TreeTestResult> {\r
private Log log = LogFactory.getLog(TreeTestResult.class);\r
\r
private List<TestResultListener<TreeTestResult>> listeners = new Vector<TestResultListener<TreeTestResult>>();\r
return currentTestRun;\r
}\r
\r
+ public int compareTo(TreeTestResult ttr2) {\r
+ TreeTestResult ttr1 = this;\r
+ if (ttr1.getCloseDate() != null && ttr2.getCloseDate() != null) {\r
+ return -ttr1.getCloseDate().compareTo(ttr2.getCloseDate());\r
+ } else if (ttr1.getCloseDate() != null && ttr2.getCloseDate() == null) {\r
+ return 1;\r
+ } else if (ttr1.getCloseDate() == null && ttr2.getCloseDate() != null) {\r
+ return -1;\r
+ } else {\r
+ return ttr1.getUuid().compareTo(ttr2.getUuid());\r
+ }\r
+ }\r
+\r
}\r
--- /dev/null
+package org.argeo.slc.core.test.tree;\r
+\r
+import java.util.SortedSet;\r
+import java.util.TreeSet;\r
+\r
+public class TreeTestResultCollection {\r
+ private String id;\r
+ private SortedSet<TreeTestResult> results = new TreeSet<TreeTestResult>();\r
+\r
+ public TreeTestResultCollection() {\r
+ }\r
+\r
+ public TreeTestResultCollection(String id) {\r
+ this.id = id;\r
+ }\r
+\r
+ public String getId() {\r
+ return id;\r
+ }\r
+\r
+ public void setId(String id) {\r
+ this.id = id;\r
+ }\r
+\r
+ public SortedSet<TreeTestResult> getResults() {\r
+ return results;\r
+ }\r
+\r
+ public void setResults(SortedSet<TreeTestResult> results) {\r
+ this.results = results;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.dao.test.tree;\r
+\r
+import org.argeo.slc.core.test.tree.TreeTestResultCollection;\r
+\r
+public interface TreeTestResultCollectionDao {\r
+ public void create(TreeTestResultCollection ttrCollection);\r
+ public void update(TreeTestResultCollection ttrCollection);\r
+ public TreeTestResultCollection getTestResultCollection(String id);\r
+}\r
--- /dev/null
+package org.argeo.slc.hibernate.test.tree;\r
+\r
+import org.springframework.orm.hibernate3.HibernateTemplate;\r
+import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
+\r
+import org.hibernate.SessionFactory;\r
+\r
+import org.argeo.slc.core.test.tree.TreeTestResultCollection;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao;\r
+\r
+public class TreeTestResultCollectionDaoHibernate extends HibernateDaoSupport\r
+ implements TreeTestResultCollectionDao {\r
+\r
+ public void create(TreeTestResultCollection ttrCollection) {\r
+ getHibernateTemplate().save(ttrCollection);\r
+ }\r
+\r
+ public TreeTestResultCollection getTestResultCollection(String id) {\r
+ return (TreeTestResultCollection) getHibernateTemplate().get(\r
+ TreeTestResultCollection.class, id);\r
+ }\r
+\r
+ public void update(TreeTestResultCollection ttrCollection) {\r
+ getHibernateTemplate().update(ttrCollection);\r
+ }\r
+\r
+}\r
<value>\r
org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml\r
</value>\r
+ <value>\r
+ org/argeo/slc/hibernate/test/tree/TreeTestResultCollection.hbm.xml\r
+ </value>\r
<value>\r
org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml\r
</value>\r
<value><![CDATA[\r
hibernate.dialect=org.hibernate.dialect.HSQLDialect\r
hibernate.hbm2ddl.auto=create\r
+ hibernate.current_session_context_class=thread\r
]]></value>\r
</property>\r
</bean>\r
abstract="true">\r
</bean>\r
\r
+ <bean id="slcTemplates.dao.testResultCollectionDao"\r
+ class="org.argeo.slc.hibernate.test.tree.TreeTestResultCollectionDaoHibernate"\r
+ abstract="true">\r
+ </bean>\r
+\r
<bean id="slcTemplates.dao.testRunDescriptorDao"\r
class="org.argeo.slc.hibernate.test.TestRunDescriptorDaoHibernate"\r
abstract="true">\r
--- /dev/null
+<?xml version="1.0"?>\r
+<!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="TreeTestResultCollection"\r
+ table="TREE_TEST_RESULT_COLLECTION">\r
+ <id name="id" column="ID" />\r
+\r
+ <set name="results" table="TTR_COLLECTION_RESULTS"\r
+ sort="natural" lazy="false">\r
+ <key column="PARENT_ID" />\r
+ <many-to-many class="TreeTestResult" />\r
+ </set>\r
+ </class>\r
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.hibernate.test.tree;\r
+\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+import org.argeo.slc.core.test.tree.TreeTestResultCollection;\r
+import org.argeo.slc.core.test.tree.TreeTestResultTestUtils;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
+import org.argeo.slc.unit.AbstractSpringTestCase;\r
+import org.argeo.slc.unit.test.tree.UnitTestTreeUtil;\r
+\r
+public class TreeTestResultCollectionDaoHibernateTest extends\r
+ AbstractSpringTestCase {\r
+\r
+ public void testScenario() {\r
+ TreeTestResultDao ttrDao = getBean(TreeTestResultDao.class);\r
+ TreeTestResultCollectionDao ttrcDao = getBean(TreeTestResultCollectionDao.class);\r
+\r
+ String ttrcName = "testCollection";\r
+\r
+ TreeTestResult ttr1 = TreeTestResultTestUtils\r
+ .createCompleteTreeTestResult();\r
+ ttrDao.create(ttr1);\r
+\r
+ TreeTestResultCollection ttrc = new TreeTestResultCollection(ttrcName);\r
+ ttrcDao.create(ttrc);\r
+\r
+ ttrc.getResults().add(ttr1);\r
+ ttrcDao.update(ttrc);\r
+\r
+ TreeTestResult ttr2 = TreeTestResultTestUtils\r
+ .createCompleteTreeTestResult();\r
+ ttrDao.create(ttr2);\r
+\r
+ ttrc.getResults().add(ttr2);\r
+ ttrcDao.update(ttrc);\r
+\r
+ ttrc.getResults().remove(ttr1);\r
+ ttrcDao.update(ttrc);\r
+\r
+ TreeTestResultCollection ttrcPersist = ttrcDao\r
+ .getTestResultCollection(ttrcName);\r
+ assertEquals(1, ttrcPersist.getResults().size());\r
+ UnitTestTreeUtil.assertTreeTestResult(ttr2, ttrcPersist.getResults()\r
+ .iterator().next());\r
+ }\r
+\r
+ @Override\r
+ protected String getApplicationContextLocation() {\r
+ return "org/argeo/slc/hibernate/applicationContext.xml";\r
+ }\r
+\r
+}\r
parent="slcTemplates.dao.testResultDao">\r
<property name="sessionFactory" ref="sessionFactory" />\r
</bean>\r
+ <bean id="testResultCollectionDao"\r
+ parent="slcTemplates.dao.testResultCollectionDao">\r
+ <property name="sessionFactory" ref="sessionFactory" />\r
+ </bean>\r
\r
<bean id="slcExecutionDao"\r
parent="slcTemplates.dao.slcExecutionDao">\r