Class BaseFeatureCollection<T extends FeatureType,F extends Feature>

Object
BaseFeatureCollection<T,F>
All Implemented Interfaces:
FeatureCollection<T,F>
Direct Known Subclasses:
BaseSimpleFeatureCollection, ProcessingCollection, WFSContentComplexFeatureCollection

public abstract class BaseFeatureCollection<T extends FeatureType,F extends Feature> extends Object implements FeatureCollection<T,F>
Implement a feature collection just based on provision of a FeatureIterator.

This implementation asks you to implement:

  • features()
  • This is the direct decentent of the origional AbstractFeatureCollection and represents the easiest way to package your content as a FeatureCollection.

    As this class provides no optimization, it is strongly recommended that you implement the following methods (which require a whole collection traversal):

    • size()
    • {@link #getBounds()</li>
Author:
Jody Garnett (LISAsoft)
  • Field Details

    • id

      protected String id
      id used when serialized to gml
    • schema

      protected T extends FeatureType schema
  • Constructor Details

    • BaseFeatureCollection

      protected BaseFeatureCollection()
    • BaseFeatureCollection

      protected BaseFeatureCollection(T schema)
    • BaseFeatureCollection

      protected BaseFeatureCollection(T schema, String id)
  • Method Details

    • getID

      public String getID()
      Description copied from interface: FeatureCollection
      ID used when serializing to GML
      Specified by:
      getID in interface FeatureCollection<T extends FeatureType,F extends Feature>
    • getSchema

      public T getSchema()
      Description copied from interface: FeatureCollection
      The schema for the child feature members of this collection.

      Represents the most general FeatureType in common to all the features in this collection.

      • For a collection backed by a shapefiles (or database tables) the FeatureType returned by getSchema() will complete describe each and every child in the collection.
      • For mixed content FeatureCollections you will need to check the FeatureType of each Feature as it is retrived from the collection
      • The degenerate case returns the "_Feature" FeatureType, where the only thing known is that the contents are Features.
      Specified by:
      getSchema in interface FeatureCollection<T extends FeatureType,F extends Feature>
      Returns:
      FeatureType describing the "common" schema to all child features of this collection
    • features

      public abstract FeatureIterator<F> features()
      Subclasses required to implement this method to traverse FeatureCollection contents.

      Note that FeatureIterator.close() is available to clean up after any resource use required during traversal.

      Specified by:
      features in interface FeatureCollection<T extends FeatureType,F extends Feature>
      Returns:
      A FeatureIterator.
    • contains

      public boolean contains(Object o)
      Returns true if this collection contains the specified element. .

      This implementation iterates over the elements in the collection, checking each element in turn for equality with the specified element.

      Specified by:
      contains in interface FeatureCollection<T extends FeatureType,F extends Feature>
      Parameters:
      o - object to be checked for containment in this collection.
      Returns:
      true if this collection contains the specified element.
      See Also:
    • containsAll

      public boolean containsAll(Collection<?> c)
      Returns true if this collection contains all of the elements in the specified collection.

      Specified by:
      containsAll in interface FeatureCollection<T extends FeatureType,F extends Feature>
      Parameters:
      c - collection to be checked for containment in this collection.
      Returns:
      true if this collection contains all of the elements in the specified collection.
      Throws:
      NullPointerException - if the specified collection is null.
      See Also:
    • isEmpty

      public boolean isEmpty()
      Description copied from interface: FeatureCollection
      Returns true if this feature collection contains no features.
      Specified by:
      isEmpty in interface FeatureCollection<T extends FeatureType,F extends Feature>
      Returns:
      true if this collection contains no elements.
    • toArray

      public Object[] toArray()
      Array of all the elements.
      Specified by:
      toArray in interface FeatureCollection<T extends FeatureType,F extends Feature>
      Returns:
      an array containing all of the elements in this collection.
      See Also:
    • toArray

      public <O> O[] toArray(O[] a)
      Specified by:
      toArray in interface FeatureCollection<T extends FeatureType,F extends Feature>
      See Also:
    • accepts

      public void accepts(FeatureVisitor visitor, ProgressListener progress) throws IOException
      Description copied from interface: FeatureCollection
      Visit the contents of a feature collection.

      The order of traversal is dependent on the FeatureCollection implementation; some collections are able to make efficient use of an internal index in order to quickly visit features located in the same region.

      Specified by:
      accepts in interface FeatureCollection<T extends FeatureType,F extends Feature>
      Parameters:
      visitor - Closure applied to each feature in turn.
      progress - Used to report progress, may be used to interrupt the operation
      Throws:
      IOException
    • subCollection

      public FeatureCollection<T,F> subCollection(Filter filter)
      Convenience implementation that just wraps this collection into a FilteringFeatureCollection. Subclasses might want to override this in case the filter can be cascaded to their data sources.
      Specified by:
      subCollection in interface FeatureCollection<T extends FeatureType,F extends Feature>
      Returns:
      SimpleFeatureCollection identified as subset.
      See Also:
      • FeatureList
    • sort

      public FeatureCollection<T,F> sort(SortBy order)
      Obtained sorted contents, only implemented for SimpleFeature at present.

      This method only supports SimpleFeature at present, consider use of FeatureSource.features( Query ).

      Specified by:
      sort in interface FeatureCollection<T extends FeatureType,F extends Feature>
      Parameters:
      order - Sort order
      Returns:
      FeatureCollection sorted in the indicated order
    • size

      public int size()
      Returns the number of elements in this collection.
      Specified by:
      size in interface FeatureCollection<T extends FeatureType,F extends Feature>
      Returns:
      Number of items, or Interger.MAX_VALUE
      See Also:
    • getBounds

      public ReferencedEnvelope getBounds()
      Full collection traversal to obtain bounds of FeatureCollection. Subclasees are strong encouraged to override this expensive method (even if just to implement caching).
      Specified by:
      getBounds in interface FeatureCollection<T extends FeatureType,F extends Feature>
      Returns:
      An Envelope containing the total bounds of this collection.