org.geotools.data.store
Class ContentFeatureStore

Object
  extended by ContentFeatureSource
      extended by ContentFeatureStore
All Implemented Interfaces:
FeatureLocking<SimpleFeatureType,SimpleFeature>, FeatureSource<SimpleFeatureType,SimpleFeature>, FeatureStore<SimpleFeatureType,SimpleFeature>
Direct Known Subclasses:
JDBCFeatureStore

public abstract class ContentFeatureStore
extends ContentFeatureSource
implements FeatureStore<SimpleFeatureType,SimpleFeature>, FeatureLocking<SimpleFeatureType,SimpleFeature>

Abstract implementation of FeatureStore.

List its base class ContentFeatureSource, this feature store works off of operations provided by FeatureCollection.

The #addFeatures(FeatureCollection) 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
Module:
modules/library/data (gt-data.jar)

Nested Class Summary
 
Nested classes/interfaces inherited from interface FeatureLocking
FeatureLocking.Response
 
Field Summary
protected  FeatureLock lock
          current feature lock
protected  int WRITER_ADD
          writer flags
protected  int WRITER_UPDATE
           
 
Fields inherited from class ContentFeatureSource
entry, hints, query, queryCapabilities, schema, transaction
 
Constructor Summary
ContentFeatureStore(ContentEntry entry, Query query)
          Creates the content feature store.
 
Method Summary
 List<FeatureId> addFeatures(Collection collection)
          Adds a collection of features to the store.
 List<FeatureId> addFeatures(FeatureCollection<SimpleFeatureType,SimpleFeature> collection)
          Adds a collection of features to the store.
 FeatureWriter<SimpleFeatureType,SimpleFeature> getWriter(Filter filter)
          Returns a writer over features specified by a filter.
 FeatureWriter<SimpleFeatureType,SimpleFeature> getWriter(Filter filter, int flags)
          Returns a writer over features specified by a filter.
 FeatureWriter<SimpleFeatureType,SimpleFeature> getWriter(Query query)
          Returns a writer over features specified by a query.
 FeatureWriter<SimpleFeatureType,SimpleFeature> getWriter(Query query, int flags)
          Returns a writer over features specified by a query.
protected abstract  FeatureWriter<SimpleFeatureType,SimpleFeature> getWriterInternal(Query query, int flags)
          Subclass method for returning a native writer from the datastore.
 int lockFeatures()
          Locks all features.
 int lockFeatures(Filter filter)
          Locks features specified by a filter.
 int lockFeatures(Query query)
          Locks features specified by a query.
 void modifyFeatures(AttributeDescriptor[] type, Object[] value, Filter filter)
          Modifies/updates the features of the store which match the specified filter.
 void modifyFeatures(AttributeDescriptor type, Object value, Filter filter)
          Calls through to modifyFeatures(AttributeDescriptor[], Object[], Filter).
 void removeFeatures(Filter filter)
          Removes the features from the store which match the specified filter.
 void setFeatureLock(FeatureLock lock)
          Sets the feature lock of the feature store.
 void setFeatures(FeatureReader<SimpleFeatureType,SimpleFeature> reader)
          Sets the feature of the source.
 void unLockFeatures()
          Unlocks all features.
 void unLockFeatures(Filter filter)
          Unlocks features specified by a filter.
 void unLockFeatures(Query query)
          Unlocks features specified by a query.
 
Methods inherited from class ContentFeatureSource
accepts, addFeatureListener, addHints, buildFeatureType, buildQueryCapabilities, canFilter, canLimit, canOffset, canReproject, canRetype, canSort, 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, removeFeatureListener, resolvePropertyNames, resolvePropertyNames, setTransaction
 
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

WRITER_ADD

protected final int WRITER_ADD
writer flags

See Also:
Constant Field Values

WRITER_UPDATE

protected final int WRITER_UPDATE
See Also:
Constant Field Values

lock

protected FeatureLock lock
current feature lock

Constructor Detail

ContentFeatureStore

public ContentFeatureStore(ContentEntry entry,
                           Query query)
Creates the content feature store.

Parameters:
entry - The entry for the feature store.
query - The defining query.
Method Detail

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 filter
flags - 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 query
flags - 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:

Then it *must* set the corresponding flags to true:

Throws:
IOException

