Author: pkluegl
Date: Fri Aug 26 12:14:00 2016
New Revision: 1757828

URL: http://svn.apache.org/viewvc?rev=1757828&view=rev
Log:
no jira - some refactoring preparing lazy tree nodes

Modified:
    
uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/tree/ExplainAbstractTreeNode.java
    
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/AbstractTreeNode.java
    
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/AnnotationTreeNode.java
    
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/AnnotationTreeViewPage.java
    
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/FSFeatureTreeNode.java
    
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/FSTreeNode.java
    
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/IRootTreeNode.java
    
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeOrderedRootTreeNode.java
    
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeTreeNode.java

Modified: 
uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/tree/ExplainAbstractTreeNode.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/tree/ExplainAbstractTreeNode.java?rev=1757828&r1=1757827&r2=1757828&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/tree/ExplainAbstractTreeNode.java
 (original)
+++ 
uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/explain/tree/ExplainAbstractTreeNode.java
 Fri Aug 26 12:14:00 2016
@@ -80,6 +80,7 @@ public abstract class ExplainAbstractTre
     return fs.toString();
   }
 
+  @SuppressWarnings({ "unchecked", "rawtypes" })
   public Object getAdapter(Class adapter) {
 
     if (FeatureStructure.class.equals(adapter)) {

Modified: 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/AbstractTreeNode.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/AbstractTreeNode.java?rev=1757828&r1=1757827&r2=1757828&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/AbstractTreeNode.java
 (original)
+++ 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/AbstractTreeNode.java
 Fri Aug 26 12:14:00 2016
@@ -22,32 +22,45 @@ package org.apache.uima.ruta.caseditor.v
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.List;
+
+import org.apache.uima.cas.CAS;
 
 public abstract class AbstractTreeNode implements ITreeNode {
 
+  private static final ITreeNode[] emptyArray = new ITreeNode[0];
+
   private ITreeNode parent;
 
-  private ArrayList<ITreeNode> children;
+  protected List<ITreeNode> children;
 
-  public AbstractTreeNode() {
-    this(null);
+  /**
+   * not used yet, may be null
+   */
+  protected final CAS cas;
+
+  public AbstractTreeNode(CAS cas) {
+    this(cas, null);
   }
 
-  public AbstractTreeNode(ITreeNode parent) {
+  public AbstractTreeNode(CAS cas, ITreeNode parent) {
     this.parent = parent;
-    children = new ArrayList<ITreeNode>();
+    this.cas = cas;
   }
 
   @Override
   public void addChild(ITreeNode child) {
+    if(children == null) {
+      children = new ArrayList<>();
+    }
     children.add(child);
   }
 
   @Override
   public ITreeNode[] getChildren() {
-    return children.toArray(new ITreeNode[] {});
+    return children.toArray(emptyArray);
   }
-
+  
   @Override
   public ITreeNode getParent() {
     return parent;
@@ -55,6 +68,9 @@ public abstract class AbstractTreeNode i
 
   @Override
   public boolean hasChildren() {
+    if(children == null) {
+      return false;
+    }
     return children.size() > 0;
   }
 

Modified: 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/AnnotationTreeNode.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/AnnotationTreeNode.java?rev=1757828&r1=1757827&r2=1757828&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/AnnotationTreeNode.java
 (original)
+++ 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/AnnotationTreeNode.java
 Fri Aug 26 12:14:00 2016
@@ -21,6 +21,7 @@ package org.apache.uima.ruta.caseditor.v
 
 import java.util.Stack;
 
+import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.FeatureStructure;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
@@ -29,12 +30,12 @@ import org.eclipse.core.runtime.IAdaptab
 public class AnnotationTreeNode extends FSTreeNode implements IAnnotationNode, 
IAdaptable {
 
 
-  public AnnotationTreeNode(ITreeNode parent, AnnotationFS annotation) {
-    super(parent, annotation);
+  public AnnotationTreeNode(CAS cas, ITreeNode parent, AnnotationFS 
annotation) {
+    super(cas, parent, annotation);
   }
   
-  public AnnotationTreeNode(ITreeNode parent, AnnotationFS annotation, 
Stack<Type> parentTypes) {
-    super(parent, annotation, parentTypes);
+  public AnnotationTreeNode(CAS cas, ITreeNode parent, AnnotationFS 
annotation, Stack<Type> parentTypes) {
+    super(cas, parent, annotation, parentTypes);
   }
 
   @Override

Modified: 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/AnnotationTreeViewPage.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/AnnotationTreeViewPage.java?rev=1757828&r1=1757827&r2=1757828&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/AnnotationTreeViewPage.java
 (original)
+++ 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/AnnotationTreeViewPage.java
 Fri Aug 26 12:14:00 2016
@@ -581,12 +581,12 @@ public class AnnotationTreeViewPage exte
   }
 
   public IRootTreeNode getTypeOrderedTree(int pos, String manualTypeFilter, 
String manualTextFilter) {
-    TypeOrderedRootTreeNode root = new TypeOrderedRootTreeNode();
+    CAS cas = editor.getDocument().getCAS();
+    TypeOrderedRootTreeNode root = new TypeOrderedRootTreeNode(cas);
     IPreferenceStore preferenceStore = 
RutaCasEditorPlugin.getDefault().getPreferenceStore();
     boolean withParents = preferenceStore
             .getBoolean(CasEditorViewsPreferenceConstants.SHOW_PARENT_TYPES);
     if (isTreeWithTypesWithoutAnnotations()) {
-      CAS cas = editor.getDocument().getCAS();
       Type atype = cas.getAnnotationType();
       TypeSystem ts = cas.getTypeSystem();
       Iterator<Type> tit = ts.getProperlySubsumedTypes(atype).iterator();
@@ -595,7 +595,7 @@ public class AnnotationTreeViewPage exte
         boolean typeConstraint = StringUtils.isEmpty(manualTypeFilter)
                 || 
type.getName().toLowerCase().indexOf(manualTypeFilter.toLowerCase()) != -1;
         if (typeConstraint) {
-          root.getTreeNode(type); // register type
+          root.getTreeNode(type, cas); // register type
         }
       }
     }
@@ -610,7 +610,7 @@ public class AnnotationTreeViewPage exte
               || annotationFS.getCoveredText().toLowerCase()
                       .indexOf(manualTextFilter.toLowerCase()) != -1;
       if (offsetConstraint && typeConstraint && textConstraint) {
-        root.insertFS(annotationFS, withParents);
+        root.insertFS(annotationFS, cas, withParents);
       }
 
     }
@@ -654,7 +654,7 @@ public class AnnotationTreeViewPage exte
     Collection<Type> shownAnnotationTypes = editor.getShownAnnotationTypes();
     List<TypeTreeNode> nodes = toNodes(shownAnnotationTypes);
     getTreeViewer().setCheckedElements(nodes.toArray());
-    getTreeViewer().setGrayed(new TypeTreeNode(editor.getAnnotationMode()), 
true);
+    getTreeViewer().setGrayed(new TypeTreeNode(null, 
editor.getAnnotationMode()), true);
     // try to restore selection:
     if (selectedFS != null) {
       Type type = selectedFS.getType();
@@ -697,7 +697,7 @@ public class AnnotationTreeViewPage exte
 
   @Override
   public void annotationModeChanged(Type newMode) {
-    getTreeViewer().setGrayed(new TypeTreeNode(newMode), true);
+    getTreeViewer().setGrayed(new TypeTreeNode(null, newMode), true);
   }
 
   @Override
@@ -709,7 +709,7 @@ public class AnnotationTreeViewPage exte
   private List<TypeTreeNode> toNodes(Collection<Type> shownAnnotationTypes) {
     List<TypeTreeNode> nodes = new ArrayList<TypeTreeNode>();
     for (Type type : shownAnnotationTypes) {
-      nodes.add(new TypeTreeNode(type));
+      nodes.add(new TypeTreeNode(null, type));
     }
     return nodes;
   }

Modified: 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/FSFeatureTreeNode.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/FSFeatureTreeNode.java?rev=1757828&r1=1757827&r2=1757828&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/FSFeatureTreeNode.java
 (original)
+++ 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/FSFeatureTreeNode.java
 Fri Aug 26 12:14:00 2016
@@ -21,6 +21,7 @@ package org.apache.uima.ruta.caseditor.v
 
 import java.util.Stack;
 
+import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.Feature;
 import org.apache.uima.cas.FeatureStructure;
 import org.apache.uima.cas.Type;
@@ -31,14 +32,14 @@ public class FSFeatureTreeNode extends F
 
   private Feature feature;
 
-  public FSFeatureTreeNode(ITreeNode parent, Feature feature, FeatureStructure 
fs) {
-    super(parent, fs);
+  public FSFeatureTreeNode(CAS cas, ITreeNode parent, Feature feature, 
FeatureStructure fs) {
+    super(cas, parent, fs);
     this.feature = feature;
   }
 
-  public FSFeatureTreeNode(ITreeNode parent,Feature feature, FeatureStructure 
fs,
+  public FSFeatureTreeNode(CAS cas, ITreeNode parent,Feature feature, 
FeatureStructure fs,
           Stack<Type> parentTypes) {
-    super(parent, fs, parentTypes);
+    super(cas, parent, fs, parentTypes);
     this.feature = feature;
   }
 

Modified: 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/FSTreeNode.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/FSTreeNode.java?rev=1757828&r1=1757827&r2=1757828&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/FSTreeNode.java
 (original)
+++ 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/FSTreeNode.java
 Fri Aug 26 12:14:00 2016
@@ -25,6 +25,7 @@ import java.util.Stack;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.uima.cas.ArrayFS;
+import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.CommonArrayFS;
 import org.apache.uima.cas.Feature;
 import org.apache.uima.cas.FeatureStructure;
@@ -36,16 +37,16 @@ public class FSTreeNode extends Abstract
 
   protected FeatureStructure fs;
 
-  public FSTreeNode(ITreeNode parent, FeatureStructure annotation) {
-    this(parent, annotation, new Stack<Type>());
+  public FSTreeNode(CAS cas, ITreeNode parent, FeatureStructure annotation) {
+    this(cas, parent, annotation, new Stack<Type>());
   }
 
-  public FSTreeNode(ITreeNode parent, FeatureStructure annotation, Stack<Type> 
parentTypes) {
-    super(parent);
+  public FSTreeNode(CAS cas, ITreeNode parent, FeatureStructure annotation, 
Stack<Type> parentTypes) {
+    super(cas, parent);
     this.fs = annotation;
     parentTypes.push(fs.getType());
     for (Feature f : annotation.getType().getFeatures()) {
-      addFeatures(this, f, annotation, parentTypes);
+      addFeatures(this, f, annotation, cas, parentTypes);
     }
     parentTypes.pop();
   }
@@ -60,7 +61,7 @@ public class FSTreeNode extends Abstract
     return fs.getType();
   }
 
-  public void addFeatures(ITreeNode parent, Feature f, FeatureStructure 
featureStructure,
+  public void addFeatures(ITreeNode parent, Feature f, FeatureStructure 
featureStructure, CAS cas,
           Stack<Type> parentTypes) {
     if (f.getRange().isArray()) {
       // handle all kinds of arrays
@@ -81,9 +82,9 @@ public class FSTreeNode extends Abstract
                 ITreeNode fsNode;
                 if (fs instanceof AnnotationFS) {
                   AnnotationFS faa = (AnnotationFS) fs;
-                  fsNode = new AnnotationTreeNode(arrayNode, faa, parentTypes);
+                  fsNode = new AnnotationTreeNode(cas, arrayNode, faa, 
parentTypes);
                 } else {
-                  fsNode = new TypeTreeNode(arrayNode, fsType);
+                  fsNode = new TypeTreeNode(cas, arrayNode, fsType);
                 }
                 arrayNode.addChild(fsNode);
               }
@@ -105,7 +106,7 @@ public class FSTreeNode extends Abstract
     } else if (f.getRange() instanceof Type) {
       FeatureStructure featureValue = featureStructure.getFeatureValue(f);
       if (featureValue instanceof AnnotationFS && 
expandable(featureValue.getType(), parentTypes)) {
-        parent.addChild(new FSFeatureTreeNode(this, f, featureValue, 
parentTypes));
+        parent.addChild(new FSFeatureTreeNode(cas, this, f, featureValue, 
parentTypes));
       }
     }
   }

Modified: 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/IRootTreeNode.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/IRootTreeNode.java?rev=1757828&r1=1757827&r2=1757828&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/IRootTreeNode.java
 (original)
+++ 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/IRootTreeNode.java
 Fri Aug 26 12:14:00 2016
@@ -19,11 +19,12 @@
 
 package org.apache.uima.ruta.caseditor.view.tree;
 
+import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.FeatureStructure;
 
 public interface IRootTreeNode extends ITreeNode {
 
-  public void insertFS(FeatureStructure annotation, boolean withParents);
+  public void insertFS(FeatureStructure annotation, CAS cas, boolean 
withParents);
 
   public void sort();
 }

Modified: 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeOrderedRootTreeNode.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeOrderedRootTreeNode.java?rev=1757828&r1=1757827&r2=1757828&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeOrderedRootTreeNode.java
 (original)
+++ 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeOrderedRootTreeNode.java
 Fri Aug 26 12:14:00 2016
@@ -23,6 +23,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Stack;
 
+import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.FeatureStructure;
 import org.apache.uima.cas.Type;
 import org.apache.uima.cas.text.AnnotationFS;
@@ -31,8 +32,8 @@ public class TypeOrderedRootTreeNode ext
 
   private Map<Type, TypeTreeNode> typeMap = new HashMap<Type, TypeTreeNode>();
 
-  public TypeOrderedRootTreeNode() {
-    super();
+  public TypeOrderedRootTreeNode(CAS cas) {
+    super(cas);
   }
 
   @Override
@@ -45,10 +46,10 @@ public class TypeOrderedRootTreeNode ext
     return null;
   }
 
-  public TypeTreeNode getTreeNode(Type type) {
+  public TypeTreeNode getTreeNode(Type type, CAS cas) {
     TypeTreeNode typeTreeNode = typeMap.get(type);
     if (typeTreeNode == null) {
-      typeTreeNode = new TypeTreeNode(this, type);
+      typeTreeNode = new TypeTreeNode(cas, this, type);
       typeMap.put(type, typeTreeNode);
       addChild(typeTreeNode);
     }
@@ -56,7 +57,7 @@ public class TypeOrderedRootTreeNode ext
   }
 
   @Override
-  public void insertFS(FeatureStructure fs, boolean withParents) {
+  public void insertFS(FeatureStructure fs, CAS cas, boolean withParents) {
     Type type = fs.getType();
     if (type.getShortName().equals("RutaBasic") || 
type.getShortName().equals("DebugBlockApply")
             || type.getShortName().equals("DebugMatchedRuleMatch")
@@ -66,27 +67,27 @@ public class TypeOrderedRootTreeNode ext
             || type.getShortName().equals("DebugRuleElementMatch")) {
       return;
     }
-    insertFS(fs, type, withParents);
+    insertFS(fs, type, cas, withParents);
   }
 
-  private void insertFS(FeatureStructure fs, Type type, boolean withParents) {
-    TypeTreeNode typeTreeNode = getTreeNode(type);
+  private void insertFS(FeatureStructure fs, Type type, CAS cas, boolean 
withParents) {
+    TypeTreeNode typeTreeNode = getTreeNode(type, cas);
 
     FSTreeNode node = createFSNode(typeTreeNode, fs);
     typeTreeNode.addChild(node);
     if (withParents) {
       Type parent = fs.getCAS().getTypeSystem().getParent(type);
       if (parent != null) {
-        insertFS(fs, parent, withParents);
+        insertFS(fs, parent, cas, withParents);
       }
     }
   }
 
   private FSTreeNode createFSNode(ITreeNode parent, FeatureStructure fs) {
     if (fs instanceof AnnotationFS) {
-      return new AnnotationTreeNode(parent, (AnnotationFS) fs, new 
Stack<Type>());
+      return new AnnotationTreeNode(cas, parent, (AnnotationFS) fs, new 
Stack<Type>());
     }
-    return new FSTreeNode(parent, fs);
+    return new FSTreeNode(cas, parent, fs);
   }
 
   @Override

Modified: 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeTreeNode.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeTreeNode.java?rev=1757828&r1=1757827&r2=1757828&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeTreeNode.java
 (original)
+++ 
uima/ruta/trunk/ruta-ep-caseditor/src/main/java/org/apache/uima/ruta/caseditor/view/tree/TypeTreeNode.java
 Fri Aug 26 12:14:00 2016
@@ -19,18 +19,19 @@
 
 package org.apache.uima.ruta.caseditor.view.tree;
 
+import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.Type;
 
 public class TypeTreeNode extends AbstractTreeNode {
 
   private Type type;
 
-  public TypeTreeNode(Type type) {
-    this(null, type);
+  public TypeTreeNode(CAS cas, Type type) {
+    this(cas, null, type);
   }
 
-  public TypeTreeNode(ITreeNode parent, Type type) {
-    super(parent);
+  public TypeTreeNode(CAS cas, ITreeNode parent, Type type) {
+    super(cas, parent);
     this.type = type;
   }
 


Reply via email to