Class BBOXDataStoreFactory

  extended byorg.geotools.factory.AbstractFactory
All Implemented Interfaces:
DataStoreFactorySpi, Factory, javax.imageio.spi.RegisterableService

public class BBOXDataStoreFactory
extends AbstractFactory
implements DataStoreFactorySpi

Creates a Geometryless JDBC based on the conection params.

This factory should be registered in the META-INF/ folder, under services/ in the DataStoreFactorySpi file.

REVISIT: I believe the use of the namespace param needs to be revisited. GeoServer is going to start making use of this, as the XML namespace that the feature type should be created with. The use of namespace in this package is that of a database schema name. Though investigating futher it looks like all the dbs use it that way. So this is just a note that xml namespace and database namespace need to be reconciled. The work done in this package seems to be begging some datastore hierarchy refactoring, hopefully when we do that we can also get jdbc datastore factories in a hierarchy, instead of each just doing their own thing. -ch

$Id: 17700 2006-01-22 23:30:39Z desruisseaux $
Rob Atkinson, Social Change Online, Chris Holmes, TOPP

Nested Class Summary
Nested classes inherited from class
Field Summary
Fields inherited from class org.geotools.factory.AbstractFactory
Constructor Summary
BBOXDataStoreFactory(java.util.Map hints)
          Creates a new instance of PostgisDataStoreFactory.
Method Summary
 boolean canProcess(java.util.Map params)
          Checks to see if all the postgis params are there.
 DataStore createDataStore(java.util.Map params)
          Construct a postgis data store using the params.
 DataStore createNewDataStore(java.util.Map params)
          The datastore cannot create a new database.
 java.lang.String getDescription()
          Describe the nature of the datasource constructed by this factory.
 java.lang.String getDisplayName()
          Name suitable for display to end user.
 java.util.Map getImplementationHints()
          Map of hints (maybe unmodifiable) used by this factory to customize its use.
 DataStoreFactorySpi.Param[] getParametersInfo()
          Describe parameters.
 boolean isAvailable()
          Test to see if this datastore is available, if it has all the appropriate libraries to construct a datastore.
Methods inherited from class org.geotools.factory.AbstractFactory
onDeregistration, onRegistration
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail


public BBOXDataStoreFactory(java.util.Map hints)
Creates a new instance of PostgisDataStoreFactory.

Note: the map of thins is used when constructing datastore instandces, as such it needs to be passed onto the datastores so that they can make use of this information when creating content.

Method Detail


public boolean canProcess(java.util.Map params)
Checks to see if all the postgis params are there.

Should have:

Specified by:
canProcess in interface DataStoreFactorySpi
params - Set of parameters needed for a jdbc data store.
true if dbtype equals BBOX, and contains keys for host, user, passwd, and database.


public DataStore createDataStore(java.util.Map params)
Construct a postgis data store using the params.

Specified by:
createDataStore in interface DataStoreFactorySpi
params - The full set of information needed to construct a live data source. Should have dbtype equal to BBOX, as well as host, user, passwd, database, and table.
The created DataSource, this may be null if the required resource was not found or if insufficent parameters were given. Note that canProcess() should have returned false if the problem is to do with insuficent parameters.
Throws: - See DataSourceException
DataSourceException - Thrown if there were any problems creating or connecting the datasource.


public DataStore createNewDataStore(java.util.Map params)
The datastore cannot create a new database.

Specified by:
createNewDataStore in interface DataStoreFactorySpi
params -
Throws: - See UnsupportedOperationException
java.lang.UnsupportedOperationException - Cannot create new database


public java.lang.String getDescription()
Describe the nature of the datasource constructed by this factory.

Specified by:
getDescription in interface DataStoreFactorySpi
A human readable description that is suitable for inclusion in a list of available datasources.


public java.lang.String getDisplayName()
Description copied from interface: DataStoreFactorySpi
Name suitable for display to end user.

A non localized display name for this data store type.

Specified by:
getDisplayName in interface DataStoreFactorySpi
A short name suitable for display in a user interface.


public boolean isAvailable()
Test to see if this datastore is available, if it has all the appropriate libraries to construct a datastore. This datastore just returns true for now. This method is used for gui apps, so as to not advertise data store capabilities they don't actually have.

Specified by:
isAvailable in interface DataStoreFactorySpi
true if and only if this factory is available to create DataStores.


public DataStoreFactorySpi.Param[] getParametersInfo()
Describe parameters.

Specified by:
getParametersInfo in interface DataStoreFactorySpi
See Also:


public java.util.Map getImplementationHints()
Description copied from interface: Factory
Map of hints (maybe unmodifiable) used by this factory to customize its use. This map is not guaranteed to contains all the hints supplied by the user; it may be only a subset. Consequently, hints provided here are usually not suitable for creating new factories, unless the implementation make some additional garantees (e.g. FactoryUsingVolatileDependencies).

The primary purpose of this method is to determine if an existing factory instance can be reused for a set of user-supplied hints. This method is invoked by FactoryRegistry in order to compare this factory's hints against user's hints. This is dependency introspection only; never invokes this method for creating new factories.

Keys are usually static constants from the Hints class, while values are instances of some key-dependent class. The key set must contains at least all hints impacting functionality. While the key set may contains all hints supplied by the user, it is recommended to limit the set to only the hints used by this particular factory instance. A minimal set will helps FactoryRegistry to compares only hints that matter and avoid the creation of unnecessary instances of this factory.

The hint values may be different than the one supplied by the user. If a user supplied a hint as a Class object, this method shall replace it by the actual instance used, if possible.

Implementations of this method are usually quite simple. For example if a datum authority factory uses an ordinary datum factory, its method could be implemented as below (note that we should not check if the datum factory is null, since key with null value is the expected behaviour in this case). Example:

 Map hints = new HashMap();
 hints.put(Hints.DATUM_FACTORY, datumFactory);
 return hints;

Specified by:
getImplementationHints in interface Factory
getImplementationHints in class AbstractFactory
The map of hints, or an empty map if none.

Copyright © GeoTools. All Rights Reserved.