Interface DataAccess<T extends FeatureType,F extends Feature>
-
- Type Parameters:
T
- Type of Feature Content, may be SimpleFeatureTypeF
- Feature Content, may be SimpleFetaure
- All Known Subinterfaces:
DataStore
,FileDataStore
- All Known Implementing Classes:
AppSchemaDataAccess
,ContentDataStore
,CSVDataStore
,DataStoreWrapper
,DecoratingDataStore
,DirectoryDataStore
,GeoJSONDataStore
,GraticuleDataStore
,JDBCDataStore
,MBTilesDataStore
,MemoryDataStore
,MongoDataStore
,OGRDataStore
,OracleDatastoreWrapper
,PostgisDatastoreWrapper
,PreGeneralizedDataStore
,PropertyDataStore
,SampleDataAccess
,ShapefileDataStore
,SingleFeatureSourceDataStore
,SQLServerDatastoreWrapper
,STACDataStore
,VectorMosaicStore
,VPFFileStore
,VPFLibrary
,WFSContentDataAccess
,WFSDataStore
public interface DataAccess<T extends FeatureType,F extends Feature>
This is the top-level interface for access toFeatureData
.Description
The DataAccess interface provides the following information about its contents:- {@link DataAccess.getInfo()} - information about the file or server itself
- {@link DataAccess.getNames()} - list of the available contents (each is an individual resource)
- {@link DataAccess.getSchema( Name )} - FeatureType describing the information available in the named resource
Contents
You can access the contents of a service or file using getFeatureSource( Name ). Depending the abilities of your implementation and your credentials you will have access toFeatureSource
: read-only api similar to the WFS getFeature operations. Please note the reutrned FeatureCollection may be *lazy*; for many implementations no actual access will occur until you use the FetaureCollection for the first time.FeatureStore
: read/write api similar to the WFS Transaction operation. Batch changes such as addFeatures, modifyFeatures and removeFeatures are supported.FeatureLocking
: concurrency control; the Data Access API is thread safe; one consequence of this is modifications being held up while other threads read the contents. You may wish to Lock a selection of features for your exclusive use. Locks are timed; and will expire after the indicated period.
Please note that all interaction occurs within the context of a Transaction, this facility provides session management and is strongly advised. Please note that your application is responsible for managing its own Transactions; as an example they are often associated with a single Map in a desktop application; or a single session in a J2EE web app.
The use of Transaction.AUTO_COMMIT is suitable for read-only access when you wish to minimize the number of connections in use, when used for writing performance will often be terrible.
Lifecycle
Normal use:- Connect using a DataAccessFactory.createDataStore using a set of connection parameters
- Application is responsible for holding a single instance to the service or file, DataAccess implementations will hold onto database connections, internal caches and so on - and as such should not be duplicated.
- DataAccess.dispose() is called when the application is shut down
- Created using a DataAccessFactory.createNewDataStore using a set of creation parameters
- DataAccess.createSchema( T ) is called to set up the contents
- DataAccess.getFetaureSource( Name ) is called, and FeatureStore.addFeatures( collection ) used to populate the contents
- DataAccess.dispose() is called when the application is shut down
Applications are responsible for holding a single instance to the service or file, The DataAccess implementations will hold onto database connections, internal caches and so on - and as such should not be duplicated.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
createSchema(T featureType)
Creates storage for a newfeatureType
.void
dispose()
Disposes of this data store and releases any resource that it is using.FeatureSource<T,F>
getFeatureSource(Name typeName)
Access to the named resource.ServiceInfo
getInfo()
Information about this service.List<Name>
getNames()
Names of the available Resources.T
getSchema(Name name)
Description of the named resource.void
removeSchema(Name typeName)
Used to permanently remove a schema from the underlying storagevoid
updateSchema(Name typeName, T featureType)
Used to update a schema in place.
-
-
-
Method Detail
-
getInfo
ServiceInfo getInfo()
Information about this service.This method offers access to a summary of header or metadata information describing the service. Subclasses may return a specific ServiceInfo instance that has additional information (such as FilterCapabilities).
- Returns:
- SeviceInfo
-
createSchema
void createSchema(T featureType) throws IOException
Creates storage for a newfeatureType
.The provided
featureType
we be accessable by the typeName provided by featureType.getTypeName().- Parameters:
featureType
- FetureType to add to DataStore- Throws:
IOException
- If featureType cannot be created
-
updateSchema
void updateSchema(Name typeName, T featureType) throws IOException
Used to update a schema in place.This functionality is similar to an "alter table" statement in SQL. Implementation is optional; it may not be supported by all servers or files.
- Throws:
IOException
- if the operation failedUnsupportedOperation
- if functionality is not available
-
removeSchema
void removeSchema(Name typeName) throws IOException
Used to permanently remove a schema from the underlying storageThis functionality is similar to an "drop table" statement in SQL. Implementation is optional; it may not be supported by all servers or files.
- Throws:
IOException
- if the operation failedUnsupportedOperation
- if functionality is not available
-
getNames
List<Name> getNames() throws IOException
Names of the available Resources.For additional information please see getInfo( Name ) and getSchema( Name ).
- Returns:
- Names of the available contents.
- Throws:
IOException
-
getSchema
T getSchema(Name name) throws IOException
Description of the named resource.The FeatureType returned describes the contents being published. For additional metadata please review getInfo( Name ).
- Parameters:
name
- Type name a the resource from getNames()- Returns:
- Description of the FeatureType being made avaialble
- Throws:
IOException
-
getFeatureSource
FeatureSource<T,F> getFeatureSource(Name typeName) throws IOException
Access to the named resource.The level of access is represented by the instance of the FeatureSource being returned.
Formally:
- FeatureSource - read-only access
- FeatureStore - read-write access
- FetureLocking - concurrency control
-
Additional interfaces may be supported by the implementation you are using.
- Returns:
- Access to the named resource being made available
- Throws:
IOException
-
dispose
void dispose()
Disposes of this data store and releases any resource that it is using.A
DataStore
cannot be used afterdispose
has been called, neither can any data access object it helped create, such asFeatureReader
,FeatureSource
orFeatureCollection
.This operation can be called more than once without side effects.
There is no thread safety assurance associated with this method. For example, client code will have to make sure this method is not called while retrieving/saving data from/to the storage, or be prepared for the consequences.
-
-