- All Implemented Interfaces:
- Direct Known Subclasses:
public class FilteringFeatureReader<T extends FeatureType,F extends Feature> extends Object implements DelegatingFeatureReader<T,F>Basic support for a FeatureReader
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.
- Chris Holmes
All Methods Instance Methods Concrete Methods Modifier and Type Method Description
close()Release the underlying resources associated with this stream.
getFeatureType()Return the FeatureType this reader has been configured to create.
hasNext()Query for additional content.
next()Reads the next Feature in the FeatureReader.
public FilteringFeatureReader(FeatureReader<T,F> featureReader, Filter filter)Creates a new instance of AbstractFeatureReader
Please don't call this method with Filter.INCLUDE or Filter.EXCLUDE (consider not filtering and EmptyFeatureReader instead)
filter- Filter used to limit the results of featureReader
public FeatureReader<T,F> getDelegate()
public F next() throws IOException, IllegalAttributeException, NoSuchElementExceptionReads the next Feature in the FeatureReader.
public void close() throws IOExceptionRelease the underlying resources associated with this stream.
public T getFeatureType()Return the FeatureType this reader has been configured to create.
public boolean hasNext() throws IOExceptionQuery 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."