org.apache.cayenne.dba
Class JdbcAdapter

java.lang.Object
  extended by org.apache.cayenne.dba.JdbcAdapter
All Implemented Interfaces:
DbAdapter
Direct Known Subclasses:
DB2Adapter, DerbyAdapter, FrontBaseAdapter, H2Adapter, HSQLDBAdapter, IngresAdapter, MySQLAdapter, OpenBaseAdapter, OracleAdapter, PostgresAdapter, SQLiteAdapter, SybaseAdapter

public class JdbcAdapter
extends Object
implements DbAdapter

A generic DbAdapter implementation. Can be used as a default adapter or as a superclass of a concrete adapter implementation.


Field Summary
protected  EJBQLTranslatorFactory ejbqlTranslatorFactory
           
protected  ExtendedTypeMap extendedTypes
           
protected  String identifiersEndQuote
           
protected  String identifiersStartQuote
           
protected  PkGenerator pkGenerator
           
protected  boolean supportsBatchUpdates
           
protected  boolean supportsFkConstraints
           
protected  boolean supportsGeneratedKeys
           
protected  boolean supportsUniqueConstraints
           
protected  TypesHandler typesHandler
           
 
Constructor Summary
JdbcAdapter()
          Creates new JdbcAdapter with a set of default parameters.
 
Method Summary
 void bindParameter(PreparedStatement statement, Object object, int pos, int sqlType, int scale)
          Binds an object value to PreparedStatement's numbered parameter.
 DbAttribute buildAttribute(String name, String typeName, int type, int size, int scale, boolean allowNulls)
          Creates and returns a DbAttribute based on supplied parameters (usually obtained from database meta data).
protected  void configureExtendedTypes(ExtendedTypeMap map)
          Installs appropriate ExtendedTypes as converters for passing values between JDBC and Java layers.
protected  EJBQLTranslatorFactory createEJBQLTranslatorFactory()
          Creates and returns an EJBQLTranslatorFactory used to generate visitors for EJBQL to SQL translations.
 String createFkConstraint(DbRelationship rel)
          Returns a SQL string that can be used to create a foreign key constraint for the relationship.
protected  PkGenerator createPkGenerator()
          Creates and returns a primary key generator.
 String createTable(DbEntity entity)
          Returns a SQL string that can be used to create database table corresponding to ent parameter.
 void createTableAppendColumn(StringBuffer sqlBuffer, DbAttribute column)
          Appends SQL for column creation to CREATE TABLE buffer.
protected  void createTableAppendPKClause(StringBuffer sqlBuffer, DbEntity entity)
           
 String createUniqueConstraint(DbEntity source, Collection<DbAttribute> columns)
          Returns a DDL string to create a unique constraint over a set of columns.
 String dropTable(DbEntity table)
          Deprecated. since 3.0 in favor of "dropTableStatements"
 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.
 URL findAdapterResource(String name)
          Deprecated. since 3.0 replaced with protected method findResource(String).
protected  URL findResource(String name)
          * Locates and returns a named adapter resource.
 SQLAction getAction(Query query, DataNode node)
          Uses JdbcActionBuilder to create the right action.
 String getBatchTerminator()
          Returns default separator - a semicolon.
 EJBQLTranslatorFactory getEjbqlTranslatorFactory()
          Returns a translator factory for EJBQL to SQL translation.
 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 primary key generator associated with this DbAdapter.
 QualifierTranslator getQualifierTranslator(QueryAssembler queryAssembler)
          Creates and returns a default implementation of a qualifier translator.
 QuotingStrategy getQuotingStrategy(boolean needQuotes)
           
protected  void initIdentifiersQuotes()
           
 MergerFactory mergerFactory()
           
 void setEjbqlTranslatorFactory(EJBQLTranslatorFactory ejbqlTranslatorFactory)
          Sets a translator factory for EJBQL to SQL translation.
 void setPkGenerator(PkGenerator pkGenerator)
          Sets new primary key generator.
 void setSupportsBatchUpdates(boolean flag)
           
 void setSupportsFkConstraints(boolean flag)
           
 void setSupportsGeneratedKeys(boolean flag)
           
 void setSupportsUniqueConstraints(boolean flag)
           
 boolean supportsBatchUpdates()
          Returns true if the target database supports batch updates.
 boolean supportsFkConstraints()
          Returns true.
 boolean supportsGeneratedKeys()
          Returns true if a target database supports key autogeneration.
 boolean supportsUniqueConstraints()
          Returns true.
 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

pkGenerator

protected PkGenerator pkGenerator

typesHandler

protected TypesHandler typesHandler

extendedTypes

protected ExtendedTypeMap extendedTypes

supportsBatchUpdates

protected boolean supportsBatchUpdates

supportsFkConstraints

protected boolean supportsFkConstraints

supportsUniqueConstraints

protected boolean supportsUniqueConstraints

supportsGeneratedKeys

protected boolean supportsGeneratedKeys

ejbqlTranslatorFactory

protected EJBQLTranslatorFactory ejbqlTranslatorFactory

identifiersStartQuote

protected String identifiersStartQuote

identifiersEndQuote

protected String identifiersEndQuote
Constructor Detail

JdbcAdapter

public JdbcAdapter()
Creates new JdbcAdapter with a set of default parameters.

Method Detail

getIdentifiersStartQuote

public String getIdentifiersStartQuote()
Since:
3.0

getIdentifiersEndQuote

public String getIdentifiersEndQuote()
Since:
3.0

getBatchTerminator

public String getBatchTerminator()
Returns default separator - a semicolon.

