]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java
Remove unused DAOs
[gpl/argeo-slc.git] / org.argeo.slc.core / src / main / java / org / argeo / slc / core / test / tree / TreeTestResult.java
index 9b807c904be55023d0ab614273c3a442c51e629d..f34561a9e3b33881d2bd9c425f2d7990b2795132 100644 (file)
@@ -2,6 +2,7 @@ package org.argeo.slc.core.test.tree;
 \r
 import java.util.Date;\r
 import java.util.List;\r
+import java.util.Map;\r
 import java.util.SortedMap;\r
 import java.util.TreeMap;\r
 import java.util.Vector;\r
@@ -10,6 +11,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;\r
 \r
 import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.structure.SimpleSElement;\r
 import org.argeo.slc.core.structure.StructureAware;\r
 import org.argeo.slc.core.structure.StructureElement;\r
 import org.argeo.slc.core.structure.StructureRegistry;\r
@@ -24,14 +26,17 @@ import org.argeo.slc.core.test.TestRunAware;
  * Complex implementation of a test result compatible with a tree based\r
  * structure.\r
  */\r
-public class TreeTestResult implements TestResult, StructureAware<TreeSPath> {\r
+public class TreeTestResult implements TestResult, StructureAware<TreeSPath>,\r
+               Comparable<TreeTestResult> {\r
        private Log log = LogFactory.getLog(TreeTestResult.class);\r
 \r
-       private List<TestResultListener> listeners = new Vector<TestResultListener>();\r
+       private List<TestResultListener<TreeTestResult>> listeners = new Vector<TestResultListener<TreeTestResult>>();\r
 \r
        private TreeSPath currentPath;\r
        private TestRun currentTestRun;\r
 \r
+       private Map<String, String> rootTags = new TreeMap<String, String>();\r
+\r
        private Date closeDate;\r
 \r
        private boolean isClosed = false;\r
@@ -42,7 +47,7 @@ public class TreeTestResult implements TestResult, StructureAware<TreeSPath> {
        private SortedMap<TreeSPath, StructureElement> elements = new TreeMap<TreeSPath, StructureElement>();\r
 \r
        /** Sets the list of listeners. */\r
-       public void setListeners(List<TestResultListener> listeners) {\r
+       public void setListeners(List<TestResultListener<TreeTestResult>> listeners) {\r
                this.listeners = listeners;\r
        }\r
 \r
@@ -62,7 +67,7 @@ public class TreeTestResult implements TestResult, StructureAware<TreeSPath> {
 \r
                // notify listeners\r
                synchronized (listeners) {\r
-                       for (TestResultListener listener : listeners) {\r
+                       for (TestResultListener<TreeTestResult> listener : listeners) {\r
                                listener.resultPartAdded(this, part);\r
                        }\r
                }\r
@@ -75,6 +80,15 @@ public class TreeTestResult implements TestResult, StructureAware<TreeSPath> {
                                if (!elements.containsKey(p)) {\r
                                        StructureElement elem = registry.getElement(p);\r
                                        if (elem != null) {\r
+\r
+                                               if (elements.size() == 0\r
+                                                               && (elem instanceof SimpleSElement)) {\r
+                                                       SimpleSElement sElem = ((SimpleSElement) elem)\r
+                                                                       .clone();\r
+                                                       sElem.getTags().putAll(rootTags);\r
+                                                       elem = sElem;\r
+                                               }\r
+\r
                                                elements.put(p, elem);\r
                                        }\r
                                } else {\r
@@ -112,14 +126,15 @@ public class TreeTestResult implements TestResult, StructureAware<TreeSPath> {
                closeDate = new Date();\r
 \r
                synchronized (listeners) {\r
-                       for (TestResultListener listener : listeners) {\r
+                       for (TestResultListener<TreeTestResult> listener : listeners) {\r
                                listener.close(this);\r
                        }\r
                        listeners.clear();\r
                }\r
                isClosed = true;\r
 \r
-               log.info("Test Result #" + getUuid() + " closed.");\r
+               if (log.isTraceEnabled())\r
+                       log.trace("Test Result " + getUuid() + " closed.");\r
        }\r
 \r
        public Date getCloseDate() {\r
@@ -166,6 +181,26 @@ public class TreeTestResult implements TestResult, StructureAware<TreeSPath> {
        public TestRun getCurrentTestRun() {\r
                return currentTestRun;\r
        }\r
-       \r
-       \r
+\r
+       public int compareTo(TreeTestResult ttr2) {\r
+               TreeTestResult ttr1 = this;\r
+               if (ttr1.getCloseDate() != null && ttr2.getCloseDate() != null) {\r
+                       return -ttr1.getCloseDate().compareTo(ttr2.getCloseDate());\r
+               } else if (ttr1.getCloseDate() != null && ttr2.getCloseDate() == null) {\r
+                       return 1;\r
+               } else if (ttr1.getCloseDate() == null && ttr2.getCloseDate() != null) {\r
+                       return -1;\r
+               } else {\r
+                       return ttr1.getUuid().compareTo(ttr2.getUuid());\r
+               }\r
+       }\r
+\r
+       public Map<String, String> getRootTags() {\r
+               return rootTags;\r
+       }\r
+\r
+       public void setRootTags(Map<String, String> rootTags) {\r
+               this.rootTags = rootTags;\r
+       }\r
+\r
 }\r