org.geotools.caching.grid.featurecache.readers
Class GridCachingFeatureCollection

java.lang.Object
  extended by org.geotools.caching.grid.featurecache.readers.GridCachingFeatureCollection
All Implemented Interfaces:
FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>

public class GridCachingFeatureCollection
extends java.lang.Object
implements FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>

Feature collection that reads features from two sources, a cache and a feature source.

Responsible for reading features & caching features from the feature source.

This is a read only feature collection.

Author:
Emily

Constructor Summary
GridCachingFeatureCollection(org.opengis.filter.spatial.BBOX preFilter, org.opengis.filter.Filter postFilter, GridFeatureCache g, FeatureSource<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature> fs, boolean cacheFeatures)
          Creates a feature collection that will first read items from the cache then read any missing items from the feature source.
GridCachingFeatureCollection(org.opengis.filter.spatial.BBOX preFilter, Query query, GridFeatureCache g, FeatureSource<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature> fs, boolean cacheFeatures)
          Creates a feature collection that will first read itmes from the cache and then read missing items from the feature source.
GridCachingFeatureCollection(com.vividsolutions.jts.geom.Envelope e, GridFeatureCache g)
          Creates a feature collection that will only read items from the cache.
 
Method Summary
 void accepts(org.opengis.feature.FeatureVisitor visitor, org.opengis.util.ProgressListener progress)
          Visits all features in the collection.
 boolean add(org.opengis.feature.simple.SimpleFeature obj)
          Add object to this collection.
 boolean addAll(java.util.Collection<? extends org.opengis.feature.simple.SimpleFeature> collection)
          Add all the objects to the collection.
 boolean addAll(FeatureCollection<? extends org.opengis.feature.simple.SimpleFeatureType,? extends org.opengis.feature.simple.SimpleFeature> resource)
           
 void addListener(CollectionListener listener)
          Adds a listener for collection events.
 void clear()
           
 void close(FeatureIterator<org.opengis.feature.simple.SimpleFeature> close)
          Closes the feature iterator
 void close(java.util.Iterator<org.opengis.feature.simple.SimpleFeature> close)
          Close the iterator
 boolean contains(java.lang.Object o)
          Determines if the feature collection contains the given object.
 boolean containsAll(java.util.Collection<?> c)
          Determines if the feature collection contains all objects in the collection
 FeatureIterator<org.opengis.feature.simple.SimpleFeature> features()
          Obtain a FeatureIterator of the Features within this collection.
 ReferencedEnvelope getBounds()
          Get the total bounds of this collection which is calculated by doing a union of the bounds of each feature inside of it
 java.lang.String getID()
          ID used when serializing to GML
 org.opengis.feature.simple.SimpleFeatureType getSchema()
          The schema for the child features of this collection.
 boolean isEmpty()
           
 java.util.Iterator<org.opengis.feature.simple.SimpleFeature> iterator()
          An iterator over this collection, which must be closed after use.
 void purge()
          Close any outstanding resources released by this resources.
 boolean remove(java.lang.Object o)
           
 boolean removeAll(java.util.Collection<?> c)
           
 void removeListener(CollectionListener listener)
          Removes a listener for collection events.
 boolean retainAll(java.util.Collection<?> c)
           
 int size()
          Determines the size of the feature collection
 FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature> sort(org.opengis.filter.sort.SortBy order)
          collection.subCollection( myFilter ).sort( {"foo","bar"} ); collection.subCollection( myFilter ).sort( "bar" ).sort("foo")
 FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature> subCollection(org.opengis.filter.Filter filter)
          FeatureCollection "view" indicated by provided filter.
 java.lang.Object[] toArray()
           
<O> O[]
toArray(O[] a)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GridCachingFeatureCollection

public GridCachingFeatureCollection(org.opengis.filter.spatial.BBOX preFilter,
                                    org.opengis.filter.Filter postFilter,
                                    GridFeatureCache g,
                                    FeatureSource<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature> fs,
                                    boolean cacheFeatures)
Creates a feature collection that will first read items from the cache then read any missing items from the feature source.

Parameters:
preFilter - the bounding filter of the request
postFilter - the complete request filter
g -
fs -
cacheFeatures -

GridCachingFeatureCollection

public GridCachingFeatureCollection(org.opengis.filter.spatial.BBOX preFilter,
                                    Query query,
                                    GridFeatureCache g,
                                    FeatureSource<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature> fs,
                                    boolean cacheFeatures)
                             throws java.io.IOException
