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

Field Summary
protected  Provider<DbAdapter> adapterProvider
           
protected  JdbcEventLogger logger
           
protected  PkGenerator pkGenerator
           
 
Constructor Summary
AutoAdapter(Provider<DbAdapter> adapterProvider, JdbcEventLogger logger)
          Creates an AutoAdapter based on a delegate adapter obtained via "adapterProvider".
 
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).
 java.lang.String createFkConstraint(DbRelationship rel)
          Returns a SQL string that can be used to create a foreign key constraint for the relationship, or null if foreign keys are not supported.
 java.lang.String createTable(DbEntity entity)
          Returns a SQL string that can be used to create database table corresponding to entity parameter.
 void createTableAppendColumn(java.lang.StringBuffer sqlBuffer, DbAttribute column)
          Append the column type part of a "create table" to the given StringBuffer
 java.lang.String createUniqueConstraint(DbEntity source, java.util.Collection<DbAttribute> columns)
          Returns a DDL string to create a unique constraint over a set of columns, or null if the unique constraints are not supported.
 java.util.Collection<java.lang.String> dropTableStatements(DbEntity table)
          Returns a collection of SQL statements needed to drop a database table.
 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.
 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)
           
 QuotingStrategy getQuotingStrategy(boolean isQuoteStrategy)
           
protected  DbAdapter loadAdapter()
          Loads underlying DbAdapter delegate.
 MergerFactory mergerFactory()
           
 void setPkGenerator(PkGenerator pkGenerator)
          Sets a PK generator override.
 boolean supportsBatchUpdates()
          Returns true if the target database supports batch updates.
 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

adapterProvider

protected Provider<DbAdapter> adapterProvider

pkGenerator

protected PkGenerator pkGenerator

logger

protected JdbcEventLogger logger
Constructor Detail

AutoAdapter

public AutoAdapter(Provider<DbAdapter> adapterProvider,
                   JdbcEventLogger logger)
Creates an AutoAdapter based on a delegate adapter obtained via "adapterProvider".

Since:
3.1
Method Detail

getAdapter

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


loadAdapter

protected DbAdapter loadAdapter()
Loads underlying DbAdapter delegate.


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

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

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

dropTableStatements

public java.util.Collection<java.lang.String> dropTableStatements(DbEntity table)
Description copied from interface: DbAdapter
Returns a collection of SQL statements needed to drop a database table.

Specified by:
dropTableStatements 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 entity parameter.

Specified by:
createTable in interface DbAdapter

createUniqueConstraint

public java.lang.String createUniqueConstraint(DbEntity source,
                                               java.util.Collection<DbAttribute> columns)
Description copied from interface: DbAdapter
Returns a DDL string to create a unique constraint over a set of columns, or null if the unique constraints are not supported.

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, or null if foreign keys are not supported.

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

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 scale, i.e. the number of decimal digits (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

mergerFactory

public MergerFactory mergerFactory()
Specified by:
mergerFactory in interface DbAdapter

createTableAppendColumn

public void createTableAppendColumn(java.lang.StringBuffer sqlBuffer,
                                    DbAttribute column)
Description copied from interface: DbAdapter
Append the column type part of a "create table" to the given StringBuffer

Specified by:
createTableAppendColumn in interface DbAdapter
Parameters:
sqlBuffer - the StringBuffer to append the column type to
column - the DbAttribute defining the column to append type for

getQuotingStrategy

public QuotingStrategy getQuotingStrategy(boolean isQuoteStrategy)
Specified by:
getQuotingStrategy in interface DbAdapter


Copyright © 2001-2012 Apache Cayenne. All Rights Reserved.