X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Ftest%2Ftree%2FTreeTestResult.java;h=3124b055fcb3339c3aff75c241faa58cd6dfcd91;hb=5764eb4717599e8df700094e7f0360a155e2a3bb;hp=3c5be7305e3547c33683abcf59bbfe59898b5662;hpb=872809aa7f951e0cda4d6cf04d5af7b7066cbf88;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java index 3c5be7305..3124b055f 100644 --- a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java +++ b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java @@ -1,8 +1,10 @@ package org.argeo.slc.core.test.tree; +import java.util.Date; import java.util.List; import java.util.SortedMap; import java.util.TreeMap; +import java.util.Vector; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -18,32 +20,46 @@ import org.argeo.slc.core.test.TestResultId; import org.argeo.slc.core.test.TestResultListener; import org.argeo.slc.core.test.TestResultPart; +/** + * Complex implementation of a test result compatible with a tree based + * structure. + */ public class TreeTestResult implements TestResult, StructureAware { private Log log = LogFactory.getLog(TreeTestResult.class); /** For ORM */ private Long tid; private NumericTRId testResultId; - private List listeners; + private List listeners = new Vector(); private TreeSPath currentPath; - + + private Date closeDate; + private boolean isClosed = false; private SortedMap resultParts = new TreeMap(); + private StructureRegistry registry; + public TestResultId getTestResultId() { return testResultId; } + /** + * Use of a NumericTRId is required by Hibernate. It may + * change in the future. + */ public NumericTRId getNumericResultId() { return testResultId; } + /** Sets the test result id as a numeric test result id. */ public void setNumericResultId(NumericTRId testResultId) { this.testResultId = testResultId; } + /** Sets the list of listeners. */ public void setListeners(List listeners) { this.listeners = listeners; } @@ -69,33 +85,40 @@ public class TreeTestResult implements TestResult, StructureAware { public void notifyCurrentPath(StructureRegistry registry, StructurePath path) { currentPath = (TreeSPath) path; + this.registry = registry; } + /** Gets the current path. */ public TreeSPath getCurrentPath() { return currentPath; } + /** Gets all the results structured as a map of PartSubLists. */ public SortedMap getResultParts() { return resultParts; } + /** Used by ORM systems. */ void setResultParts(SortedMap resultParts) { this.resultParts = resultParts; } public void close() { - if(isClosed){ - throw new SlcException("Test Result #"+getTestResultId()+" alredy closed."); + if (isClosed) { + throw new SlcException("Test Result #" + getTestResultId() + + " alredy closed."); } - + closeDate = new Date(); + synchronized (listeners) { for (TestResultListener listener : listeners) { - listener.close(); + listener.close(this); } listeners.clear(); } isClosed = true; - log.info("Test Result #"+getTestResultId()+" closed."); + + log.info("Test Result #" + getTestResultId() + " closed."); } Long getTid() { @@ -106,4 +129,23 @@ public class TreeTestResult implements TestResult, StructureAware { this.tid = tid; } + /** Gets the related registry (can be null). */ + public StructureRegistry getRegistry() { + return registry; + } + + /** Sets the related registry. */ + public void setRegistry(StructureRegistry registry) { + this.registry = registry; + } + + public Date getCloseDate() { + return closeDate; + } + + /** Sets the close date (for ORM) */ + public void setCloseDate(Date closeDate) { + this.closeDate = closeDate; + } + }