Introduce tree test result collections
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 5 May 2008 10:19:35 +0000 (10:19 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 5 May 2008 10:19:35 +0000 (10:19 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1122 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultCollection.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/dao/test/tree/TreeTestResultCollectionDao.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/test/tree/TreeTestResultCollectionDaoHibernate.java [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/spring/applicationContext.xml
org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResultCollection.hbm.xml [new file with mode: 0644]
org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultCollectionDaoHibernateTest.java [new file with mode: 0644]
org.argeo.slc.core/src/test/resources/org/argeo/slc/hibernate/applicationContext.xml

index a012c4451b065a3e26926f710d4712cd5dc04068..328d5981a19499fa0f01ace14a849b4a87f43084 100644 (file)
@@ -24,7 +24,7 @@ import org.argeo.slc.core.test.TestRunAware;
  * 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
@@ -167,4 +167,17 @@ public class TreeTestResult implements TestResult, StructureAware<TreeSPath> {
                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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultCollection.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultCollection.java
new file mode 100644 (file)
index 0000000..21ba921
--- /dev/null
@@ -0,0 +1,33 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/test/tree/TreeTestResultCollectionDao.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/test/tree/TreeTestResultCollectionDao.java
new file mode 100644 (file)
index 0000000..7d2f0ab
--- /dev/null
@@ -0,0 +1,9 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/test/tree/TreeTestResultCollectionDaoHibernate.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/test/tree/TreeTestResultCollectionDaoHibernate.java
new file mode 100644 (file)
index 0000000..cdebae6
--- /dev/null
@@ -0,0 +1,27 @@
+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
index 588e00f2f363761cc3cfccc0cf7a8d83f549e6b9..19f1d73c8f786c2a681c6e2495bcffc8d88d9692 100644 (file)
@@ -37,6 +37,9 @@
                                <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
@@ -61,6 +64,7 @@
                        <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
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResultCollection.hbm.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResultCollection.hbm.xml
new file mode 100644 (file)
index 0000000..19fce66
--- /dev/null
@@ -0,0 +1,16 @@
+<?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
diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultCollectionDaoHibernateTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultCollectionDaoHibernateTest.java
new file mode 100644 (file)
index 0000000..786ff52
--- /dev/null
@@ -0,0 +1,52 @@
+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
index 8c6c433c1168328c2f2f28067e0de54ebee07d89..31158cf495eaa852e045fea176250e2f55737400 100644 (file)
                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