Class SelectFSs_impl.SelectFSIterator

    • Constructor Detail

      • SelectFSIterator

        private SelectFSIterator​(java.util.function.Supplier<LowLevelIterator<T>> aIteratorSupplier)
    • Method Detail

      • isValid

        public boolean isValid()
        Description copied from interface: FSIterator
        Check if this iterator is valid.
        Specified by:
        isValid in interface FSIterator<T extends FeatureStructure>
        Returns:
        true if the iterator is valid.
      • getNvc

        public T getNvc()
        Description copied from interface: FSIterator
        Get the structure the iterator is pointing at. Throws various unchecked exceptions, if the iterator is not valid
        Specified by:
        getNvc in interface FSIterator<T extends FeatureStructure>
        Returns:
        The structure the iterator is pointing at.
      • moveToNextNvc

        public void moveToNextNvc()
        Description copied from interface: FSIterator
        version of moveToNext which bypasses the isValid check - call only if you've just done this check yourself
        Specified by:
        moveToNextNvc in interface FSIterator<T extends FeatureStructure>
      • moveToPreviousNvc

        public void moveToPreviousNvc()
        Description copied from interface: FSIterator
        version of moveToPrevious which bypasses the isValid check - call only if you've just done this check yourself
        Specified by:
        moveToPreviousNvc in interface FSIterator<T extends FeatureStructure>
      • moveTo

        public void moveTo​(FeatureStructure aFs)
        Description copied from interface: FSIterator
        Move the iterator to the first Feature Structure that matches the fs. First means the earliest one occurring in the index, in case multiple FSs matching the fs are in the index. If no such feature structure exists in the underlying collection, and the iterator is over a sorted index, set the iterator to the "insertion point" for fs, i.e., to a point where the current feature structure compares greater than fs, and the previous one compares less than fs, using this sorted index's comparator.

        If the fs is greater than all of the entries in the index, the moveTo cannot set the iterator to an insertion point where the current feature structure is greater than fs, so it marks the iterator "invalid".

        If the underlying index is a set or bag index, or an unordered form of iteration is configured (for example using the select API, no ordering is present, and the moveTo operation moves to a matching item, if one exists. The match is done using the index's comparator. If none exist, the index is left if possible in some valid (but non-matching) position.

        When the iterator is over a sorted index whose keys include the typeOrder key, this can cause unexpected operation, depending on type priorities. For example, consider the Annotation Index, which includes this key. If there are many indexed instances of the type "Foo" with the same begin and end, and a moveTo operation is specified using an Annotation instance with the same begin and end, then the Foo elements might or might not be seen going forwards, depending on the relative type priorities of "Foo" and "Annotation".

        If you are not making use of typeOrdering, the "select" APIs can create iterators which will ignore the typeOrdering key when doing the moveTo operation, which will result in all the instances of type "Foo" being seen going forwards, independent of the type priorities. See the select documentation in the version 3 users guide.

        Specified by:
        moveTo in interface FSIterator<T extends FeatureStructure>
        Specified by:
        moveTo in interface LowLevelIterator<T extends FeatureStructure>
        Parameters:
        aFs - The feature structure the iterator that supplies the comparison information. It doesn't need to be in the index; it is just being used as a comparison template. It can be a supertype of T as long as it can supply the keys needed. A typical example is a subtype of Annotation, and using an annotation instance to specify the begin / end.
      • ll_indexSizeMaybeNotCurrent

        public int ll_indexSizeMaybeNotCurrent()
        Specified by:
        ll_indexSizeMaybeNotCurrent in interface LowLevelIterator<T extends FeatureStructure>
        Returns:
        The size of the index. In case of copy-on-write, this returns the size of the index at the time the iterator was created, or at the last moveTo, moveToFirst, or moveToLast. To get the current index size, use ll_getIndex().getSize()
      • isIndexesHaveBeenUpdated

        public boolean isIndexesHaveBeenUpdated()
        Specified by:
        isIndexesHaveBeenUpdated in interface LowLevelIterator<T extends FeatureStructure>
        Returns:
        true if one or more of the underlying indexes this iterator goes over, has been updated since initialization or resetting operation (moveToFirst/Last/feature_structure). This includes empty iterators becoming non-empty.
      • moveToNoReinit

        public void moveToNoReinit​(FeatureStructure aFs)
        Description copied from interface: LowLevelIterator
        Internal use same as moveTo(fs), but won't reset to use current contents of index if index has changed
        Specified by:
        moveToNoReinit in interface LowLevelIterator<T extends FeatureStructure>
        Parameters:
        aFs - the fs to use as the template identifying the place to move to
      • getComparator

        public java.util.Comparator<TOP> getComparator()
        Specified by:
        getComparator in interface LowLevelIterator<T extends FeatureStructure>
        Returns:
        the comparator used by this iterator. It is always a withoutID style, and may be either a withType or NoType style.