org.geotools.data.memory
Class MemoryDataStore

java.lang.Object
  extended byorg.geotools.data.AbstractDataStore
      extended byorg.geotools.data.memory.MemoryDataStore
All Implemented Interfaces:
DataStore

public class MemoryDataStore
extends AbstractDataStore

This is an example implementation of a DataStore used for testing.

It serves as an example implementation of:

This class will also illustrate the use of In-Process locking when the time comes.

Author:
jgarnett

Field Summary
protected  java.util.Map memory
          Memory holds Map of Feature by fid by typeName.
protected  java.util.Map schema
          Schema holds FeatureType by typeName
 
Fields inherited from class org.geotools.data.AbstractDataStore
isWriteable, listenerManager, LOGGER
 
Constructor Summary
MemoryDataStore()
           
MemoryDataStore(Feature[] array)
           
MemoryDataStore(FeatureCollection collection)
           
MemoryDataStore(FeatureReader reader)
           
 
Method Summary
 void addFeature(Feature feature)
          Adds a single Feature to the correct typeName entry.
 void addFeatures(java.util.Collection collection)
          Configures MemoryDataStore with Collection.
 void addFeatures(Feature[] features)
          Configures MemoryDataStore with feature array.
 void addFeatures(FeatureReader reader)
          Configures MemoryDataStore with FeatureReader.
 FeatureWriter createFeatureWriter(java.lang.String typeName, Transaction transaction)
          Provides FeatureWriter over the entire contents of typeName.
 void createSchema(FeatureType featureType)
          Adds support for a new featureType to MemoryDataStore.
protected  java.util.Map features(java.lang.String typeName)
          Access featureMap for typeName.
protected  com.vividsolutions.jts.geom.Envelope getBounds(Query query)
          Computes the bounds of the features for the specified feature type that satisfy the query provided that there is a fast way to get that result.
protected  int getCount(Query query)
          Gets the number of the features that would be returned by this query for the specified feature type.
 FeatureReader getFeatureReader(java.lang.String typeName)
          Provides FeatureReader over the entire contents of typeName.
 FeatureType getSchema(java.lang.String typeName)
          FeatureType access by typeName.
 java.lang.String[] getTypeNames()
          List of available types provided by this DataStore.
 
Methods inherited from class org.geotools.data.AbstractDataStore
createLockingManager, createMetadata, getFeatureReader, getFeatureReader, getFeatureSource, getFeatureWriter, getFeatureWriter, getFeatureWriter, getFeatureWriterAppend, getLockingManager, getUnsupportedFilter, getView, updateSchema
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

memory

protected java.util.Map memory
Memory holds Map of Feature by fid by typeName.


schema

protected java.util.Map schema
Schema holds FeatureType by typeName

Constructor Detail

MemoryDataStore

public MemoryDataStore()

MemoryDataStore

public MemoryDataStore(FeatureCollection collection)

MemoryDataStore

public MemoryDataStore(Feature[] array)

MemoryDataStore

public MemoryDataStore(FeatureReader reader)
                throws java.io.IOException
Method Detail

addFeatures

public void addFeatures(FeatureReader reader)
                 throws java.io.IOException
Configures MemoryDataStore with FeatureReader.

Parameters:
reader - New contents to add
Throws:
java.io.IOException - If problems are encountered while adding
DataSourceException - See IOException

addFeatures

public void addFeatures(java.util.Collection collection)
Configures MemoryDataStore with Collection.

You may use this to create a MemoryDataStore from a FeatureCollection.

Parameters:
collection - Collection of features to add
Throws:
java.lang.IllegalArgumentException - If provided collection is empty

addFeatures

public void addFeatures(Feature[] features)
Configures MemoryDataStore with feature array.

Parameters:
features - Array of features to add
Throws:
java.lang.IllegalArgumentException - If provided feature array is empty

addFeature

public void addFeature(Feature feature)
Adds a single Feature to the correct typeName entry.

This is an internal opperation used for setting up MemoryDataStore - please use FeatureWriter for generatl use.

This method is willing to create new FeatureTypes for MemoryDataStore.

