org.geotools.data
Class FilteringFeatureReader<T extends FeatureType,F extends Feature>
Object
FilteringFeatureReader<T,F>
- All Implemented Interfaces:
- DelegatingFeatureReader<T,F>, FeatureReader<T,F>
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.
- Author:
- Chris Holmes
- Module:
modules/library/main (gt-main.jar)
Constructor Summary |
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)
|
Method Summary |
void |
close()
Release the underlying resources associated with this stream. |
FeatureReader<T,F> |
getDelegate()
|
T |
getFeatureType()
Return the FeatureType this reader has been configured to create. |
boolean |
hasNext()
Query for additional content. |
F |
next()
Reads the next Feature in the FeatureReader. |
Methods inherited from class Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
featureReader
protected final FeatureReader<T extends FeatureType,F extends Feature> featureReader
filter
protected final Filter filter
next
protected F extends Feature next
FilteringFeatureReader
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)
- Parameters:
featureReader
- FeatureReader being filteredfilter
- Filter used to limit the results of featureReader
getDelegate
public FeatureReader<T,F> getDelegate()
- Specified by:
getDelegate
in interface DelegatingFeatureReader<T extends FeatureType,F extends Feature>
- Returns:
- THe delegate reader.
next
public F next()
throws IOException,
IllegalAttributeException,
NoSuchElementException
- Description copied from interface:
FeatureReader
- Reads the next Feature in the FeatureReader.
- Specified by:
next
in interface FeatureReader<T extends FeatureType,F extends Feature>
- Returns:
- The next feature in the reader.
- Throws:
IOException
- If an error occurs reading the Feature.
IllegalAttributeException
- If the attributes read do not comply
with the FeatureType.
NoSuchElementException
- If there are no more Features in the
Reader.
close
public void close()
throws IOException
- Description copied from interface:
FeatureReader
- Release the underlying resources associated with this stream.
- Specified by:
close
in interface FeatureReader<T extends FeatureType,F extends Feature>
- Throws:
IOException
- DOCUMENT ME!
getFeatureType
public T getFeatureType()
- Description copied from interface:
FeatureReader
- Return the FeatureType this reader has been configured to create.
- Specified by:
getFeatureType
in interface FeatureReader<T extends FeatureType,F extends Feature>
- Returns:
- the FeatureType of the Features this FeatureReader will create.
hasNext
public boolean hasNext()
throws IOException
- Query 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:
hasNext
in interface FeatureReader<T extends FeatureType,F extends Feature>
- Returns:
true
if we have additional content
- Throws:
IOException
- If the reader we are filtering encounters a problem
DataSourceException
- See IOException
Copyright © 1996-2010 Geotools. All Rights Reserved.