Persist path and registry
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 17 Nov 2007 19:14:25 +0000 (19:14 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 17 Nov 2007 19:14:25 +0000 (19:14 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@712 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

26 files changed:
org.argeo.slc/src/main/java/org/argeo/slc/core/UnsupportedException.java
org.argeo.slc/src/main/java/org/argeo/slc/core/structure/DefaultSRegistry.java
org.argeo.slc/src/main/java/org/argeo/slc/core/structure/SimpleSElement.java
org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSPath.java
org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSRegistry.java [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/FullHtmlTreeReport.java
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultPersister.java
org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/SimpleSElementDao.java [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/tree/TreeSPathDao.java [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/tree/TreeSRegistryDao.java [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernate.java [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernate.java [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml
org.argeo.slc/src/main/java/org/argeo/slc/unit/IndependentDbTestCase.java
org.argeo.slc/src/main/java/org/argeo/slc/unit/SpringBasedTestCase.java
org.argeo.slc/src/test/java/log4j.properties [new file with mode: 0644]
org.argeo.slc/src/test/java/org/argeo/slc/hibernate/applicationContext.xml [new file with mode: 0644]
org.argeo.slc/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernateTest.java [new file with mode: 0644]
org.argeo.slc/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernateTest.java [new file with mode: 0644]
org.argeo.slc/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java [new file with mode: 0644]
org.argeo.slc/src/test/slc/conf/data.xml
org.argeo.slc/src/test/slc/conf/slc.xml

index b113b2cb0870ad173b871bdcfc52a70450f4e58e..2399a298932dc24bfa493171adfd8c3279f4e26b 100644 (file)
@@ -3,6 +3,10 @@ package org.argeo.slc.core;
 public class UnsupportedException extends SlcException {\r
        static final long serialVersionUID = 1l;\r
 \r
+       public UnsupportedException() {\r
+               this("Action not supported");\r
+       }\r
+\r
        public UnsupportedException(String message) {\r
                super(message);\r
        }\r
index 84814f3077cbe46bdcd8e2b78f805ebb08c1254e..f59fc65b7416d27ab1965e2ca39309f6a47562e1 100644 (file)
@@ -33,11 +33,6 @@ public class DefaultSRegistry implements StructureRegistry {
                                + elements.size() + ")");\r
        }\r
 \r
-       // public void register(StructurePath path,StructureAware structureAware) {\r
-       // register(path,structureAware.getElement());\r
-       // structureAware.onRegister(this,path);\r
-       // }\r
-\r
        public StructureElement getElement(StructurePath path) {\r
                int index = paths.indexOf(path);\r
                if (index >= 0) {\r
index 12c65d5500d6fc959a1bf3e11f894375dd4faa3f..54bdccf9841c9c4c70fa313e351fd99dc5e6a965 100644 (file)
@@ -8,8 +8,14 @@ import org.argeo.slc.core.structure.tree.TreeSPath;
  * @see TreeSPath\r
  */\r
 public class SimpleSElement implements StructureElement {\r
+       /** For ORM */\r
+       private Long tid;\r
        private String description;\r
 \r
+       /** For ORM */\r
+       public SimpleSElement() {\r
+       }\r
+\r
        public SimpleSElement(String description) {\r
                this.description = description;\r
        }\r
@@ -26,4 +32,12 @@ public class SimpleSElement implements StructureElement {
                this.description = description;\r
        }\r
 \r
+       Long getTid() {\r
+               return tid;\r
+       }\r
+\r
+       void setTid(Long tid) {\r
+               this.tid = tid;\r
+       }\r
+\r
 }\r
index 37d615f9af9d7ea7387fad8138a737eea01cc8d1..b00d1cf9443bd6351258f36b6d88de01db3077ca 100644 (file)
@@ -4,6 +4,7 @@ import java.util.List;
 import java.util.StringTokenizer;\r
 import java.util.Vector;\r
 \r
+import org.argeo.slc.core.SlcException;\r
 import org.argeo.slc.core.structure.StructurePath;\r
 import org.argeo.slc.core.structure.StructureRegistry;\r
 \r
@@ -18,6 +19,9 @@ public class TreeSPath implements StructurePath, Comparable<StructurePath> {
        private String name;\r
        private Character separator = DEFAULT_SEPARATOR;\r
 \r
+       /** For ORM */\r
+       private Long tid;\r
+\r
        public String getAsUniqueString() {\r
                String parentStr = parent != null ? parent.getAsUniqueString() : "";\r
                return parentStr + separator + name;\r
@@ -54,6 +58,10 @@ public class TreeSPath implements StructurePath, Comparable<StructurePath> {
 \r
        /** Create a child . */\r
        public TreeSPath createChild(String name) {\r
+               if (name.indexOf(separator) > -1) {\r
+                       throw new SlcException("Tree path name '" + name\r
+                                       + "' contains separator character " + separator);\r
+               }\r
                TreeSPath path = new TreeSPath();\r
                path.parent = this;\r
                path.name = name;\r
@@ -93,6 +101,14 @@ public class TreeSPath implements StructurePath, Comparable<StructurePath> {
                return paths;\r
        }\r
 \r
+       public TreeSPath getRoot(){\r
+               TreeSPath root = this;\r
+               while(root.getParent()!=null){\r
+                       root = root.getParent();\r
+               }\r
+               return root;\r
+       }\r
+       \r
        @Override\r
        public String toString() {\r
                return getAsUniqueString();\r
@@ -111,4 +127,24 @@ public class TreeSPath implements StructurePath, Comparable<StructurePath> {
                return getAsUniqueString().compareTo(o.getAsUniqueString());\r
        }\r
 \r
+       Long getTid() {\r
+               return tid;\r
+       }\r
+\r
+       void setTid(Long tid) {\r
+               this.tid = tid;\r
+       }\r
+\r
+       public void setSeparator(Character separator) {\r
+               this.separator = separator;\r
+       }\r
+\r
+       protected void setParent(TreeSPath parent) {\r
+               this.parent = parent;\r
+       }\r
+\r
+       protected void setName(String name) {\r
+               this.name = name;\r
+       }\r
+\r
 }\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSRegistry.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSRegistry.java
new file mode 100644 (file)
index 0000000..c7945ce
--- /dev/null
@@ -0,0 +1,91 @@
+package org.argeo.slc.core.structure.tree;\r
+\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.TreeMap;\r
+import java.util.Vector;\r
+\r
+import org.argeo.slc.core.UnsupportedException;\r
+import org.argeo.slc.core.structure.SimpleSElement;\r
+import org.argeo.slc.core.structure.StructureElement;\r
+import org.argeo.slc.core.structure.StructurePath;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+\r
+public class TreeSRegistry implements StructureRegistry {\r
+       /** For ORM */\r
+       private Long tid;\r
+       private TreeSPath root;\r
+       private Map<TreeSPath, SimpleSElement> elements = new TreeMap<TreeSPath, SimpleSElement>();\r
+\r
+       private String mode = StructureRegistry.ALL;\r
+\r
+       private List<StructurePath> activePaths;\r
+\r
+       public StructureElement getElement(StructurePath path) {\r
+               return elements.get(path);\r
+       }\r
+\r
+       public List<StructureElement> listElements() {\r
+               return new Vector<StructureElement>(elements.values());\r
+       }\r
+\r
+       public List<StructurePath> listPaths() {\r
+               return new Vector<StructurePath>(elements.keySet());\r
+       }\r
+\r
+       public void register(StructurePath path, StructureElement element) {\r
+               final SimpleSElement simpleSElement;\r
+               if (element instanceof SimpleSElement){\r
+                       simpleSElement = (SimpleSElement)element;\r
+               }else{\r
+                       simpleSElement = new SimpleSElement(element.getDescription());\r
+               }\r
+               \r
+               if (!(path instanceof TreeSPath))\r
+                       throw new UnsupportedException("path", path);\r
+\r
+               elements.put((TreeSPath) path, simpleSElement);\r
+\r
+       }\r
+\r
+       public String getMode() {\r
+               return mode;\r
+       }\r
+\r
+       public void setMode(String mode) {\r
+               this.mode = mode;\r
+       }\r
+\r
+       public List<StructurePath> getActivePaths() {\r
+               return activePaths;\r
+       }\r
+\r
+       public void setActivePaths(List<StructurePath> activePaths) {\r
+               this.activePaths = activePaths;\r
+       }\r
+\r
+       public TreeSPath getRoot() {\r
+               return root;\r
+       }\r
+\r
+       public void setRoot(TreeSPath root) {\r
+               this.root = root;\r
+       }\r
+\r
+       public Map<TreeSPath, SimpleSElement> getElements() {\r
+               return elements;\r
+       }\r
+\r
+       public void setElements(Map<TreeSPath, SimpleSElement> elements) {\r
+               this.elements = elements;\r
+       }\r
+\r
+       Long getTid() {\r
+               return tid;\r
+       }\r
+\r
+       void setTid(Long tid) {\r
+               this.tid = tid;\r
+       }\r
+\r
+}\r
index 1144e27935a66b2654cec014b2016118e956dd62..eac9fce9be1d75595fc7f646083970755a084bca 100644 (file)
@@ -5,17 +5,20 @@ import java.io.FileWriter;
 import java.io.IOException;\r
 import java.util.List;\r
 \r
+import org.argeo.slc.core.SlcException;\r
 import org.argeo.slc.core.structure.StructureAware;\r
 import org.argeo.slc.core.structure.StructureElement;\r
 import org.argeo.slc.core.structure.StructurePath;\r
 import org.argeo.slc.core.structure.StructureRegistry;\r
 import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.structure.tree.TreeSRegistry;\r
 import org.argeo.slc.core.test.SimpleResultPart;\r
 import org.argeo.slc.core.test.SimpleTestResult;\r
 import org.argeo.slc.core.test.TestStatus;\r
 import org.argeo.slc.core.test.TestReport;\r
 import org.argeo.slc.core.test.TestResult;\r
 import org.argeo.slc.core.test.TestResultPart;\r
+import org.argeo.slc.dao.structure.tree.TreeSRegistryDao;\r
 import org.argeo.slc.dao.test.TestResultDao;\r
 \r
 /**\r
@@ -25,13 +28,16 @@ import org.argeo.slc.dao.test.TestResultDao;
  */\r
 public class FullHtmlTreeReport implements TestReport, StructureAware {\r
        private TestResultDao testResultDao;\r
+       private TreeSRegistryDao treeSRegistryDao;\r
        private File reportDir;\r
 \r
        private StructureRegistry registry;\r
 \r
        public void generateTestReport(TestResult testResult) {\r
+               \r
                if (testResultDao == null) {\r
                        TreeTestResult result = (TreeTestResult) testResult;\r
+                       initRegistry(result.getResultParts().firstKey());\r
                        generateResultPage(getResultFile(result), result);\r
                } else {\r
                        if (reportDir.exists()) {\r
@@ -48,13 +54,14 @@ public class FullHtmlTreeReport implements TestReport, StructureAware {
 \r
                        List<TestResult> list = testResultDao.listTestResults();\r
                        for (TestResult testRes : list) {\r
-                               TreeTestResult res = (TreeTestResult) testRes;\r
+                               TreeTestResult result = (TreeTestResult) testRes;\r
+                               initRegistry(result.getResultParts().firstKey());\r
 \r
-                               File file = getResultFile(res);\r
+                               File file = getResultFile(result);\r
                                index.append("<tr><td><a href=\"").append(file.getName())\r
                                                .append("\">");\r
-                               index.append(res.getTestResultId()).append("</a></td></tr>\n");\r
-                               generateResultPage(file, res);\r
+                               index.append(result.getTestResultId()).append("</a></td></tr>\n");\r
+                               generateResultPage(file, result);\r
                        }\r
 \r
                        index.append("</table>\n</body></html>");\r
@@ -153,11 +160,24 @@ public class FullHtmlTreeReport implements TestReport, StructureAware {
                this.testResultDao = testResultDao;\r
        }\r
 \r
+       public void setTreeSRegistryDao(TreeSRegistryDao treeSRegistryDao) {\r
+               this.treeSRegistryDao = treeSRegistryDao;\r
+       }\r
+\r
        /** Sets the directory where to generate all the data. */\r
        public void setReportDir(File reportDir) {\r
                this.reportDir = reportDir;\r
        }\r
 \r
+       protected void initRegistry(TreeSPath path){\r
+               if(treeSRegistryDao != null){\r
+                       registry = treeSRegistryDao.getTreeSRegistry(path);\r
+               }\r
+               if(registry==null){\r
+                       throw new SlcException("No structure registry available");\r
+               }\r
+       }\r
+       \r
        public void notifyCurrentPath(StructureRegistry registry, StructurePath path) {\r
                this.registry = registry;\r
        }\r
index 75df94dacebb6cbba7848236f3dcd1ac51cdf566..5b84115409dc8f602418403cfc3047cdee797627 100644 (file)
@@ -3,6 +3,7 @@ package org.argeo.slc.core.test.tree;
 import java.util.List;\r
 import java.util.SortedMap;\r
 import java.util.TreeMap;\r
+import java.util.Vector;\r
 \r
 import org.apache.commons.logging.Log;\r
 import org.apache.commons.logging.LogFactory;\r
@@ -28,7 +29,7 @@ public class TreeTestResult implements TestResult, StructureAware {
        private Long tid;\r
 \r
        private NumericTRId testResultId;\r
-       private List<TestResultListener> listeners;\r
+       private List<TestResultListener> listeners = new Vector<TestResultListener>();\r
 \r
        private TreeSPath currentPath;\r
 \r
@@ -36,6 +37,8 @@ public class TreeTestResult implements TestResult, StructureAware {
 \r
        private SortedMap<TreeSPath, PartSubList> resultParts = new TreeMap<TreeSPath, PartSubList>();\r
 \r
+       private StructureRegistry registry;\r
+       \r
        public TestResultId getTestResultId() {\r
                return testResultId;\r
        }\r
@@ -77,6 +80,7 @@ public class TreeTestResult implements TestResult, StructureAware {
 \r
        public void notifyCurrentPath(StructureRegistry registry, StructurePath path) {\r
                currentPath = (TreeSPath) path;\r
+               this.registry = registry;\r
        }\r
 \r
        public TreeSPath getCurrentPath() {\r
@@ -117,4 +121,12 @@ public class TreeTestResult implements TestResult, StructureAware {
                this.tid = tid;\r
        }\r
 \r
+       public StructureRegistry getRegistry() {\r
+               return registry;\r
+       }\r
+\r
+       public void setRegistry(StructureRegistry registry) {\r
+               this.registry = registry;\r
+       }\r
+\r
 }\r
index 12c97fa4663d91ac388fb6bd38febc25494a5180..0c32a1a4cfd82caf5a743400e3844c4a66237e24 100644 (file)
@@ -3,6 +3,13 @@ package org.argeo.slc.core.test.tree;
 import org.apache.commons.logging.Log;\r
 import org.apache.commons.logging.LogFactory;\r
 \r
+import org.argeo.slc.core.structure.SimpleSElement;\r
+import org.argeo.slc.core.structure.StructureElement;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.structure.tree.TreeSRegistry;\r
+import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
+import org.argeo.slc.dao.structure.tree.TreeSRegistryDao;\r
 import org.argeo.slc.dao.test.TestResultDao;\r
 \r
 /**\r
@@ -14,30 +21,45 @@ public class TreeTestResultPersister extends AsynchronousTreeTestResultListener
        private static Log log = LogFactory.getLog(TreeTestResultPersister.class);\r
 \r
        private TestResultDao testResultDao;\r
+       private TreeSPathDao treeSPathDao;\r
+       private TreeSRegistryDao treeSRegistryDao;\r
 \r
        @Override\r
        protected void resultPartAdded(PartStruct partStruct) {\r
                try {\r
                        TreeTestResult persistedResult = (TreeTestResult) testResultDao\r
                                        .getTestResult(partStruct.resultId);\r
+\r
+                       TreeSPath path = treeSPathDao.getOrCreate(partStruct.path);\r
+\r
+                       TreeSRegistry registry = getOrCreateTreeSRegistry(path);\r
+                       if (registry.getElement(path) == null) {\r
+                               StructureRegistry localRegistry = partStruct.result\r
+                                               .getRegistry();\r
+                               if (localRegistry != null) {\r
+                                       registry.register(path, localRegistry.getElement(path));\r
+                               } else {\r
+                                       registry.register(path, new SimpleSElement(path.getName()));\r
+                               }\r
+                       }\r
+\r
                        if (persistedResult == null) {\r
                                persistedResult = new TreeTestResult();\r
                                persistedResult.setNumericResultId(partStruct.resultId);\r
                                PartSubList subList = new PartSubList();\r
                                subList.getParts().add(partStruct.part);\r
-                               persistedResult.getResultParts().put(partStruct.path, subList);\r
+                               persistedResult.getResultParts().put(path, subList);\r
 \r
                                testResultDao.create(persistedResult);\r
                        } else {\r
-                               PartSubList subList = persistedResult.getResultParts().get(\r
-                                               partStruct.path);\r
+                               PartSubList subList = persistedResult.getResultParts()\r
+                                               .get(path);\r
                                if (subList == null) {\r
                                        subList = new PartSubList();\r
-                                       persistedResult.getResultParts().put(partStruct.path,\r
-                                                       subList);\r
+                                       persistedResult.getResultParts().put(path, subList);\r
                                }\r
-                               persistedResult.getResultParts().get(partStruct.path)\r
-                                               .getParts().add(partStruct.part);\r
+                               persistedResult.getResultParts().get(path).getParts().add(\r
+                                               partStruct.part);\r
 \r
                                if (log.isTraceEnabled()) {\r
                                        log.trace("ResultId:" + persistedResult.getTestResultId());\r
@@ -54,9 +76,30 @@ public class TreeTestResultPersister extends AsynchronousTreeTestResultListener
                }\r
        }\r
 \r
+       private TreeSRegistry getOrCreateTreeSRegistry(TreeSPath path) {\r
+               TreeSRegistry registry = treeSRegistryDao.getTreeSRegistry(path);\r
+               if (registry == null) {\r
+                       registry = new TreeSRegistry();\r
+                       TreeSPath root = treeSPathDao.getOrCreate(path.getRoot());\r
+                       registry.setRoot(root);\r
+                       treeSRegistryDao.create(registry);\r
+                       return treeSRegistryDao.getTreeSRegistry(path);\r
+               } else {\r
+                       return registry;\r
+               }\r
+       }\r
+\r
        /** Sets the dao to use in order to persist the results. */\r
        public void setTestResultDao(TestResultDao testResultDao) {\r
                this.testResultDao = testResultDao;\r
        }\r
 \r
+       public void setTreeSPathDao(TreeSPathDao treeSPathDao) {\r
+               this.treeSPathDao = treeSPathDao;\r
+       }\r
+\r
+       public void setTreeSRegistryDao(TreeSRegistryDao treeSRegistryDao) {\r
+               this.treeSRegistryDao = treeSRegistryDao;\r
+       }\r
+\r
 }\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/SimpleSElementDao.java b/org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/SimpleSElementDao.java
new file mode 100644 (file)
index 0000000..bed950f
--- /dev/null
@@ -0,0 +1,5 @@
+package org.argeo.slc.dao.structure;\r
+\r
+public interface SimpleSElementDao {\r
+\r
+}\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/tree/TreeSPathDao.java b/org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/tree/TreeSPathDao.java
new file mode 100644 (file)
index 0000000..379f826
--- /dev/null
@@ -0,0 +1,9 @@
+package org.argeo.slc.dao.structure.tree;\r
+\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+\r
+public interface TreeSPathDao {\r
+       public void create(TreeSPath path);\r
+       public TreeSPath getTreeSPath(String pathString);\r
+       public TreeSPath getOrCreate(TreeSPath pathTransient);\r
+}\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/tree/TreeSRegistryDao.java b/org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/tree/TreeSRegistryDao.java
new file mode 100644 (file)
index 0000000..dc852de
--- /dev/null
@@ -0,0 +1,9 @@
+package org.argeo.slc.dao.structure.tree;\r
+\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.structure.tree.TreeSRegistry;\r
+\r
+public interface TreeSRegistryDao {\r
+       public TreeSRegistry getTreeSRegistry(TreeSPath treeSPath);\r
+       public void create(TreeSRegistry registry);\r
+}\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml b/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml
new file mode 100644 (file)
index 0000000..ed1d80c
--- /dev/null
@@ -0,0 +1,13 @@
+<?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.structure">\r
+       <class name="SimpleSElement" table="SIMPLE_SELEMENT">\r
+               <id name="tid" column="T_ID">\r
+                       <generator class="native" />\r
+               </id>\r
+               <property name="description" column="DESCRIPTION"\r
+                       not-null="true" />\r
+       </class>\r
+</hibernate-mapping>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml b/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml
new file mode 100644 (file)
index 0000000..d9934ee
--- /dev/null
@@ -0,0 +1,14 @@
+<?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.structure.tree">\r
+       <class name="TreeSPath" table="TREE_SPATH">\r
+               <id name="tid" column="T_ID">\r
+                       <generator class="native" />\r
+               </id>\r
+               <property name="asUniqueString" column="PATH" not-null="true"\r
+                       unique="true" />\r
+               <property name="separator" column="SEPARATOR" not-null="true" />\r
+       </class>\r
+</hibernate-mapping>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernate.java b/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernate.java
new file mode 100644 (file)
index 0000000..7eb2358
--- /dev/null
@@ -0,0 +1,67 @@
+package org.argeo.slc.hibernate.structure.tree;\r
+\r
+import java.util.List;\r
+\r
+import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
+\r
+/**\r
+ * The Hibernate implementation for tree-based result of the test result dao.\r
+ * \r
+ * @see TreeTestResult\r
+ */\r
+public class TreeSPathDaoHibernate extends HibernateDaoSupport implements\r
+               TreeSPathDao {\r
+\r
+       private static Log log = LogFactory.getLog(TreeSPathDaoHibernate.class);\r
+\r
+       public void create(TreeSPath path) {\r
+               createImpl(path);\r
+       }\r
+\r
+       \r
+       protected void createImpl(TreeSPath path) {\r
+               if (path.getParent() != null) {\r
+                       TreeSPath parent = getTreeSPath(path.getParent()\r
+                                       .getAsUniqueString());\r
+                       if (parent == null) {\r
+                               createImpl(path.getParent());\r
+                       }\r
+               }\r
+               getHibernateTemplate().save(path);\r
+               if (log.isTraceEnabled())\r
+                       log.trace("Saved TreeSPath " + path.getAsUniqueString());\r
+       }\r
+\r
+       public TreeSPath getTreeSPath(String pathString) {\r
+               if (log.isTraceEnabled())\r
+                       log.trace("Query path: " + pathString);\r
+               List<?> list = getHibernateTemplate().find(\r
+                               "from TreeSPath where asUniqueString=?", pathString);\r
+               if (list.size() == 0) {\r
+                       return null;\r
+               } else {\r
+                       return (TreeSPath) list.get(0);\r
+               }\r
+       }\r
+\r
+       public TreeSPath getOrCreate(TreeSPath pathTransient) {\r
+               TreeSPath path = getTreeSPath(pathTransient\r
+                               .getAsUniqueString());\r
+               if (path != null) {\r
+                       return path;\r
+               } else {\r
+                       create(pathTransient);\r
+                       // TODO: optimize\r
+                       return getTreeSPath(pathTransient.getAsUniqueString());\r
+               }\r
+\r
+       }\r
+\r
+}\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml b/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml
new file mode 100644 (file)
index 0000000..9ae3d76
--- /dev/null
@@ -0,0 +1,25 @@
+<?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.structure.tree">\r
+       <class name="TreeSRegistry" table="TREE_SREGISTRY">\r
+               <id name="tid" column="T_ID">\r
+                       <generator class="native" />\r
+               </id>\r
+\r
+               <many-to-one name="root" column="ROOT_PATH_ID" unique="true"\r
+                       not-null="true" />\r
+                       \r
+               <map name="elements" table="REGISTRY_ELEMENTS" cascade="all"\r
+                       lazy="false" sort="natural">\r
+                       <key column="PARENT_ID" />\r
+                       <map-key-many-to-many class="TreeSPath" column="PATH" />\r
+\r
+                       <many-to-many\r
+                               class="org.argeo.slc.core.structure.SimpleSElement"\r
+                               column="ELEMENT_ID" unique="true" lazy="false" />\r
+               </map>\r
+\r
+       </class>\r
+</hibernate-mapping>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernate.java b/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernate.java
new file mode 100644 (file)
index 0000000..f202c5e
--- /dev/null
@@ -0,0 +1,41 @@
+package org.argeo.slc.hibernate.structure.tree;\r
+\r
+import java.util.List;\r
+\r
+import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.structure.tree.TreeSRegistry;\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
+import org.argeo.slc.dao.structure.tree.TreeSRegistryDao;\r
+\r
+/**\r
+ * The Hibernate implementation for tree-based result of the test result dao.\r
+ * \r
+ * @see TreeTestResult\r
+ */\r
+public class TreeSRegistryDaoHibernate extends HibernateDaoSupport implements\r
+               TreeSRegistryDao {\r
+\r
+       //private static Log log = LogFactory.getLog(TreeSRegistryDaoHibernate.class);\r
+\r
+       public void create(TreeSRegistry registry) {\r
+               getHibernateTemplate().save(registry);\r
+       }\r
+\r
+       public TreeSRegistry getTreeSRegistry(TreeSPath treeSPath) {\r
+               List<?> list = getHibernateTemplate().find(\r
+                               "from TreeSRegistry where root.asUniqueString=?",\r
+                               treeSPath.getRoot().getAsUniqueString());\r
+               if (list.size() == 0) {\r
+                       return null;\r
+               } else {\r
+                       return (TreeSRegistry) list.get(0);\r
+               }\r
+       }\r
+\r
+}\r
index 4060e0090c7dbfe9ad7c96869824cfa800d6894c..f01505bfa39b3e5ed15317a8b31f0bd2f32dd251 100644 (file)
@@ -9,17 +9,15 @@
                </id>\r
 \r
                <many-to-one name="numericResultId" unique="true"\r
-                       not-null="true" column="TEST_RESULT_ID" cascade="all" lazy="false"/>\r
+                       not-null="true" column="TEST_RESULT_ID" cascade="all" lazy="false" />\r
 \r
-               <map name="resultParts" table="RESULT_PARTS_MAP"\r
-                       cascade="all" lazy="false" sort="natural">\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
+                       <map-key-many-to-many\r
+                               class="org.argeo.slc.core.structure.tree.TreeSPath" column="PATH" />\r
                        <many-to-many class="PartSubList" column="PART_SUB_LIST_ID"\r
-                               unique="true" lazy="false"/>\r
+                               unique="true" lazy="false" />\r
                </map>\r
        </class>\r
 </hibernate-mapping>
\ No newline at end of file
index baf611ef6c69399df4d39af730f2a3cd5d8ece03..8a0b07e90cf607e012daa938890d73801a975e17 100644 (file)
@@ -23,7 +23,7 @@ import org.argeo.slc.core.SlcException;
  * Helper to make db vendor independent tests using DbUnit data sets. Based on\r
  * {@link DbModel}.\r
  */\r
-public class IndependentDbTestCase extends SpringBasedTestCase {\r
+public abstract class IndependentDbTestCase extends SpringBasedTestCase {\r
        private IDatabaseTester databaseTester;\r
 \r
        /** Creates the DDL of the data model and loads the data. */\r
index b607825f0d1da23e9fa34d74b7cb1422b8327524..589edfd02598d0eaece14fcdecc31c8edbb3eb6b 100644 (file)
@@ -6,7 +6,7 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 import junit.framework.TestCase;\r
 \r
 /** Helper for tests using a Spring application co,text. */\r
-public class SpringBasedTestCase extends TestCase {\r
+public abstract class SpringBasedTestCase extends TestCase {\r
        private ApplicationContext context;\r
 \r
        /**\r
diff --git a/org.argeo.slc/src/test/java/log4j.properties b/org.argeo.slc/src/test/java/log4j.properties
new file mode 100644 (file)
index 0000000..551c14c
--- /dev/null
@@ -0,0 +1,23 @@
+# Set root logger level to DEBUG and its only appender to A1.\r
+log4j.rootLogger=INFO, console\r
+\r
+## Levels\r
+# Slc\r
+log4j.logger.org.argeo.slc=DEBUG\r
+# Spring\r
+log4j.logger.org.springframework=INFO\r
+# Hibernate\r
+log4j.logger.org.hibernate=WARN\r
+#log4j.logger.org.hibernate.SQL=TRACE\r
+#log4j.logger.org.hibernate.tool.hbm2ddl=TRACE\r
+#log4j.logger.org.hibernate.type=TRACE\r
+\r
+\r
+## Appenders\r
+# A1 is set to be a ConsoleAppender.\r
+log4j.appender.console=org.apache.log4j.ConsoleAppender\r
+\r
+# A1 uses PatternLayout.\r
+log4j.appender.console.layout=org.apache.log4j.PatternLayout\r
+log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c %n\r
+\r
diff --git a/org.argeo.slc/src/test/java/org/argeo/slc/hibernate/applicationContext.xml b/org.argeo.slc/src/test/java/org/argeo/slc/hibernate/applicationContext.xml
new file mode 100644 (file)
index 0000000..cf320fd
--- /dev/null
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">\r
+\r
+       <!-- Results -->\r
+       <bean id="dataSource"\r
+               class="org.springframework.jdbc.datasource.SingleConnectionDataSource"\r
+               destroy-method="destroy">\r
+               <property name="driverClassName" value="org.hsqldb.jdbcDriver" />\r
+               <property name="url" value="jdbc:hsqldb:mem:test" />\r
+               <property name="username" value="sa" />\r
+               <property name="password" value="" />\r
+               <property name="suppressClose" value="true" />\r
+       </bean>\r
+\r
+       <bean id="sessionFactory"\r
+               class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">\r
+               <property name="dataSource" ref="dataSource" />\r
+               <property name="mappingResources">\r
+                       <list>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/test/NumericTRId.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml\r
+                               </value>\r
+                       </list>\r
+               </property>\r
+               <property name="hibernateProperties">\r
+                       <value>\r
+                               hibernate.dialect=org.hibernate.dialect.HSQLDialect\r
+                               hibernate.hbm2ddl.auto=create\r
+                       </value>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean id="treeSPathDao"\r
+               class="org.argeo.slc.hibernate.structure.tree.TreeSPathDaoHibernate">\r
+               <property name="sessionFactory" ref="sessionFactory" />\r
+       </bean>\r
+       \r
+       <bean id="treeSRegistryDao"\r
+               class="org.argeo.slc.hibernate.structure.tree.TreeSRegistryDaoHibernate">\r
+               <property name="sessionFactory" ref="sessionFactory" />\r
+       </bean>\r
+       \r
+       <bean id="testResultDao"\r
+               class="org.argeo.slc.hibernate.test.tree.TestResultDaoHibernate">\r
+               <property name="sessionFactory" ref="sessionFactory" />\r
+       </bean>\r
+</beans>
\ No newline at end of file
diff --git a/org.argeo.slc/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernateTest.java b/org.argeo.slc/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernateTest.java
new file mode 100644 (file)
index 0000000..6644703
--- /dev/null
@@ -0,0 +1,31 @@
+package org.argeo.slc.hibernate.structure.tree;\r
+\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
+import org.argeo.slc.unit.SpringBasedTestCase;\r
+\r
+public class TreeSPathDaoHibernateTest extends SpringBasedTestCase {\r
+\r
+       public void testCreate() {\r
+               TreeSPathDao treeSPathDao = (TreeSPathDao) getContext().getBean(\r
+                               "treeSPathDao");\r
+               \r
+               String pathParentStr = "#root#testParent";\r
+               String pathStr = pathParentStr+"#test";\r
+               TreeSPath path = TreeSPath.parseToCreatePath(pathStr, '#');\r
+               treeSPathDao.create(path);\r
+               \r
+               TreeSPath pathChild = treeSPathDao.getTreeSPath(pathStr);\r
+               assertEquals(path, pathChild);\r
+               \r
+               TreeSPath pathParent = treeSPathDao.getTreeSPath(pathParentStr);\r
+               assertEquals(path.getParent(), pathParent);\r
+       }\r
+\r
+       @Override\r
+       protected String getApplicationContextLocation() {\r
+               return "org/argeo/slc/hibernate/applicationContext.xml";\r
+       }\r
+       \r
+       \r
+}\r
diff --git a/org.argeo.slc/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernateTest.java b/org.argeo.slc/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernateTest.java
new file mode 100644 (file)
index 0000000..7ed2684
--- /dev/null
@@ -0,0 +1,42 @@
+package org.argeo.slc.hibernate.structure.tree;\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.dao.structure.tree.TreeSPathDao;\r
+import org.argeo.slc.dao.structure.tree.TreeSRegistryDao;\r
+import org.argeo.slc.unit.SpringBasedTestCase;\r
+\r
+public class TreeSRegistryDaoHibernateTest extends SpringBasedTestCase {\r
+\r
+       public void testCreate() {\r
+               TreeSRegistryDao treeSRegistryDao = (TreeSRegistryDao) getContext()\r
+               .getBean("treeSRegistryDao");\r
+               \r
+               TreeSPathDao treeSPathDao = (TreeSPathDao) getContext().getBean(\r
+               "treeSPathDao");\r
+\r
+               TreeSPath root = TreeSPath.parseToCreatePath("#root", '#');\r
+               TreeSPath path = root.createChild("test");\r
+               \r
+               treeSPathDao.create(root);\r
+               treeSPathDao.create(path);\r
+               \r
+               TreeSRegistry registry = new TreeSRegistry();\r
+               registry.setRoot(root);\r
+               String desc= "desc";\r
+               registry.register(path, new SimpleSElement(desc));\r
+               \r
+               treeSRegistryDao.create(registry);\r
+               \r
+               TreeSRegistry registry2 = treeSRegistryDao.getTreeSRegistry(path);\r
+               SimpleSElement element = registry2.getElements().get(path);\r
+               assertEquals(desc, element.getDescription());\r
+       }\r
+\r
+       @Override\r
+       protected String getApplicationContextLocation() {\r
+               return "org/argeo/slc/hibernate/applicationContext.xml";\r
+       }\r
+\r
+}\r
diff --git a/org.argeo.slc/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java b/org.argeo.slc/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java
new file mode 100644 (file)
index 0000000..f983a89
--- /dev/null
@@ -0,0 +1,68 @@
+package org.argeo.slc.hibernate.test.tree;\r
+\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.test.NumericTRId;\r
+import org.argeo.slc.core.test.SimpleResultPart;\r
+import org.argeo.slc.core.test.TestStatus;\r
+import org.argeo.slc.core.test.tree.PartSubList;\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
+import org.argeo.slc.dao.test.TestResultDao;\r
+import org.argeo.slc.unit.SpringBasedTestCase;\r
+\r
+public class TreeTestResultDaoHibernateTest extends SpringBasedTestCase {\r
+\r
+       public void testCreate() {\r
+               TreeSPathDao treeSPathDao = (TreeSPathDao) getContext().getBean(\r
+                               "treeSPathDao");\r
+\r
+               TestResultDao testResultDao = (TestResultDao) getContext().getBean(\r
+                               "testResultDao");\r
+\r
+               String pathParentStr = "#root#testParent";\r
+               String pathStr = pathParentStr + "#test";\r
+               TreeSPath path = TreeSPath.parseToCreatePath(pathStr, '#');\r
+               treeSPathDao.create(path);\r
+\r
+               TreeTestResult treeTestResult = new TreeTestResult();\r
+               SimpleResultPart partPassed = new SimpleResultPart();\r
+               String msgPassed = "message";\r
+               partPassed.setStatus(TestStatus.PASSED);\r
+               partPassed.setMessage(msgPassed);\r
+\r
+               SimpleResultPart partFailed = new SimpleResultPart();\r
+               String msgFailed = "too bad";\r
+               partFailed.setStatus(TestStatus.FAILED);\r
+               partFailed.setMessage(msgFailed);\r
+\r
+               NumericTRId trId = new NumericTRId();\r
+               trId.setValue(1l);\r
+               treeTestResult.setNumericResultId(trId);\r
+               treeTestResult.notifyCurrentPath(null, path);\r
+               treeTestResult.addResultPart(partPassed);\r
+               treeTestResult.addResultPart(partFailed);\r
+\r
+               testResultDao.create(treeTestResult);\r
+\r
+               TreeTestResult treeTestResult2 = (TreeTestResult) testResultDao\r
+                               .getTestResult(trId);\r
+               PartSubList list = treeTestResult2.getResultParts().get(path);\r
+               \r
+               assertEquals(2,list.getParts().size());\r
+               SimpleResultPart part0 = (SimpleResultPart)list.getParts().get(0);\r
+               assertEquals(TestStatus.PASSED, (int)part0.getStatus());\r
+               assertEquals(msgPassed,part0.getMessage());\r
+               \r
+               SimpleResultPart part1 = (SimpleResultPart)list.getParts().get(1);\r
+               assertEquals(TestStatus.FAILED, (int)part1.getStatus());\r
+               assertEquals(msgFailed,part1.getMessage());\r
+               \r
+               \r
+       }\r
+\r
+       @Override\r
+       protected String getApplicationContextLocation() {\r
+               return "org/argeo/slc/hibernate/applicationContext.xml";\r
+       }\r
+\r
+}\r
index 6688a83c6971b85e65773056ffed95db603547c5..6e4ce5cde7df718576d3c500d6a320cadcbd8dc5 100644 (file)
                <property name="dataSource" ref="dataSourceResults" />\r
                <property name="mappingResources">\r
                        <list>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml\r
+                               </value>\r
                                <value>\r
                                        org/argeo/slc/hibernate/test/NumericTRId.hbm.xml\r
                                </value>\r
                                        org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml\r
                                </value>\r
                                <value>\r
-                                       org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml\r
+                                       org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml\r
                                </value>\r
                                <value>\r
-                                       org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml\r
+                                       org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml\r
                                </value>\r
                        </list>\r
                </property>\r
                        <value>\r
                                hibernate.dialect=org.hibernate.dialect.HSQLDialect\r
                                cache.provider_class=org.hibernate.cache.NoCacheProvider\r
-                               cache.use_query_cache=false cache.use_minimal_puts=false\r
-                               max_fetch_depth=3 current_session_context_class=thread\r
+                               cache.use_query_cache=false\r
+                               cache.use_minimal_puts=false\r
+                               max_fetch_depth=3\r
+                               current_session_context_class=thread\r
                                hibernate.hbm2ddl.auto=update\r
                        </value>\r
                </property>\r
                class="org.argeo.slc.hibernate.test.tree.TestResultDaoHibernate">\r
                <property name="sessionFactory" ref="sessionFactoryResults" />\r
        </bean>\r
+\r
+       <bean id="treeSPathDao"\r
+               class="org.argeo.slc.hibernate.structure.tree.TreeSPathDaoHibernate">\r
+               <property name="sessionFactory" ref="sessionFactoryResults" />\r
+       </bean>\r
+\r
+       <bean id="treeSRegistryDao"\r
+               class="org.argeo.slc.hibernate.structure.tree.TreeSRegistryDaoHibernate">\r
+               <property name="sessionFactory" ref="sessionFactoryResults" />\r
+       </bean>\r
+\r
+\r
 </beans>
\ No newline at end of file
index c520dc650de7ca5156b3838949c84134a1e9d994..9ec452b68f69905347a6916a22ff8b2fd92e5d8e 100644 (file)
                class="org.argeo.slc.core.test.tree.TreeTestResultPersister"\r
                init-method="init">\r
                <property name="testResultDao" ref="testResultDao" />\r
+               <property name="treeSPathDao" ref="treeSPathDao" />\r
+               <property name="treeSRegistryDao" ref="treeSRegistryDao" />\r
        </bean>\r
 \r
        <bean id="report"\r
                class="org.argeo.slc.core.test.tree.FullHtmlTreeReport">\r
                <property name="testResultDao" ref="testResultDao" />\r
+               <property name="treeSRegistryDao" ref="treeSRegistryDao" />\r
                <property name="reportDir"\r
                        value="${slc.workDir}/results/report" />\r
        </bean>\r