Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.ddlutils.platform
Class JdbcModelReader

    java.lang.Object
      org.apache.ddlutils.platform.JdbcModelReader

Direct Known Subclasses:
  AxionModelReader, Db2ModelReader, DerbyModelReader, FirebirdModelReader, HsqlDbModelReader, InterbaseModelReader, MaxDbModelReader, MckoiModelReader, MSSqlModelReader, MySqlModelReader, Oracle8ModelReader, PostgreSqlModelReader, SapDbModelReader, SybaseModelReader

    public class JdbcModelReader

extends Object

An utility class to create a Database model from a live database.

Version:
  $Revision: 543392 $

Constructor Summary
`JdbcModelReader(Platform platform)` Creates a new model reader instance.

Method Summary
`protected void` | `determineAutoIncrementFromResultSetMetaData(Table table, Column[] columnsToCheck)` Helper method that determines the auto increment status for the given columns via the `ResultSetMetaData.isAutoIncrement(int)` method.
`String` | `determineSchemaOf(Connection connection, String schemaPattern, Table table)` Deprecated. Will be removed once full schema support is in place
`protected List` | `getColumnsForColumn()` Returns the descriptors for the columns to be read from the column meta data result set.
`protected List` | `getColumnsForFK()` Returns the descriptors for the columns to be read from the foreign key meta data result set.
`protected List` | `getColumnsForIndex()` Returns the descriptors for the columns to be read from the index meta data result set.
`protected List` | `getColumnsForPK()` Returns the descriptors for the columns to be read from the primary key meta data result set.
`protected List` | `getColumnsForTable()` Returns the descriptors for the columns to be read from the table meta data result set.
`protected Connection` | `getConnection()` Returns the active connection.
`Database` | `getDatabase(Connection connection, String name)` Reads the database model from the given connection.
`Database` | `getDatabase(Connection connection, String name, String catalog, String schema, String[] tableTypes)` Reads the database model from the given connection.
`String` | `getDefaultCatalogPattern()` Returns the catalog(s) in the database to read per default.
`String` | `getDefaultColumnPattern()` Returns the default pattern to read the relevant columns from the database.
`String` | `getDefaultSchemaPattern()` Returns the schema(s) in the database to read per default.
`String` | `getDefaultTablePattern()` Returns the default pattern to read the relevant tables from the database.
`String[]` | `getDefaultTableTypes()` Returns the table types to recognize per default.
`Platform` | `getPlatform()` Returns the platform that this model reader belongs to.
`PlatformInfo` | `getPlatformInfo()` Returns the platform specific settings.
`protected List` | `initColumnsForColumn()` Returns descriptors for the columns that shall be read from the result set when reading the meta data for table columns.
`protected List` | `initColumnsForFK()` Returns descriptors for the columns that shall be read from the result set when reading the meta data for foreign keys originating from a table.
`protected List` | `initColumnsForIndex()` Returns descriptors for the columns that shall be read from the result set when reading the meta data for indices.
`protected List` | `initColumnsForPK()` Returns descriptors for the columns that shall be read from the result set when reading the meta data for primary keys.
`protected List` | `initColumnsForTable()` Returns descriptors for the columns that shall be read from the result set when reading the meta data for a table.
`protected boolean` | `isInternalForeignKeyIndex(DatabaseMetaDataWrapper metaData, Table table, ForeignKey fk, Index index)` Tries to determine whether the index is the internal database-generated index for the given foreign key.
`protected boolean` | `isInternalPrimaryKeyIndex(DatabaseMetaDataWrapper metaData, Table table, Index index)` Tries to determine whether the index is the internal database-generated index for the given table's primary key.
`protected boolean` | `matches(Index index, List columnsToSearchFor)` Checks whether the given index matches the column list.
`protected Column` | `readColumn(DatabaseMetaDataWrapper metaData, Map values)` Extracts a column definition from the result set.
`protected Collection` | `readColumns(DatabaseMetaDataWrapper metaData, String tableName)` Reads the column definitions for the indicated table.
`protected Map` | `readColumns(ResultSet resultSet, List columnDescriptors)` Reads the indicated columns from the result set.
`protected void` | `readForeignKey(DatabaseMetaDataWrapper metaData, Map values, Map knownFks)` Reads the next foreign key spec from the result set.
`protected Collection` | `readForeignKeys(DatabaseMetaDataWrapper metaData, String tableName)` Retrieves the foreign keys of the indicated table.
`protected void` | `readIndex(DatabaseMetaDataWrapper metaData, Map values, Map knownIndices)` Reads the next index spec from the result set.
`protected Collection` | `readIndices(DatabaseMetaDataWrapper metaData, String tableName)` Determines the indices for the indicated table.
`protected String` | `readPrimaryKeyName(DatabaseMetaDataWrapper metaData, Map values)` Extracts a primary key name from the result set.
`protected Collection` | `readPrimaryKeyNames(DatabaseMetaDataWrapper metaData, String tableName)` Retrieves the names of the columns that make up the primary key for a given table.
`protected Table` | `readTable(DatabaseMetaDataWrapper metaData, Map values)` Reads the next table from the meta data.
`protected Collection` | `readTables(String catalog, String schemaPattern, String[] tableTypes)` Reads the tables from the database metadata.
`protected void` | `removeInternalForeignKeyIndex(DatabaseMetaDataWrapper metaData, Table table, ForeignKey fk)` Tries to remove the internal index for the given foreign key.
`protected void` | `removeInternalPrimaryKeyIndex(DatabaseMetaDataWrapper metaData, Table table)` Tries to remove the internal index for the table's primary key.
`protected void` | `removeSystemIndices(DatabaseMetaDataWrapper metaData, Table table)` Removes system indices (generated by the database for primary and foreign keys) from the table.
`void` | `setDefaultCatalogPattern(String catalogPattern)` Sets the catalog(s) in the database to read per default.
`void` | `setDefaultColumnPattern(String columnPattern)` Sets the default pattern to read the relevant columns from the database.
`void` | `setDefaultSchemaPattern(String schemaPattern)` Sets the schema(s) in the database to read per default.
`void` | `setDefaultTablePattern(String tablePattern)` Sets the default pattern to read the relevant tables from the database.
`void` | `setDefaultTableTypes(String[] types)` Sets the table types to recognize per default.
`protected void` | `sortForeignKeys(Database model)` Sorts the foreign keys in the tables of the model.
`protected String` | `unescape(String text, String unescaped, String escaped)` Replaces a specific character sequence in the given text with the character sequence whose escaped version it is.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### JdbcModelReader

    public JdbcModelReader(Platform platform)

  Creates a new model reader instance.

  Parameters:
    `platform` - The plaftform this builder belongs to

