org.geotools.feature.collection
Class DecoratingFeatureCollection<T extends FeatureType,F extends Feature>

Object
  extended by DecoratingFeatureCollection<T,F>
All Implemented Interfaces:
FeatureCollection<T,F>
Direct Known Subclasses:
FilteringFeatureCollection, MaxFeaturesFeatureCollection, ReprojectingFeatureCollection, ReTypingFeatureCollection

public class DecoratingFeatureCollection<T extends FeatureType,F extends Feature>
extends Object
implements FeatureCollection<T,F>

A FeatureCollection which completley delegates to another FeatureCollection.

This class should be subclasses by classes which must somehow decorate another FeatureCollection and override the relevant methods.

Since:
2.5
Author:
Justin Deoliveira, The Open Planning Project, jdeolive@openplans.org
Module:
modules/library/main (gt-main.jar)

Field Summary
protected  FeatureCollection<T,F> delegate
          the delegate
 
Constructor Summary
protected DecoratingFeatureCollection(FeatureCollection<T,F> delegate)
           
 
Method Summary
 void accepts(FeatureVisitor visitor, ProgressListener progress)
           
 void accepts(FeatureVisitor visitor, ProgressListener progress)
          Visit the contents of a feature collection.
 boolean add(F 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<F> close)
          Clean up after any resources associated with this FeatureIterator in a manner similar to JDO collections.
 void close(Iterator<F> close)
          Clean up after any resources associated with this itterator in a manner similar to JDO collections.
 boolean contains(Object o)
           
 boolean containsAll(Collection c)
           
 boolean equals(Object o)
           
 FeatureIterator<F> 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
 String getID()
          ID used when serializing to GML
 T getSchema()
          The schema for the child features of this collection.
 int hashCode()
           
 boolean isEmpty()
           
 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 c)
           
 void removeListener(CollectionListener listener)
          Removes a listener for collection events.
 boolean retainAll(Collection c)
           
 int size()
           
 FeatureCollection<T,F> sort(SortBy order)
          collection.subCollection( myFilter ).sort( {"foo","bar"} ); collection.subCollection( myFilter ).sort( "bar" ).sort("foo")
 FeatureCollection<T,F> subCollection(Filter filter)
          FeatureCollection "view" indicated by provided filter.
 Object[] toArray()
           
 Object[] toArray(Object[] a)
           
 
Methods inherited from class Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

delegate

protected FeatureCollection<T extends FeatureType,F extends Feature> delegate
the delegate

Constructor Detail

DecoratingFeatureCollection

protected DecoratingFeatureCollection(FeatureCollection<T,F> delegate)
Method Detail

accepts

public void accepts(FeatureVisitor visitor,
                    ProgressListener progress)
             throws IOException
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<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

add

public boolean add(F 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<T extends FeatureType,F extends Feature>
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<T extends FeatureType,F extends Feature>
See Also:
Collection.addAll(Collection)

addAll

public boolean addAll(FeatureCollection c)
Specified by:
addAll in interface FeatureCollection<T extends FeatureType,F extends Feature>
See Also:
FeatureCollection.addAll(Collection)

addListener

public void addListener(CollectionListener listener)
                 throws 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<T extends FeatureType,F extends Feature>
Parameters:
listener - The listener to add
Throws:
NullPointerException - If the listener is null.

clear

public void clear()
Specified by:
clear in interface FeatureCollection<T extends FeatureType,F extends Feature>
See Also:
Collection.clear()

close

public void close(FeatureIterator<F> close)
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<T extends FeatureType,F extends Feature>

close

public void close(Iterator<F> 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<T extends FeatureType,F extends Feature>

contains

public boolean contains(Object o)
Specified by:
contains in interface FeatureCollection<T extends FeatureType,F extends Feature>
See Also:
Collection.contains(Object)

containsAll

public boolean containsAll(Collection c)
Specified by:
containsAll in interface FeatureCollection<T extends FeatureType,F extends Feature>
See Also:
Collection.containsAll(Collection)

equals

public boolean equals(Object o)
Overrides:
equals in class Object

features

public FeatureIterator<F> 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<T extends FeatureType,F extends Feature>
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<T extends FeatureType,F extends Feature>
Returns:
An Envelope containing the total bounds of this collection.

getSchema

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

hashCode

public int hashCode()
Overrides:
hashCode in class Object

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface FeatureCollection<T extends FeatureType,F extends Feature>
See Also:
Collection.isEmpty()

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<T extends FeatureType,F extends Feature>
Returns:
Iterator

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<T extends FeatureType,F extends Feature>

remove

public boolean remove(Object o)
Specified by:
remove in interface FeatureCollection<T extends FeatureType,F extends Feature>
See Also:
Collection.remove(Object)

removeAll

public boolean removeAll(Collection c)
Specified by:
removeAll in interface FeatureCollection<T extends FeatureType,F extends Feature>
See Also:
Collection.removeAll(Collection)

removeListener

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

Specified by:
removeListener in interface FeatureCollection<T extends FeatureType,F extends Feature>
Parameters:
listener - The listener to remove
Throws:
NullPointerException - If the listener is null.

retainAll

public boolean retainAll(Collection c)
Specified by:
retainAll in interface FeatureCollection<T extends FeatureType,F extends Feature>
See Also:
Collection.retainAll(Collection)

size

public int size()
Specified by:
size in interface FeatureCollection<T extends FeatureType,F extends Feature>
See Also:
Collection.size()

sort

public FeatureCollection<T,F> 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<T extends FeatureType,F extends Feature>
Returns:
FeatureCollection sorted in the indicated order

subCollection

public FeatureCollection<T,F> 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<T extends FeatureType,F extends Feature>
Returns:
FeatureCollection identified as subset.
See Also:
FeatureList

toArray

public Object[] toArray()
Specified by:
toArray in interface FeatureCollection<T extends FeatureType,F extends Feature>
See Also:
Collection.toArray()

toArray

public Object[] toArray(Object[] a)
Specified by:
toArray in interface FeatureCollection<T extends FeatureType,F extends Feature>
See Also:
Collection.toArray(Object[])

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>


Copyright © 1996-2010 Geotools. All Rights Reserved.