package org.geotools.data.simple;
import org.geotools.feature.FeatureCollection;
import org.geotools.feature.FeatureIterator;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.filter.Filter;
import org.opengis.filter.sort.SortBy;
/**
* Access to "simple" Feature content where each feature has the same SimpleFeatureType.
* <p>
* Please keep in mind that a SimpleFeatureCollection is similar to a result set; and may not
* necessarily load everything in to memory. Treat each iterator as a forward only cursor
* in the JDBC sense; and take care to FeatureIterator.close() after use.
*
* <h3>SimpleFeatureIterator close</h3>
* <p>
* SimpleFeatureCollection provides streaming access with
* the following restrictions on use of {@link SimpleFeatureIterator}:
* You must call {@link SimpleFeatureIterator#close()}. This allows
* FeatureCollection to clean up any operating system resources used
* to access information.
* </p>
* <p>
* Example (safe) use:<pre><code>
* SimpleFeatureIterator iterator = simpleFeatureCollection.features();
* try {
* while( iterator.hasNext() ){
* SimpleFeature feature = iterator.next();
* System.out.println( feature.getID() );
* }
* }
* finally {
* iterator.close();
* }
* </code></pre>
* </p>
* And in Java 7:<pre><code>
* try ( SimpleFeatureIterator iterator = simpleFeatureCollection.features() ){
* while( iterator.hasNext() ){
* SimpleFeature feature = iterator.next();
* System.out.println( feature.getID() );
* }
* }
* </code></pre>
* <p>
*
* @source $URL$
*/
public interface SimpleFeatureCollection extends FeatureCollection<SimpleFeatureType,SimpleFeature>{
/**
* Obtain a SimpleFeatureIterator of the Features within this SimpleFeatureCollection.
* <p>
* The implementation of FeatureIterator must adhere to the rules of
* fail-fast concurrent modification. In addition (to allow for
* resource backed collections) the <code>SimpleFeatureIterator.close()</code>
* method must be called.
* <p>
* Example use:<pre><code>
* SimpleFeatureIterator iterator=collection.features();
* try {
* while( iterator.hasNext() ){
* SimpleFeature feature = iterator.next();
* System.out.println( feature.getID() );
* }
* }
* finally {
* iterator.close();
* }
* </code></pre>
* </p>
*/
public SimpleFeatureIterator features();
public SimpleFeatureCollection subCollection(Filter filter);
public SimpleFeatureCollection sort(SortBy order);
}