Package org.apache.cayenne.dba
Class AutoAdapter
- java.lang.Object
-
- org.apache.cayenne.dba.AutoAdapter
-
-
Field Summary
Fields Modifier and Type Field Description protected Provider<DbAdapter>
adapterProvider
protected JdbcEventLogger
logger
protected PkGenerator
pkGenerator
-
Constructor Summary
Constructors Constructor Description AutoAdapter(Provider<DbAdapter> adapterProvider, JdbcEventLogger logger)
Creates anAutoAdapter
based on a delegate adapter obtained via "adapterProvider".
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
bindParameter(PreparedStatement statement, ParameterBinding parameterBinding)
Binds an object value to PreparedStatement's 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).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 toentity
parameter.void
createTableAppendColumn(StringBuffer sqlBuffer, DbAttribute column)
Append the column type part of a "create table" to the givenStringBuffer
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.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 JDBCtype
.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.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.PkGenerator
getPkGenerator()
Returns a primary key generator.QuotingStrategy
getQuotingStrategy()
Returns SQL identifier quoting strategy objectSelectTranslator
getSelectTranslator(FluentSelect<?> query, EntityResolver entityResolver)
SelectTranslator
getSelectTranslator(SelectQuery<?> query, EntityResolver entityResolver)
Deprecated.SQLTreeProcessor
getSqlTreeProcessor()
List<String>
getSystemCatalogs()
List<String>
getSystemSchemas()
protected DbAdapter
loadAdapter()
Loads underlying DbAdapter delegate.void
setPkGenerator(PkGenerator pkGenerator)
Sets a PK generator override.boolean
supportsBatchUpdates()
Returnstrue
if the target database supports batch updates.boolean
supportsCatalogsOnReverseEngineering()
Returns true if a target database supports catalogs on reverse engineering.boolean
supportsGeneratedKeys()
Returns true if a target database supports key autogeneration.boolean
supportsGeneratedKeysForBatchInserts()
Returns true if a target database supports key autogeneration in a batch insert.boolean
supportsUniqueConstraints()
Returns true if a target database supports UNIQUE constraints.String
tableTypeForTable()
Returns the name of the table type (as returned byDatabaseMetaData.getTableTypes
) for a simple user table.String
tableTypeForView()
Returns the name of the table type (as returned byDatabaseMetaData.getTableTypes
) for a view table.boolean
typeSupportsLength(int type)
DbAdapter
unwrap()
Allows the users to get access to the adapter decorated by a given adapter.
-
-
-
Field Detail
-
pkGenerator
protected PkGenerator pkGenerator
-
logger
protected JdbcEventLogger logger
-
-
Constructor Detail
-
AutoAdapter
public AutoAdapter(Provider<DbAdapter> adapterProvider, JdbcEventLogger logger)
Creates anAutoAdapter
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.
-
getSelectTranslator
@Deprecated public SelectTranslator getSelectTranslator(SelectQuery<?> query, EntityResolver entityResolver)
Deprecated.Description copied from interface:DbAdapter
Returns a SelectTranslator that works with the adapter target database.- Specified by:
getSelectTranslator
in interfaceDbAdapter
- Since:
- 4.0
-
getSelectTranslator
public SelectTranslator getSelectTranslator(FluentSelect<?> query, EntityResolver entityResolver)
- Specified by:
getSelectTranslator
in interfaceDbAdapter
- Since:
- 4.2
-
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 interfaceDbAdapter
-
getSqlTreeProcessor
public SQLTreeProcessor getSqlTreeProcessor()
- Specified by:
getSqlTreeProcessor
in interfaceDbAdapter
- Returns:
SQLTreeProcessor
that can adjust SQL tree to specific database flavour
-
getAction
public SQLAction getAction(Query query, DataNode node)
Description copied from interface:DbAdapter
Returns an instance of SQLAction that should handle the query.
-
supportsUniqueConstraints
public boolean supportsUniqueConstraints()
Description copied from interface:DbAdapter
Returns true if a target database supports UNIQUE constraints.- Specified by:
supportsUniqueConstraints
in interfaceDbAdapter
-
supportsCatalogsOnReverseEngineering
public boolean supportsCatalogsOnReverseEngineering()
Description copied from interface:DbAdapter
Returns true if a target database supports catalogs on reverse engineering.- Specified by:
supportsCatalogsOnReverseEngineering
in interfaceDbAdapter
-
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 interfaceDbAdapter
-
supportsGeneratedKeysForBatchInserts
public boolean supportsGeneratedKeysForBatchInserts()
Description copied from interface:DbAdapter
Returns true if a target database supports key autogeneration in a batch insert.- Specified by:
supportsGeneratedKeysForBatchInserts
in interfaceDbAdapter
- Since:
- 4.2
- See Also:
DbAdapter.supportsGeneratedKeys()
-
supportsBatchUpdates
public boolean supportsBatchUpdates()
Description copied from interface:DbAdapter
Returnstrue
if the target database supports batch updates.- Specified by:
supportsBatchUpdates
in interfaceDbAdapter
-
typeSupportsLength
public boolean typeSupportsLength(int type)
- Specified by:
typeSupportsLength
in interfaceDbAdapter
-
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 interfaceDbAdapter
-
createTable
public String createTable(DbEntity entity)
Description copied from interface:DbAdapter
Returns a SQL string that can be used to create database table corresponding toentity
parameter.- Specified by:
createTable
in interfaceDbAdapter
-
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 interfaceDbAdapter
-
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 interfaceDbAdapter
-
externalTypesForJdbcType
public String[] externalTypesForJdbcType(int type)
Description copied from interface:DbAdapter
Returns an array of RDBMS types that can be used with JDBCtype
. Valid JDBC types are defined in java.sql.Types.- Specified by:
externalTypesForJdbcType
in interfaceDbAdapter
-
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 interfaceDbAdapter
-
getPkGenerator
public PkGenerator getPkGenerator()
Returns a primary key generator.- Specified by:
getPkGenerator
in interfaceDbAdapter
-
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.- Specified by:
setPkGenerator
in interfaceDbAdapter
- Parameters:
pkGenerator
- to set
-
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 interfaceDbAdapter
- Parameters:
name
- database column nametypeName
- database specific type name, may be used as a hint to determine the right JDBC type.type
- JDBC column typesize
- 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, ParameterBinding parameterBinding) throws SQLException, Exception
Description copied from interface:DbAdapter
Binds an object value to PreparedStatement's parameter.- Specified by:
bindParameter
in interfaceDbAdapter
- Throws:
SQLException
Exception
-
tableTypeForTable
public String tableTypeForTable()
Description copied from interface:DbAdapter
Returns the name of the table type (as returned byDatabaseMetaData.getTableTypes
) for a simple user table.- Specified by:
tableTypeForTable
in interfaceDbAdapter
-
tableTypeForView
public String tableTypeForView()
Description copied from interface:DbAdapter
Returns the name of the table type (as returned byDatabaseMetaData.getTableTypes
) for a view table.- Specified by:
tableTypeForView
in interfaceDbAdapter
-
createTableAppendColumn
public void createTableAppendColumn(StringBuffer sqlBuffer, DbAttribute column)
Description copied from interface:DbAdapter
Append the column type part of a "create table" to the givenStringBuffer
- Specified by:
createTableAppendColumn
in interfaceDbAdapter
- Parameters:
sqlBuffer
- theStringBuffer
to append the column type tocolumn
- theDbAttribute
defining the column to append type for
-
getQuotingStrategy
public QuotingStrategy getQuotingStrategy()
Description copied from interface:DbAdapter
Returns SQL identifier quoting strategy object- Specified by:
getQuotingStrategy
in interfaceDbAdapter
- Since:
- 4.0
-
unwrap
public DbAdapter unwrap()
Description copied from interface:DbAdapter
Allows the users to get access to the adapter decorated by a given adapter.
-
getEjbqlTranslatorFactory
public EJBQLTranslatorFactory getEjbqlTranslatorFactory()
Description copied from interface:DbAdapter
Returns a translator factory for EJBQL to SQL translation.- Specified by:
getEjbqlTranslatorFactory
in interfaceDbAdapter
- Since:
- 4.0
-
getSystemCatalogs
public List<String> getSystemCatalogs()
- Specified by:
getSystemCatalogs
in interfaceDbAdapter
- Returns:
- list of system catalogs
-
getSystemSchemas
public List<String> getSystemSchemas()
- Specified by:
getSystemSchemas
in interfaceDbAdapter
- Returns:
- list of system schemas
-
-