Class ContentFeatureStore
- All Implemented Interfaces:
FeatureLocking<SimpleFeatureType,
,SimpleFeature> FeatureSource<SimpleFeatureType,
,SimpleFeature> FeatureStore<SimpleFeatureType,
,SimpleFeature> SimpleFeatureLocking
,SimpleFeatureSource
,SimpleFeatureStore
- Direct Known Subclasses:
CSVFeatureStore
,GeoJSONFeatureStore
,JDBCFeatureStore
,MemoryFeatureStore
,MongoFeatureStore
,PropertyFeatureStore
List its base class ContentFeatureSource
, this feature store works off of operations provided by
FeatureCollection
.
The addFeatures(SimpleFeatureCollection)
method is used to add features to the feature store. The method
should return the "persistent" feature id's which are generated after the feature has been added to persistent
storage. Often the persistent fid is different from the fid specified by the actual feature being inserted. For this
reason Property.getUserData()
is used to report back persistent fids. It is up to the implementor of the
feature collection to report this value back after a feature has been inserted. As an example, consider an
implementation of FeatureCollection#add(Object)
.
boolean add( Object o ) { SimpleFeature feature = (SimpleFeature) o; //1.add the feature to storage ... //2. derive the persistent fid String fid = ...; //3. set the user data feature.getUserData().put( "fid", fid ); }
- Author:
- Justin Deoliveira, The Open Planning Project
-
Nested Class Summary
Nested classes/interfaces inherited from interface FeatureLocking
FeatureLocking.Response
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
protected final int
Flag writer for adding new contentprotected final int
Flag writer for commit (AUTO_COMMIT with no events)protected final int
Flag writer for updating content in placeFields inherited from class ContentFeatureSource
entry, hints, lock, query, queryCapabilities, schema, transaction
-
Constructor Summary
ConstructorsConstructorDescriptionContentFeatureStore
(ContentEntry entry, Query query) Creates the content feature store. -
Method Summary
Modifier and TypeMethodDescriptionaddFeatures
(Collection collection) Adds a collection of features to the store.addFeatures
(FeatureCollection<SimpleFeatureType, SimpleFeature> featureCollection) Adds a collection of features to the store.Returns a writer over features specified by a query.Returns a writer over features specified by a query.Returns a writer over features specified by a filter.Returns a writer over features specified by a filter.protected abstract FeatureWriter<SimpleFeatureType,
SimpleFeature> getWriterInternal
(Query query, int flags) Subclass method for returning a native writer from the datastore.final void
modifyFeatures
(String[] names, Object[] values, Filter filter) final void
modifyFeatures
(String name, Object attributeValue, Filter filter) void
modifyFeatures
(AttributeDescriptor[] type, Object[] value, Filter filter) final void
modifyFeatures
(AttributeDescriptor type, Object value, Filter filter) Calls through tomodifyFeatures(Name[], Object[], Filter)
.void
modifyFeatures
(Name[] type, Object[] value, Filter filter) Modifies/updates the features of the store which match the specified filter.final void
modifyFeatures
(Name name, Object value, Filter filter) Calls through tomodifyFeatures(Name[], Object[], Filter)
.void
removeFeatures
(Filter filter) Removes the features from the store which match the specified filter.final void
Sets the feature of the source.Methods inherited from class ContentFeatureSource
accepts, addFeatureListener, addHints, buildFeatureType, buildQueryCapabilities, canEvent, canFilter, canFilter, canLimit, canLimit, canLock, canOffset, canOffset, canReproject, canRetype, canRetype, canSort, canSort, canTransact, doLockInternal, doUnlockInternal, getAbsoluteSchema, getBounds, getBounds, getBoundsInternal, getCount, getCountInternal, getDataStore, getEntry, getFeatures, getFeatures, getFeatures, getInfo, getName, getQueryCapabilities, getReader, getReader, getReader, getReaderInternal, getSchema, getState, getSupportedHints, getTransaction, getView, getView, handleVisitor, isView, joinQuery, lockFeatures, lockFeatures, lockFeatures, processLock, removeFeatureListener, resolvePropertyNames, resolvePropertyNames, setFeatureLock, setTransaction, unLockFeatures, unLockFeatures, unLockFeatures
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface FeatureLocking
lockFeatures, lockFeatures, lockFeatures, setFeatureLock, unLockFeatures, unLockFeatures, unLockFeatures
Methods inherited from interface FeatureSource
addFeatureListener, getBounds, getBounds, getCount, getDataStore, getInfo, getName, getQueryCapabilities, getSchema, getSupportedHints, removeFeatureListener
Methods inherited from interface FeatureStore
getTransaction, setTransaction
Methods inherited from interface SimpleFeatureStore
getFeatures, getFeatures, getFeatures
-
Field Details
-
WRITER_ADD
protected final int WRITER_ADDFlag writer for adding new content- See Also:
-
WRITER_UPDATE
protected final int WRITER_UPDATEFlag writer for updating content in place- See Also:
-
WRITER_COMMIT
protected final int WRITER_COMMITFlag writer for commit (AUTO_COMMIT with no events)- See Also:
-
ORIGINAL_FEATURE_KEY
- See Also:
-
-
Constructor Details
-
ContentFeatureStore
Creates the content feature store.- Parameters:
entry
- The entry for the feature store.query
- The defining query.
-
-
Method Details
-
getWriter
public final FeatureWriter<SimpleFeatureType,SimpleFeature> getWriter(Filter filter) throws IOException Returns a writer over features specified by a filter.- Parameters:
filter
- The filter- Throws:
IOException
-
getWriter
public final FeatureWriter<SimpleFeatureType,SimpleFeature> getWriter(Filter filter, int flags) throws IOException Returns a writer over features specified by a filter.- Parameters:
filter
- The filterflags
- flags specifying writing mode- Throws:
IOException
-
getWriter
public final FeatureWriter<SimpleFeatureType,SimpleFeature> getWriter(Query query) throws IOException Returns a writer over features specified by a query.- Parameters:
query
- The query- Throws:
IOException
-
getWriter
public final FeatureWriter<SimpleFeatureType,SimpleFeature> getWriter(Query query, int flags) throws IOException Returns a writer over features specified by a query.- Parameters:
query
- The queryflags
- flags specifying writing mode- Throws:
IOException
-
getWriterInternal
protected abstract FeatureWriter<SimpleFeatureType,SimpleFeature> getWriterInternal(Query query, int flags) throws IOException Subclass method for returning a native writer from the datastore.It is important to note that if the native writer intends to handle any of the following natively:
- reprojection
- filtering
- events
- max feature limiting
- sorting
- locking
true
:- Parameters:
query
- Queryflags
- SeeWRITER_ADD
andWRITER_UPDATE
- Throws:
IOException
-
addFeatures
Adds a collection of features to the store.This method operates by getting an appending feature writer and writing all the features in collection to it. Directly after a feature is written its id is obtained and added to the returned set.
- Throws:
IOException
-
addFeatures
public List<FeatureId> addFeatures(FeatureCollection<SimpleFeatureType, SimpleFeature> featureCollection) throws IOExceptionAdds a collection of features to the store.- Specified by:
addFeatures
in interfaceFeatureStore<SimpleFeatureType,
SimpleFeature> - Parameters:
featureCollection
- the collection of features to add- Returns:
- the
FeatureIds
of the newly added features - Throws:
IOException
- if an error occurs modifying the data source
-
setFeatures
public final void setFeatures(FeatureReader<SimpleFeatureType, SimpleFeature> reader) throws IOExceptionSets the feature of the source.This method operates by first clearing the contents of the feature store (
removeFeatures(Filter)
), and then obtaining an appending feature writer and writing all features from reader to it.- Specified by:
setFeatures
in interfaceFeatureStore<SimpleFeatureType,
SimpleFeature> - Parameters:
reader
- - the collection to be written- Throws:
IOException
- if there are any datasource errors.
-
modifyFeatures
public void modifyFeatures(AttributeDescriptor[] type, Object[] value, Filter filter) throws IOException - Throws:
IOException
-
modifyFeatures
Modifies/updates the features of the store which match the specified filter.This method operates by obtaining an updating feature writer based on the specified filter and writing the updated values to it.
The filter must not be
null
, in this case this method will throw anIllegalArgumentException
.- Specified by:
modifyFeatures
in interfaceFeatureStore<SimpleFeatureType,
SimpleFeature> - Parameters:
type
- the attributes to modifyvalue
- the new values for the attributesfilter
- an OpenGIS filter- Throws:
IOException
- if the attribute and object arrays are not equal in length; if the value types do not match the attribute types; if modification is not supported; or if there errors accessing the data source
-
modifyFeatures
public final void modifyFeatures(String name, Object attributeValue, Filter filter) throws IOException - Specified by:
modifyFeatures
in interfaceSimpleFeatureStore
- Throws:
IOException
-
modifyFeatures
- Specified by:
modifyFeatures
in interfaceSimpleFeatureStore
- Throws:
IOException
-
modifyFeatures
public final void modifyFeatures(AttributeDescriptor type, Object value, Filter filter) throws IOException Calls through tomodifyFeatures(Name[], Object[], Filter)
.- Throws:
IOException
-
modifyFeatures
Calls through tomodifyFeatures(Name[], Object[], Filter)
.- Specified by:
modifyFeatures
in interfaceFeatureStore<SimpleFeatureType,
SimpleFeature> - Parameters:
name
- the attribute to modifyvalue
- the new value for the attributefilter
- an OpenGIS filter- Throws:
IOException
- if modification is not supported; if the value type does not match the attribute type; or if there errors accessing the data source
-
removeFeatures
Removes the features from the store which match the specified filter.This method operates by obtaining an updating feature writer based on the specified filter and removing every feature from it.
The filter must not be
null
, in this case this method will throw anIllegalArgumentException
.- Specified by:
removeFeatures
in interfaceFeatureStore<SimpleFeatureType,
SimpleFeature> - Parameters:
filter
- an OpenGIS filter- Throws:
IOException
- if an error occurs modifying the data source
-