public class MappingFeatureSource extends Object implements FeatureSource<FeatureType,Feature>
Note that the number of Features available from a MappingFeatureReader may not match the number of features that resulted of executing the incoming query over the surrogate FeatureSource. This will be the case when grouping attributes has configured on the FeatureTypeMapping this reader is based on.
When a MappingFeatureReader is created, a delegated FeatureIterator will be created based on the information provided by the FeatureTypeMapping object. That delegate reader will be specialized in applying the appropiate mapping stratagy based on wether grouping has to be performed or not.
Constructor and Description |
---|
MappingFeatureSource(AppSchemaDataAccess store,
FeatureTypeMapping mapping) |
Modifier and Type | Method and Description |
---|---|
void |
addFeatureListener(FeatureListener listener)
Registers a listening object that will be notified of changes to this
FeatureSource . |
ReferencedEnvelope |
getBounds()
Get the spatial bounds of the feature data.
|
ReferencedEnvelope |
getBounds(Query query)
Get the spatial bounds of the features that would be returned by the given
Query . |
int |
getCount(Query query)
Gets the number of the features that would be returned by the given
Query , taking into account any settings for max features and
start index set on the Query . |
DataAccess<FeatureType,Feature> |
getDataStore()
Returns the data source, as a
DataAccess object, providing this FeatureSource . |
FeatureCollection<FeatureType,Feature> |
getFeatures()
Retrieves all features in the form of a
FeatureCollection . |
FeatureCollection<FeatureType,Feature> |
getFeatures(Filter filter)
Retrieves features, in the form of a
FeatureCollection , based on an OGC Filter . |
FeatureCollection<FeatureType,Feature> |
getFeatures(Filter filter,
Hints hints) |
FeatureCollection<FeatureType,Feature> |
getFeatures(Query query)
Retrieves features, in the form of a
FeatureCollection , based on a Query . |
ResourceInfo |
getInfo()
Returns information describing this
FeatureSource which may include title,
description and spatial parameters. |
FeatureTypeMapping |
getMapping() |
Name |
getName()
Returns the name of the features (strictly, the name of the
AttributeDescriptor for
the features) accessible through this FeatureSource . |
QueryCapabilities |
getQueryCapabilities()
Enquire what what query capabilities this
FeatureSource natively supports. |
FeatureType |
getSchema()
Retrieves the schema (feature type) that will apply to features retrieved from this
FeatureSource . |
Set<RenderingHints.Key> |
getSupportedHints()
Not a supported operation.
|
AttributeDescriptor |
getTargetFeature() |
void |
removeFeatureListener(FeatureListener listener)
Removes an object from this
FeatureSource's listeners. |
public MappingFeatureSource(AppSchemaDataAccess store, FeatureTypeMapping mapping)
public void addFeatureListener(FeatureListener listener)
FeatureSource
FeatureSource
.addFeatureListener
in interface FeatureSource<FeatureType,Feature>
listener
- the new listenerpublic ReferencedEnvelope getBounds() throws IOException
FeatureSource
getBounds(Query.ALL)
.
It is possible that this method will return null if the calculation of bounds is judged to
be too costly by the implementing class. In this case, you might call
getFeatures().getBounds()
instead.
getBounds
in interface FeatureSource<FeatureType,Feature>
null
if the bounds are unknown
or too costly to calculate.IOException
- on any errors calculating the boundspublic ReferencedEnvelope getBounds(Query query) throws IOException
FeatureSource
Query
.
It is possible that this method will return null if the calculation of bounds is judged to
be too costly by the implementing class. In this case, you might call
getFeatures(query).getBounds()
instead.
getBounds
in interface FeatureSource<FeatureType,Feature>
query
- the query to select featuresnull
if the bounds are unknown
or too costly to calculate.IOException
- on any errors calculating the boundspublic int getCount(Query query) throws IOException
FeatureSource
Query
, taking into account any settings for max features and
start index set on the Query
.
It is possible that this method will return -1
if the calculation
of number of features is judged to be too costly by the implementing class.
In this case, you might call getFeatures(query).size()
instead.
Example use:
int count = featureSource.getCount();
if( count == -1 ){
count = featureSource.getFeatures( "typeName", count ).size();
}
getCount
in interface FeatureSource<FeatureType,Feature>
query
- the query to select featuresQuery
;
or -1
if this cannot be calculated.IOException
- if there are errors getting the countpublic DataAccess<FeatureType,Feature> getDataStore()
FeatureSource
DataAccess
object, providing this FeatureSource
.getDataStore
in interface FeatureSource<FeatureType,Feature>
FeatureSource
public FeatureType getSchema()
FeatureSource
FeatureSource
.
For a homogeneous data source such as a shapefile or a database table, this schema be that of all features. For a heterogeneous data source, e.g. a GML document, the schema returned is the lowest common denominator across all features.
getSchema
in interface FeatureSource<FeatureType,Feature>
FeatureSource
public AttributeDescriptor getTargetFeature()
public FeatureTypeMapping getMapping()
public FeatureCollection<FeatureType,Feature> getFeatures(Query query) throws IOException
FeatureSource
FeatureCollection
, based on a Query
.getFeatures
in interface FeatureSource<FeatureType,Feature>
query
- DataAccess query for requested information, such as typeName, maxFeatures and
filter.Query
IOException
- if the underlying data source cannot be accessed.Query
public FeatureCollection<FeatureType,Feature> getFeatures(Filter filter) throws IOException
FeatureSource
FeatureCollection
, based on an OGC Filter
.getFeatures
in interface FeatureSource<FeatureType,Feature>
filter
- the filter to select features; must not be null
(use Filter.INCLUDE instead)Filter
IOException
- if the underlying data source cannot be accessed.Filter
public FeatureCollection<FeatureType,Feature> getFeatures(Filter filter, Hints hints) throws IOException
IOException
public FeatureCollection<FeatureType,Feature> getFeatures() throws IOException
FeatureSource
FeatureCollection
.
The following statements are equivalent:
featureSource.getFeatures();
featureSource.getFeatures(Filter.INCLUDE);
featureSource.getFeatures(Query.ALL);
getFeatures
in interface FeatureSource<FeatureType,Feature>
Query
IOException
- if the underlying data source cannot be accessed.public void removeFeatureListener(FeatureListener listener)
FeatureSource
FeatureSource's
listeners.removeFeatureListener
in interface FeatureSource<FeatureType,Feature>
listener
- the listener to removepublic ResourceInfo getInfo()
FeatureSource
FeatureSource
which may include title,
description and spatial parameters. Note that in the returned ResourceInfo
object,
the distinction between feature name and schema (feature type) name applies as discussed for
FeatureSource.getName().getInfo
in interface FeatureSource<FeatureType,Feature>
public Name getName()
FeatureSource
AttributeDescriptor
for
the features) accessible through this FeatureSource
.
The value returned by this method can be different to that returned by featureSource.getSchema().getType().getName()
. This is because there is a distinction
between the name applied to features and the name of a feature type. When working with SimpleFeature
and SimpleFeatureType
, for example with a shapefile data source, it is
common practice for feature and feature type names to be the same. However, this is not the
case more generally. For instance, a database can contain two tables with the same structure.
The feature name will refer to the table while the feature type name refers to the schema
(table structure).
getName
in interface FeatureSource<FeatureType,Feature>
FeatureSource
public Set<RenderingHints.Key> getSupportedHints()
getSupportedHints
in interface FeatureSource<FeatureType,Feature>
RenderingHints#Key
objects; may be empty but never null
FeatureSource.getSupportedHints()
public QueryCapabilities getQueryCapabilities()
FeatureSource
FeatureSource
natively supports. For
example, whether queries can return sorted results.getQueryCapabilities
in interface FeatureSource<FeatureType,Feature>
FeatureSource
FeatureSource.getQueryCapabilities()
Copyright © 1996–2023 Geotools. All rights reserved.