addFeatures

public final List<FeatureId> addFeatures(Collection collection)
                                  throws IOException
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 final List<FeatureId> addFeatures(FeatureCollection<SimpleFeatureType,SimpleFeature> collection)
                                  throws IOException
Adds a collection of features to the store.

This method calls through to addFeatures(Collection).

Specified by:
addFeatures in interface FeatureStore<SimpleFeatureType,SimpleFeature>
Parameters:
collection - The collection of features to add.
Returns:
the FeatureIds of the newly added features.
Throws:
IOException - if anything goes wrong.

setFeatures

public final void setFeatures(FeatureReader<SimpleFeatureType,SimpleFeature> reader)
                       throws IOException
Sets 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 interface FeatureStore<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
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 an IllegalArgumentException.

Specified by:
modifyFeatures in interface FeatureStore<SimpleFeatureType,SimpleFeature>
Parameters:
type - The attributes to modify.
value - The values to put in the attribute types.
filter - An OGC filter to note which attributes to modify.
Throws:
IOException - if the attribute and object arrays are not eqaul length, if the object types do not match the attribute types, or if there are backend errors.

modifyFeatures

public final void modifyFeatures(AttributeDescriptor type,
                                 Object value,
                                 Filter filter)
                          throws IOException
Calls through to modifyFeatures(AttributeDescriptor[], Object[], Filter).

Specified by:
modifyFeatures in interface FeatureStore<SimpleFeatureType,SimpleFeature>
Parameters:
type - The attributes to modify.
value - The values to put in the attribute types.
filter - An OGC filter to note which attributes to modify.
Throws:
IOException - If modificaton is not supported, if the object type do not match the attribute type.

removeFeatures

public void removeFeatures(Filter filter)
                    throws IOException
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 an IllegalArgumentException.

Specified by:
removeFeatures in interface FeatureStore<SimpleFeatureType,SimpleFeature>
Parameters:
filter - An OpenGIS filter; specifies which features to remove.
Throws:
IOException - If anything goes wrong.

setFeatureLock

public final void setFeatureLock(FeatureLock lock)
Sets the feature lock of the feature store.

Specified by:
setFeatureLock in interface FeatureLocking<SimpleFeatureType,SimpleFeature>
Parameters:
lock - DOCUMENT ME!

lockFeatures

public final int lockFeatures()
                       throws IOException
Locks all features.

This method calls through to lockFeatures(Filter).

Specified by:
lockFeatures in interface FeatureLocking<SimpleFeatureType,SimpleFeature>
Returns:
Number of Features locked by this opperation
Throws:
IOException

lockFeatures

public final int lockFeatures(Query query)
                       throws IOException
Locks features specified by a query.

This method calls through to lockFeatures(Filter).

Specified by:
lockFeatures in interface FeatureLocking<SimpleFeatureType,SimpleFeature>
Parameters:
query - Query describing the features to lock
Returns:
Number of features locked
Throws:
IOException - Thrown if anything goes wrong

lockFeatures

public final int lockFeatures(Filter filter)
                       throws IOException
Locks features specified by a filter.

Specified by:
lockFeatures in interface FeatureLocking<SimpleFeatureType,SimpleFeature>
Parameters:
filter - Filter describing the features to lock
Returns:
Number of features locked
Throws:
IOException - Thrown if anything goes wrong

unLockFeatures

public final void unLockFeatures()
                          throws IOException
Unlocks all features.

This method calls through to unLockFeatures(Filter).

Specified by:
unLockFeatures in interface FeatureLocking<SimpleFeatureType,SimpleFeature>
Throws:
IOException

unLockFeatures

public final void unLockFeatures(Query query)
                          throws IOException
Unlocks features specified by a query.

This method calls through to unLockFeatures(Filter).

Specified by:
unLockFeatures in interface FeatureLocking<SimpleFeatureType,SimpleFeature>
Parameters:
query - Specifies fatures to unlock
Throws:
IOException

unLockFeatures

public final void unLockFeatures(Filter filter)
                          throws IOException
Unlocks features specified by a filter.

Specified by:
unLockFeatures in interface FeatureLocking<SimpleFeatureType,SimpleFeature>
Throws:
IOException


Copyright © 1996-2009 Geotools. All Rights Reserved.