Author: pkluegl Date: Wed Dec 12 16:55:03 2018 New Revision: 1848778 URL: http://svn.apache.org/viewvc?rev=1848778&view=rev Log: UIMA-5468: started to include timestamp for sorting in ui
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/visitor/DebugInfoCollectorVisitor.java uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/ExplainConstants.java uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/tree/ExplainTree.java uima/ruta/trunk/ruta-typesystem/src/main/resources/org/apache/uima/ruta/engine/RutaInternalTypeSystem.xml Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/visitor/DebugInfoCollectorVisitor.java URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/visitor/DebugInfoCollectorVisitor.java?rev=1848778&r1=1848777&r2=1848778&view=diff ============================================================================== --- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/visitor/DebugInfoCollectorVisitor.java (original) +++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/visitor/DebugInfoCollectorVisitor.java Wed Dec 12 16:55:03 2018 @@ -168,6 +168,7 @@ public class DebugInfoCollectorVisitor i DebugScriptApply debugScriptApply = debugFactory.createDebugScriptApply(rootApply, stream, false, withMatches, timeInfo); + debugScriptApply.setTimestamp(System.currentTimeMillis()); debugScriptApply.addToIndexes(); } } Modified: uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/ExplainConstants.java URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/ExplainConstants.java?rev=1848778&r1=1848777&r2=1848778&view=diff ============================================================================== --- uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/ExplainConstants.java (original) +++ uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/ExplainConstants.java Wed Dec 12 16:55:03 2018 @@ -69,8 +69,10 @@ public class ExplainConstants { public static final String RULE_ANCHOR = "ruleAnchor"; public static final String TIME = "time"; - + + public static final String TIME_STAMP = "timestamp"; + public static final String ID = "id"; - + public static final String SCRIPT = "script"; } Modified: uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/tree/ExplainTree.java URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/tree/ExplainTree.java?rev=1848778&r1=1848777&r2=1848778&view=diff ============================================================================== --- uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/tree/ExplainTree.java (original) +++ uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/tree/ExplainTree.java Wed Dec 12 16:55:03 2018 @@ -20,16 +20,18 @@ package org.apache.uima.ruta.explain.tree; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; import org.apache.uima.cas.ArrayFS; import org.apache.uima.cas.CAS; -import org.apache.uima.cas.FSIterator; import org.apache.uima.cas.Feature; import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.text.AnnotationFS; +import org.apache.uima.fit.util.CasUtil; import org.apache.uima.ruta.explain.ExplainConstants; public class ExplainTree { @@ -73,7 +75,7 @@ public class ExplainTree { private void createTree(CAS cas, int offset, boolean onlyRules) { TypeSystem ts = cas.getTypeSystem(); - Type scriptApply = ts.getType(ExplainConstants.SCRIPT_APPLY_TYPE); + Type scriptApplyType = ts.getType(ExplainConstants.SCRIPT_APPLY_TYPE); blockApplyType = ts.getType(ExplainConstants.BLOCK_APPLY_TYPE); ruleApplyType = ts.getType(ExplainConstants.RULE_APPLY_TYPE); @@ -84,20 +86,32 @@ public class ExplainTree { ruleElementMatchesType = ts.getType(ExplainConstants.RULE_ELEMENT_MATCHES_TYPE); evaluatedConditionType = ts.getType(ExplainConstants.EVAL_CONDITION_TYPE); - if (scriptApply == null) + if (scriptApplyType == null) { return; - FSIterator<AnnotationFS> it = cas.getAnnotationIndex(scriptApply).iterator(); - root = new ApplyRootNode(null, ts); + } - if (it.isValid()) { - it.moveToFirst(); - while (it.isValid()) { - AnnotationFS fs = it.get(); - buildTree(fs, root, ts, offset, onlyRules); - it.moveToNext(); + List<AnnotationFS> scriptApplies = new ArrayList<>(CasUtil.select(cas, scriptApplyType)); + // sort by creation time + Collections.sort(scriptApplies, new Comparator<AnnotationFS>() { + + @Override + public int compare(AnnotationFS o1, AnnotationFS o2) { + Feature feature = o1.getType().getFeatureByBaseName(ExplainConstants.TIME_STAMP); + if (feature == null || !o1.getType().equals(o2.getType())) { + return o1.getType().getName().compareTo(o2.getType().getName()); + } + long l1 = o1.getLongValue(feature); + long l2 = o2.getLongValue(feature); + return Long.compare(l1, l2); } - } + }); + + root = new ApplyRootNode(null, ts); + for (AnnotationFS scriptApply : scriptApplies) { + + buildTree(scriptApply, root, ts, offset, onlyRules); + } } private void buildTree(FeatureStructure fs, IExplainTreeNode parent, TypeSystem ts, int offset, @@ -185,8 +199,8 @@ public class ExplainTree { } } - private void processRuleApply(AnnotationFS fs, IExplainTreeNode parent, TypeSystem ts, - int offset, boolean onlyRules) { + private void processRuleApply(AnnotationFS fs, IExplainTreeNode parent, TypeSystem ts, int offset, + boolean onlyRules) { if (offset >= 0 && (fs.getBegin() >= offset || fs.getEnd() <= offset)) { return; } @@ -225,8 +239,8 @@ public class ExplainTree { } } - private void processRuleMatch(AnnotationFS fs, IExplainTreeNode parent, TypeSystem ts, - int offset, boolean onlyRules) { + private void processRuleMatch(AnnotationFS fs, IExplainTreeNode parent, TypeSystem ts, int offset, + boolean onlyRules) { if (offset >= 0 && (fs.getBegin() >= offset || fs.getEnd() <= offset)) { return; } @@ -305,7 +319,7 @@ public class ExplainTree { } private void prune(IExplainTreeNode node) { - if(node == null) { + if (node == null) { return; } List<IExplainTreeNode> children = node.getChildren(); Modified: uima/ruta/trunk/ruta-typesystem/src/main/resources/org/apache/uima/ruta/engine/RutaInternalTypeSystem.xml URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-typesystem/src/main/resources/org/apache/uima/ruta/engine/RutaInternalTypeSystem.xml?rev=1848778&r1=1848777&r2=1848778&view=diff ============================================================================== --- uima/ruta/trunk/ruta-typesystem/src/main/resources/org/apache/uima/ruta/engine/RutaInternalTypeSystem.xml (original) +++ uima/ruta/trunk/ruta-typesystem/src/main/resources/org/apache/uima/ruta/engine/RutaInternalTypeSystem.xml Wed Dec 12 16:55:03 2018 @@ -113,6 +113,11 @@ <description/> <rangeTypeName>uima.cas.String</rangeTypeName> </featureDescription> + <featureDescription> + <name>timestamp</name> + <description/> + <rangeTypeName>uima.cas.Long</rangeTypeName> + </featureDescription> </features> </typeDescription> <typeDescription>