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>


Reply via email to