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>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
All Methods Instance Methods Concrete Methods 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 Detail
-
pkGenerator
protected PkGenerator pkGenerator
-
logger
protected JdbcEventLogger logger
-
-
Constructor Detail
-
AutoAdapter
public AutoAdapter(Provider<DbAdapter> adapterProvider, JdbcEventLogger logger)
Creates anAutoAdapterbased 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
public SelectTranslator getSelectTranslator(SelectQuery<?> query, EntityResolver entityResolver)
Description copied from interface:DbAdapterReturns a SelectTranslator that works with the adapter target database.- Specified by:
getSelectTranslatorin interfaceDbAdapter- Since:
- 4.0
-
getBatchTerminator
public String 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
public QualifierTranslator getQualifierTranslator(QueryAssembler queryAssembler)
- Specified by:
getQualifierTranslatorin interfaceDbAdapter
-
getAction
public SQLAction getAction(Query query, DataNode node)
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
public Collection<String> dropTableStatements(DbEntity table)
Description copied from interface:DbAdapterReturns a collection of SQL statements needed to drop a database table.- Specified by:
dropTableStatementsin interfaceDbAdapter
-
createTable
public String createTable(DbEntity entity)
Description copied from interface:DbAdapterReturns a SQL string that can be used to create database table corresponding toentityparameter.- Specified by:
createTablein interfaceDbAdapter
-
createUniqueConstraint
public String createUniqueConstraint(DbEntity source, Collection<DbAttribute> columns)
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
public String createFkConstraint(DbRelationship rel)
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
public String[] externalTypesForJdbcType(int type)
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
public ExtendedTypeMap 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
public PkGenerator getPkGenerator()
Returns a primary key generator.- Specified by:
getPkGeneratorin 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:
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, Exception
Description copied from interface:DbAdapterBinds an object value to PreparedStatement's parameter.- Specified by:
bindParameterin interfaceDbAdapter- Throws:
SQLExceptionException
-
tableTypeForTable
public String 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
public String 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
public void createTableAppendColumn(StringBuffer sqlBuffer, DbAttribute column)
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
public QuotingStrategy getQuotingStrategy()
Description copied from interface:DbAdapterReturns SQL identifier quoting strategy object- Specified by:
getQuotingStrategyin interfaceDbAdapter- Since:
- 4.0
-
unwrap
public DbAdapter unwrap()
Description copied from interface:DbAdapterAllows the users to get access to the adapter decorated by a given adapter.
-
getEjbqlTranslatorFactory
public EJBQLTranslatorFactory getEjbqlTranslatorFactory()
Description copied from interface:DbAdapterReturns a translator factory for EJBQL to SQL translation.- Specified by:
getEjbqlTranslatorFactoryin interfaceDbAdapter- Since:
- 4.0
-
getSystemCatalogs
public List<String> getSystemCatalogs()
- Specified by:
getSystemCatalogsin interfaceDbAdapter- Returns:
- list of system catalogs
-
getSystemSchemas
public List<String> getSystemSchemas()
- Specified by:
getSystemSchemasin interfaceDbAdapter- Returns:
- list of system schemas
-
-