org.apache.cayenne.dba
Class AutoAdapter

java.lang.Object
  extended by org.apache.cayenne.dba.AutoAdapter
All Implemented Interfaces:
DbAdapter

public class AutoAdapter
extends java.lang.Object
implements DbAdapter

A DbAdapter that automatically detects the kind of database it is running on and instantiates an appropriate DB-specific adapter, delegating all subsequent method calls to this adapter.

Since:
1.2
Author:
Andrus Adamchik

Field Summary
protected  DbAdapterFactory adapterFactory
           
protected  javax.sql.DataSource dataSource
           
protected  PkGenerator pkGenerator
           
 
Constructor Summary
AutoAdapter(javax.sql.DataSource dataSource)
          Creates an AutoAdapter that can detect adapters known to Cayenne.
AutoAdapter(DbAdapterFactory adapterFactory, javax.sql.DataSource dataSource)
          Creates an AutoAdapter with specified adapter factory and DataSource.
 
Method Summary
 void bindParameter(java.sql.PreparedStatement statement, java.lang.Object object, int pos, int sqlType, int precision)
          Binds an object value to PreparedStatement's numbered parameter.
 DbAttribute buildAttribute(java.lang.String name, java.lang.String typeName, int type, int size, int precision, boolean allowNulls)
          Creates and returns a DbAttribute based on supplied parameters (usually obtained from database meta data).
 DataNode createDataNode(java.lang.String name)
          Deprecated. since 1.2 this method is deprecated in DbAdapter interface.
protected  DbAdapterFactory createDefaultFactory()
          Called from constructor to initialize factory in case no factory was specified by the object creator.
 java.lang.String createFkConstraint(DbRelationship rel)
          Returns a SQL string that can be used to create a foreign key constraint for the relationship.
 java.lang.String createTable(DbEntity entity)
          Returns a SQL string that can be used to create database table corresponding to ent parameter.
 java.lang.String createUniqueConstraint(DbEntity source, java.util.Collection columns)
          Returns a DDL string to create a unique constraint over a set of columns.
 java.lang.String dropTable(DbEntity entity)
          Returns a SQL string that can be used to drop a database table corresponding to ent parameter.
 java.lang.String[] externalTypesForJdbcType(int type)
          Returns an array of RDBMS types that can be used with JDBC type.
 SQLAction getAction(Query query, DataNode node)
          Returns an instance of SQLAction that should handle the query.
protected  DbAdapter getAdapter()
          Returns a proxied DbAdapter, lazily creating it on first invocation.
 java.lang.String getBatchTerminator()
          Returns a String used to terminate a batch in command-line tools.
static DbAdapterFactory getDefaultFactory()
          Returns a DbAdapterFactory configured to detect all databases officially supported by Cayenne.
 ExtendedTypeMap getExtendedTypes()
          Returns a map of ExtendedTypes that is used to translate values between Java and JDBC layer.
 PkGenerator getPkGenerator()
          Returns a primary key generator.
 QualifierTranslator getQualifierTranslator(QueryAssembler queryAssembler)
           
 QueryTranslator getQueryTranslator(Query query)
          Deprecated. since 1.2 this method is deprecated in DbAdapter interface.
protected  DbAdapter loadAdapter()
          Opens a connection, retrieves JDBC metadata and attempts to guess adapter form it.
 void setPkGenerator(PkGenerator pkGenerator)
          Sets a PK generator override.
 boolean shouldRunBatchQuery(DataNode node, java.sql.Connection con, BatchQuery query, OperationObserver delegate)
          Deprecated. since 1.2 this method is deprecated in DbAdapter interface.
 boolean supportsBatchUpdates()
          Returns true if the target database supports batch updates.
 boolean supportsFkConstraints()
          Returns true if a target database supports FK constraints.
 boolean supportsGeneratedKeys()
          Returns true if a target database supports key autogeneration.
 boolean supportsUniqueConstraints()
          Returns true if a target database supports UNIQUE constraints.
 java.lang.String tableTypeForTable()
          Returns the name of the table type (as returned by DatabaseMetaData.getTableTypes) for a simple user table.
 java.lang.String tableTypeForView()
          Returns the name of the table type (as returned by DatabaseMetaData.getTableTypes) for a view table.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

