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=c7fa530ace9a8a6b4ff9856cf74cf84fd1ee8c55;hpb=44dd5750650b46d9979b4e06e4cc76c0b0003f4f;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 c7fa530ac..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,6 @@ package org.argeo.slc.core.test.tree; +import java.io.Serializable; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -13,6 +14,7 @@ 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; @@ -28,7 +30,9 @@ import org.argeo.slc.test.TestRunAware; * structure. */ public class TreeTestResult implements TestResult, StructureAware, - Comparable, AttachmentsEnabled { + Comparable, AttachmentsEnabled, Serializable { + private static final long serialVersionUID = 1L; + private Log log = LogFactory.getLog(TreeTestResult.class); private List> listeners = new Vector>(); @@ -46,7 +50,7 @@ public class TreeTestResult implements TestResult, StructureAware, private SortedMap resultParts = new TreeMap(); private SortedMap elements = new TreeMap(); - private List attachments = new ArrayList(); + private List attachments = new ArrayList(); private Map attributes = new TreeMap(); @@ -197,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; } @@ -219,16 +251,16 @@ public class TreeTestResult implements TestResult, StructureAware, this.warnIfAlreadyClosed = warnIfAlreadyClosed; } - public List getAttachments() { + public List getAttachments() { return attachments; } - public void setAttachments(List attachments) { + public void setAttachments(List attachments) { this.attachments = attachments; } public void addAttachment(Attachment attachment) { - attachments.add(attachment); + attachments.add((SimpleAttachment) attachment); synchronized (listeners) { for (TestResultListener listener : listeners) { if (listener instanceof TreeTestResultListener)