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=171d606f8c2ba89c9bdc518f39aa88662c4d942a;hp=505a71060c706267930fb35099342b49512a2b07;hpb=364cecbcb8a7902360c01e02b9e69443c4c22836;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 505a71060..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(); @@ -193,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; } @@ -215,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); + } + } + } + }