adapterFactory

protected DbAdapterFactory adapterFactory

dataSource

protected javax.sql.DataSource dataSource

pkGenerator

protected PkGenerator pkGenerator
Constructor Detail

AutoAdapter

public AutoAdapter(javax.sql.DataSource dataSource)
Creates an AutoAdapter that can detect adapters known to Cayenne.


AutoAdapter

public AutoAdapter(DbAdapterFactory adapterFactory,
                   javax.sql.DataSource dataSource)
Creates an AutoAdapter with specified adapter factory and DataSource. If adapterFactory is null, default factory is used.

Method Detail

getDefaultFactory

public static DbAdapterFactory getDefaultFactory()
Returns a DbAdapterFactory configured to detect all databases officially supported by Cayenne.


createDefaultFactory

protected DbAdapterFactory createDefaultFactory()
Called from constructor to initialize factory in case no factory was specified by the object creator.


getAdapter

protected DbAdapter getAdapter()
Returns a proxied DbAdapter, lazily creating it on first invocation.


loadAdapter

protected DbAdapter loadAdapter()
Opens a connection, retrieves JDBC metadata and attempts to guess adapter form it.


getBatchTerminator

public java.lang.String getBatchTerminator()
Description copied from interface: DbAdapter
Returns a String used to terminate a batch in command-line tools. E.g. ";" on Oracle or "go" on Sybase.

Specified by:
getBatchTerminator in interface DbAdapter

createDataNode

public DataNode createDataNode(java.lang.String name)
Deprecated. since 1.2 this method is deprecated in DbAdapter interface.

Description copied from interface: DbAdapter
Creates an returns a named instance of a DataNode.

Specified by:
createDataNode in interface DbAdapter

getQueryTranslator

public QueryTranslator getQueryTranslator(Query query)
                                   throws java.lang.Exception
Deprecated. since 1.2 this method is deprecated in DbAdapter interface.

Description copied from interface: DbAdapter
Creates and returns a QueryTranslator appropriate for the specified query parameter. Sets translator "query" and "adapter" property.

This factory method allows subclasses to specify their own translators that implement vendor-specific optimizations.

Specified by:
getQueryTranslator in interface DbAdapter
Throws:
java.lang.Exception

getQualifierTranslator

public QualifierTranslator getQualifierTranslator(QueryAssembler queryAssembler)
Specified by:
getQualifierTranslator in interface DbAdapter

getAction

public SQLAction getAction(Query query,
                           DataNode node)
Description copied from interface: DbAdapter
Returns an instance of SQLAction that should handle the query.

Specified by:
getAction in interface DbAdapter

supportsFkConstraints

public boolean supportsFkConstraints()
Description copied from interface: DbAdapter
Returns true if a target database supports FK constraints.

Specified by:
supportsFkConstraints in interface DbAdapter

supportsUniqueConstraints

public boolean supportsUniqueConstraints()
Description copied from interface: DbAdapter
Returns true if a target database supports UNIQUE constraints.

Specified by:
supportsUniqueConstraints in interface DbAdapter

supportsGeneratedKeys

public boolean supportsGeneratedKeys()
Description copied from interface: DbAdapter
Returns true if a target database supports key autogeneration. This feature also requires JDBC3-compliant driver.

Specified by:
supportsGeneratedKeys in interface DbAdapter

supportsBatchUpdates

public boolean supportsBatchUpdates()
Description copied from interface: DbAdapter
Returns true if the target database supports batch updates.

Specified by:
supportsBatchUpdates in interface DbAdapter

dropTable

