\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
\r
import org.apache.commons.logging.Log;\r
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
* 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
private SortedMap<TreeSPath, PartSubList> resultParts = new TreeMap<TreeSPath, PartSubList>();\r
private SortedMap<TreeSPath, StructureElement> elements = new TreeMap<TreeSPath, StructureElement>();\r
\r
+ private Map<String, String> attributes = new TreeMap<String, String>();\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
\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
}\r
}\r
\r
- currentPath = (TreeSPath) path;\r
+ currentPath = path;\r
}\r
\r
/** Gets the current path. */\r
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
\r
public SortedMap<TreeSPath, StructureElement> getRelatedElements(\r
TreeSPath path) {\r
+ if (path == null)\r
+ throw new SlcException(\r
+ "Cannot retrieve element for a null path in result #"\r
+ + uuid);\r
+\r
SortedMap<TreeSPath, StructureElement> relatedElements = new TreeMap<TreeSPath, StructureElement>();\r
List<TreeSPath> hierarchy = path.getHierarchyAsList();\r
for (TreeSPath currPath : elements.keySet()) {\r
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> getAttributes() {\r
+ return attributes;\r
+ }\r
+\r
+ public void setAttributes(Map<String, String> attributes) {\r
+ this.attributes = attributes;\r
+ }\r
}\r