Package org.apache.cayenne.dba
Class AutoAdapter
java.lang.Object
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
Fields Modifier and Type Field Description protected Provider<DbAdapter>adapterProviderprotected JdbcEventLoggerloggerprotected PkGeneratorpkGenerator -
Constructor Summary
Constructors Constructor Description AutoAdapter(Provider<DbAdapter> adapterProvider, JdbcEventLogger logger)Creates anAutoAdapterbased on a delegate adapter obtained via "adapterProvider". -
Method Summary
Modifier and Type Method Description voidbindParameter(PreparedStatement statement, ParameterBinding parameterBinding)Binds an object value to PreparedStatement's parameter.DbAttributebuildAttribute(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).StringcreateFkConstraint(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.StringcreateTable(DbEntity entity)Returns a SQL string that can be used to create database table corresponding toentityparameter.voidcreateTableAppendColumn(StringBuffer sqlBuffer, DbAttribute column)Append the column type part of a "create table" to the givenStringBufferStringcreateUniqueConstraint(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.SQLActiongetAction(Query query, DataNode node)Returns an instance of SQLAction that should handle the query.protected DbAdaptergetAdapter()Returns a proxied DbAdapter, lazily creating it on first invocation.StringgetBatchTerminator()Returns a String used to terminate a batch in command-line tools.EJBQLTranslatorFactorygetEjbqlTranslatorFactory()Returns a translator factory for EJBQL to SQL translation.ExtendedTypeMapgetExtendedTypes()Returns a map of ExtendedTypes that is used to translate values between Java and JDBC layer.PkGeneratorgetPkGenerator()Returns a primary key generator.QualifierTranslatorgetQualifierTranslator(QueryAssembler queryAssembler)QuotingStrategygetQuotingStrategy()Returns SQL identifier quoting strategy objectSelectTranslatorgetSelectTranslator(SelectQuery<?> query, EntityResolver entityResolver)Returns a SelectTranslator that works with the adapter target database.List<String>getSystemCatalogs()List<String>getSystemSchemas()protected DbAdapterloadAdapter()Loads underlying DbAdapter delegate.voidsetPkGenerator(PkGenerator pkGenerator)Sets a PK generator override.booleansupportsBatchUpdates()Returnstrueif the target database supports batch updates.booleansupportsCatalogsOnReverseEngineering()Returns true if a target database supports catalogs on reverse engineering.booleansupportsGeneratedKeys()Returns true if a target database supports key autogeneration.booleansupportsUniqueConstraints()Returns true if a target database supports UNIQUE constraints.StringtableTypeForTable()Returns the name of the table type (as returned byDatabaseMetaData.getTableTypes) for a simple user table.StringtableTypeForView()Returns the name of the table type (as returned byDatabaseMetaData.getTableTypes) for a view table.booleantypeSupportsLength(int type)DbAdapterunwrap()Allows the users to get access to the adapter decorated by a given adapter.
-
Field Details
-
adapterProvider
-
pkGenerator
-
logger
-
-
Constructor Details
-
AutoAdapter
Creates anAutoAdapterbased on a delegate adapter obtained via "adapterProvider".- Since:
- 3.1
-
-
Method Details
-
getAdapter
Returns a proxied DbAdapter, lazily creating it on first invocation. -
loadAdapter
Loads underlying DbAdapter delegate. -
getSelectTranslator
Description copied from interface:DbAdapterReturns a SelectTranslator that works with the adapter target database.- Specified by:
getSelectTranslatorin interfaceDbAdapter- Since:
- 4.0
-
getBatchTerminator
Description copied from interface:DbAdapterReturns a String used to terminate a batch in command-line tools. E.g. ";" on Oracle or "go" on Sybase.- Specified by:
getBatchTerminatorin interfaceDbAdapter
-
getQualifierTranslator
- Specified by:
getQualifierTranslatorin interfaceDbAdapter
-
getAction
Description copied from interface:DbAdapterReturns an instance of SQLAction that should handle the query. -
supportsUniqueConstraints
public boolean supportsUniqueConstraints()Description copied from interface:DbAdapterReturns true if a target database supports UNIQUE constraints.- Specified by:
supportsUniqueConstraintsin interfaceDbAdapter
-
supportsCatalogsOnReverseEngineering
public boolean supportsCatalogsOnReverseEngineering()Description copied from interface:DbAdapterReturns true if a target database supports catalogs on reverse engineering.- Specified by:
supportsCatalogsOnReverseEngineeringin interfaceDbAdapter
-
supportsGeneratedKeys
public boolean supportsGeneratedKeys()Description copied from interface:DbAdapterReturns true if a target database supports key autogeneration. This feature also requires JDBC3-compliant driver.- Specified by:
supportsGeneratedKeysin interfaceDbAdapter
-
supportsBatchUpdates
public boolean supportsBatchUpdates()Description copied from interface:DbAdapterReturnstrueif the target database supports batch updates.- Specified by:
supportsBatchUpdatesin interfaceDbAdapter
-
typeSupportsLength
public boolean typeSupportsLength(int type)- Specified by:
typeSupportsLengthin interfaceDbAdapter
-
dropTableStatements
Description copied from interface:DbAdapterReturns a collection of SQL statements needed to drop a database table.- Specified by:
dropTableStatementsin interfaceDbAdapter
-
createTable
Description copied from interface:DbAdapterReturns a SQL string that can be used to create database table corresponding toentityparameter.- Specified by:
createTablein interfaceDbAdapter
-
createUniqueConstraint
Description copied from interface:DbAdapterReturns a DDL string to create a unique constraint over a set of columns, or null if the unique constraints are not supported.- Specified by:
createUniqueConstraintin interfaceDbAdapter
-
createFkConstraint
Description copied from interface:DbAdapterReturns 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:
createFkConstraintin interfaceDbAdapter
-
externalTypesForJdbcType
Description copied from interface:DbAdapterReturns an array of RDBMS types that can be used with JDBCtype. Valid JDBC types are defined in java.sql.Types.- Specified by:
externalTypesForJdbcTypein interfaceDbAdapter
-
getExtendedTypes
Description copied from interface:DbAdapterReturns a map of ExtendedTypes that is used to translate values between Java and JDBC layer.- Specified by:
getExtendedTypesin interfaceDbAdapter
-
getPkGenerator
Returns a primary key generator.- Specified by:
getPkGeneratorin interfaceDbAdapter
-
setPkGenerator
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:
setPkGeneratorin 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:DbAdapterCreates and returns a DbAttribute based on supplied parameters (usually obtained from database meta data).- Specified by:
buildAttributein 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, ExceptionDescription copied from interface:DbAdapterBinds an object value to PreparedStatement's parameter.- Specified by:
bindParameterin interfaceDbAdapter- Throws:
SQLExceptionException
-
tableTypeForTable
Description copied from interface:DbAdapterReturns the name of the table type (as returned byDatabaseMetaData.getTableTypes) for a simple user table.- Specified by:
tableTypeForTablein interfaceDbAdapter
-
tableTypeForView
Description copied from interface:DbAdapterReturns the name of the table type (as returned byDatabaseMetaData.getTableTypes) for a view table.- Specified by:
tableTypeForViewin interfaceDbAdapter
-
createTableAppendColumn
Description copied from interface:DbAdapterAppend the column type part of a "create table" to the givenStringBuffer- Specified by:
createTableAppendColumnin interfaceDbAdapter- Parameters:
sqlBuffer- theStringBufferto append the column type tocolumn- theDbAttributedefining the column to append type for
-
getQuotingStrategy
Description copied from interface:DbAdapterReturns SQL identifier quoting strategy object- Specified by:
getQuotingStrategyin interfaceDbAdapter- Since:
- 4.0
-
unwrap
Description copied from interface:DbAdapterAllows the users to get access to the adapter decorated by a given adapter. -
getEjbqlTranslatorFactory
Description copied from interface:DbAdapterReturns a translator factory for EJBQL to SQL translation.- Specified by:
getEjbqlTranslatorFactoryin interfaceDbAdapter- Since:
- 4.0
-
getSystemCatalogs
- Specified by:
getSystemCatalogsin interfaceDbAdapter- Returns:
- list of system catalogs
-
getSystemSchemas
- Specified by:
getSystemSchemasin interfaceDbAdapter- Returns:
- list of system schemas
-