Method Detail

### getPlatform

    public Platform getPlatform()

  Returns the platform that this model reader belongs to.

  Returns:
    The platform

### getPlatformInfo

    public PlatformInfo getPlatformInfo()

  Returns the platform specific settings.

  Returns:
    The platform settings

### initColumnsForTable

    protected List initColumnsForTable()

  Returns descriptors for the columns that shall be read from the result set when reading the meta data for a table. Note that the columns are read in the order defined by this list.
  Redefine this method if you want more columns or a different order.

  Returns:
    The descriptors for the result set columns

### initColumnsForColumn

    protected List initColumnsForColumn()

  Returns descriptors for the columns that shall be read from the result set when reading the meta data for table columns. Note that the columns are read in the order defined by this list.
  Redefine this method if you want more columns or a different order.

  Returns:
    The map column name -> descriptor for the result set columns

### initColumnsForPK

    protected List initColumnsForPK()

  Returns descriptors for the columns that shall be read from the result set when reading the meta data for primary keys. Note that the columns are read in the order defined by this list.
  Redefine this method if you want more columns or a different order.

  Returns:
    The map column name -> descriptor for the result set columns

### initColumnsForFK

    protected List initColumnsForFK()

  Returns descriptors for the columns that shall be read from the result set when reading the meta data for foreign keys originating from a table. Note that the columns are read in the order defined by this list.
  Redefine this method if you want more columns or a different order.

  Returns:
    The map column name -> descriptor for the result set columns

