Package org.eclipse.net4j.db

## Interface IDBAdapter

- All Known Implementing Classes:
    `DBAdapter`, `DerbyAdapter`, `EmbeddedDerbyAdapter`, `H2Adapter`, `HSQLDBAdapter`, `MYSQLAdapter`, `PostgreSQLAdapter`

      public interface IDBAdapter

  Abstracts all aspects of a database that are vendor-specific.
  Author:
    Eike Stepper
  No Implement
    This interface is not intended to be implemented by clients. Subclass `DBAdapter` instead.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static org.eclipse.net4j.util.registry.IRegistry<java.lang.String,​IDBAdapter>` | `REGISTRY` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `DBType` | `adaptType​(DBType type)` | Provide a way for the DBAdapter to override unsupported DB types with replacements.
    `IDBConnectionProvider` | `createConnectionProvider​(javax.sql.DataSource dataSource)` |
    `javax.sql.DataSource` | `createJDBCDataSource()` | Deprecated. As of 4.2 no longer supported because of IP issues for external build dependencies (the vendor driver libs).
    `boolean` | `createTable​(IDBTable table, java.sql.Statement statement)` |
    `java.util.Set<IDBTable>` | `createTables​(java.lang.Iterable<? extends IDBTable> tables, java.sql.Connection connection)` |
    `boolean` | `dropTable​(IDBTable table, java.sql.Statement statement)` |
    `java.util.Collection<IDBTable>` | `dropTables​(java.lang.Iterable<? extends IDBTable> tables, java.sql.Connection connection)` |
    `int` | `getFieldLength​(DBType type)` | Returns the column length for the given database type.
    `java.sql.Driver` | `getJDBCDriver()` | Deprecated. As of 4.2 no longer supported because of IP issues for external build dependencies (the vendor driver libs).
    `int` | `getMaxFieldNameLength()` |
    `int` | `getMaxTableNameLength()` |
    `java.lang.String` | `getName()` |
    `java.lang.String[]` | `getReservedWords()` |
    `java.lang.String` | `getVersion()` |
    `boolean` | `isColumnNotFoundException​(java.sql.SQLException ex)` |
    `boolean` | `isDuplicateKeyException​(java.sql.SQLException ex)` | Check if an exception indicates a constraint violation (duplicate key)
    `boolean` | `isReservedWord​(java.lang.String word)` |
    `boolean` | `isTableNotFoundException​(java.sql.SQLException ex)` |
    `boolean` | `isTypeIndexable​(DBType type)` |
    `boolean` | `isValidFirstChar​(char ch)` | Check if a character is valid as first character.
    `java.sql.Connection` | `modifyConnection​(java.sql.Connection connection)` |
    `IDBSchema` | `readSchema​(java.sql.Connection connection, java.lang.String name)` |
    `void` | `readSchema​(java.sql.Connection connection, IDBSchema schema)` |
    `java.lang.String` | `sqlModifyField​(IDBField field)` |
    `java.lang.String` | `sqlRenameField​(IDBField field, java.lang.String oldName)` |
    `void` | `updateSchema​(java.sql.Connection connection, IDBSchema schema, IDBSchemaDelta delta)` |

- - ### Field Detail

    - #### REGISTRY

          static final org.eclipse.net4j.util.registry.IRegistry<java.lang.String,​IDBAdapter> REGISTRY

  - ### Method Detail

    - #### getName

          java.lang.String getName()

    - #### getVersion

          java.lang.String getVersion()

    - #### getJDBCDriver

          @Deprecated
          java.sql.Driver getJDBCDriver()

      Deprecated.
      As of 4.2 no longer supported because of IP issues for external build dependencies (the vendor driver libs).

    - #### createJDBCDataSource

          @Deprecated
          javax.sql.DataSource createJDBCDataSource()

      Deprecated.
      As of 4.2 no longer supported because of IP issues for external build dependencies (the vendor driver libs).

    - #### createConnectionProvider

          IDBConnectionProvider createConnectionProvider​(javax.sql.DataSource dataSource)

      Since:
        4.3

    - #### modifyConnection

          java.sql.Connection modifyConnection​(java.sql.Connection connection)

      Since:
        4.5

    - #### readSchema

          IDBSchema readSchema​(java.sql.Connection connection,
                               java.lang.String name)

      Since:
        4.2

    - #### readSchema

          void readSchema​(java.sql.Connection connection,
                          IDBSchema schema)

      Since:
        4.2

    - #### updateSchema

          void updateSchema​(java.sql.Connection connection,
                            IDBSchema schema,
                            IDBSchemaDelta delta)
                     throws DBException

      Throws:
        `DBException`
      Since:
        4.2

    - #### createTables

          java.util.Set<IDBTable> createTables​(java.lang.Iterable<? extends IDBTable> tables,
                                               java.sql.Connection connection)
                                        throws DBException

      Throws:
        `DBException`

    - #### createTable

          boolean createTable​(IDBTable table,
                              java.sql.Statement statement)
                       throws DBException

      Throws:
        `DBException`

    - #### dropTables

          java.util.Collection<IDBTable> dropTables​(java.lang.Iterable<? extends IDBTable> tables,
                                                    java.sql.Connection connection)
                                             throws DBException

      Throws:
        `DBException`

    - #### dropTable

          boolean dropTable​(IDBTable table,
                            java.sql.Statement statement)

    - #### getReservedWords

          java.lang.String[] getReservedWords()

    - #### isReservedWord

          boolean isReservedWord​(java.lang.String word)

    - #### getMaxTableNameLength

          int getMaxTableNameLength()

      Since:
        2.0

    - #### getMaxFieldNameLength

          int getMaxFieldNameLength()

      Since:
        2.0

    - #### getFieldLength

          int getFieldLength​(DBType type)

      Returns the column length for the given database type.
      Parameters:
        `type` - the `DBType` to check.
      Returns:
        the supported column length for the type.
      Since:
        4.2

    - #### isTypeIndexable

          boolean isTypeIndexable​(DBType type)

    - #### adaptType

          DBType adaptType​(DBType type)

      Provide a way for the DBAdapter to override unsupported DB types with replacements. The default implementation just returns the given type. Subclasses may override single types with replacements.
      Since:
        3.0

    - #### isValidFirstChar

          boolean isValidFirstChar​(char ch)

      Check if a character is valid as first character. (e.g., underscores are forbidden as first character in Derby elements.
      Since:
        4.0

    - #### isDuplicateKeyException

          boolean isDuplicateKeyException​(java.sql.SQLException ex)

      Check if an exception indicates a constraint violation (duplicate key)
      Since:
        4.0

    - #### isTableNotFoundException

          boolean isTableNotFoundException​(java.sql.SQLException ex)

      Since:
        4.2

    - #### isColumnNotFoundException

          boolean isColumnNotFoundException​(java.sql.SQLException ex)

      Since:
        4.2

    - #### sqlRenameField

          java.lang.String sqlRenameField​(IDBField field,
                                          java.lang.String oldName)

      Since:
        4.2

    - #### sqlModifyField

          java.lang.String sqlModifyField​(IDBField field)

      Since:
        4.2