Parameters:
feature - Individual feature to add

features

protected java.util.Map features(java.lang.String typeName)
                          throws java.io.IOException
Access featureMap for typeName.

Parameters:
typeName -
Returns:
A Map of Features by FID
Throws:
java.io.IOException - If typeName cannot be found

getTypeNames

public java.lang.String[] getTypeNames()
List of available types provided by this DataStore.

Specified by:
getTypeNames in interface DataStore
Specified by:
getTypeNames in class AbstractDataStore
Returns:
Array of type names
See Also:
org.geotools.data.AbstractDataStore#getFeatureTypes()

getSchema

public FeatureType getSchema(java.lang.String typeName)
                      throws java.io.IOException
FeatureType access by typeName.

Specified by:
getSchema in interface DataStore
Specified by:
getSchema in class AbstractDataStore
Parameters:
typeName -
Returns:
FeatureType for typeName
Throws:
java.io.IOException
SchemaNotFoundException - DOCUMENT ME!
See Also:
AbstractDataStore.getSchema(java.lang.String)

createSchema

public void createSchema(FeatureType featureType)
                  throws java.io.IOException
Adds support for a new featureType to MemoryDataStore.

FeatureTypes are stored by typeName, an IOException will be thrown if the requested typeName is already in use.

Specified by:
createSchema in interface DataStore
Overrides:
createSchema in class AbstractDataStore
Parameters:
featureType - FeatureType to be added
Throws:
java.io.IOException - If featureType already exists
See Also:
DataStore.createSchema(org.geotools.feature.FeatureType)

getFeatureReader

public FeatureReader getFeatureReader(java.lang.String typeName)
                               throws java.io.IOException
Provides FeatureReader over the entire contents of typeName.

Implements getFeatureReader contract for AbstractDataStore.

Specified by:
getFeatureReader in class AbstractDataStore
Parameters:
typeName -
Returns:
Throws:
java.io.IOException - If typeName could not be found
DataSourceException - See IOException
See Also:
AbstractDataStore.getFeatureSource(java.lang.String)

createFeatureWriter

public FeatureWriter createFeatureWriter(java.lang.String typeName,
                                         Transaction transaction)
                                  throws java.io.IOException
Provides FeatureWriter over the entire contents of typeName.

Implements getFeatureWriter contract for AbstractDataStore.

Overrides:
createFeatureWriter in class AbstractDataStore
Parameters:
typeName - name of FeatureType we wish to modify
transaction - a feature writer
Returns:
FeatureWriter of entire contents of typeName
Throws:
java.io.IOException - If writer cannot be obtained for typeName
DataSourceException - See IOException
See Also:
AbstractDataStore.getFeatureSource(java.lang.String)

getBounds

protected com.vividsolutions.jts.geom.Envelope getBounds(Query query)
                                                  throws java.io.IOException
Description copied from class: AbstractDataStore
Computes the bounds of the features for the specified feature type that satisfy the query provided that there is a fast way to get that result.

Will return null if there is not fast way to compute the bounds. Since it's based on some kind of header/cached information, it's not guaranteed to be real bound of the features

Overrides:
getBounds in class AbstractDataStore
Parameters:
query -
Returns:
the bounds, or null if too expensive
Throws:
java.io.IOException
See Also:
org.geotools.data.AbstractDataStore#getBounds(java.lang.String, org.geotools.data.Query)

getCount

protected int getCount(Query query)
                throws java.io.IOException
Description copied from class: AbstractDataStore
Gets the number of the features that would be returned by this query for the specified feature type.

If getBounds(Query) returns -1 due to expense consider using getFeatures(Query).getCount() as a an alternative.

Overrides:
getCount in class AbstractDataStore
Parameters:
query - Contains the Filter and MaxFeatures to find the bounds for.
Returns:
The number of Features provided by the Query or -1 if count is too expensive to calculate or any errors or occur.
Throws:
java.io.IOException - if there are errors getting the count
See Also:
org.geotools.data.AbstractDataStore#getCount(java.lang.String, org.geotools.data.Query)


Copyright © GeoTools. All Rights Reserved.