### initColumnsForIndex

    protected List initColumnsForIndex()

  Returns descriptors for the columns that shall be read from the result set when reading the meta data for indices. Note that the columns are read in the order defined by this list.
  Redefine this method if you want more columns or a different order.

  Returns:
    The map column name -> descriptor for the result set columns

### getDefaultCatalogPattern

    public String getDefaultCatalogPattern()

  Returns the catalog(s) in the database to read per default.

  Returns:
    The default catalog(s)

### setDefaultCatalogPattern

    public void setDefaultCatalogPattern(String catalogPattern)

  Sets the catalog(s) in the database to read per default.

  Parameters:
    `catalogPattern` - The catalog(s)

### getDefaultSchemaPattern

    public String getDefaultSchemaPattern()

  Returns the schema(s) in the database to read per default.

  Returns:
    The default schema(s)

### setDefaultSchemaPattern

    public void setDefaultSchemaPattern(String schemaPattern)

  Sets the schema(s) in the database to read per default.

  Parameters:
    `schemaPattern` - The schema(s)

### getDefaultTablePattern

    public String getDefaultTablePattern()

  Returns the default pattern to read the relevant tables from the database.

  Returns:
    The table pattern

### setDefaultTablePattern

    public void setDefaultTablePattern(String tablePattern)

  Sets the default pattern to read the relevant tables from the database.

  Parameters:
    `tablePattern` - The table pattern

### getDefaultColumnPattern

    public String getDefaultColumnPattern()

  Returns the default pattern to read the relevant columns from the database.

  Returns:
    The column pattern

### setDefaultColumnPattern

    public void setDefaultColumnPattern(String columnPattern)

  Sets the default pattern to read the relevant columns from the database.

  Parameters:
    `columnPattern` - The column pattern

### getDefaultTableTypes

    public String[] getDefaultTableTypes()

  Returns the table types to recognize per default.

  Returns:
    The default table types

### setDefaultTableTypes

    public void setDefaultTableTypes(String[] types)

  Sets the table types to recognize per default. Typical types are "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM".

  Parameters:
    `types` - The table types

### getColumnsForTable

    protected List getColumnsForTable()

  Returns the descriptors for the columns to be read from the table meta data result set.

  Returns:
    The column descriptors

### getColumnsForColumn

    protected List getColumnsForColumn()

  Returns the descriptors for the columns to be read from the column meta data result set.

  Returns:
    The column descriptors

### getColumnsForPK

    protected List getColumnsForPK()

  Returns the descriptors for the columns to be read from the primary key meta data result set.

  Returns:
    The column descriptors

### getColumnsForFK

    protected List getColumnsForFK()

  Returns the descriptors for the columns to be read from the foreign key meta data result set.

  Returns:
    The column descriptors

### getColumnsForIndex

    protected List getColumnsForIndex()

  Returns the descriptors for the columns to be read from the index meta data result set.

  Returns:
    The column descriptors

### getConnection

    protected Connection getConnection()

  Returns the active connection. Note that this is only set during a call to `readTables(String, String, String[])`.

  Returns:
    The connection or `null` if there is no active connection

### getDatabase

    public Database getDatabase(Connection connection,
                                String name)
                         throws SQLException

  Reads the database model from the given connection.

  Parameters:
    `connection` - The connection
    `name` - The name of the resulting database; `null` when the default name (the catalog) is desired which might be `null` itself though
  Returns:
    The database model
  Throws:
    `SQLException`

### getDatabase

    public Database getDatabase(Connection connection,
                                String name,
                                String catalog,
                                String schema,
                                String[] tableTypes)
                         throws SQLException

  Reads the database model from the given connection.

  Parameters:
    `connection` - The connection
    `name` - The name of the resulting database; `null` when the default name (the catalog) is desired which might be `null` itself though
    `catalog` - The catalog to acess in the database; use `null` for the default value
    `schema` - The schema to acess in the database; use `null` for the default value
    `tableTypes` - The table types to process; use `null` or an empty list for the default ones
  Returns:
    The database model
  Throws:
    `SQLException`