Creates a feature collection that will first read itmes from the cache and then read missing items from the feature source.

Parameters:
preFilter - the bounding filter of the request
query - the query
g -
fs -
cacheFeatures -
Throws:
java.io.IOException

GridCachingFeatureCollection

public GridCachingFeatureCollection(com.vividsolutions.jts.geom.Envelope e,
                                    GridFeatureCache g)
Creates a feature collection that will only read items from the cache.

Parameters:
e -
g -
Method Detail

accepts

public void accepts(org.opengis.feature.FeatureVisitor visitor,
                    org.opengis.util.ProgressListener progress)
             throws java.io.IOException
Visits all features in the collection.

Specified by:
accepts in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Parameters:
visitor - Closure applied to each feature in turn.
progress - Used to report progress, may be used to interrupt the operation
Throws:
java.io.IOException

close

public void close(FeatureIterator<org.opengis.feature.simple.SimpleFeature> close)
Closes the feature iterator

Specified by:
close in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>

close

public void close(java.util.Iterator<org.opengis.feature.simple.SimpleFeature> close)
Close the iterator

Specified by:
close in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>

contains

public boolean contains(java.lang.Object o)
Determines if the feature collection contains the given object.

Specified by:
contains in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
See Also:
Collection.contains(Object)

containsAll

public boolean containsAll(java.util.Collection<?> c)
Determines if the feature collection contains all objects in the collection

Specified by:
containsAll in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
See Also:
Collection.containsAll(Collection)

features

public FeatureIterator<org.opengis.feature.simple.SimpleFeature> features()
Description copied from interface: FeatureCollection
Obtain a FeatureIterator of the Features within this collection.

