You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2018/07/17 21:22:38 UTC

svn commit: r1836134 - /uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/

Author: schor
Date: Tue Jul 17 21:22:38 2018
New Revision: 1836134

URL: http://svn.apache.org/viewvc?rev=1836134&view=rev
Log:
[UIMA-5833][UIMA-5835]

Modified:
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_backwards.java
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_limited.java
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_multiple_indexes.java
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted2.java
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator.java
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator_empty.java

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_backwards.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_backwards.java?rev=1836134&r1=1836133&r2=1836134&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_backwards.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_backwards.java Tue Jul 17 21:22:38 2018
@@ -140,4 +140,23 @@ class FsIterator_backwards<T extends Fea
     return it.getComparator();
   }
 
+  @Override
+  public int size() {
+    return it.size();
+  }
+
+  @Override
+  public FeatureStructure[] getArray() {
+    FeatureStructure[] a = it.getArray();
+    int len = a.length;
+    int len2 = len >> 1;
+    int len1 = len - 1;
+    for (int i = 0, i2 = len1; i < len2; i++, i2--) {
+      FeatureStructure t = a[i];
+      a[i] = a[i2];
+      a[i2] = t;
+    }
+    return a;
+  }
+
 }

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java?rev=1836134&r1=1836133&r2=1836134&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java Tue Jul 17 21:22:38 2018
@@ -184,6 +184,13 @@ class FsIterator_bag<T extends FeatureSt
   public Comparator<TOP> getComparator() {
     return null;  // not used for bag
   }
+
+  @Override
+  public FeatureStructure[] getArray() {
+    TOP[] a = new TOP[size()];
+    bag.copyToArray(a, 0);
+    return a;
+  }
   
 }
 

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_limited.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_limited.java?rev=1836134&r1=1836133&r2=1836134&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_limited.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_limited.java Tue Jul 17 21:22:38 2018
@@ -135,4 +135,20 @@ class FsIterator_limited<T extends Featu
     return iterator.getComparator();
   }
 
+  @Override
+  public int size() {
+    return Math.min(limit, iterator.size());
+  }
+
+  @Override
+  public FeatureStructure[] getArray() {
+    FeatureStructure[] a = iterator.getArray();
+    if (a.length > limit) {
+      FeatureStructure[] a2 = new FeatureStructure[limit];
+      System.arraycopy(a, 0, a2, 0, limit);
+      return a2;
+    }
+    return a;
+  }
+
 }

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_multiple_indexes.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_multiple_indexes.java?rev=1836134&r1=1836133&r2=1836134&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_multiple_indexes.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_multiple_indexes.java Tue Jul 17 21:22:38 2018
@@ -191,6 +191,18 @@ public abstract class FsIterator_multipl
                 ? main_idx 
                 : ((LowLevelIterator<T>)allIterators[0]).ll_getIndex());
   }  
-
   
+  @Override
+  public FeatureStructure[] getArray() {
+    FeatureStructure[] a = new FeatureStructure[size()];
+    int destPos = 0;
+    for (LowLevelIterator<T> it : nonEmptyIterators) {
+      FeatureStructure[] p = it.getArray();
+      System.arraycopy(p, 0, a, destPos, p.length);
+      destPos += p.length;
+    }
+    return a;
+  }
+
+
 }

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted2.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted2.java?rev=1836134&r1=1836133&r2=1836134&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted2.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted2.java Tue Jul 17 21:22:38 2018
@@ -299,6 +299,13 @@ class FsIterator_set_sorted2<T extends F
     return this.ll_getIndex().isSorted();
   }
 
+  @Override
+  public FeatureStructure[] getArray() {
+    TOP[] a = new TOP[size()];
+    this.ofsa.copyToArray(a, 0);
+    return a;
+  }
+
 //  @Override
 //  protected int getModificationCountFromIndex() {
 //    return ofsa.getModificationCount();

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java?rev=1836134&r1=1836133&r2=1836134&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java Tue Jul 17 21:22:38 2018
@@ -259,6 +259,12 @@ public class FsIterator_subtypes_snapsho
   @Override
   public Comparator<TOP> getComparator() {
     return comparatorMaybeNoTypeWithoutId;
+  }
+
+
+  @Override
+  public FeatureStructure[] getArray() {
+    return snapshot;
   }  
-  
+ 
 }

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator.java?rev=1836134&r1=1836133&r2=1836134&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator.java Tue Jul 17 21:22:38 2018
@@ -25,7 +25,6 @@ import java.util.NoSuchElementException;
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.FeatureStructure;
-import org.apache.uima.internal.util.Misc;
 import org.apache.uima.jcas.cas.TOP;
 
 /**
@@ -161,7 +160,7 @@ public interface LowLevelIterator<T exte
   /**
    * an empty iterator
    */
-  static final LowLevelIterator<FeatureStructure> FS_ITERATOR_LOW_LEVEL_EMPTY = new LowLevelIterator_empty();
+  static final LowLevelIterator<FeatureStructure> FS_ITERATOR_LOW_LEVEL_EMPTY = new LowLevelIterator_empty<FeatureStructure>();
   
   /**
    * Internal use constants
@@ -172,4 +171,13 @@ public interface LowLevelIterator<T exte
    * @return false if this iterator is over an unordered collection or set or bag
    */
   default boolean isMoveToSupported() { return false; }
+
+  /**
+   * @return an array representing the collection of items the iterator would return
+   */
+  default FeatureStructure[] getArray() { 
+    throw new UnsupportedOperationException();
+  }
+  
+
 }

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator_empty.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator_empty.java?rev=1836134&r1=1836133&r2=1836134&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator_empty.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator_empty.java Tue Jul 17 21:22:38 2018
@@ -29,6 +29,8 @@ import org.apache.uima.jcas.cas.TOP;
  * An empty Low-level FS iterator
  */
 public class LowLevelIterator_empty<T extends FeatureStructure> implements LowLevelIterator<T> {
+  
+  private final static FeatureStructure[] EMPTY_ARRAY = new FeatureStructure[0];
 
   @Override
   public boolean isValid() { return false; }
@@ -59,4 +61,6 @@ public class LowLevelIterator_empty<T ex
   public boolean maybeReinitIterator() { return false; }
   @Override
   public Comparator<TOP> getComparator() { return null; }
+  @Override
+  public FeatureStructure[] getArray() { return EMPTY_ARRAY; }
 }