### readTables

    protected Collection readTables(String catalog,
                                    String schemaPattern,
                                    String[] tableTypes)
                             throws SQLException

  Reads the tables from the database metadata.

  Parameters:
    `catalog` - The catalog to acess in the database; use `null` for the default value
    `schemaPattern` - The schema(s) to acess in the database; use `null` for the default value
    `tableTypes` - The table types to process; use `null` or an empty list for the default ones
  Returns:
    The tables
  Throws:
    `SQLException`

### readTable

    protected Table readTable(DatabaseMetaDataWrapper metaData,
                              Map values)
                       throws SQLException

  Reads the next table from the meta data.

  Parameters:
    `metaData` - The database meta data
    `values` - The table metadata values as defined by `getColumnsForTable()`
  Returns:
    The table or `null` if the result set row did not contain a valid table
  Throws:
    `SQLException`

### removeSystemIndices

    protected void removeSystemIndices(DatabaseMetaDataWrapper metaData,
                                       Table table)
                                throws SQLException

  Removes system indices (generated by the database for primary and foreign keys) from the table.

  Parameters:
    `metaData` - The database meta data
    `table` - The table
  Throws:
    `SQLException`

### removeInternalPrimaryKeyIndex

    protected void removeInternalPrimaryKeyIndex(DatabaseMetaDataWrapper metaData,
                                                 Table table)
                                          throws SQLException

  Tries to remove the internal index for the table's primary key.

  Parameters:
    `metaData` - The database meta data
    `table` - The table
  Throws:
    `SQLException`

### removeInternalForeignKeyIndex

    protected void removeInternalForeignKeyIndex(DatabaseMetaDataWrapper metaData,
                                                 Table table,
                                                 ForeignKey fk)
                                          throws SQLException

  Tries to remove the internal index for the given foreign key.

  Parameters:
    `metaData` - The database meta data
    `table` - The table where the table is defined
    `fk` - The foreign key
  Throws:
    `SQLException`

### matches

    protected boolean matches(Index index,
                              List columnsToSearchFor)

  Checks whether the given index matches the column list.

  Parameters:
    `index` - The index
    `columnsToSearchFor` - The names of the columns that the index should be for
  Returns:
    `true` if the index matches the columns

### isInternalPrimaryKeyIndex

    protected boolean isInternalPrimaryKeyIndex(DatabaseMetaDataWrapper metaData,
                                                Table table,
                                                Index index)
                                         throws SQLException

  Tries to determine whether the index is the internal database-generated index for the given table's primary key. Note that only unique indices with the correct columns are fed to this method. Redefine this method for specific platforms if there are better ways to determine internal indices.

  Parameters:
    `metaData` - The database meta data
    `table` - The table owning the index
    `index` - The index to check
  Returns:
    `true` if the index seems to be an internal primary key one
  Throws:
    `SQLException`

### isInternalForeignKeyIndex

    protected boolean isInternalForeignKeyIndex(DatabaseMetaDataWrapper metaData,
                                                Table table,
                                                ForeignKey fk,
                                                Index index)
                                         throws SQLException

  Tries to determine whether the index is the internal database-generated index for the given foreign key. Note that only non-unique indices with the correct columns are fed to this method. Redefine this method for specific platforms if there are better ways to determine internal indices.

  Parameters:
    `metaData` - The database meta data
    `table` - The table owning the index and foreign key
    `fk` - The foreign key
    `index` - The index to check
  Returns:
    `true` if the index seems to be an internal primary key one
  Throws:
    `SQLException`

### readColumns

    protected Collection readColumns(DatabaseMetaDataWrapper metaData,
                                     String tableName)
                              throws SQLException

  Reads the column definitions for the indicated table.

  Parameters:
    `metaData` - The database meta data
    `tableName` - The name of the table
  Returns:
    The columns
  Throws:
    `SQLException`

### readColumn

    protected Column readColumn(DatabaseMetaDataWrapper metaData,
                                Map values)
                         throws SQLException

  Extracts a column definition from the result set.

  Parameters:
    `metaData` - The database meta data
    `values` - The column meta data values as defined by `getColumnsForColumn()`
  Returns:
    The column
  Throws:
    `SQLException`

