Add elements and tags in tree test result
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 28 Apr 2008 20:03:02 +0000 (20:03 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 28 Apr 2008 20:03:02 +0000 (20:03 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1076 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/SimpleSElement.java
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/unit/test/tree/UnitTestTreeUtil.java
org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/test/tree/mapping.xml
org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml
org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml
org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultTestUtils.java

index 98bf7e319531139589e570f88e87466fad594e42..69c3e0905aca5529f4ff4592088f9d537aaa5eae 100644 (file)
@@ -1,5 +1,7 @@
 package org.argeo.slc.core.structure;\r
 \r
+import java.util.Map;\r
+import java.util.TreeMap;\r
 \r
 /**\r
  * Basic implementation of <code>StructureElement</code>.\r
@@ -10,6 +12,7 @@ public class SimpleSElement implements StructureElement {
        /** For ORM */\r
        private Long tid;\r
        private String label;\r
+       private Map<String, String> tags = new TreeMap<String, String>();\r
 \r
        /** For ORM */\r
        public SimpleSElement() {\r
@@ -42,4 +45,12 @@ public class SimpleSElement implements StructureElement {
                this.tid = tid;\r
        }\r
 \r
+       public Map<String, String> getTags() {\r
+               return tags;\r
+       }\r
+\r
+       public void setTags(Map<String, String> tags) {\r
+               this.tags = tags;\r
+       }\r
+\r
 }\r
index 36233e9942a2d321cb73b39d5d86842638adb275..43a3607108ef7ba18318a888d89109293ae5cf35 100644 (file)
@@ -45,7 +45,7 @@ public class TreeTestResult implements TestResult, StructureAware<TreeSPath>,
        private boolean isClosed = false;\r
 \r
        private SortedMap<TreeSPath, PartSubList> resultParts = new TreeMap<TreeSPath, PartSubList>();\r
-       private SortedMap<TreeSPath, String> pathNames = new TreeMap<TreeSPath, String>();\r
+       private SortedMap<TreeSPath, StructureElement> elements = new TreeMap<TreeSPath, StructureElement>();\r
 \r
        private StructureRegistry<TreeSPath> registry;\r
 \r
@@ -96,10 +96,14 @@ public class TreeTestResult implements TestResult, StructureAware<TreeSPath>,
                        TreeSPath path) {\r
                if (registry != null) {\r
                        for (TreeSPath p : path.getHierarchyAsList()) {\r
-                               if (!pathNames.containsKey(p)) {\r
+                               if (!elements.containsKey(p)) {\r
                                        StructureElement elem = registry.getElement(p);\r
                                        if (elem != null) {\r
-                                               pathNames.put(p, elem.getLabel());\r
+                                               // elements.put(p, elem.getLabel());\r
+                                               elements.put(p, elem);\r
+                                       } else {\r
+                                               log.warn("An element is already registered for path "\r
+                                                               + p);\r
                                        }\r
                                }\r
                        }\r
@@ -176,12 +180,12 @@ public class TreeTestResult implements TestResult, StructureAware<TreeSPath>,
                }\r
        }\r
 \r
-       public SortedMap<TreeSPath, String> getPathNames() {\r
-               return pathNames;\r
+       public SortedMap<TreeSPath, StructureElement> getElements() {\r
+               return elements;\r
        }\r
 \r
-       public void setPathNames(SortedMap<TreeSPath, String> pathNames) {\r
-               this.pathNames = pathNames;\r
+       public void setElements(SortedMap<TreeSPath, StructureElement> pathNames) {\r
+               this.elements = pathNames;\r
        }\r
 \r
 }\r
index d1cc9631e10fe5414c01eeacef4e77a0b09e2835..05c56acb69394c8892157da8b094fd5e87561d95 100644 (file)
@@ -5,6 +5,7 @@ import static junit.framework.Assert.assertNotNull;
 import static junit.framework.Assert.assertNull;\r
 import static junit.framework.Assert.fail;\r
 \r
+import org.argeo.slc.core.structure.SimpleSElement;\r
 import org.argeo.slc.core.structure.tree.TreeSPath;\r
 import org.argeo.slc.core.test.SimpleResultPart;\r
 import org.argeo.slc.core.test.TestResultPart;\r
@@ -30,17 +31,33 @@ public class UnitTestTreeUtil {
                        assertPartSubList(lstExpected, lstReached);\r
                }\r
 \r
-               assertEquals(expected.getPathNames().size(), reached.getPathNames()\r
+               assertEquals(expected.getElements().size(), reached.getElements()\r
                                .size());\r
-               for (TreeSPath path : expected.getPathNames().keySet()) {\r
-                       String nameExpected = expected.getPathNames().get(path);\r
-                       String nameReached = expected.getPathNames().get(path);\r
-                       assertNotNull(nameReached);\r
-                       assertEquals(nameExpected, nameReached);\r
+               for (TreeSPath path : expected.getElements().keySet()) {\r
+                       // String nameExpected = expected.getElements().get(path);\r
+                       // String nameReached = expected.getElements().get(path);\r
+                       SimpleSElement elemExpected = (SimpleSElement) expected\r
+                                       .getElements().get(path);\r
+                       SimpleSElement elemReached = (SimpleSElement) expected\r
+                                       .getElements().get(path);\r
+                       assertNotNull(elemReached);\r
+                       assertElements(elemExpected, elemReached);\r
                }\r
 \r
        }\r
 \r
+       public static void assertElements(SimpleSElement expected,\r
+                       SimpleSElement reached) {\r
+               assertEquals(expected.getLabel(), reached.getLabel());\r
+               assertEquals(expected.getTags().size(), reached.getTags().size());\r
+               for (String tagName : expected.getTags().keySet()) {\r
+                       String expectedTagValue = expected.getTags().get(tagName);\r
+                       String reachedTagValue = reached.getTags().get(tagName);\r
+                       assertNotNull(reachedTagValue);\r
+                       assertEquals(expectedTagValue, reachedTagValue);\r
+               }\r
+       }\r
+\r
        public static void assertPartSubList(PartSubList lstExpected,\r
                        PartSubList lstReached) {\r
                if (lstExpected.getSlcExecutionUuid() == null) {\r
index dad0725c091ed3835764b76974487dfa33bd28f5..599efeff19ba82fca99011bd9e6e75016c78159a 100644 (file)
                                </class>\r
                        </bind-xml>\r
                </field>\r
-               <field name="pathNames" collection="map">\r
-                       <bind-xml name="path-name" location="path-names">\r
+               <field name="elements" collection="map">\r
+                       <bind-xml name="element" location="elements">\r
                                <class name="org.exolab.castor.mapping.MapItem">\r
                                        <field name="key"\r
                                                type="org.argeo.slc.core.structure.tree.TreeSPath">\r
                                                <bind-xml name="path" node="attribute" />\r
                                        </field>\r
-                                       <field name="value" type="string">\r
-                                               <bind-xml name="name" />\r
+                                       <field name="value"\r
+                                               type="org.argeo.slc.core.structure.SimpleSElement">\r
+                                               <bind-xml name="simpleSElement" />\r
                                        </field>\r
                                </class>\r
                        </bind-xml>\r
                <field name="asUniqueString" type="string" />\r
        </class>\r
 \r
+       <class name="org.argeo.slc.core.structure.SimpleSElement"\r
+               auto-complete="false">\r
+               <field name="label" type="string" />\r
+               <field name="tags" collection="map">\r
+                       <bind-xml name="tag" location="tags">\r
+                               <class name="org.exolab.castor.mapping.MapItem">\r
+                                       <field name="key" type="string">\r
+                                               <bind-xml name="name" node="attribute" />\r
+                                       </field>\r
+                                       <field name="value" type="string">\r
+                                               <bind-xml name="value" />\r
+                                       </field>\r
+                               </class>\r
+                       </bind-xml>\r
+               </field>\r
+       </class>\r
+\r
        <class name="java.lang.StackTraceElement" auto-complete="false"\r
                verify-constructable="false">\r
                <field name="declaringClass" type="string" set-method="%1"\r
index fde2a34b680618705795135ad36e8875b1f8192b..0bc9e6aea230ac83f1e2b6fcf7b8448c9505bd86 100644 (file)
@@ -7,7 +7,12 @@
                <id name="tid" column="T_ID">\r
                        <generator class="native" />\r
                </id>\r
-               <property name="label" column="LABEL"\r
-                       not-null="true" />\r
+               <property name="label" column="LABEL" not-null="true" />\r
+               <map name="tags" table="SIMPLE_SELEMENT_TAGS" cascade="all"\r
+                       lazy="false" sort="natural">\r
+                       <key column="PARENT_ID" />\r
+                       <map-key type="string" column="NAME" />\r
+                       <element type="string" column="VALUE" />\r
+               </map>\r
        </class>\r
 </hibernate-mapping>
\ No newline at end of file
index 9de6a80456438ec23d76ed2d386b3980944db183..971469fd1c586f53e850141434fd0555ba8a8983 100644 (file)
                                unique="true" lazy="false" />\r
                </map>\r
 \r
-               <map name="pathNames" table="RESULT_PATH_NAMES_MAP"\r
+               <map name="elements" table="RESULT_ELEMENTS_MAP"\r
                        cascade="all" lazy="false" sort="natural">\r
                        <key column="PARENT_ID" />\r
                        <composite-map-key\r
                                class="org.argeo.slc.core.structure.tree.TreeSPath">\r
                                <key-property name="asUniqueString" column="PATH" />\r
                        </composite-map-key>\r
-                       <element column="NAME" type="string" />\r
+                       <!-- element column="NAME" type="string" /-->\r
+                       <many-to-many class="org.argeo.slc.core.structure.SimpleSElement" column="ELEMENT_ID"\r
+                               unique="true" lazy="false" />\r
                </map>\r
        </class>\r
 </hibernate-mapping>
\ No newline at end of file
index 28fdd8fc3affafbf4307ce8dff37a3373b0a5a3c..591a1d3680328e783b164ff3cae6ca3e46e41114 100644 (file)
@@ -32,7 +32,9 @@ public abstract class TreeTestResultTestUtils {
                TreeSPath path = TreeSPath.parseToCreatePath(pathStr);\r
 \r
                TreeSRegistry registry = new TreeSRegistry();\r
-               registry.register(path, new SimpleSElement("Unit Test"));\r
+               SimpleSElement elem = new SimpleSElement("Unit Test");\r
+               elem.getTags().put("myTag", "myTagValue");\r
+               registry.register(path, elem);\r
 \r
                TreeTestResult ttr = createSimpleTreeTestResult();\r
                ttr.notifySlcExecution(slcExecution);\r