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 Details

  • Constructor Details

  • Method Details

    • 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 interface DbAdapter
      Since:
      4.0
    • getSelectTranslator

      public SelectTranslator getSelectTranslator(FluentSelect<?> query, EntityResolver entityResolver)
      Specified by:
      getSelectTranslator in interface DbAdapter
      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 interface DbAdapter
    • getSqlTreeProcessor

      public SQLTreeProcessor getSqlTreeProcessor()
      Specified by:
      getSqlTreeProcessor in interface DbAdapter
      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.
      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
    • 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 interface DbAdapter
      Since:
      4.2
      See Also:
    • 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.
      Specified by:
      setPkGenerator in interface DbAdapter
      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 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

      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
    • getSystemCatalogs

      public List<String> getSystemCatalogs()
      Specified by:
      getSystemCatalogs in interface DbAdapter
      Returns:
      list of system catalogs
    • getSystemSchemas

      public List<String> getSystemSchemas()
      Specified by:
      getSystemSchemas in interface DbAdapter
      Returns:
      list of system schemas