org.apache.cayenne.dba
Class AutoAdapter

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

public class AutoAdapter
extends 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  DbAdapterFactory adapterFactory
           
protected  DataSource dataSource
           
protected  PkGenerator pkGenerator
           
 
Constructor Summary
AutoAdapter(DataSource dataSource)
          Creates an AutoAdapter that can detect adapters known to Cayenne.
AutoAdapter(DbAdapterFactory adapterFactory, DataSource dataSource)
          Creates an AutoAdapter with specified adapter factory and DataSource.
 
Method Summary
static void addFactory(DbAdapterFactory factory)
          Allows application code to add a sniffer to detect a custom adapter.
 void bindParameter(PreparedStatement statement, Object object, int pos, int sqlType, int precision)
          Binds an object value to PreparedStatement's numbered parameter.
 DbAttribute buildAttribute(String name, 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).
protected  DbAdapterFactory createDefaultFactory()
          Called from constructor to initialize factory in case no factory was specified by the object creator.
 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.
 String createTable(DbEntity entity)
          Returns a SQL string that can be used to create database table corresponding to entity parameter.
 void createTableAppendColumn(StringBuffer sqlBuffer, DbAttribute column)
          Append the column type part of a "create table" to the given StringBuffer
 String createUniqueConstraint(DbEntity source, 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.
 String dropTable(DbEntity entity)
          Deprecated. since 3.0 as the decorated method is deprecated.
 Collection<String> dropTableStatements(DbEntity table)
          Returns a collection of SQL statements needed to drop a database table.
 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.
 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.
 String getIdentifiersEndQuote()
           
 String getIdentifiersStartQuote()
           
 PkGenerator getPkGenerator()
          Returns a primary key generator.
 QualifierTranslator getQualifierTranslator(QueryAssembler queryAssembler)
           
 QuotingStrategy getQuotingStrategy(boolean isQuoteStrategy)
           
protected  DbAdapter loadAdapter()
          Opens a connection, retrieves JDBC metadata and attempts to guess adapter form it.
 MergerFactory mergerFactory()
           
 void setDefaultQuoteSqlIdentifiersChars(boolean isQuoteSqlIdentifiers)
           
 void setPkGenerator(PkGenerator pkGenerator)
          Sets a PK generator override.
 boolean supportsBatchUpdates()
          Returns true if the target database supports batch updates.
 boolean supportsFkConstraints()
          Deprecated. since 3.0 - almost all DB's support FK's now and also this flag is less relevant for Cayenne now.
 boolean supportsGeneratedKeys()
          Returns true if a target database supports key autogeneration.
 boolean supportsUniqueConstraints()
          Returns true if a target database supports UNIQUE constraints.
 String tableTypeForTable()
          Returns the name of the table type (as returned by DatabaseMetaData.getTableTypes) for a simple user table.
 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 DataSource dataSource

pkGenerator

protected PkGenerator pkGenerator
Constructor Detail

AutoAdapter

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


AutoAdapter

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

Method Detail

addFactory

public static void addFactory(DbAdapterFactory factory)
Allows application code to add a sniffer to detect a custom adapter.

Since:
3.0

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

supportsFkConstraints

public boolean supportsFkConstraints()
Deprecated. since 3.0 - almost all DB's support FK's now and also this flag is less relevant for Cayenne now.

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 String dropTable(DbEntity entity)
Deprecated. since 3.0 as the decorated method is deprecated.

Description copied from interface: DbAdapter
Returns a SQL string that can be used to drop a database table corresponding to entity parameter.

Specified by:
dropTable in interface DbAdapter

dropTableStatements

public Collection<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 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 String createUniqueConstraint(DbEntity source,
                                     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 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 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(String name,
                                  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(PreparedStatement statement,
                          Object object,
                          int pos,
                          int sqlType,
                          int precision)
                   throws SQLException,
                          Exception
Description copied from interface: DbAdapter
Binds an object value to PreparedStatement's numbered parameter.

Specified by:
bindParameter in interface DbAdapter
Throws:
SQLException
Exception

tableTypeForTable

public 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 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(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

setDefaultQuoteSqlIdentifiersChars

public void setDefaultQuoteSqlIdentifiersChars(boolean isQuoteSqlIdentifiers)

getIdentifiersStartQuote

public String getIdentifiersStartQuote()

getIdentifiersEndQuote

public String getIdentifiersEndQuote()

getQuotingStrategy

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


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