Package org.geotools.data
Class FilteringFeatureReader<T extends FeatureType,F extends Feature> 
Object
FilteringFeatureReader<T,F> 
- All Implemented Interfaces:
- Closeable,- AutoCloseable,- DelegatingFeatureReader<T,,- F> - FeatureReader<T,- F> 
- Direct Known Subclasses:
- FilteringSimpleFeatureReader
public class FilteringFeatureReader<T extends FeatureType,F extends Feature> 
extends Object
implements DelegatingFeatureReader<T,F> 
Basic support for a FeatureReader<SimpleFeatureType, SimpleFeature> that does filtering. I think that filtering
 should perhaps be done in the AttributeReader. I'm still having a bit of trouble with the split between
 attributeReader and featureReader as to where the hooks for advanced processing like filtering should take place. See
 my note on hasNext(), as the method is currently broken and there are more optimizations that could take place if we
 had a FilteringAttributeReader. So this class may go, but I thought I'd put the ideas into code.
 
Jody here - changed hasNext() to peek as required.
- Author:
- Chris Holmes
- 
Field SummaryFieldsModifier and TypeFieldDescriptionprotected final FeatureReader<T,F> protected final Filterprotected F
- 
Constructor SummaryConstructorsConstructorDescriptionFilteringFeatureReader(FeatureReader<T, F> featureReader, Filter filter) Creates a new instance of AbstractFeatureReader
- 
Method Summary
- 
Field Details- 
featureReader
- 
filter
- 
next
 
- 
- 
Constructor Details- 
FilteringFeatureReaderCreates a new instance of AbstractFeatureReaderPlease don't call this method with Filter.INCLUDE or Filter.EXCLUDE (consider not filtering and EmptyFeatureReader instead) - Parameters:
- featureReader- FeatureReader<SimpleFeatureType, SimpleFeature> being filtered
- filter- Filter used to limit the results of featureReader
 
 
- 
- 
Method Details- 
getDelegate- Specified by:
- getDelegatein interface- DelegatingFeatureReader<T extends FeatureType,- F extends Feature> 
- Returns:
- THe delegate reader.
 
- 
nextDescription copied from interface:FeatureReaderReads the next Feature in the FeatureReader.- Specified by:
- nextin interface- FeatureReader<T extends FeatureType,- F extends Feature> 
- Returns:
- The next feature in the reader.
- Throws:
- IOException- If an error occurs reading the Feature.
- NoSuchElementException- If there are no more Features in the Reader.
- IllegalAttributeException
 
- 
closeDescription copied from interface:FeatureReaderRelease the underlying resources associated with this stream.- Specified by:
- closein interface- AutoCloseable
- Specified by:
- closein interface- Closeable
- Specified by:
- closein interface- FeatureReader<T extends FeatureType,- F extends Feature> 
- Throws:
- IOException- if an I/O error occurs
 
- 
getFeatureTypeDescription copied from interface:FeatureReaderReturn the FeatureType this reader has been configured to create.- Specified by:
- getFeatureTypein interface- FeatureReader<T extends FeatureType,- F extends Feature> 
- Returns:
- the FeatureType of the Features this FeatureReader will create.
 
- 
hasNextQuery for additional content.This class will peek ahead to see if there is additional content. Chris has pointed out that we could make use of AttributeReader based filtering: 
 "Also doing things in the Attribute Reader would allow us to do the smart filtering, only looking at the attributes needed for comparison, whereas doing filtering here means we have to create an entire feature each time."- Specified by:
- hasNextin interface- FeatureReader<T extends FeatureType,- F extends Feature> 
- Returns:
- trueif we have additional content
- Throws:
- IOException- If the reader we are filtering encounters a problem
- DataSourceException- See IOException
 
 
-