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, FirebirdAdapter, FrontBaseAdapter, HSQLDBAdapter, IngresAdapter, MySQLAdapter, OpenBaseAdapter, OracleAdapter, PostgresAdapter, SybaseAdapter

public class JdbcAdapter
extends java.lang.Object
implements DbAdapter

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

Author:
Andrei Adamchik

Field Summary
protected  ExtendedTypeMap extendedTypes
           
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(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).
protected  void configureExtendedTypes(ExtendedTypeMap map)
          Installs appropriate ExtendedTypes as converters for passing values between JDBC and Java layers.
 DataNode createDataNode(java.lang.String name)
          Deprecated. since 1.2 this method is not used as node behavior customization is done via SQLActionVisitor.
 java.lang.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.
 java.lang.String createTable(DbEntity entity)
          Returns a SQL string that can be used to create database table corresponding to ent parameter.
protected  void createTableAppendColumn(java.lang.StringBuffer sqlBuffer, DbAttribute column)
          Appends SQL for column creation to CREATE TABLE buffer.
protected  void createTableAppendPKClause(java.lang.StringBuffer sqlBuffer, DbEntity entity)
           
 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 ent)
          Returns a SQL string to drop a table corresponding to ent DbEntity.
 java.lang.String[] externalTypesForJdbcType(int type)
          Returns an array of RDBMS types that can be used with JDBC type.
 java.net.URL findAdapterResource(java.lang.String name)
          Locates and returns a named adapter resource.
 SQLAction getAction(Query query, DataNode node)
          Uses JdbcActionBuilder to create the right action.
 java.lang.String getBatchTerminator()
          Returns default separator - a semicolon.
 ExtendedTypeMap getExtendedTypes()
          Returns a map of ExtendedTypes that is used to translate values between Java and JDBC layer.
 PkGenerator getPkGenerator()
          Returns primary key generator associated with this DbAdapter.
 QualifierTranslator getQualifierTranslator(QueryAssembler queryAssembler)
          Creates and returns a default implementation of a qualifier translator.
 QueryTranslator getQueryTranslator(Query query)
          Deprecated. since 1.2 this method is unneeded as customizations are done via custom SQLActions.
protected  java.lang.Class queryTranslatorClass(Query q)
          Deprecated. since 1.2 this method is unneeded as customizations are done via custom SQLActions.
 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 shouldRunBatchQuery(DataNode node, java.sql.Connection con, BatchQuery query, OperationObserver delegate)
          Deprecated. Since 1.2 this method is obsolete and is ignored across Cayenne.
 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.
 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

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

JdbcAdapter

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

Method Detail

getBatchTerminator

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

Specified by:
getBatchTerminator in interface DbAdapter
Since:
1.0.4

findAdapterResource

public java.net.URL findAdapterResource(java.lang.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:
1.1

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.


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

getQueryTranslator

public QueryTranslator getQueryTranslator(Query query)
                                   throws java.lang.Exception
Deprecated. since 1.2 this method is unneeded as customizations are done via custom SQLActions.

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

queryTranslatorClass

protected java.lang.Class queryTranslatorClass(Query q)
Deprecated. since 1.2 this method is unneeded as customizations are done via custom SQLActions.

Returns a class of the query translator that should be used to translate the query q to SQL. Exists mainly for the benefit of subclasses that can override this method providing their own translator.


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 java.lang.String dropTable(DbEntity ent)
Returns a SQL string to drop a table corresponding to ent DbEntity.

Specified by:
dropTable in interface DbAdapter

createTable

public java.lang.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(java.lang.StringBuffer sqlBuffer,
                                         DbEntity entity)
Since:
1.2

createTableAppendColumn

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

Since:
1.2

createUniqueConstraint

public java.lang.String createUniqueConstraint(DbEntity source,
                                               java.util.Collection 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 java.lang.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 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

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

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

getQualifierTranslator

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

Specified by:
getQualifierTranslator in interface DbAdapter

createDataNode

public DataNode createDataNode(java.lang.String name)
Deprecated. since 1.2 this method is not used as node behavior customization is done via SQLActionVisitor.

Creates an instance of DataNode class.

Specified by:
createDataNode 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(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

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

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 obsolete and is ignored across Cayenne.

Always returns true, letting DataNode to handle the query.

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


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