The implementation of Collection must adhere to the rules of fail-fast concurrent modification. In addition (to allow for resource backed collections, the close( Iterator ) method must be called.

This is almost equivalent to:

  • a Type-Safe call to: getAttribute(getFeatureType().getAttributeType(0).getName()).iterator();.
  • A Java 5:Iterator<Feature>

Example (safe) use:

 FeatureIterator iterator=collection.features();
 try {
     while( iterator.hasNext()  ){
          Feature feature = iterator.next();
          System.out.println( feature.getID() );
     }
 }
 finally {
     collection.close( iterator );
 }
 

GML Note: The contents of this iterator are considered to be defined by featureMember tags (and/or the single allowed FeatureMembers tag). Please see getFeatureType for more details.

Specified by:
features in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Returns:
A FeatureIterator.

getBounds

public ReferencedEnvelope getBounds()
Description copied from interface: FeatureCollection
Get the total bounds of this collection which is calculated by doing a union of the bounds of each feature inside of it

Specified by:
getBounds in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Returns:
An Envelope containing the total bounds of this collection.
Throws:
java.lang.UnsupportedOperationException

getID

public java.lang.String getID()
Description copied from interface: FeatureCollection
ID used when serializing to GML

Specified by:
getID in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>

getSchema

public org.opengis.feature.simple.SimpleFeatureType getSchema()
Description copied from interface: FeatureCollection
The schema for the child features of this collection.

There is a difference between getFeatureType() and getSchema()represents the LCD FeatureType that best represents the contents of this collection.

The method getSchema() is named for compatability with the geotools 2.0 API. In the Geotools 2.2 time frame we should be able to replace this method with a careful check of getFeatureType() and its attributes.

Specified by:
getSchema in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Returns:
FeatureType describing the "common" schema to all child features of this collection

iterator

public java.util.Iterator<org.opengis.feature.simple.SimpleFeature> iterator()
Description copied from interface: FeatureCollection
An iterator over this collection, which must be closed after use.

Collection is not guaranteed to be ordered in any manner.

The implementation of Collection must adhere to the rules of fail-fast concurrent modification. In addition (to allow for resource backed collections, the close( Iterator ) method must be called.

Example (safe) use:

 Iterator iterator = collection.iterator();
 try {
     while( iterator.hasNext();){
          Feature feature = (Feature) iterator.hasNext();
          System.out.println( feature.getID() );
     }
 }
 finally {
     collection.close( iterator );
 }
 

Specified by:
iterator in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Returns:
Iterator

toArray

public java.lang.Object[] toArray()
Specified by:
toArray in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Throws:
java.lang.UnsupportedOperationException
See Also:
Collection.toArray()

toArray

public <O> O[] toArray(O[] a)
Specified by:
toArray in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Throws:
java.lang.UnsupportedOperationException
See Also:
Collection.toArray(Object[])

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Throws:
java.lang.UnsupportedOperationException
See Also:
Collection.isEmpty()

size

public int size()
Determines the size of the feature collection

Specified by:
size in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
See Also:
Collection.size()

removeListener

public void removeListener(CollectionListener listener)
                    throws java.lang.NullPointerException
Description copied from interface: FeatureCollection
Removes a listener for collection events.

Specified by:
removeListener in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Parameters:
listener - The listener to remove
Throws:
java.lang.NullPointerException - If the listener is null.

addListener

public void addListener(CollectionListener listener)
                 throws java.lang.NullPointerException
Description copied from interface: FeatureCollection
Adds a listener for collection events.

When this collection is backed by live data the event notification will follow the guidelines outlined by FeatureListner.

Specified by:
addListener in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Parameters:
listener - The listener to add
Throws:
java.lang.NullPointerException - If the listener is null.

purge

public void purge()
Description copied from interface: FeatureCollection
Close any outstanding resources released by this resources.

This method should be used with great caution, it is however available to allow the use of the ResourceCollection with algorthims that are unaware of the need to close iterators after use.

Example of using a normal Collections utility method:


 Collections.sort( collection );
 collection.purge();
 

Specified by:
purge in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Throws:
java.lang.UnsupportedOperationException

remove

public boolean remove(java.lang.Object o)
Specified by:
remove in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Throws:
java.lang.UnsupportedOperationException
See Also:
Collection.remove(Object)

removeAll

public boolean removeAll(java.util.Collection<?> c)
Specified by:
removeAll in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Throws:
java.lang.UnsupportedOperationException
See Also:
Collection.removeAll(Collection)

retainAll

public boolean retainAll(java.util.Collection<?> c)
Specified by:
retainAll in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Throws:
java.lang.UnsupportedOperationException
See Also:
Collection.retainAll(Collection)

subCollection

public FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature> subCollection(org.opengis.filter.Filter filter)
Description copied from interface: FeatureCollection
FeatureCollection "view" indicated by provided filter.

The contents of the returned FeatureCollection are determined by applying the provider Filter to the entire contents of this FeatureCollection. The result is "live" and modifications will be shared.

This method is used cut down on the number of filter based methods required for a useful FeatureCollection construct. The FeatureCollections returned really should be considered as a temporary "view" used to control the range of a removeAll, or modify operation.

Example Use:


 collection.subCollection( filter ).clear();
 
The above recommended use is agreement with the Collections API precident of List.subList( start, end ).

The results of subCollection:

  • are to be considered unordered
  • may be an ordered FeatureList if requested when sortBy is indicated

Specified by:
subCollection in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Returns:
FeatureCollection identified as subset.
Throws:
java.lang.UnsupportedOperationException
See Also:
FeatureList

sort

public FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature> sort(org.opengis.filter.sort.SortBy order)
Description copied from interface: FeatureCollection
collection.subCollection( myFilter ).sort( {"foo","bar"} ); collection.subCollection( myFilter ).sort( "bar" ).sort("foo")

Specified by:
sort in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Returns:
FeatureCollection sorted in the indicated order
Throws:
java.lang.UnsupportedOperationException

add

public boolean add(org.opengis.feature.simple.SimpleFeature obj)
Description copied from interface: FeatureCollection
Add object to this collection.

This method is often not impelmented for collections produced as the result of a query.

Specified by:
add in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Returns:
true of the element was added
Throws:
java.lang.UnsupportedOperationException
See Also:
Collection.add(Object)

addAll

public boolean addAll(java.util.Collection<? extends org.opengis.feature.simple.SimpleFeature> collection)
Description copied from interface: FeatureCollection
Add all the objects to the collection.

This method is often not implemented for collections produced as the results of a query.

Specified by:
addAll in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Throws:
java.lang.UnsupportedOperationException
See Also:
Collection.addAll(Collection)

addAll

public boolean addAll(FeatureCollection<? extends org.opengis.feature.simple.SimpleFeatureType,? extends org.opengis.feature.simple.SimpleFeature> resource)
Specified by:
addAll in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Throws:
java.lang.UnsupportedOperationException
See Also:
FeatureCollection.addAll(Collection)

clear

public void clear()
Specified by:
clear in interface FeatureCollection<org.opengis.feature.simple.SimpleFeatureType,org.opengis.feature.simple.SimpleFeature>
Throws:
java.lang.UnsupportedOperationException
See Also:
Collection.clear()


Copyright © 1996-2010 Geotools. All Rights Reserved.