### readPrimaryKeyNames

    protected Collection readPrimaryKeyNames(DatabaseMetaDataWrapper metaData,
                                             String tableName)
                                      throws SQLException

  Retrieves the names of the columns that make up the primary key for a given table.

  Parameters:
    `metaData` - The database meta data
    `tableName` - The name of the table from which to retrieve PK information
  Returns:
    The primary key column names
  Throws:
    `SQLException`

### readPrimaryKeyName

    protected String readPrimaryKeyName(DatabaseMetaDataWrapper metaData,
                                        Map values)
                                 throws SQLException

  Extracts a primary key name from the result set.

  Parameters:
    `metaData` - The database meta data
    `values` - The primary key meta data values as defined by `getColumnsForPK()`
  Returns:
    The primary key name
  Throws:
    `SQLException`

### readForeignKeys

    protected Collection readForeignKeys(DatabaseMetaDataWrapper metaData,
                                         String tableName)
                                  throws SQLException

  Retrieves the foreign keys of the indicated table.

  Parameters:
    `metaData` - The database meta data
    `tableName` - The name of the table from which to retrieve FK information
  Returns:
    The foreign keys
  Throws:
    `SQLException`

### readForeignKey

    protected void readForeignKey(DatabaseMetaDataWrapper metaData,
                                  Map values,
                                  Map knownFks)
                           throws SQLException

  Reads the next foreign key spec from the result set.

  Parameters:
    `metaData` - The database meta data
    `values` - The foreign key meta data as defined by `getColumnsForFK()`
    `knownFks` - The already read foreign keys for the current table
  Throws:
    `SQLException`

### readIndices

    protected Collection readIndices(DatabaseMetaDataWrapper metaData,
                                     String tableName)
                              throws SQLException

  Determines the indices for the indicated table.

  Parameters:
    `metaData` - The database meta data
    `tableName` - The name of the table
  Returns:
    The list of indices
  Throws:
    `SQLException`

### readIndex

    protected void readIndex(DatabaseMetaDataWrapper metaData,
                             Map values,
                             Map knownIndices)
                      throws SQLException

  Reads the next index spec from the result set.

  Parameters:
    `metaData` - The database meta data
    `values` - The index meta data as defined by `getColumnsForIndex()`
    `knownIndices` - The already read indices for the current table
  Throws:
    `SQLException`

### readColumns

    protected Map readColumns(ResultSet resultSet,
                              List columnDescriptors)
                       throws SQLException

  Reads the indicated columns from the result set.

  Parameters:
    `resultSet` - The result set
    `columnDescriptors` - The dscriptors of the columns to read
  Returns:
    The read values keyed by the column name
  Throws:
    `SQLException`

### determineAutoIncrementFromResultSetMetaData

    protected void determineAutoIncrementFromResultSetMetaData(Table table,
                                                               Column[] columnsToCheck)
                                                        throws SQLException

  Helper method that determines the auto increment status for the given columns via the `ResultSetMetaData.isAutoIncrement(int)` method.

  Parameters:
    `table` - The table
    `columnsToCheck` - The columns to check (e.g. the primary key columns)
  Throws:
    `SQLException`

### sortForeignKeys

    protected void sortForeignKeys(Database model)

  Sorts the foreign keys in the tables of the model.

  Parameters:
    `model` - The model

### unescape

    protected String unescape(String text,
                              String unescaped,
                              String escaped)

  Replaces a specific character sequence in the given text with the character sequence whose escaped version it is.

  Parameters:
    `text` - The text
    `unescaped` - The unescaped string, e.g. "'"
    `escaped` - The escaped version, e.g. "''"
  Returns:
    The resulting text

### determineSchemaOf

    public String determineSchemaOf(Connection connection,
                                    String schemaPattern,
                                    Table table)
                             throws SQLException

  Deprecated. Will be removed once full schema support is in place

  Tries to find the schema to which the given table belongs.

  Parameters:
    `connection` - The database connection
    `schemaPattern` - The schema pattern to limit the schemas to search in
    `table` - The table to search for
  Returns:
    The schema name or `null` if the schema of the table could not be found
  Throws:
    `SQLException`

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2005-2007 Apache Software Foundation. All Rights Reserved.