X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Ftest%2Ftree%2FTreeTestResult.java;h=781c6eee2a1cc29124f4cf4eee44d82d29133633;hb=3e9377296723ae3d8bb8a6efcdaf9828ff2e4139;hp=9b807c904be55023d0ab614273c3a442c51e629d;hpb=62e442adb36b006627b17061864dfa4edde0a99a;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java index 9b807c904..781c6eee2 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java @@ -2,13 +2,13 @@ package org.argeo.slc.core.test.tree; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.SortedMap; import java.util.TreeMap; import java.util.Vector; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - import org.argeo.slc.core.SlcException; import org.argeo.slc.core.structure.StructureAware; import org.argeo.slc.core.structure.StructureElement; @@ -24,10 +24,11 @@ import org.argeo.slc.core.test.TestRunAware; * Complex implementation of a test result compatible with a tree based * structure. */ -public class TreeTestResult implements TestResult, StructureAware { +public class TreeTestResult implements TestResult, StructureAware, + Comparable { private Log log = LogFactory.getLog(TreeTestResult.class); - private List listeners = new Vector(); + private List> listeners = new Vector>(); private TreeSPath currentPath; private TestRun currentTestRun; @@ -41,8 +42,10 @@ public class TreeTestResult implements TestResult, StructureAware { private SortedMap resultParts = new TreeMap(); private SortedMap elements = new TreeMap(); + private Map attributes = new TreeMap(); + /** Sets the list of listeners. */ - public void setListeners(List listeners) { + public void setListeners(List> listeners) { this.listeners = listeners; } @@ -62,7 +65,7 @@ public class TreeTestResult implements TestResult, StructureAware { // notify listeners synchronized (listeners) { - for (TestResultListener listener : listeners) { + for (TestResultListener listener : listeners) { listener.resultPartAdded(this, part); } } @@ -86,7 +89,7 @@ public class TreeTestResult implements TestResult, StructureAware { } } - currentPath = (TreeSPath) path; + currentPath = path; } /** Gets the current path. */ @@ -107,19 +110,20 @@ public class TreeTestResult implements TestResult, StructureAware { public void close() { if (isClosed) { throw new SlcException("Test Result #" + getUuid() - + " alredy closed."); + + " already closed."); } closeDate = new Date(); synchronized (listeners) { - for (TestResultListener listener : listeners) { + for (TestResultListener listener : listeners) { listener.close(this); } listeners.clear(); } isClosed = true; - log.info("Test Result #" + getUuid() + " closed."); + if (log.isTraceEnabled()) + log.trace("Test Result " + getUuid() + " closed."); } public Date getCloseDate() { @@ -153,6 +157,11 @@ public class TreeTestResult implements TestResult, StructureAware { public SortedMap getRelatedElements( TreeSPath path) { + if (path == null) + throw new SlcException( + "Cannot retrieve element for a null path in result #" + + uuid); + SortedMap relatedElements = new TreeMap(); List hierarchy = path.getHierarchyAsList(); for (TreeSPath currPath : elements.keySet()) { @@ -166,6 +175,25 @@ public class TreeTestResult implements TestResult, StructureAware { public TestRun getCurrentTestRun() { return currentTestRun; } - - + + public int compareTo(TreeTestResult ttr2) { + TreeTestResult ttr1 = this; + if (ttr1.getCloseDate() != null && ttr2.getCloseDate() != null) { + return -ttr1.getCloseDate().compareTo(ttr2.getCloseDate()); + } else if (ttr1.getCloseDate() != null && ttr2.getCloseDate() == null) { + return 1; + } else if (ttr1.getCloseDate() == null && ttr2.getCloseDate() != null) { + return -1; + } else { + return ttr1.getUuid().compareTo(ttr2.getUuid()); + } + } + + public Map getAttributes() { + return attributes; + } + + public void setAttributes(Map attributes) { + this.attributes = attributes; + } }