org.geotools.data.oracle
Class OracleOCIDataStoreFactory

java.lang.Object
  extended by org.geotools.data.oracle.OracleOCIDataStoreFactory
All Implemented Interfaces:
DataAccessFactory, DataStoreFactorySpi, Factory

public class OracleOCIDataStoreFactory
extends java.lang.Object
implements DataStoreFactorySpi

Creates an Oracle datastore based on a thick OCI client connection, instead of the traditional (thin) jdbc connection. The thin JDBC connection was designed for clients requiring no more classes than just the classes12.jar (or ojdbc14.jar). The OCI JDBC drivers are based on the Oracle client software and rely mostly on the very fast C/C++ based OCI (Oracle Call Interface) runtime.

This leads to an easy way to speed up GeoTools when gt2 is running on the same computer as the oracle install, as the OCI drivers are already there. And I believe if a computer has the OCI correctly installed and configure it can be used on remote computers, with the faster connection. This just takes more work by the admin. Server applications like GeoServer will often be on the same computer as the databse, so it makes sense to offer admins the advantage of using the OCI jdbc driver.

Instead of the instance, host, port requirments of the normal oracle factory this driver just requires the 'alias', which refers to values defined by the Oracle Net Configuration assistant and stored in $ORACLE_HOME/NETWORK/ADMIN/tnsnames.ora. We have also had luck on the same computer with just leaving 'alias' as an empty string, and it seems to have a reasonable default behavior.

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

Author:
Chris Holmes, TOPP, Bernard de Terwangne, star.be

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.geotools.data.DataAccessFactory
DataAccessFactory.Param
 
Field Summary
static DataAccessFactory.Param MAXCONN
           
static DataAccessFactory.Param MINCONN
           
static DataAccessFactory.Param VALIDATECONN
           
 
Constructor Summary
OracleOCIDataStoreFactory()
          Creates a new instance of OracleOCIDataStoreFactory
 
Method Summary
 boolean canProcess(java.util.Map params)
          Determines whether DataStore created by this factory can process the parameters.
 DataStore createDataStore(java.util.Map params)
          Construct a postgis data store using the params.
 DataStore createNewDataStore(java.util.Map params)
          Oracle cannot create a new database.
static javax.sql.DataSource getDefaultDataSource(java.lang.String alias, java.lang.String user, java.lang.String passwd, int maxActive, int minIdle, boolean validate)
           
 java.lang.String getDescription()
          Describe the nature of the datastore constructed by this factory.
 java.lang.String getDisplayName()
          Name suitable for display to end user.
 java.util.Map getImplementationHints()
          Returns the implementation hints.
 DataAccessFactory.Param[] getParametersInfo()
          Describe parameters.
 boolean isAvailable()
          Returns whether the OracleDataStoreFactory would actually be able to generate a DataStore.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MAXCONN

public static final DataAccessFactory.Param MAXCONN

MINCONN

public static final DataAccessFactory.Param MINCONN

VALIDATECONN

public static final DataAccessFactory.Param VALIDATECONN
Constructor Detail

OracleOCIDataStoreFactory

public OracleOCIDataStoreFactory()
Creates a new instance of OracleOCIDataStoreFactory

Method Detail

canProcess

public boolean canProcess(java.util.Map params)
Determines whether DataStore created by this factory can process the parameters.

Required Parameters are:

There are no defaults since each parameter must be explicitly defined by the user, or another DataSourceFactorySpi should be used. This behaviour is defined in the DataStoreFactorySpi contract.

Specified by:
canProcess in interface DataAccessFactory
Parameters:
params - The parameter to check.
Returns:
True if all the required parameters are supplied.

createDataStore

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

Specified by:
createDataStore in interface DataAccessFactory
Specified by:
createDataStore in interface DataStoreFactorySpi
Parameters:
params - The full set of information needed to construct a live data source. Should have dbtype equal to postgis, as well as host, user, passwd, database, and table.
Returns:
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:
java.io.IOException - DOCUMENT ME!
DataSourceException - Thrown if there were any problems creating or connecting the datasource.

getDefaultDataSource

public static javax.sql.DataSource getDefaultDataSource(java.lang.String alias,
                                                        java.lang.String user,
                                                        java.lang.String passwd,
                                                        int maxActive,
                                                        int minIdle,
                                                        boolean validate)
                                                 throws DataSourceException
Throws:
DataSourceException

createNewDataStore

public DataStore createNewDataStore(java.util.Map params)
                             throws java.io.IOException
Oracle cannot create a new database.

Specified by:
createNewDataStore in interface DataStoreFactorySpi
Parameters:
params -
Throws:
java.io.IOException - DOCUMENT ME!
java.lang.UnsupportedOperationException - Cannot create new database

getDisplayName

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

A non localized display name for this data store type.

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

getDescription

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

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

isAvailable

public boolean isAvailable()
Returns whether the OracleDataStoreFactory would actually be able to generate a DataStore. Depends on whether the appropriate libraries are on the classpath. For now just checks for the presence of the JDBC driver, should probably check for SDOAPI as well.

Specified by:
isAvailable in interface DataAccessFactory
Returns:
True if the classes to make an oracle connection are present.

getParametersInfo

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

Specified by:
getParametersInfo in interface DataAccessFactory
Returns:
Param array describing the Map for createDataStore
See Also:
DataAccessFactory.getParametersInfo()

getImplementationHints

public java.util.Map getImplementationHints()
Returns the implementation hints. The default implementation returns en empty map.

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


Copyright © 1996-2010 Geotools. All Rights Reserved.