Introduce results persistence
authorMathieu Baudier <mbaudier@argeo.org>
Sun, 28 Oct 2007 16:28:52 +0000 (16:28 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sun, 28 Oct 2007 16:28:52 +0000 (16:28 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@668 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

35 files changed:
org.argeo.slc/.classpath
org.argeo.slc/lib/antlr-2.7.6.jar [new file with mode: 0644]
org.argeo.slc/lib/asm-attrs.jar [new file with mode: 0644]
org.argeo.slc/lib/asm.jar [new file with mode: 0644]
org.argeo.slc/lib/cglib-2.1.3.jar [new file with mode: 0644]
org.argeo.slc/lib/commons-collections-2.1.1.jar [new file with mode: 0644]
org.argeo.slc/lib/commons-dbcp.jar [new file with mode: 0644]
org.argeo.slc/lib/commons-lang.jar [new file with mode: 0644]
org.argeo.slc/lib/commons-pool.jar [new file with mode: 0644]
org.argeo.slc/lib/dom4j-1.6.1.jar [new file with mode: 0644]
org.argeo.slc/lib/hibernate3.jar [new file with mode: 0644]
org.argeo.slc/lib/hsqldb.jar [new file with mode: 0644]
org.argeo.slc/lib/jta.jar [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSPath.java
org.argeo.slc/src/main/java/org/argeo/slc/core/test/NumericTRId.java [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java
org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestResult.java
org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestResultId.java
org.argeo.slc/src/main/java/org/argeo/slc/core/test/TimeTestResultId.java
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/AsynchronousTreeTestResultListener.java
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/PartSubList.java [new file with mode: 0644]
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 [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/dao/test/TestResultDao.java [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/NumericTRId.hbm.xml [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/TestResultId.hbm.xml [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/tree/TestResultDaoHibernate.java [new file with mode: 0644]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml [new file with mode: 0644]
org.argeo.slc/src/test/java/org/argeo/slc/example/junit/TestAntBuild.java
org.argeo.slc/src/test/slc/conf/applicationContext.xml
org.argeo.slc/src/test/slc/conf/data.xml [new file with mode: 0644]
org.argeo.slc/src/test/slc/conf/log4j.properties
org.argeo.slc/src/test/slc/conf/slc.xml

index 6e1743509d5696cebf296fc37a4c6ba88c2b903b..fc54474e72ad673d1b7cc20ec2af9f7a5b49e424 100644 (file)
@@ -8,6 +8,18 @@
        <classpathentry kind="lib" path="lib/spring-2.0.6.jar" sourcepath="lib-src/spring-2.0.6-src.zip"/>\r
        <classpathentry kind="lib" path="lib/commons-logging.jar"/>\r
        <classpathentry kind="lib" path="lib/log4j-1.2.14.jar"/>\r
+       <classpathentry kind="lib" path="lib/antlr-2.7.6.jar"/>\r
+       <classpathentry kind="lib" path="lib/asm.jar"/>\r
+       <classpathentry kind="lib" path="lib/asm-attrs.jar"/>\r
+       <classpathentry kind="lib" path="lib/cglib-2.1.3.jar"/>\r
+       <classpathentry kind="lib" path="lib/commons-collections-2.1.1.jar"/>\r
+       <classpathentry kind="lib" path="lib/commons-dbcp.jar"/>\r
+       <classpathentry kind="lib" path="lib/commons-lang.jar"/>\r
+       <classpathentry kind="lib" path="lib/commons-pool.jar"/>\r
+       <classpathentry kind="lib" path="lib/dom4j-1.6.1.jar"/>\r
+       <classpathentry kind="lib" path="lib/hibernate3.jar"/>\r
+       <classpathentry kind="lib" path="lib/hsqldb.jar"/>\r
+       <classpathentry kind="lib" path="lib/jta.jar"/>\r
        <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>\r
        <classpathentry kind="output" path="target/classes"/>\r
 </classpath>\r
diff --git a/org.argeo.slc/lib/antlr-2.7.6.jar b/org.argeo.slc/lib/antlr-2.7.6.jar
new file mode 100644 (file)
index 0000000..3702b64
Binary files /dev/null and b/org.argeo.slc/lib/antlr-2.7.6.jar differ
diff --git a/org.argeo.slc/lib/asm-attrs.jar b/org.argeo.slc/lib/asm-attrs.jar
new file mode 100644 (file)
index 0000000..f07bcb2
Binary files /dev/null and b/org.argeo.slc/lib/asm-attrs.jar differ
diff --git a/org.argeo.slc/lib/asm.jar b/org.argeo.slc/lib/asm.jar
new file mode 100644 (file)
index 0000000..ee0c7cc
Binary files /dev/null and b/org.argeo.slc/lib/asm.jar differ
diff --git a/org.argeo.slc/lib/cglib-2.1.3.jar b/org.argeo.slc/lib/cglib-2.1.3.jar
new file mode 100644 (file)
index 0000000..ddfbdb0
Binary files /dev/null and b/org.argeo.slc/lib/cglib-2.1.3.jar differ
diff --git a/org.argeo.slc/lib/commons-collections-2.1.1.jar b/org.argeo.slc/lib/commons-collections-2.1.1.jar
new file mode 100644 (file)
index 0000000..3272f2b
Binary files /dev/null and b/org.argeo.slc/lib/commons-collections-2.1.1.jar differ
diff --git a/org.argeo.slc/lib/commons-dbcp.jar b/org.argeo.slc/lib/commons-dbcp.jar
new file mode 100644 (file)
index 0000000..faea056
Binary files /dev/null and b/org.argeo.slc/lib/commons-dbcp.jar differ
diff --git a/org.argeo.slc/lib/commons-lang.jar b/org.argeo.slc/lib/commons-lang.jar
new file mode 100644 (file)
index 0000000..87b80ab
Binary files /dev/null and b/org.argeo.slc/lib/commons-lang.jar differ
diff --git a/org.argeo.slc/lib/commons-pool.jar b/org.argeo.slc/lib/commons-pool.jar
new file mode 100644 (file)
index 0000000..e8de327
Binary files /dev/null and b/org.argeo.slc/lib/commons-pool.jar differ
diff --git a/org.argeo.slc/lib/dom4j-1.6.1.jar b/org.argeo.slc/lib/dom4j-1.6.1.jar
new file mode 100644 (file)
index 0000000..c8c4dbb
Binary files /dev/null and b/org.argeo.slc/lib/dom4j-1.6.1.jar differ
diff --git a/org.argeo.slc/lib/hibernate3.jar b/org.argeo.slc/lib/hibernate3.jar
new file mode 100644 (file)
index 0000000..b600972
Binary files /dev/null and b/org.argeo.slc/lib/hibernate3.jar differ
diff --git a/org.argeo.slc/lib/hsqldb.jar b/org.argeo.slc/lib/hsqldb.jar
new file mode 100644 (file)
index 0000000..dc3055e
Binary files /dev/null and b/org.argeo.slc/lib/hsqldb.jar differ
diff --git a/org.argeo.slc/lib/jta.jar b/org.argeo.slc/lib/jta.jar
new file mode 100644 (file)
index 0000000..ffa3c5b
Binary files /dev/null and b/org.argeo.slc/lib/jta.jar differ
index 5d54f9ac6eabb4eae0224076c10df63bdaacf618..daa160626c5ad73336429da3abe5ce5a35bf195f 100644 (file)
@@ -24,6 +24,12 @@ public class TreeSPath implements StructurePath, Comparable<StructurePath> {
                String parentStr = parent != null ? parent.getAsUniqueString() : "";\r
                return parentStr + separator + name;\r
        }\r
+       \r
+       public void setAsUniqueString(String str){\r
+               TreeSPath twin = parseToCreatePath(str, getSeparator());\r
+               name = twin.name;\r
+               parent = twin.parent;\r
+       }\r
 \r
        /** The separator actually used by this path. */\r
        public Character getSeparator() {\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/NumericTRId.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/NumericTRId.java
new file mode 100644 (file)
index 0000000..b3654dc
--- /dev/null
@@ -0,0 +1,55 @@
+package org.argeo.slc.core.test;\r
+\r
+import org.argeo.slc.core.deploy.DeployedSystemId;\r
+\r
+public class NumericTRId implements TestResultId {\r
+       /** For ORM */\r
+       private Long tid;\r
+\r
+       private Long value;\r
+       private DeployedSystemId deployedSystemId;\r
+       \r
+       public void init() {\r
+               if (getValue() == null) {\r
+                       setValue(System.currentTimeMillis());\r
+               }\r
+       }\r
+\r
+\r
+       public Long getValue() {\r
+               return value;\r
+       }\r
+\r
+       public void setValue(Long value) {\r
+               this.value = value;\r
+       }\r
+\r
+       public DeployedSystemId getDeployedSystemId() {\r
+               return deployedSystemId;\r
+       }\r
+\r
+       public void setDeployedSystemId(DeployedSystemId deployedSystemId) {\r
+               this.deployedSystemId = deployedSystemId;\r
+       }\r
+\r
+       @Override\r
+       public boolean equals(Object obj) {\r
+               return value.toString().equals(obj.toString());\r
+       }\r
+\r
+       @Override\r
+       public String toString() {\r
+               return value.toString();\r
+       }\r
+\r
+       Long getTid() {\r
+               return tid;\r
+       }\r
+\r
+       void setTid(Long tid) {\r
+               this.tid = tid;\r
+       }\r
+       \r
+       \r
+\r
+}\r
index 2eaa9e59e4de133103f3c3b06a14756f628a3390..1c7c7e267f6ca51b08d873018f552137a7b880bb 100644 (file)
@@ -6,6 +6,9 @@ public class SimpleResultPart implements TestResultPart {
        public final static Integer FAILED = 2;\r
        public final static Integer ERROR = 3;\r
 \r
+       /** For ORM */\r
+       private Long tid;\r
+       \r
        private Integer status;\r
        private String message;\r
        private Throwable exception;\r
@@ -51,4 +54,12 @@ public class SimpleResultPart implements TestResultPart {
                return buf.toString();\r
        }\r
 \r
+       Long getTid() {\r
+               return tid;\r
+       }\r
+\r
+       void setTid(Long tid) {\r
+               this.tid = tid;\r
+       }\r
+\r
 }\r
index 72ba643c6a0ca90b7444fb02291fda81bb8e7f8c..f01c8fb42c4c430e4e319cb97d1fe34fc663e5b2 100644 (file)
@@ -1,10 +1,7 @@
 package org.argeo.slc.core.test;\r
 \r
-import java.util.List;\r
-\r
 /** The result of a test */\r
 public interface TestResult {\r
        public TestResultId getTestResultId();\r
-       public List<TestResultPart> listResultParts();\r
        public void addResultPart(TestResultPart part);\r
 }\r
index 5dfa0730d255db534b10be81b490a21f8f9cb96a..8c9425399361a30b652e31d94fbd60b6e1e9a7e2 100644 (file)
@@ -5,4 +5,5 @@ import org.argeo.slc.core.deploy.DeployedSystemId;
 /** The unique id referencing a test result.*/\r
 public interface TestResultId {\r
        public DeployedSystemId getDeployedSystemId();\r
+       \r
 }\r
index 017f364788b693d34296abc2d08a37b5a856dd20..0dffd4712e4c2ab10fe084a58699692d83ef1c39 100644 (file)
@@ -2,12 +2,13 @@ package org.argeo.slc.core.test;
 \r
 import org.argeo.slc.core.deploy.DeployedSystemId;\r
 \r
-public class TimeTestResultId implements TestResultId{\r
+public class TimeTestResultId extends NumericTRId {\r
        private DeployedSystemId deployedSystemId;\r
-       private Long time;\r
 \r
        public void init() {\r
-               time = System.currentTimeMillis();\r
+               if (getValue() == null) {\r
+                       setValue(System.currentTimeMillis());\r
+               }\r
        }\r
 \r
        public void setDeployedSystemId(DeployedSystemId deployedSystemId) {\r
@@ -17,17 +18,4 @@ public class TimeTestResultId implements TestResultId{
        public DeployedSystemId getDeployedSystemId() {\r
                return deployedSystemId;\r
        }\r
-\r
-       @Override\r
-       public boolean equals(Object obj) {\r
-               return obj.toString().equals(toString());\r
-       }\r
-\r
-       @Override\r
-       public String toString() {\r
-               return time.toString();\r
-       }\r
-\r
-       \r
-\r
 }\r
index d6f0c935d2aa2d03657f23e3ade019617119f042..13b3b25dfabe9d0fcab365df83ddbf7f9ed0b099 100644 (file)
@@ -3,8 +3,8 @@ package org.argeo.slc.core.test.tree;
 import java.util.Vector;\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.TestResult;\r
-import org.argeo.slc.core.test.TestResultId;\r
 import org.argeo.slc.core.test.TestResultListener;\r
 import org.argeo.slc.core.test.TestResultPart;\r
 \r
@@ -29,19 +29,20 @@ public abstract class AsynchronousTreeTestResultListener implements
                        TestResultPart testResultPart) {\r
                TreeTestResult result = (TreeTestResult) testResult;\r
                synchronized (partStructs) {\r
-                       partStructs.add(new PartStruct(result.getCurrentPath(), result\r
-                                       .getTestResultId(), testResultPart, result));\r
+                       partStructs.add(new PartStruct(result.getCurrentPath(),\r
+                                       (NumericTRId) result.getTestResultId(), testResultPart,\r
+                                       result));\r
                        partStructs.notifyAll();\r
                }\r
        }\r
 \r
        public void run() {\r
                while (thread != null) {\r
-                       for (PartStruct partStruct : partStructs) {\r
-                               resultPartAdded(partStruct);\r
-                       }\r
-                       \r
                        synchronized (partStructs) {\r
+                               for (PartStruct partStruct : partStructs) {\r
+                                       resultPartAdded(partStruct);\r
+                               }\r
+\r
                                partStructs.clear();\r
                                while (partStructs.size() == 0) {\r
                                        try {\r
@@ -58,11 +59,11 @@ public abstract class AsynchronousTreeTestResultListener implements
 \r
        protected static class PartStruct {\r
                public final TreeSPath path;\r
-               public final TestResultId resultId;\r
+               public final NumericTRId resultId;\r
                public final TestResultPart part;\r
                public final TreeTestResult result;\r
 \r
-               public PartStruct(TreeSPath path, TestResultId resultId,\r
+               public PartStruct(TreeSPath path, NumericTRId resultId,\r
                                TestResultPart part, TreeTestResult result) {\r
                        super();\r
                        this.path = path;\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/PartSubList.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/PartSubList.java
new file mode 100644 (file)
index 0000000..34ef96a
--- /dev/null
@@ -0,0 +1,32 @@
+package org.argeo.slc.core.test.tree;\r
+\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.argeo.slc.core.test.TestResultPart;\r
+\r
+public class PartSubList {\r
+       \r
+       /** For ORM */\r
+       private Long tid;\r
+\r
+       private List<TestResultPart> parts = new Vector<TestResultPart>();\r
+\r
+       public List<TestResultPart> getParts() {\r
+               return parts;\r
+       }\r
+\r
+       public void setParts(List<TestResultPart> parts) {\r
+               this.parts = parts;\r
+       }\r
+\r
+       Long getTid() {\r
+               return tid;\r
+       }\r
+\r
+       void setTid(Long tid) {\r
+               this.tid = tid;\r
+       }\r
+\r
+       \r
+}\r
index 3134e1aaad2cec82cd7a21587edd694a1d479ef1..c333bf79f691baebd486faabcbd48d2a4a1b8b05 100644 (file)
@@ -3,63 +3,64 @@ 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.argeo.slc.core.SlcException;\r
 import org.argeo.slc.core.structure.StructureAware;\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.test.NumericTRId;\r
 import org.argeo.slc.core.test.TestResult;\r
 import org.argeo.slc.core.test.TestResultId;\r
 import org.argeo.slc.core.test.TestResultListener;\r
 import org.argeo.slc.core.test.TestResultPart;\r
 \r
 public class TreeTestResult implements TestResult, StructureAware {\r
-       private TestResultId testResultId;\r
+       /** For ORM */\r
+       private Long tid;\r
+\r
+       private NumericTRId testResultId;\r
        private List<TestResultListener> listeners;\r
 \r
        private TreeSPath currentPath;\r
 \r
-       private SortedMap<TreeSPath, List<TestResultPart>> resultParts = new TreeMap<TreeSPath, List<TestResultPart>>();\r
+       private SortedMap<TreeSPath, PartSubList> resultParts = new TreeMap<TreeSPath, PartSubList>();\r
+\r
 \r
+       \r
        public TestResultId getTestResultId() {\r
                return testResultId;\r
        }\r
 \r
-       public void setTestResultId(TestResultId testResultId) {\r
+       public NumericTRId getNumericResultId() {\r
+               return testResultId;\r
+       }\r
+\r
+       public void setNumericResultId(NumericTRId testResultId) {\r
                this.testResultId = testResultId;\r
        }\r
 \r
        public void setListeners(List<TestResultListener> listeners) {\r
                this.listeners = listeners;\r
        }\r
-       \r
+\r
        public void addResultPart(TestResultPart part) {\r
-               if(currentPath==null){\r
+               if (currentPath == null) {\r
                        throw new SlcException("No current path set.");\r
                }\r
-               List<TestResultPart> list = resultParts.get(currentPath);\r
-               if(list == null){\r
-                       list = new Vector<TestResultPart>();\r
-                       resultParts.put(currentPath, list);\r
+               PartSubList subList = resultParts.get(currentPath);\r
+               if (subList == null) {\r
+                       subList = new PartSubList();\r
+                       resultParts.put(currentPath, subList);\r
                }\r
-               list.add(part);\r
-               \r
+               subList.getParts().add(part);\r
+\r
                // notify listeners\r
-               for(TestResultListener listener: listeners){\r
+               for (TestResultListener listener : listeners) {\r
                        listener.resultPartAdded(this, part);\r
                }\r
        }\r
 \r
-       public List<TestResultPart> listResultParts() {\r
-               List<TestResultPart> all = new Vector<TestResultPart>();\r
-               for(TreeSPath path:resultParts.keySet()){\r
-                       all.addAll(resultParts.get(path));\r
-               }\r
-               return all;\r
-       }\r
-\r
        public void notifyCurrentPath(StructureRegistry registry, StructurePath path) {\r
                currentPath = (TreeSPath) path;\r
        }\r
@@ -68,9 +69,20 @@ public class TreeTestResult implements TestResult, StructureAware {
                return currentPath;\r
        }\r
 \r
-       public SortedMap<TreeSPath, List<TestResultPart>> getResultParts() {\r
+       public SortedMap<TreeSPath, PartSubList> getResultParts() {\r
                return resultParts;\r
        }\r
 \r
-       \r
+       void setResultParts(SortedMap<TreeSPath, PartSubList> resultParts) {\r
+               this.resultParts = resultParts;\r
+       }\r
+\r
+       Long getTid() {\r
+               return tid;\r
+       }\r
+\r
+       void setTid(Long tid) {\r
+               this.tid = tid;\r
+       }\r
+\r
 }\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultPersister.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultPersister.java
new file mode 100644 (file)
index 0000000..16ec6fa
--- /dev/null
@@ -0,0 +1,37 @@
+package org.argeo.slc.core.test.tree;\r
+\r
+import org.argeo.slc.dao.test.TestResultDao;\r
+\r
+public class TreeTestResultPersister extends AsynchronousTreeTestResultListener {\r
+       private TestResultDao testResultDao;\r
+\r
+       @Override\r
+       protected void resultPartAdded(PartStruct partStruct) {\r
+               TreeTestResult persistedResult = (TreeTestResult) testResultDao\r
+                               .getTestResult(partStruct.resultId);\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
+\r
+                       testResultDao.create(persistedResult);\r
+               } else {\r
+                       PartSubList subList = persistedResult.getResultParts().get(\r
+                                       partStruct.path);\r
+                       if (subList == null) {\r
+                               subList = new PartSubList();\r
+                               persistedResult.getResultParts().put(partStruct.path, subList);\r
+                       }\r
+                       subList.getParts().add(partStruct.part);\r
+\r
+                       testResultDao.update(persistedResult);\r
+               }\r
+       }\r
+\r
+       public void setTestResultDao(TestResultDao testResultDao) {\r
+               this.testResultDao = testResultDao;\r
+       }\r
+\r
+}\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/dao/test/TestResultDao.java b/org.argeo.slc/src/main/java/org/argeo/slc/dao/test/TestResultDao.java
new file mode 100644 (file)
index 0000000..b282cd4
--- /dev/null
@@ -0,0 +1,13 @@
+package org.argeo.slc.dao.test;\r
+\r
+import java.util.List;\r
+\r
+import org.argeo.slc.core.test.TestResult;\r
+import org.argeo.slc.core.test.TestResultId;\r
+\r
+public interface TestResultDao {\r
+       public TestResult getTestResult(TestResultId id);\r
+       public void create(TestResult testResult);\r
+       public void update(TestResult testResult);\r
+       public List<TestResult> listTestResults();\r
+}\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/NumericTRId.hbm.xml b/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/NumericTRId.hbm.xml
new file mode 100644 (file)
index 0000000..ca9c5d9
--- /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.test">\r
+       <class name="NumericTRId" table="NUMERIC_TR_ID">\r
+\r
+               <id name="tid" column="T_ID">\r
+                       <generator class="native" />\r
+               </id>\r
+               <property name="value" column="VALUE" not-null="true"\r
+                       unique="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/test/SimpleResultPart.hbm.xml b/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml
new file mode 100644 (file)
index 0000000..f1fc407
--- /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.test">\r
+       <class name="SimpleResultPart" table="SIMPLE_RESULT_PART">\r
+               <id name="tid" column="T_ID">\r
+                       <generator class="native" />\r
+               </id>\r
+               <property name="status" column="STATUS" not-null="true" />\r
+               <property name="message" column="MESSAGE" 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/test/TestResultId.hbm.xml b/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/TestResultId.hbm.xml
new file mode 100644 (file)
index 0000000..dee13a6
--- /dev/null
@@ -0,0 +1,11 @@
+<?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">\r
+       <class name="TestResultId" table="TEST_RESULT_ID">\r
+               <id name="tid" column="T_ID">\r
+                       <generator class="native" />\r
+               </id>\r
+       </class>\r
+</hibernate-mapping>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml b/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml
new file mode 100644 (file)
index 0000000..158fe6d
--- /dev/null
@@ -0,0 +1,17 @@
+<?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="PartSubList" table="PART_SUB_LIST">\r
+               <id name="tid" column="T_ID">\r
+                       <generator class="native" />\r
+               </id>\r
+               <list name="parts" table="SUB_LIST_PARTS"  cascade="all" lazy="false">\r
+                       <key column="PARENT_ID" unique="true" />\r
+                       <list-index column="INDEX" />\r
+                       <many-to-many\r
+                               class="org.argeo.slc.core.test.SimpleResultPart" column="PART_ID" lazy="false"/>\r
+               </list>\r
+       </class>\r
+</hibernate-mapping>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/tree/TestResultDaoHibernate.java b/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/tree/TestResultDaoHibernate.java
new file mode 100644 (file)
index 0000000..7b91769
--- /dev/null
@@ -0,0 +1,41 @@
+package org.argeo.slc.hibernate.test.tree;\r
+\r
+import java.util.List;\r
+\r
+import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
+\r
+import org.argeo.slc.core.test.NumericTRId;\r
+import org.argeo.slc.core.test.TestResult;\r
+import org.argeo.slc.core.test.TestResultId;\r
+import org.argeo.slc.dao.test.TestResultDao;\r
+\r
+public class TestResultDaoHibernate extends HibernateDaoSupport implements\r
+               TestResultDao {\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 TestResult getTestResult(TestResultId id) {\r
+               NumericTRId ntrid = (NumericTRId) id;\r
+               List<?> list = getHibernateTemplate().find(\r
+                               "from TreeTestResult where numericResultId.value=?",\r
+                               ntrid.getValue());\r
+               if (list.size() == 0) {\r
+                       return null;\r
+               } else {\r
+                       return (TestResult) list.get(0);\r
+               }\r
+\r
+       }\r
+\r
+       public List<TestResult> listTestResults() {\r
+               return (List<TestResult>) getHibernateTemplate().find(\r
+                               "from TreeTestResult");\r
+       }\r
+\r
+}\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml b/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml
new file mode 100644 (file)
index 0000000..4060e00
--- /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.test.tree">\r
+       <class name="TreeTestResult" table="TREE_TEST_RESULT">\r
+               <id name="tid" column="T_ID">\r
+                       <generator class="native" />\r
+               </id>\r
+\r
+               <many-to-one name="numericResultId" unique="true"\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
+                       <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
+       </class>\r
+</hibernate-mapping>
\ No newline at end of file
index 48fd27aea34bd352a750f557d8fd14cd61905188..916d9809d1303156a3cdbab62a73fc5401fc3ee3 100644 (file)
@@ -15,5 +15,11 @@ public class TestAntBuild extends TestCase {
                File antFile = new File(slcBaseDir.getPath()\r
                                + "/root/Category1/SubCategory2/build.xml");\r
                AntRegistryUtil.runAll(antFile);\r
+               \r
+               try {\r
+                       Thread.sleep(5000);\r
+               } catch (InterruptedException e) {\r
+                       e.printStackTrace();\r
+               }\r
        }\r
 }\r
index 25657efb80a1d53696f434b6b6df0640d229e5c8..f8a24099884ff16ce904de722a2545a862cdd3ac 100644 (file)
@@ -3,6 +3,7 @@
        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
+       <import resource="data.xml" />\r
        <import resource="slc.xml" />\r
        <import resource="testDatas.xml" />\r
        <import resource="testDefinitions.xml" />\r
diff --git a/org.argeo.slc/src/test/slc/conf/data.xml b/org.argeo.slc/src/test/slc/conf/data.xml
new file mode 100644 (file)
index 0000000..2ea17cd
--- /dev/null
@@ -0,0 +1,55 @@
+<?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="dataSourceResults"\r
+               class="org.springframework.jdbc.datasource.DriverManagerDataSource"\r
+               destroy-method="close">\r
+               <property name="driverClassName" value="org.hsqldb.jdbcDriver" />\r
+               <property name="url"\r
+                       value="jdbc:hsqldb:file:${slc.workDir}/results/hsqldb/db" />\r
+               <property name="username" value="sa" />\r
+               <property name="password" value="" />\r
+       </bean>\r
+\r
+       <bean id="sessionFactoryResults"\r
+               class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">\r
+               <property name="dataSource" ref="dataSourceResults" />\r
+               <property name="mappingResources">\r
+                       <list>\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/PartSubList.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml\r
+                               </value>\r
+                       </list>\r
+               </property>\r
+               <property name="hibernateProperties">\r
+                       <value>\r
+                               hibernate.dialect=org.hibernate.dialect.HSQLDialect\r
+                               c3p0.min_size=1 c3p0.timeout=1800\r
+                               cache.provider_class=org.hibernate.cache.NoCacheProvider\r
+                               cache.use_query_cache=false cache.use_minimal_puts=false\r
+                               max_fetch_depth=3 show_sql=true format_sql=true\r
+                               current_session_context_class=thread\r
+                               hibernate.hbm2ddl.auto=update\r
+                       </value>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean id="testResultDao"\r
+               class="org.argeo.slc.hibernate.test.tree.TestResultDaoHibernate">\r
+               <property name="sessionFactory" ref="sessionFactoryResults" />\r
+       </bean>\r
+\r
+\r
+</beans>
\ No newline at end of file
index 8a70a33f48a6bc70fe5df4bc190aca956facda9b..21da2fc410a11ed2e3682cf0bba3bf523c05166a 100644 (file)
@@ -1,9 +1,11 @@
 # Set root logger level to DEBUG and its only appender to A1.\r
-log4j.rootLogger=TRACE, console\r
+log4j.rootLogger=DEBUG, console\r
 \r
 ## Levels\r
 # Spring\r
 log4j.logger.org.springframework=INFO\r
+# Hibernate\r
+log4j.logger.org.hibernate=INFO\r
 \r
 \r
 ## Appenders\r
index cef799e200179b4d669b23ba313cbe196baf1e96..4b13480f4d4963f3d52325487b4987e260556113 100644 (file)
@@ -9,20 +9,21 @@
                <property name="deployedSystem" ref="exampleDeployedSystem" />\r
        </bean>\r
 \r
+       <bean id="testResultId"\r
+               class="org.argeo.slc.core.test.NumericTRId" init-method="init">\r
+       </bean>\r
+\r
        <bean id="testResult"\r
                class="org.argeo.slc.core.test.tree.TreeTestResult">\r
-               <property name="testResultId" ref="testResultId" />\r
+               <property name="numericResultId" ref="testResultId" />\r
                <property name="listeners">\r
                        <list>\r
                                <ref bean="resultLogger" />\r
+                               <ref bean="resultPersister" />\r
                        </list>\r
                </property>\r
        </bean>\r
 \r
-       <bean id="testResultId"\r
-               class="org.argeo.slc.core.test.TimeTestResultId" init-method="init">\r
-       </bean>\r
-\r
        <bean\r
                class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />\r
 \r
                init-method="init" destroy-method="destroy">\r
        </bean>\r
 \r
+       <bean id="resultPersister"\r
+               class="org.argeo.slc.core.test.tree.TreeTestResultPersister" init-method="init" destroy-method="destroy">\r
+               <property name="testResultDao" ref="testResultDao"/>\r
+       </bean>\r
+\r
        <bean id="exampleDeployedSystem"\r
                class="org.argeo.slc.example.ExampleDeployedSystem">\r
                <property name="deployedSystemId">\r
@@ -45,4 +51,5 @@
                        </bean>\r
                </property>\r
        </bean>\r
+\r
 </beans>
\ No newline at end of file