org.geotools.data.store
Class ContentFeatureCollection

Object
  extended by ContentFeatureCollection
All Implemented Interfaces:
FeatureCollection<SimpleFeatureType,SimpleFeature>

public class ContentFeatureCollection
extends Object
implements FeatureCollection<SimpleFeatureType,SimpleFeature>

A FeatureCollection that completly delegates to a backing FetaureSource.

Author:
Jody Garnett (Refractions Research, Inc.)

Nested Class Summary
static class ContentFeatureCollection.WrappingFeatureIterator
           
static class ContentFeatureCollection.WrappingIterator
           
 
Field Summary
protected  ContentFeatureSource featureSource
          feature store the collection originated from.
protected  SimpleFeatureType featureType
          feature (possibly retyped from feautre source original) type
protected  List listeners
          Internal listener storage list
protected  Set open
          Set of open resource iterators
protected  Query query
           
protected  ContentState state
          state of the feature source
 
Constructor Summary
protected ContentFeatureCollection(ContentFeatureSource featureSource, Query query)
           
 
Method Summary
 void accepts(FeatureVisitor visitor, ProgressListener progress)
          Accepts a visitor, which then visits each feature in the collection.
 void accepts(FeatureVisitor visitor, ProgressListener progress)
          Visit the contents of a feature collection.
 boolean add(SimpleFeature o)
          Add object to this collection.
 boolean addAll(Collection c)
          Add all the objects to the collection.
 boolean addAll(FeatureCollection c)
           
 void addListener(CollectionListener listener)
          Adds a listener for collection events.
 void clear()
           
 void close(FeatureIterator<SimpleFeature> iterator)
          Clean up after any resources associated with this FeatureIterator in a manner similar to JDO collections.
 void close(Iterator close)
          Clean up after any resources associated with this itterator in a manner similar to JDO collections.
 boolean contains(Object o)
           
 boolean containsAll(Collection collection)
           
 FeatureIterator<SimpleFeature> features()
          Obtain a FeatureIterator of the Features within this collection.
 Object getAttribute(int indedx)
           
 Object getAttribute(Name name)
           
 Object getAttribute(String name)
           
 int getAttributeCount()
           
 List<Object> getAttributes()
           
 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
 Object getDefaultGeometry()
           
 GeometryAttribute getDefaultGeometryProperty()
           
 AttributeDescriptor getDescriptor()
           
 SimpleFeatureType getFeatureType()
           
 String getID()
          ID used when serializing to GML
 FeatureId getIdentifier()
           
 Name getName()
           
 Collection<Property> getProperties()
           
 Collection<Property> getProperties(Name name)
           
 Collection<Property> getProperties(String name)
           
 Property getProperty(Name name)
           
 Property getProperty(String name)
           
 SimpleFeatureType getSchema()
          The schema for the child features of this collection.
 SimpleFeatureType getType()
           
 Map<Object,Object> getUserData()
           
 Collection<? extends Property> getValue()
           
 boolean isEmpty()
           
 boolean isNillable()
           
 Iterator iterator()
          An iterator over this collection, which must be closed after use.
 void purge()
          Close any outstanding resources released by this resources.
 boolean remove(Object o)
           
 boolean removeAll(Collection collection)
           
 void removeListener(CollectionListener listener)
          Removes a listener for collection events.
 boolean retainAll(Collection collection)
           
 void setAttribute(int index, Object value)
           
 void setAttribute(Name name, Object value)
           
 void setAttribute(String name, Object value)
           
 void setAttributes(List<Object> attributes)
           
 void setAttributes(Object[] attributes)
           
 void setDefaultGeometry(Object defaultGeometry)
           
 void setDefaultGeometryProperty(GeometryAttribute defaultGeometryProperty)
           
 void setValue(Collection<Property> value)
           
 void setValue(Object value)
           
 int size()
           
 FeatureCollection<SimpleFeatureType,SimpleFeature> sort(SortBy order)
           
 FeatureCollection<SimpleFeatureType,SimpleFeature> sort(SortBy sort)
          collection.subCollection( myFilter ).sort( {"foo","bar"} ); collection.subCollection( myFilter ).sort( "bar" ).sort("foo")
 FeatureCollection<SimpleFeatureType,SimpleFeature> subCollection(Filter filter)
          FeatureCollection "view" indicated by provided filter.
 Object[] toArray()
           
 Object[] toArray(Object[] array)
           
 void validate()
           
 
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

featureSource

protected ContentFeatureSource featureSource
feature store the collection originated from.


query

protected Query query

featureType

protected SimpleFeatureType featureType
feature (possibly retyped from feautre source original) type


state

protected ContentState state
state of the feature source


listeners

protected List listeners
Internal listener storage list


open

protected final Set open
Set of open resource iterators

Constructor Detail

ContentFeatureCollection

protected ContentFeatureCollection(ContentFeatureSource featureSource,
                                   Query query)
Method Detail

getSchema

public 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<SimpleFeatureType,SimpleFeature>
Returns:
FeatureType describing the "common" schema to all child features of this collection

accepts

public void accepts(FeatureVisitor visitor,
                    ProgressListener progress)
             throws IOException
Accepts a visitor, which then visits each feature in the collection.

Throws:
IOException

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<SimpleFeatureType,SimpleFeature>
Parameters:
visitor - Closure applied to each feature in turn.
progress - Used to report progress, may be used to interrupt the operation
Throws:
IOException

addListener

public void addListener(CollectionListener listener)
Adds a listener for collection events.

Specified by:
addListener in interface FeatureCollection<SimpleFeatureType,SimpleFeature>
Parameters:
listener - The listener to add

removeListener

public void removeListener(CollectionListener listener)
Removes a listener for collection events.

