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 and Description
    --- | ---
    `protected Provider<DbAdapter>` | `adapterProvider`
    `protected JdbcEventLogger` | `logger`
    `protected PkGenerator` | `pkGenerator`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AutoAdapter(Provider<DbAdapter> adapterProvider, JdbcEventLogger logger)` Creates an `AutoAdapter` based on a delegate adapter obtained via "adapterProvider".

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and 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 to `entity` parameter.
    `void` | `createTableAppendColumn(StringBuffer sqlBuffer, DbAttribute column)` Append the column type part of a "create table" to the given `StringBuffer`
    `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 JDBC `type`.
    `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.
    `QualifierTranslator` | `getQualifierTranslator(QueryAssembler queryAssembler)`
    `QuotingStrategy` | `getQuotingStrategy()` Returns SQL identifier quoting strategy object
    `QuotingStrategy` | `getQuotingStrategy(boolean isQuoteStrategy)` Deprecated. since 4.0
    `SelectTranslator` | `getSelectTranslator(SelectQuery<?> query, EntityResolver entityResolver)` Returns a SelectTranslator that works with the adapter target database.
    `protected DbAdapter` | `loadAdapter()` Loads underlying DbAdapter delegate.
    `void` | `setPkGenerator(PkGenerator pkGenerator)` Sets a PK generator override.
    `boolean` | `supportsBatchUpdates()` Returns `true` 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` | `supportsUniqueConstraints()` Returns true if a target database supports UNIQUE constraints.
    `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.
    `boolean` | `typeSupportsLength(int type)`
    `DbAdapter` | `unwrap()` Allows the users to get access to the adapter decorated by a given adapter.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### adapterProvider

          protected Provider<DbAdapter> adapterProvider

    - #### pkGenerator

          protected PkGenerator pkGenerator

    - #### logger

          protected JdbcEventLogger logger

  - ### Constructor Detail

    - #### AutoAdapter

          public AutoAdapter(Provider<DbAdapter> adapterProvider,
                             JdbcEventLogger logger)

      Creates an `AutoAdapter` 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

          public SelectTranslator getSelectTranslator(SelectQuery<?> query,
                                                      EntityResolver entityResolver)

      Description copied from interface: `DbAdapter`
      Returns a SelectTranslator that works with the adapter target database.
      Specified by:
        `getSelectTranslator` in interface `DbAdapter`
      Since:
        4.0

    - #### 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 interface `DbAdapter`

    - #### getQualifierTranslator

          public QualifierTranslator getQualifierTranslator(QueryAssembler queryAssembler)

      Specified by:
        `getQualifierTranslator` in interface `DbAdapter`

    - #### getAction

          public SQLAction getAction(Query query,
                                     DataNode node)

      Description copied from interface: `DbAdapter`
      Returns an instance of SQLAction that should handle the query.
      Specified by:
        `getAction` in interface `DbAdapter`

    - #### supportsUniqueConstraints

          public boolean supportsUniqueConstraints()

      Description copied from interface: `DbAdapter`
      Returns true if a target database supports UNIQUE constraints.
      Specified by:
        `supportsUniqueConstraints` in interface `DbAdapter`

    - #### supportsCatalogsOnReverseEngineering

          public boolean supportsCatalogsOnReverseEngineering()

      Description copied from interface: `DbAdapter`
      Returns true if a target database supports catalogs on reverse engineering.
      Specified by:
        `supportsCatalogsOnReverseEngineering` in interface `DbAdapter`

    - #### 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`

    - #### supportsBatchUpdates

          public boolean supportsBatchUpdates()

      Description copied from interface: `DbAdapter`
      Returns `true` if the target database supports batch updates.
      Specified by:
        `supportsBatchUpdates` in interface `DbAdapter`

    - #### typeSupportsLength

          public boolean typeSupportsLength(int type)

      Specified by:
        `typeSupportsLength` 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`

    - #### createTable

          public String createTable(DbEntity entity)

      Description copied from interface: `DbAdapter`
      Returns a SQL string that can be used to create database table corresponding to `entity` parameter.
      Specified by:
        `createTable` in interface `DbAdapter`

    - #### 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 interface `DbAdapter`

    - #### 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 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`

    - #### getPkGenerator

          public PkGenerator getPkGenerator()

      Returns a primary key generator.
      Specified by:
        `getPkGenerator` in interface `DbAdapter`

    - #### 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.

    - #### 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 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 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 interface `DbAdapter`
      Throws:
        `SQLException`
        `Exception`

    - #### 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`

    - #### createTableAppendColumn

          public void createTableAppendColumn(StringBuffer sqlBuffer,
                                              DbAttribute column)

      Description copied from interface: `DbAdapter`
      Append the column type part of a "create table" to the given `StringBuffer`
      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

    - #### getQuotingStrategy

          @Deprecated
          public QuotingStrategy getQuotingStrategy(boolean isQuoteStrategy)

      Deprecated. since 4.0
      Specified by:
        `getQuotingStrategy` in interface `DbAdapter`

    - #### getQuotingStrategy

          public QuotingStrategy getQuotingStrategy()

      Description copied from interface: `DbAdapter`
      Returns SQL identifier quoting strategy object
      Specified by:
        `getQuotingStrategy` in interface `DbAdapter`
      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.
      Specified by:
        `unwrap` in interface `DbAdapter`
      Since:
        4.0

    - #### getEjbqlTranslatorFactory

          public EJBQLTranslatorFactory getEjbqlTranslatorFactory()

      Description copied from interface: `DbAdapter`
      Returns a translator factory for EJBQL to SQL translation.
      Specified by:
        `getEjbqlTranslatorFactory` in interface `DbAdapter`
      Since:
        4.0

Copyright © 2001–2023 Apache Cayenne. All rights reserved.