org.geotools.data.oracle
Class OracleOCIDataStoreFactory

java.lang.Object
  extended byorg.geotools.data.oracle.OracleOCIDataStoreFactory
All Implemented Interfaces:
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 inherited from class org.geotools.data.DataStoreFactorySpi
DataStoreFactorySpi.Param
 
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.
 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.
 DataStoreFactorySpi.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
 

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 DataStoreFactorySpi
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 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.

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 -
Returns:
Throws:
java.io.IOException - DOCUMENT ME!
java.lang.UnsupportedOperationException - Cannot create new database

getDisplayName

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
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 DataStoreFactorySpi
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 DataStoreFactorySpi
Returns:
True if the classes to make an oracle connection are present.
Task:
Figure out a class to check the SDOAPI for, and check it.

getParametersInfo

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

Specified by:
getParametersInfo in interface DataStoreFactorySpi
Returns:
See Also:
DataStoreFactorySpi.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 © GeoTools. All Rights Reserved.