Specified by:
removeListener in interface FeatureCollection<SimpleFeatureType,SimpleFeature>
Parameters:
listener - The listener to remove

features

public FeatureIterator<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<SimpleFeatureType,SimpleFeature>
Returns:
A FeatureIterator.

close

public void close(FeatureIterator<SimpleFeature> iterator)
Description copied from interface: FeatureCollection
Clean up after any resources associated with this FeatureIterator in a manner similar to JDO collections.

Example (safe) use:

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

Specified by:
close in interface FeatureCollection<SimpleFeatureType,SimpleFeature>

iterator

public Iterator 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<SimpleFeatureType,SimpleFeature>
Returns:
Iterator

close

public void close(Iterator close)
Description copied from interface: FeatureCollection
Clean up after any resources associated with this itterator in a manner similar to JDO collections.

Example (safe) use:

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

Specified by:
close in interface FeatureCollection<SimpleFeatureType,SimpleFeature>

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<SimpleFeatureType,SimpleFeature>
Returns:
An Envelope containing the total bounds of this collection.

size

public int size()
Specified by:
size in interface FeatureCollection<SimpleFeatureType,SimpleFeature>
See Also:
Collection.size()

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface FeatureCollection<SimpleFeatureType,SimpleFeature>
See Also:
Collection.isEmpty()

add

public boolean add(SimpleFeature o)
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<SimpleFeatureType,SimpleFeature>
Returns:
true of the element was added
See Also:
Collection.add(Object)

addAll

public boolean addAll(Collection c)
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<SimpleFeatureType,SimpleFeature>
See Also:
Collection.addAll(Collection)

addAll

public boolean addAll(FeatureCollection c)
Specified by:
addAll in interface FeatureCollection<SimpleFeatureType,SimpleFeature>
See Also:
FeatureCollection.addAll(Collection)

clear

public void clear()
Specified by:
clear in interface FeatureCollection<SimpleFeatureType,SimpleFeature>
See Also:
Collection.clear()

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<SimpleFeatureType,SimpleFeature>

sort

public FeatureCollection<SimpleFeatureType,SimpleFeature> sort(SortBy order)

sort

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

Specified by:
sort in interface FeatureCollection<SimpleFeatureType,SimpleFeature>
Returns:
FeatureCollection sorted in the indicated order

subCollection

public FeatureCollection<SimpleFeatureType,SimpleFeature> subCollection(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<SimpleFeatureType,SimpleFeature>
Returns:
FeatureCollection identified as subset.
See Also:
FeatureList

contains

public boolean contains(Object o)
Specified by:
contains in interface FeatureCollection<SimpleFeatureType,SimpleFeature>
See Also:
Collection.contains(Object)

containsAll

public boolean containsAll(Collection collection)
Specified by:
containsAll in interface FeatureCollection<SimpleFeatureType,SimpleFeature>
See Also:
Collection.containsAll(Collection)

remove

public boolean remove(Object o)
Specified by:
remove in interface FeatureCollection<SimpleFeatureType,SimpleFeature>
See Also:
Collection.remove(Object)

removeAll

public boolean removeAll(Collection collection)
Specified by:
removeAll in interface FeatureCollection<SimpleFeatureType,SimpleFeature>
See Also:
Collection.removeAll(Collection)

retainAll

public boolean retainAll(Collection collection)
Specified by:
retainAll in interface FeatureCollection<SimpleFeatureType,SimpleFeature>
See Also:
Collection.retainAll(Collection)

toArray

public Object[] toArray()
Specified by:
toArray in interface FeatureCollection<SimpleFeatureType,SimpleFeature>
See Also:
Collection.toArray()

toArray

public Object[] toArray(Object[] array)
Specified by:
toArray in interface FeatureCollection<SimpleFeatureType,SimpleFeature>
See Also:
Collection.toArray(Object[])

getAttribute

public Object getAttribute(String name)

getAttribute

public Object getAttribute(Name name)

getAttribute

public Object getAttribute(int indedx)
                    throws IndexOutOfBoundsException
Throws:
IndexOutOfBoundsException

getAttributeCount

public int getAttributeCount()

getAttributes

public List<Object> getAttributes()

getDefaultGeometry

public Object getDefaultGeometry()

getFeatureType

public SimpleFeatureType getFeatureType()

getType

public SimpleFeatureType getType()

setAttribute

public void setAttribute(String name,
                         Object value)

setAttribute

public void setAttribute(Name name,
                         Object value)

setAttribute

public void setAttribute(int index,
                         Object value)
                  throws IndexOutOfBoundsException
Throws:
IndexOutOfBoundsException

setAttributes

public void setAttributes(List<Object> attributes)

setAttributes

public void setAttributes(Object[] attributes)

setDefaultGeometry

public void setDefaultGeometry(Object defaultGeometry)

getDefaultGeometryProperty

public GeometryAttribute getDefaultGeometryProperty()

getIdentifier

public FeatureId getIdentifier()

getID

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

Specified by:
getID in interface FeatureCollection<SimpleFeatureType,SimpleFeature>

setDefaultGeometryProperty

public void setDefaultGeometryProperty(GeometryAttribute defaultGeometryProperty)

getProperties

public Collection<Property> getProperties()

getProperties

public Collection<Property> getProperties(Name name)

getProperties

public Collection<Property> getProperties(String name)

getProperty

public Property getProperty(Name name)

getProperty

public Property getProperty(String name)

getValue

public Collection<? extends Property> getValue()

setValue

public void setValue(Collection<Property> value)

getDescriptor

public AttributeDescriptor getDescriptor()

getName

public Name getName()

getUserData

public Map<Object,Object> getUserData()

isNillable

public boolean isNillable()

setValue

public void setValue(Object value)

validate

public void validate()


Copyright © 1996-2009 Geotools. All Rights Reserved.