public java.lang.String dropTable(DbEntity entity)
Description copied from interface: DbAdapter
Returns a SQL string that can be used to drop a database table corresponding to ent parameter.

Specified by:
dropTable in interface DbAdapter

createTable

public java.lang.String createTable(DbEntity entity)
Description copied from interface: DbAdapter
Returns a SQL string that can be used to create database table corresponding to ent parameter.

Specified by:
createTable in interface DbAdapter

createUniqueConstraint

public java.lang.String createUniqueConstraint(DbEntity source,
                                               java.util.Collection columns)
Description copied from interface: DbAdapter
Returns a DDL string to create a unique constraint over a set of columns.

Specified by:
createUniqueConstraint in interface DbAdapter

createFkConstraint

public java.lang.String createFkConstraint(DbRelationship rel)
Description copied from interface: DbAdapter
Returns a SQL string that can be used to create a foreign key constraint for the relationship.

Specified by:
createFkConstraint in interface DbAdapter

externalTypesForJdbcType

public java.lang.String[] externalTypesForJdbcType(int type)
Description copied from interface: DbAdapter
Returns an array of RDBMS types that can be used with JDBC type. Valid JDBC types are defined in java.sql.Types.

Specified by:
externalTypesForJdbcType in interface DbAdapter

getExtendedTypes

public ExtendedTypeMap getExtendedTypes()
Description copied from interface: DbAdapter
Returns a map of ExtendedTypes that is used to translate values between Java and JDBC layer.

Specified by:
getExtendedTypes in interface DbAdapter
See Also:
ExtendedType

getPkGenerator

public PkGenerator getPkGenerator()
Returns a primary key generator.

Specified by:
getPkGenerator in interface DbAdapter

setPkGenerator

public void setPkGenerator(PkGenerator pkGenerator)
Sets a PK generator override. If set to non-null value, such PK generator will be used instead of the one provided by wrapped adapter.


buildAttribute

public DbAttribute buildAttribute(java.lang.String name,
                                  java.lang.String typeName,
                                  int type,
                                  int size,
                                  int precision,
                                  boolean allowNulls)
Description copied from interface: DbAdapter
Creates and returns a DbAttribute based on supplied parameters (usually obtained from database meta data).

Specified by:
buildAttribute in interface DbAdapter
Parameters:
name - database column name
typeName - database specific type name, may be used as a hint to determine the right JDBC type.
type - JDBC column type
size - database column size (ignored if less than zero)
precision - database column precision (ignored if less than zero)
allowNulls - database column nullable parameter

bindParameter

public void bindParameter(java.sql.PreparedStatement statement,
                          java.lang.Object object,
                          int pos,
                          int sqlType,
                          int precision)
                   throws java.sql.SQLException,
                          java.lang.Exception
Description copied from interface: DbAdapter
Binds an object value to PreparedStatement's numbered parameter.

Specified by:
bindParameter in interface DbAdapter
Throws:
java.sql.SQLException
java.lang.Exception

tableTypeForTable

public java.lang.String tableTypeForTable()
Description copied from interface: DbAdapter
Returns the name of the table type (as returned by DatabaseMetaData.getTableTypes) for a simple user table.

Specified by:
tableTypeForTable in interface DbAdapter

tableTypeForView

public java.lang.String tableTypeForView()
Description copied from interface: DbAdapter
Returns the name of the table type (as returned by DatabaseMetaData.getTableTypes) for a view table.

Specified by:
tableTypeForView in interface DbAdapter

shouldRunBatchQuery

public boolean shouldRunBatchQuery(DataNode node,
                                   java.sql.Connection con,
                                   BatchQuery query,
                                   OperationObserver delegate)
                            throws java.sql.SQLException,
                                   java.lang.Exception
Deprecated. since 1.2 this method is deprecated in DbAdapter interface.

Specified by:
shouldRunBatchQuery in interface DbAdapter
Throws:
java.sql.SQLException
java.lang.Exception


Copyright © 2001-2006 Apache.org All Rights Reserved.