X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.support.simple%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Ftest%2Ftree%2FTreeTestResult.java;h=7a90133d6418a01434be38fe3ef7a3cafcd128d2;hb=8536d871354d83c032dfd85f763c7fdf965c02b7;hp=b5d78a7da1663c088d019ae795c00f91e2fa273d;hpb=2f57b9abf7e5110603e8cf952259509c76c9a162;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java index b5d78a7da..7a90133d6 100644 --- a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java +++ b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java @@ -1,5 +1,7 @@ package org.argeo.slc.core.test.tree; +import java.io.Serializable; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @@ -10,6 +12,9 @@ import java.util.Vector; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.slc.SlcException; +import org.argeo.slc.core.attachment.Attachment; +import org.argeo.slc.core.attachment.AttachmentsEnabled; +import org.argeo.slc.core.attachment.SimpleAttachment; import org.argeo.slc.core.structure.tree.TreeSPath; import org.argeo.slc.structure.StructureAware; import org.argeo.slc.structure.StructureElement; @@ -25,7 +30,9 @@ import org.argeo.slc.test.TestRunAware; * structure. */ public class TreeTestResult implements TestResult, StructureAware, - Comparable { + Comparable, AttachmentsEnabled, Serializable { + private static final long serialVersionUID = 1L; + private Log log = LogFactory.getLog(TreeTestResult.class); private List> listeners = new Vector>(); @@ -43,6 +50,7 @@ public class TreeTestResult implements TestResult, StructureAware, private SortedMap resultParts = new TreeMap(); private SortedMap elements = new TreeMap(); + private List attachments = new ArrayList(); private Map attributes = new TreeMap(); @@ -133,7 +141,6 @@ public class TreeTestResult implements TestResult, StructureAware, for (TestResultListener listener : listeners) { listener.close(this); } - listeners.clear(); } isClosed = true; @@ -194,16 +201,44 @@ public class TreeTestResult implements TestResult, StructureAware, public int compareTo(TreeTestResult ttr2) { TreeTestResult ttr1 = this; if (ttr1.getCloseDate() != null && ttr2.getCloseDate() != null) { - return -ttr1.getCloseDate().compareTo(ttr2.getCloseDate()); + if (ttr1.getCloseDate().equals(ttr2.getCloseDate())) + return compareUuid(ttr1, ttr2); + else + 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 compareUuid(ttr1, ttr2); + } + } + + protected int compareUuid(TestResult ttr1, TestResult ttr2) { + if (ttr1.getUuid() == null || ttr2.getUuid() == null) + throw new SlcException( + "Cannot compare tree test result with null uuid"); + else { + if (ttr1.getUuid().equals(ttr2.getUuid())) + return 0; return ttr1.getUuid().compareTo(ttr2.getUuid()); } } + public boolean equals(Object obj) { + if (obj instanceof TestResult) + return compareUuid(this, ((TestResult) obj)) == 0; + else + return false; + } + + public int hashCode() { + if (uuid != null) + return uuid.hashCode(); + else + return super.hashCode(); + } + public Map getAttributes() { return attributes; } @@ -216,4 +251,23 @@ public class TreeTestResult implements TestResult, StructureAware, this.warnIfAlreadyClosed = warnIfAlreadyClosed; } + public List getAttachments() { + return attachments; + } + + public void setAttachments(List attachments) { + this.attachments = attachments; + } + + public void addAttachment(Attachment attachment) { + attachments.add((SimpleAttachment) attachment); + synchronized (listeners) { + for (TestResultListener listener : listeners) { + if (listener instanceof TreeTestResultListener) + ((TreeTestResultListener) listener).addAttachment(this, + attachment); + } + } + } + }