Specified by:
getBatchTerminator in interface DbAdapter
Since:
1.0.4

findAdapterResource

public URL findAdapterResource(String name)
Deprecated. since 3.0 replaced with protected method findResource(String).

Locates and returns a named adapter resource. A resource can be an XML file, etc.

This implementation is based on the premise that each adapter is located in its own Java package and all resources are in the same package as well. Resource lookup is recursive, so that if DbAdapter is a subclass of another adapter, parent adapter package is searched as a failover.

Since:
1.1

findResource

protected URL findResource(String name)
* Locates and returns a named adapter resource. A resource can be an XML file, etc.

This implementation is based on the premise that each adapter is located in its own Java package and all resources are in the same package as well. Resource lookup is recursive, so that if DbAdapter is a subclass of another adapter, parent adapter package is searched as a failover.

Since:
3.0

configureExtendedTypes

protected void configureExtendedTypes(ExtendedTypeMap map)
Installs appropriate ExtendedTypes as converters for passing values between JDBC and Java layers. Called from default constructor.


createPkGenerator

protected PkGenerator createPkGenerator()
Creates and returns a primary key generator. This factory method should be overriden by JdbcAdapter subclasses to provide custom implementations of PKGenerator.


createEJBQLTranslatorFactory

protected EJBQLTranslatorFactory createEJBQLTranslatorFactory()
Creates and returns an EJBQLTranslatorFactory used to generate visitors for EJBQL to SQL translations. This method should be overriden by subclasses that need to customize EJBQL generation.

Since:
3.0

getPkGenerator

public PkGenerator getPkGenerator()
Returns primary key generator associated with this DbAdapter.

Specified by:
getPkGenerator in interface DbAdapter

setPkGenerator

public void setPkGenerator(PkGenerator pkGenerator)
Sets new primary key generator.

Since:
1.1

supportsFkConstraints

public boolean supportsFkConstraints()
Returns true.

Specified by:
supportsFkConstraints in interface DbAdapter

setSupportsFkConstraints

public void setSupportsFkConstraints(boolean flag)
Since:
1.1

supportsUniqueConstraints

public boolean supportsUniqueConstraints()
Returns true.

Specified by:
supportsUniqueConstraints in interface DbAdapter
Since:
1.1

setSupportsUniqueConstraints

public void setSupportsUniqueConstraints(boolean flag)
Since:
1.1

dropTable

public String dropTable(DbEntity table)
Deprecated. since 3.0 in favor of "dropTableStatements"

Returns a SQL string to drop a table corresponding to table DbEntity.

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
Since:
3.0

createTable

public String createTable(DbEntity entity)
Returns a SQL string that can be used to create database table corresponding to ent parameter.

Specified by:
createTable in interface DbAdapter

createTableAppendPKClause

protected void createTableAppendPKClause(StringBuffer sqlBuffer,
                                         DbEntity entity)
Since:
1.2

createTableAppendColumn

public void createTableAppendColumn(StringBuffer sqlBuffer,
                                    DbAttribute column)
Appends SQL for column creation to CREATE TABLE buffer.

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
Since:
1.2

createUniqueConstraint

public String createUniqueConstraint(DbEntity source,
                                     Collection<DbAttribute> columns)
Returns a DDL string to create a unique constraint over a set of columns.

Specified by:
createUniqueConstraint in interface DbAdapter
Since:
1.1

createFkConstraint

public String createFkConstraint(DbRelationship rel)
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 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

buildAttribute

public DbAttribute buildAttribute(String name,
                                  String typeName,
                                  int type,
                                  int size,
                                  int scale,
                                  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)
scale - database column scale, i.e. the number of decimal digits (ignored if less than zero)
allowNulls - database column nullable parameter

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

getQualifierTranslator

public QualifierTranslator getQualifierTranslator(QueryAssembler queryAssembler)
Creates and returns a default implementation of a qualifier translator.

Specified by:
getQualifierTranslator in interface DbAdapter

getAction

public SQLAction getAction(Query query,
                           DataNode node)
Uses JdbcActionBuilder to create the right action.

Specified by:
getAction in interface DbAdapter
Since:
1.2

bindParameter

public void bindParameter(PreparedStatement statement,
                          Object object,
                          int pos,
                          int sqlType,
                          int scale)
                   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

supportsBatchUpdates

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

Specified by:
supportsBatchUpdates in interface DbAdapter

setSupportsBatchUpdates

public void setSupportsBatchUpdates(boolean flag)

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
Since:
1.2

setSupportsGeneratedKeys

public void setSupportsGeneratedKeys(boolean flag)
Since:
1.2

getEjbqlTranslatorFactory

public EJBQLTranslatorFactory getEjbqlTranslatorFactory()
Returns a translator factory for EJBQL to SQL translation. This property is normally initialized in constructor by calling createEJBQLTranslatorFactory(), and can be overridden by calling setEjbqlTranslatorFactory(EJBQLTranslatorFactory).

Since:
3.0

setEjbqlTranslatorFactory

public void setEjbqlTranslatorFactory(EJBQLTranslatorFactory ejbqlTranslatorFactory)
Sets a translator factory for EJBQL to SQL translation. This property is normally initialized in constructor by calling createEJBQLTranslatorFactory(), so users would only override it if they need to customize EJBQL translation.

Since:
3.0

mergerFactory

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

initIdentifiersQuotes

protected void initIdentifiersQuotes()
Since:
3.0

getQuotingStrategy

public QuotingStrategy getQuotingStrategy(boolean needQuotes)
Specified by:
getQuotingStrategy in interface DbAdapter
Since:
3.0


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