|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.geotools.data.AbstractDataStoreFactory
org.geotools.jdbc.JDBCDataStoreFactory
public abstract class JDBCDataStoreFactory
Abstract implementation of DataStoreFactory for jdbc datastores.
Nested Class Summary |
---|
Nested classes/interfaces inherited from interface org.geotools.data.DataAccessFactory |
---|
DataAccessFactory.Param |
Field Summary | |
---|---|
static DataAccessFactory.Param |
DATABASE
parameter for database instance |
static DataAccessFactory.Param |
DATASOURCE
parameter for data source |
static DataAccessFactory.Param |
DBTYPE
parameter for database type |
static DataAccessFactory.Param |
EXPOSE_PK
expose primary key columns as attributes |
static DataAccessFactory.Param |
FETCHSIZE
If connections should be validated before using them |
static DataAccessFactory.Param |
HOST
parameter for database host |
static DataAccessFactory.Param |
MAX_OPEN_PREPARED_STATEMENTS
Number of prepared statements cached per connection (this param is exposed only by factories supporting prepared statements |
static DataAccessFactory.Param |
MAXCONN
Maximum number of connections in the connection pool |
static DataAccessFactory.Param |
MAXWAIT
Maximum amount of time the pool will wait when trying to grab a new connection |
static DataAccessFactory.Param |
MINCONN
Minimum number of connections in the connection pool |
static DataAccessFactory.Param |
NAMESPACE
parameter for namespace of the datastore |
static DataAccessFactory.Param |
PASSWD
parameter for database password |
static DataAccessFactory.Param |
PK_METADATA_TABLE
Metadata table providing information about primary keys |
static DataAccessFactory.Param |
PORT
parameter for database port |
static DataAccessFactory.Param |
SCHEMA
parameter for database schema |
static DataAccessFactory.Param |
USER
parameter for database user |
static DataAccessFactory.Param |
VALIDATECONN
If connections should be validated before using them |
Constructor Summary | |
---|---|
JDBCDataStoreFactory()
|
Method Summary | |
---|---|
boolean |
canProcess(java.util.Map params)
Default implementation verifies the Map against the Param information. |
protected boolean |
checkDBType(java.util.Map params)
|
protected boolean |
checkDBType(java.util.Map params,
java.lang.String dbtype)
|
org.apache.commons.dbcp.BasicDataSource |
createDataSource(java.util.Map params)
DataSource access allowing SQL use: intended to allow client code to query available schemas. |
protected javax.sql.DataSource |
createDataSource(java.util.Map params,
SQLDialect dialect)
Creates the datasource for the data store. |
JDBCDataStore |
createDataStore(java.util.Map params)
Construct a live data source using the params specifed. |
protected JDBCDataStore |
createDataStoreInternal(JDBCDataStore dataStore,
java.util.Map params)
Subclass hook to do additional initialization of a newly created datastore. |
DataStore |
createNewDataStore(java.util.Map params)
|
protected abstract SQLDialect |
createSQLDialect(JDBCDataStore dataStore)
Creates the dialect that the datastore uses for communication with the underlying database. |
protected abstract java.lang.String |
getDatabaseID()
Returns a string to identify the type of the database. |
java.lang.String |
getDisplayName()
Default Implementation abuses the naming convention. |
protected abstract java.lang.String |
getDriverClassName()
Returns the fully qualified class name of the jdbc driver. |
java.util.Map<java.awt.RenderingHints.Key,?> |
getImplementationHints()
Returns the implementation hints for the datastore. |
protected java.lang.String |
getJDBCUrl(java.util.Map params)
Builds up the JDBC url in a jdbc: |
DataAccessFactory.Param[] |
getParametersInfo()
MetaData about the required Parameters (for createDataStore). |
protected abstract java.lang.String |
getValidationQuery()
Override this to return a good validation query (a very quick one, such as one that asks the database what time is it) or return null if the factory does not support validation. |
boolean |
isAvailable()
Determines if the datastore is available. |
protected void |
setupParameters(java.util.Map parameters)
Sets up the database connection parameters. |
Methods inherited from class org.geotools.data.AbstractDataStoreFactory |
---|
getParameters |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface org.geotools.data.DataAccessFactory |
---|
getDescription |
Field Detail |
---|
public static final DataAccessFactory.Param DBTYPE
public static final DataAccessFactory.Param HOST
public static final DataAccessFactory.Param PORT
public static final DataAccessFactory.Param DATABASE
public static final DataAccessFactory.Param SCHEMA
public static final DataAccessFactory.Param USER
public static final DataAccessFactory.Param PASSWD
public static final DataAccessFactory.Param NAMESPACE
public static final DataAccessFactory.Param DATASOURCE
public static final DataAccessFactory.Param MAXCONN
public static final DataAccessFactory.Param MINCONN
public static final DataAccessFactory.Param VALIDATECONN
public static final DataAccessFactory.Param FETCHSIZE
public static final DataAccessFactory.Param MAXWAIT
public static final DataAccessFactory.Param PK_METADATA_TABLE
public static final DataAccessFactory.Param MAX_OPEN_PREPARED_STATEMENTS
public static final DataAccessFactory.Param EXPOSE_PK
Constructor Detail |
---|
public JDBCDataStoreFactory()
Method Detail |
---|
public java.lang.String getDisplayName()
AbstractDataStoreFactory
Will return Foo
for
org.geotools.data.foo.FooFactory
.
getDisplayName
in interface DataAccessFactory
getDisplayName
in class AbstractDataStoreFactory
public boolean canProcess(java.util.Map params)
AbstractDataStoreFactory
It will ensure that:
Why would you ever want to override this method? If you want to check that a expected file exists and is a directory.
Overrride:
public boolean canProcess( Map params ) {
if( !super.canProcess( params ) ){
return false; // was not in agreement with getParametersInfo
}
// example check
File file = (File) DIRECTORY.lookup( params ); // DIRECTORY is a param
return file.exists() && file.isDirectory();
}
canProcess
in interface DataAccessFactory
canProcess
in class AbstractDataStoreFactory
params
- The full set of information needed to construct a live
data source.
protected boolean checkDBType(java.util.Map params)
protected final boolean checkDBType(java.util.Map params, java.lang.String dbtype)
public final JDBCDataStore createDataStore(java.util.Map params) throws java.io.IOException
DataStoreFactorySpi
You can think of this as setting up a connection to the back end data source.
Magic Params: the following params are magic and are honoured by convention by the GeoServer and uDig application.
params
- The full set of information needed to construct a live
data store. Typical key values for the map include: url -
location of a resource, used by file reading datasources. dbtype
- the type of the database to connect to, e.g. postgis, mysql
java.io.IOException
- if there were any problems setting up (creating or
connecting) the datasource.protected JDBCDataStore createDataStoreInternal(JDBCDataStore dataStore, java.util.Map params) throws java.io.IOException
Typically subclasses will want to override this method in the case where they provide additional datastore parameters, those should be processed here.
This method is provided with an instance of the datastore. In some cases subclasses may wish to create a new instance of the datastore, for instance in order to wrap the original instance. This is supported but the new datastore must be returned from this method. If not is such the case this method should still return the original passed in.
dataStore
- The newly created datastore.params
- THe datastore parameters.
java.io.IOException
public DataStore createNewDataStore(java.util.Map params) throws java.io.IOException
java.io.IOException
public final DataAccessFactory.Param[] getParametersInfo()
DataAccessFactory
Interpretation of FeatureDescriptor values:
This should be the same as:
Object params = factory.getParameters();
BeanInfo info = getBeanInfo( params );
return info.getPropertyDescriptors();
protected void setupParameters(java.util.Map parameters)
Subclasses may extend, but should not override. This implementation registers the following parameters.
Subclass implementation may remove any parameters from the map, or may overrwrite any parameters in the map.
parameters
- Map of Param
objects.public boolean isAvailable()
Subclasses may with to override or extend this method. This implementation
checks whether the jdbc driver class (provided by getDriverClassName()
can be loaded.
isAvailable
in interface DataAccessFactory
isAvailable
in class AbstractDataStoreFactory
true
, override to check for drivers etc...public java.util.Map<java.awt.RenderingHints.Key,?> getImplementationHints()
Subclasses may override, this implementation returns null
.
getImplementationHints
in interface Factory
getImplementationHints
in class AbstractDataStoreFactory
protected abstract java.lang.String getDatabaseID()
Example: 'postgis'.
protected abstract java.lang.String getDriverClassName()
For example: org.postgresql.Driver
protected abstract SQLDialect createSQLDialect(JDBCDataStore dataStore)
dataStore
- The datastore.protected javax.sql.DataSource createDataSource(java.util.Map params, SQLDialect dialect) throws java.io.IOException
This method creates a BasicDataSource
instance and populates it
as follows:
getDriverClassName()
getDatabaseID()
>://<HOST
>/<DATABASE
>'
USER
>
PASSWD
>
java.io.IOException
public org.apache.commons.dbcp.BasicDataSource createDataSource(java.util.Map params) throws java.io.IOException
This DataSource is the clients responsibility to close() when they are finished using it.
params
- Map of connection parameter.
java.io.IOException
protected abstract java.lang.String getValidationQuery()
protected java.lang.String getJDBCUrl(java.util.Map params) throws java.io.IOException
params
-
java.io.IOException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |