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 PlatformImplBase

    java.lang.Object
      org.apache.ddlutils.util.JdbcSupport
          org.apache.ddlutils.platform.PlatformImplBase

All Implemented Interfaces:
  Platform

Direct Known Subclasses:
  AxionPlatform, CloudscapePlatform, Db2Platform, FirebirdPlatform, HsqlDbPlatform, InterbasePlatform, MckoiPlatform, MSSqlPlatform, MySqlPlatform, Oracle8Platform, PostgreSqlPlatform, SapDbPlatform, SybasePlatform

    public abstract class PlatformImplBase

extends JdbcSupport
implements Platform

Base class for platform implementations.

Version:
  $Revision: 231110 $

Field Summary
`protected static String` | `MODEL_DEFAULT_NAME` The default name for models read from the database, if no name as given.

Constructor Summary
`PlatformImplBase()`

Method Summary
`protected void` | `afterInsert(Connection connection, Table table)` Allows platforms to issue statements directly after rows have been inserted into the specified table.
`protected void` | `afterUpdate(Connection connection, Table table)` Allows platforms to issue statements directly after rows have been updated in the specified table.
`void` | `alterTables(Connection connection, Database desiredModel, boolean continueOnError)` Alters the database schema so that it match the given model.
`void` | `alterTables(Connection connection, Database desiredModel, CreationParameters params, boolean continueOnError)` Alters the database schema so that it match the given model.
`void` | `alterTables(Connection connection, String catalog, String schema, String[] tableTypes, Database desiredModel, boolean continueOnError)` Alters the database schema so that it match the given model.
`void` | `alterTables(Connection connection, String catalog, String schema, String[] tableTypes, Database desiredModel, CreationParameters params, boolean continueOnError)` Alters the database schema so that it match the given model.
`void` | `alterTables(Database desiredDb, boolean continueOnError)` Alters the database schema so that it match the given model.
`void` | `alterTables(Database desiredDb, CreationParameters params, boolean continueOnError)` Alters the database schema so that it match the given model.
`void` | `alterTables(String catalog, String schema, String[] tableTypes, Database desiredModel, boolean continueOnError)` Alters the database schema so that it match the given model.
`void` | `alterTables(String catalog, String schema, String[] tableTypes, Database desiredModel, CreationParameters params, boolean continueOnError)` Alters the database schema so that it match the given model.
`protected void` | `beforeInsert(Connection connection, Table table)` Allows platforms to issue statements directly before rows are inserted into the specified table.
`protected void` | `beforeUpdate(Connection connection, Table table)` Allows platforms to issue statements directly before rows are updated in the specified table.
`void` | `createDatabase(String jdbcDriverClassName, String connectionUrl, String username, String password, Map parameters)` Creates the database specified by the given parameters.
`protected String` | `createDeleteSql(Database model, SqlDynaClass dynaClass, SqlDynaProperty[] primaryKeys, DynaBean bean)` Creates the SQL for deleting an object of the given type.
`protected String` | `createInsertSql(Database model, SqlDynaClass dynaClass, SqlDynaProperty[] properties, DynaBean bean)` Creates the SQL for inserting an object of the given type.
`protected ModelBasedResultSetIterator` | `createResultSetIterator(Database model, ResultSet resultSet, Table[] queryHints)` Creates an iterator over the given result set.
`protected String` | `createSelectLastInsertIdSql(Database model, SqlDynaClass dynaClass)` Creates the SQL for querying for the id generated by the last insert of an object of the given type.
`void` | `createTables(Connection connection, Database model, boolean dropTablesFirst, boolean continueOnError)` Creates the tables defined in the database model.
`void` | `createTables(Connection connection, Database model, CreationParameters params, boolean dropTablesFirst, boolean continueOnError)` Creates the tables defined in the database model.
`void` | `createTables(Database model, boolean dropTablesFirst, boolean continueOnError)` Creates the tables defined in the database model.
`void` | `createTables(Database model, CreationParameters params, boolean dropTablesFirst, boolean continueOnError)` Creates the tables defined in the database model.
`protected String` | `createUpdateSql(Database model, SqlDynaClass dynaClass, SqlDynaProperty[] primaryKeys, SqlDynaProperty[] properties, DynaBean bean)` Creates the SQL for updating an object of the given type.
`void` | `delete(Connection connection, Database model, DynaBean dynaBean)` Deletes the row which maps to the given bean from the database.
`void` | `delete(Database model, DynaBean dynaBean)` Deletes the given bean from the database, assuming the primary key values are specified.
`void` | `dropDatabase(String jdbcDriverClassName, String connectionUrl, String username, String password)` Drops the database specified by the given parameters.
`void` | `dropTable(Connection connection, Database model, Table table, boolean continueOnError)` Drops the specified table and all foreign keys pointing to it.
`void` | `dropTable(Database model, Table table, boolean continueOnError)` Drops the specified table and all foreign keys pointing to it.
`void` | `dropTables(Connection connection, Database model, boolean continueOnError)` Drops the tables defined in the given database.
`void` | `dropTables(Database model, boolean continueOnError)` Drops the tables defined in the given database.
`int` | `evaluateBatch(Connection connection, String sql, boolean continueOnError)` Executes a series of sql statements which must be seperated by the delimiter configured as `PlatformInfo.getSqlCommandDelimiter()` of the info object of this platform.
`int` | `evaluateBatch(String sql, boolean continueOnError)` Executes a series of sql statements which must be seperated by the delimiter configured as `PlatformInfo.getSqlCommandDelimiter()` of the info object of this platform.
`protected boolean` | `exists(Connection connection, DynaBean dynaBean)` Determines whether the given dyna bean is stored in the database.
`protected Object` | `extractColumnValue(ResultSet resultSet, String columnName, int columnIdx, int jdbcType)` This is the core method to retrieve a value for a column from a result set.
`List` | `fetch(Database model, String sql)` Queries for a list of dyna beans representing rows of the given query.
`List` | `fetch(Database model, String sql, Collection parameters)` Queries for a list of dyna beans representing rows of the given query.
`List` | `fetch(Database model, String sql, Collection parameters, int start, int end)` Queries for a list of dyna beans representing rows of the given query.
`List` | `fetch(Database model, String sql, Collection parameters, Table[] queryHints)` Queries for a list of dyna beans representing rows of the given query.
`List` | `fetch(Database model, String sql, Collection parameters, Table[] queryHints, int start, int end)` Queries for a list of dyna beans representing rows of the given query.
`List` | `fetch(Database model, String sql, int start, int end)` Queries for a list of dyna beans representing rows of the given query.
`List` | `fetch(Database model, String sql, Table[] queryHints)` Queries for a list of dyna beans representing rows of the given query.
`List` | `fetch(Database model, String sql, Table[] queryHints, int start, int end)` Queries for a list of dyna beans representing rows of the given query.
`String` | `getAlterTablesSql(Connection connection, Database desiredModel)` Returns the SQL for altering the database schema so that it match the given model.
`String` | `getAlterTablesSql(Connection connection, Database desiredModel, CreationParameters params)` Returns the SQL for altering the database schema so that it match the given model.
`String` | `getAlterTablesSql(Connection connection, String catalog, String schema, String[] tableTypes, Database desiredModel)` Returns the SQL for altering the database schema so that it match the given model.
`String` | `getAlterTablesSql(Connection connection, String catalog, String schema, String[] tableTypes, Database desiredModel, CreationParameters params)` Returns the SQL for altering the database schema so that it match the given model.
`String` | `getAlterTablesSql(Database desiredDb)` Returns the SQL for altering the database schema so that it match the given model.
`String` | `getAlterTablesSql(Database desiredDb, CreationParameters params)` Returns the SQL for altering the database schema so that it match the given model.
`String` | `getAlterTablesSql(String catalog, String schema, String[] tableTypes, Database desiredModel)` Returns the SQL for altering the database schema so that it match the given model.
`String` | `getAlterTablesSql(String catalog, String schema, String[] tableTypes, Database desiredModel, CreationParameters params)` Returns the SQL for altering the database schema so that it match the given model.
`String` | `getCreateTablesSql(Database model, boolean dropTablesFirst, boolean continueOnError)` Returns the SQL for creating the tables defined in the database model.
`String` | `getCreateTablesSql(Database model, CreationParameters params, boolean dropTablesFirst, boolean continueOnError)` Returns the SQL for creating the tables defined in the database model.
`String` | `getDeleteSql(Database model, DynaBean dynaBean)` Returns the sql for deleting the given bean from the database.
`String` | `getDropTableSql(Database model, Table table, boolean continueOnError)` Returns the SQL for dropping the given table and all foreign keys pointing to it.
`String` | `getDropTablesSql(Database model, boolean continueOnError)` Returns the SQL for dropping the tables defined in the given database.
`String` | `getInsertSql(Database model, DynaBean dynaBean)` Returns the sql for inserting the given bean.
`protected org.apache.commons.logging.Log` | `getLog()` Returns the log for this platform.
`JdbcModelReader` | `getModelReader()` Returns the model reader (which reads a database model from a live database) for this platform.
`protected Object` | `getObjectFromResultSet(ResultSet resultSet, Column column, int idx)` Helper method for retrieving the value for a column from the given result set using the type code of the column.
`protected Object` | `getObjectFromResultSet(ResultSet resultSet, String columnName, Table table)` Helper method esp.
`PlatformInfo` | `getPlatformInfo()` Returns the info object for this platform.
`SqlBuilder` | `getSqlBuilder()` Returns the sql builder for the this platform.
`String` | `getUpdateSql(Database model, DynaBean dynaBean)` Returns the sql for updating the given bean in the database.
`void` | `insert(Connection connection, Database model, Collection dynaBeans)` Inserts the given beans.
`void` | `insert(Connection connection, Database model, DynaBean dynaBean)` Inserts the bean.
`void` | `insert(Database model, Collection dynaBeans)` Inserts the given beans in the database, assuming the primary key values are specified.
`void` | `insert(Database model, DynaBean dynaBean)` Inserts the given DynaBean in the database, assuming the primary key values are specified.
`boolean` | `isDelimitedIdentifierModeOn()` Determines whether delimited identifiers are used or normal SQL92 identifiers (which may only contain alphanumerical characters and the underscore, must start with a letter and cannot be a reserved keyword).
`boolean` | `isForeignKeysSorted()` Determines whether foreign keys of a table read from a live database are alphabetically sorted.
`boolean` | `isIdentityOverrideOn()` Determines whether SQL insert statements can specify values for identity columns.
`boolean` | `isScriptModeOn()` Determines whether script mode is on.
`boolean` | `isSqlCommentsOn()` Determines whether SQL comments are generated.
`protected void` | `logWarnings(Connection connection)` Logs any warnings associated to the given connection.
`protected void` | `postprocessModelFromDatabase(Database model)` Allows the platform to postprocess the model just read from the database.
`Iterator` | `query(Database model, String sql)` Performs the given SQL query returning an iterator over the results.
`Iterator` | `query(Database model, String sql, Collection parameters)` Performs the given parameterized SQL query returning an iterator over the results.
`Iterator` | `query(Database model, String sql, Collection parameters, Table[] queryHints)` Performs the given parameterized SQL query returning an iterator over the results.
`Iterator` | `query(Database model, String sql, Table[] queryHints)` Performs the given SQL query returning an iterator over the results.
`Database` | `readModelFromDatabase(Connection connection, String name)` Reads the database model from the live database to which the given connection is pointing.
`Database` | `readModelFromDatabase(Connection connection, String name, String catalog, String schema, String[] tableTypes)` Reads the database model from the live database to which the given connection is pointing.
`Database` | `readModelFromDatabase(String name)` Reads the database model from the live database as specified by the data source set for this platform.
`Database` | `readModelFromDatabase(String name, String catalog, String schema, String[] tableTypes)` Reads the database model from the live database as specified by the data source set for this platform.
`void` | `setDelimitedIdentifierModeOn(boolean delimitedIdentifierModeOn)` Specifies whether delimited identifiers are used or normal SQL92 identifiers.
`void` | `setForeignKeysSorted(boolean foreignKeysSorted)` Specifies whether foreign keys read from a live database, shall be alphabetically sorted.
`void` | `setIdentityOverrideOn(boolean identityOverrideOn)` Specifies whether SQL insert statements can specify values for identity columns.
`protected void` | `setModelReader(JdbcModelReader modelReader)` Sets the model reader for this platform.
`protected void` | `setObject(PreparedStatement statement, int sqlIndex, DynaBean dynaBean, SqlDynaProperty property)` Sets a parameter of the prepared statement based on the type of the column of the property.
`void` | `setScriptModeOn(boolean scriptModeOn)` Specifies whether script mode is on.
`protected void` | `setSqlBuilder(SqlBuilder builder)` Sets the sql builder for this platform.
`void` | `setSqlCommentsOn(boolean sqlCommentsOn)` Specifies whether SQL comments shall be generated.
`protected void` | `setStatementParameterValue(PreparedStatement statement, int sqlIndex, int typeCode, Object value)` This is the core method to set the parameter of a prepared statement to a given value.
`void` | `shutdownDatabase()` Performs a shutdown at the database.
`void` | `shutdownDatabase(Connection connection)` Performs a shutdown at the database.
`void` | `store(Database model, DynaBean dynaBean)` Stores the given bean in the database, inserting it if there is no primary key otherwise the bean is updated in the database.
`protected HashMap` | `toColumnValues(SqlDynaProperty[] properties, DynaBean bean)` Derives the column values for the given dyna properties from the dyna bean.
`void` | `update(Connection connection, Database model, DynaBean dynaBean)` Updates the row which maps to the given bean.
`void` | `update(Database model, DynaBean dynaBean)` Updates the given bean in the database, assuming the primary key values are specified.

Methods inherited from class org.apache.ddlutils.util.JdbcSupport
`borrowConnection, closeStatement, getDataSource, getPassword, getUsername, returnConnection, setDataSource, setPassword, setUsername`

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

Methods inherited from interface org.apache.ddlutils.Platform
`borrowConnection, getDataSource, getName, getPassword, getUsername, returnConnection, setDataSource, setPassword, setUsername`

Field Detail

### MODEL_DEFAULT_NAME

    protected static final String MODEL_DEFAULT_NAME

  The default name for models read from the database, if no name as given.

  See Also:
    Constant Field Values

Constructor Detail

### PlatformImplBase

    public PlatformImplBase()

Method Detail

### getSqlBuilder

    public SqlBuilder getSqlBuilder()

  Returns the sql builder for the this platform.

  Specified by:
    `getSqlBuilder` in interface `Platform`
  Returns:
    The sql builder

### setSqlBuilder

    protected void setSqlBuilder(SqlBuilder builder)

  Sets the sql builder for this platform.

  Parameters:
    `builder` - The sql builder

### getModelReader

    public JdbcModelReader getModelReader()

  Returns the model reader (which reads a database model from a live database) for this platform.

  Specified by:
    `getModelReader` in interface `Platform`
  Returns:
    The model reader

### setModelReader

    protected void setModelReader(JdbcModelReader modelReader)

  Sets the model reader for this platform.

  Parameters:
    `modelReader` - The model reader

### getPlatformInfo

    public PlatformInfo getPlatformInfo()

  Returns the info object for this platform.

  Specified by:
    `getPlatformInfo` in interface `Platform`
  Returns:
    The info object

### isScriptModeOn

    public boolean isScriptModeOn()

  Determines whether script mode is on. This means that the generated SQL is not intended to be sent directly to the database but rather to be saved in a SQL script file. Per default, script mode is off.

  Specified by:
    `isScriptModeOn` in interface `Platform`
  Returns:
    `true` if script mode is on

### setScriptModeOn

    public void setScriptModeOn(boolean scriptModeOn)

  Specifies whether script mode is on. This means that the generated SQL is not intended to be sent directly to the database but rather to be saved in a SQL script file.

  Specified by:
    `setScriptModeOn` in interface `Platform`
  Parameters:
    `scriptModeOn` - `true` if script mode is on

### isSqlCommentsOn

    public boolean isSqlCommentsOn()

  Determines whether SQL comments are generated.

  Specified by:
    `isSqlCommentsOn` in interface `Platform`
  Returns:
    `true` if SQL comments shall be generated

### setSqlCommentsOn

    public void setSqlCommentsOn(boolean sqlCommentsOn)

  Specifies whether SQL comments shall be generated.

  Specified by:
    `setSqlCommentsOn` in interface `Platform`
  Parameters:
    `sqlCommentsOn` - `true` if SQL comments shall be generated

### isDelimitedIdentifierModeOn

    public boolean isDelimitedIdentifierModeOn()

  Determines whether delimited identifiers are used or normal SQL92 identifiers (which may only contain alphanumerical characters and the underscore, must start with a letter and cannot be a reserved keyword). Per default, delimited identifiers are not used

  Specified by:
    `isDelimitedIdentifierModeOn` in interface `Platform`
  Returns:
    `true` if delimited identifiers are used

### setDelimitedIdentifierModeOn

    public void setDelimitedIdentifierModeOn(boolean delimitedIdentifierModeOn)

  Specifies whether delimited identifiers are used or normal SQL92 identifiers.

  Specified by:
    `setDelimitedIdentifierModeOn` in interface `Platform`
  Parameters:
    `delimitedIdentifierModeOn` - `true` if delimited identifiers shall be used

### isIdentityOverrideOn

    public boolean isIdentityOverrideOn()

  Determines whether SQL insert statements can specify values for identity columns. This setting is only relevant if the database supports it (`PlatformInfo.isIdentityOverrideAllowed()`). If this is off, then the `insert` methods will ignore values for identity columns.

  Specified by:
    `isIdentityOverrideOn` in interface `Platform`
  Returns:
    `true` if identity override is enabled (the default)

### setIdentityOverrideOn

    public void setIdentityOverrideOn(boolean identityOverrideOn)

  Specifies whether SQL insert statements can specify values for identity columns. This setting is only relevant if the database supports it (`PlatformInfo.isIdentityOverrideAllowed()`). If this is off, then the `insert` methods will ignore values for identity columns.

  Specified by:
    `setIdentityOverrideOn` in interface `Platform`
  Parameters:
    `identityOverrideOn` - `true` if identity override is enabled (the default)

### isForeignKeysSorted

    public boolean isForeignKeysSorted()

  Determines whether foreign keys of a table read from a live database are alphabetically sorted.

  Specified by:
    `isForeignKeysSorted` in interface `Platform`
  Returns:
    `true` if read foreign keys are sorted

### setForeignKeysSorted

    public void setForeignKeysSorted(boolean foreignKeysSorted)

  Specifies whether foreign keys read from a live database, shall be alphabetically sorted.

  Specified by:
    `setForeignKeysSorted` in interface `Platform`
  Parameters:
    `foreignKeysSorted` - `true` if read foreign keys shall be sorted

### getLog

    protected org.apache.commons.logging.Log getLog()

  Returns the log for this platform.

  Returns:
    The log

### logWarnings

    protected void logWarnings(Connection connection)
                        throws SQLException

  Logs any warnings associated to the given connection. Note that the connection needs to be open for this.

  Parameters:
    `connection` - The open connection
  Throws:
    `SQLException`

### evaluateBatch

    public int evaluateBatch(String sql,
                             boolean continueOnError)
                      throws DatabaseOperationException

  Executes a series of sql statements which must be seperated by the delimiter configured as `PlatformInfo.getSqlCommandDelimiter()` of the info object of this platform.

  Specified by:
    `evaluateBatch` in interface `Platform`
  Parameters:
    `sql` - The sql statements to execute
    `continueOnError` - Whether to continue executing the sql commands when an error occurred
  Returns:
    The number of errors
  Throws:
    `DatabaseOperationException`

### evaluateBatch

    public int evaluateBatch(Connection connection,
                             String sql,
                             boolean continueOnError)
                      throws DatabaseOperationException

  Executes a series of sql statements which must be seperated by the delimiter configured as `PlatformInfo.getSqlCommandDelimiter()` of the info object of this platform. TODO: consider outputting a collection of String or some kind of statement object from the SqlBuilder instead of having to parse strings here

  Specified by:
    `evaluateBatch` in interface `Platform`
  Parameters:
    `connection` - The connection to the database
    `sql` - The sql statements to execute
    `continueOnError` - Whether to continue executing the sql commands when an error occurred
  Returns:
    The number of errors
  Throws:
    `DatabaseOperationException`

### shutdownDatabase

    public void shutdownDatabase()
                          throws DatabaseOperationException

  Performs a shutdown at the database. This is necessary for some embedded databases which otherwise would be locked and thus would refuse other connections. Note that this does not change the database structure or data in it in any way.

  Specified by:
    `shutdownDatabase` in interface `Platform`
  Throws:
    `DatabaseOperationException`

### shutdownDatabase

    public void shutdownDatabase(Connection connection)
                          throws DatabaseOperationException

  Performs a shutdown at the database. This is necessary for some embedded databases which otherwise would be locked and thus would refuse other connections. Note that this does not change the database structure or data in it in any way.

  Specified by:
    `shutdownDatabase` in interface `Platform`
  Parameters:
    `connection` - The connection to the database
  Throws:
    `DatabaseOperationException`

### createDatabase

    public void createDatabase(String jdbcDriverClassName,
                               String connectionUrl,
                               String username,
                               String password,
                               Map parameters)
                        throws DatabaseOperationException,
                               UnsupportedOperationException

  Creates the database specified by the given parameters. Please note that this method does not use a data source set via `Platform.setDataSource(DataSource)` because it is not possible to retrieve the connection information from it without establishing a connection.
  The given connection url is the url that you'd use to connect to the already-created database.
  On some platforms, this method suppurts additional parameters. These are documented in the manual section for the individual platforms.

  Specified by:
    `createDatabase` in interface `Platform`
  Parameters:
    `jdbcDriverClassName` - The jdbc driver class name
    `connectionUrl` - The url to connect to the database if it were already created
    `username` - The username for creating the database
    `password` - The password for creating the database
    `parameters` - Additional parameters relevant to database creation (which are platform specific)
  Throws:
    `DatabaseOperationException`
    `UnsupportedOperationException`

### dropDatabase

    public void dropDatabase(String jdbcDriverClassName,
                             String connectionUrl,
                             String username,
                             String password)
                      throws DatabaseOperationException,
                             UnsupportedOperationException

  Drops the database specified by the given parameters. Please note that this method does not use a data source set via `Platform.setDataSource(DataSource)` because it is not possible to retrieve the connection information from it without establishing a connection.

  Specified by:
    `dropDatabase` in interface `Platform`
  Parameters:
    `jdbcDriverClassName` - The jdbc driver class name
    `connectionUrl` - The url to connect to the database
    `username` - The username for creating the database
    `password` - The password for creating the database
  Throws:
    `DatabaseOperationException`
    `UnsupportedOperationException`

### createTables

    public void createTables(Database model,
                             boolean dropTablesFirst,
                             boolean continueOnError)
                      throws DatabaseOperationException

  Creates the tables defined in the database model.

  Specified by:
    `createTables` in interface `Platform`
  Parameters:
    `model` - The database model
    `dropTablesFirst` - Whether to drop the tables prior to creating them (anew)
    `continueOnError` - Whether to continue executing the sql commands when an error occurred
  Throws:
    `DatabaseOperationException`

### createTables

    public void createTables(Connection connection,
                             Database model,
                             boolean dropTablesFirst,
                             boolean continueOnError)
                      throws DatabaseOperationException

  Creates the tables defined in the database model.

  Specified by:
    `createTables` in interface `Platform`
  Parameters:
    `connection` - The connection to the database
    `model` - The database model
    `dropTablesFirst` - Whether to drop the tables prior to creating them (anew)
    `continueOnError` - Whether to continue executing the sql commands when an error occurred
  Throws:
    `DatabaseOperationException`

### getCreateTablesSql

    public String getCreateTablesSql(Database model,
                                     boolean dropTablesFirst,
                                     boolean continueOnError)

  Returns the SQL for creating the tables defined in the database model.

  Specified by:
    `getCreateTablesSql` in interface `Platform`
  Parameters:
    `model` - The database model
    `dropTablesFirst` - Whether to drop the tables prior to creating them (anew)
    `continueOnError` - Whether to continue executing the sql commands when an error occurred
  Returns:
    The SQL statements

### createTables

    public void createTables(Database model,
                             CreationParameters params,
                             boolean dropTablesFirst,
                             boolean continueOnError)
                      throws DatabaseOperationException

  Creates the tables defined in the database model.

  Specified by:
    `createTables` in interface `Platform`
  Parameters:
    `model` - The database model
    `params` - The parameters used in the creation
    `dropTablesFirst` - Whether to drop the tables prior to creating them (anew)
    `continueOnError` - Whether to continue executing the sql commands when an error occurred
  Throws:
    `DatabaseOperationException`

### createTables

    public void createTables(Connection connection,
                             Database model,
                             CreationParameters params,
                             boolean dropTablesFirst,
                             boolean continueOnError)
                      throws DatabaseOperationException

  Creates the tables defined in the database model.

  Specified by:
    `createTables` in interface `Platform`
  Parameters:
    `connection` - The connection to the database
    `model` - The database model
    `params` - The parameters used in the creation
    `dropTablesFirst` - Whether to drop the tables prior to creating them (anew)
    `continueOnError` - Whether to continue executing the sql commands when an error occurred
  Throws:
    `DatabaseOperationException`

### getCreateTablesSql

    public String getCreateTablesSql(Database model,
                                     CreationParameters params,
                                     boolean dropTablesFirst,
                                     boolean continueOnError)

  Returns the SQL for creating the tables defined in the database model.

  Specified by:
    `getCreateTablesSql` in interface `Platform`
  Parameters:
    `model` - The database model
    `params` - The parameters used in the creation
    `dropTablesFirst` - Whether to drop the tables prior to creating them (anew)
    `continueOnError` - Whether to continue executing the sql commands when an error occurred
  Returns:
    The SQL statements

### alterTables

    public void alterTables(Database desiredDb,
                            boolean continueOnError)
                     throws DatabaseOperationException

  Alters the database schema so that it match the given model.

  Specified by:
    `alterTables` in interface `Platform`
  Parameters:
    `desiredDb` - The desired database schema
    `continueOnError` - Whether to continue with the next sql statement when an error occurred
  Throws:
    `DatabaseOperationException`

### getAlterTablesSql

    public String getAlterTablesSql(Database desiredDb)
                             throws DatabaseOperationException

  Returns the SQL for altering the database schema so that it match the given model.

  Specified by:
    `getAlterTablesSql` in interface `Platform`
  Parameters:
    `desiredDb` - The desired database schema
  Returns:
    The SQL statements
  Throws:
    `DatabaseOperationException`

### alterTables

    public void alterTables(Database desiredDb,
                            CreationParameters params,
                            boolean continueOnError)
                     throws DatabaseOperationException

  Alters the database schema so that it match the given model.

  Specified by:
    `alterTables` in interface `Platform`
  Parameters:
    `desiredDb` - The desired database schema
    `params` - The parameters used in the creation
    `continueOnError` - Whether to continue with the next sql statement when an error occurred
  Throws:
    `DatabaseOperationException`

### getAlterTablesSql

    public String getAlterTablesSql(Database desiredDb,
                                    CreationParameters params)
                             throws DatabaseOperationException

  Returns the SQL for altering the database schema so that it match the given model.

  Specified by:
    `getAlterTablesSql` in interface `Platform`
  Parameters:
    `desiredDb` - The desired database schema
    `params` - The parameters used in the creation
  Returns:
    The SQL statements
  Throws:
    `DatabaseOperationException`

### alterTables

    public void alterTables(Connection connection,
                            Database desiredModel,
                            boolean continueOnError)
                     throws DatabaseOperationException

  Alters the database schema so that it match the given model.

  Specified by:
    `alterTables` in interface `Platform`
  Parameters:
    `connection` - A connection to the existing database that shall be modified
    `desiredModel` - The desired database schema
    `continueOnError` - Whether to continue with the next sql statement when an error occurred
  Throws:
    `DatabaseOperationException`

### getAlterTablesSql

    public String getAlterTablesSql(Connection connection,
                                    Database desiredModel)
                             throws DatabaseOperationException

  Returns the SQL for altering the database schema so that it match the given model.

  Specified by:
    `getAlterTablesSql` in interface `Platform`
  Parameters:
    `connection` - A connection to the existing database that shall be modified
    `desiredModel` - The desired database schema
  Returns:
    The SQL statements
  Throws:
    `DatabaseOperationException`

### alterTables

    public void alterTables(Connection connection,
                            Database desiredModel,
                            CreationParameters params,
                            boolean continueOnError)
                     throws DatabaseOperationException

  Alters the database schema so that it match the given model.

  Specified by:
    `alterTables` in interface `Platform`
  Parameters:
    `connection` - A connection to the existing database that shall be modified
    `desiredModel` - The desired database schema
    `params` - The parameters used in the creation
    `continueOnError` - Whether to continue with the next sql statement when an error occurred
  Throws:
    `DatabaseOperationException`

### getAlterTablesSql

    public String getAlterTablesSql(Connection connection,
                                    Database desiredModel,
                                    CreationParameters params)
                             throws DatabaseOperationException

  Returns the SQL for altering the database schema so that it match the given model.

  Specified by:
    `getAlterTablesSql` in interface `Platform`
  Parameters:
    `connection` - A connection to the existing database that shall be modified
    `desiredModel` - The desired database schema
    `params` - The parameters used in the creation
  Returns:
    The SQL statements
  Throws:
    `DatabaseOperationException`

### alterTables

    public void alterTables(String catalog,
                            String schema,
                            String[] tableTypes,
                            Database desiredModel,
                            boolean continueOnError)
                     throws DatabaseOperationException

  Alters the database schema so that it match the given model.

  Specified by:
    `alterTables` in interface `Platform`
  Parameters:
    `catalog` - The catalog in the existing database to read (can be a pattern); use `null` for the platform-specific default value
    `schema` - The schema in the existing database to read (can be a pattern); use `null` for the platform-specific default value
    `tableTypes` - The table types to read from the existing database; use `null` or an empty array for the platform-specific default value
    `desiredModel` - The desired database schema
    `continueOnError` - Whether to continue with the next sql statement when an error occurred
  Throws:
    `DatabaseOperationException`

### getAlterTablesSql

    public String getAlterTablesSql(String catalog,
                                    String schema,
                                    String[] tableTypes,
                                    Database desiredModel)
                             throws DatabaseOperationException

  Returns the SQL for altering the database schema so that it match the given model.

  Specified by:
    `getAlterTablesSql` in interface `Platform`
  Parameters:
    `catalog` - The catalog in the existing database to read (can be a pattern); use `null` for the platform-specific default value
    `schema` - The schema in the existing database to read (can be a pattern); use `null` for the platform-specific default value
    `tableTypes` - The table types to read from the existing database; use `null` or an empty array for the platform-specific default value
    `desiredModel` - The desired database schema
  Returns:
    The SQL statements
  Throws:
    `DatabaseOperationException`

### alterTables

    public void alterTables(String catalog,
                            String schema,
                            String[] tableTypes,
                            Database desiredModel,
                            CreationParameters params,
                            boolean continueOnError)
                     throws DatabaseOperationException

  Alters the database schema so that it match the given model.

  Specified by:
    `alterTables` in interface `Platform`
  Parameters:
    `catalog` - The catalog in the existing database to read (can be a pattern); use `null` for the platform-specific default value
    `schema` - The schema in the existing database to read (can be a pattern); use `null` for the platform-specific default value
    `tableTypes` - The table types to read from the existing database; use `null` or an empty array for the platform-specific default value
    `desiredModel` - The desired database schema
    `params` - The parameters used in the creation
    `continueOnError` - Whether to continue with the next sql statement when an error occurred
  Throws:
    `DatabaseOperationException`

### getAlterTablesSql

    public String getAlterTablesSql(String catalog,
                                    String schema,
                                    String[] tableTypes,
                                    Database desiredModel,
                                    CreationParameters params)
                             throws DatabaseOperationException

  Returns the SQL for altering the database schema so that it match the given model.

  Specified by:
    `getAlterTablesSql` in interface `Platform`
  Parameters:
    `catalog` - The catalog in the existing database to read (can be a pattern); use `null` for the platform-specific default value
    `schema` - The schema in the existing database to read (can be a pattern); use `null` for the platform-specific default value
    `tableTypes` - The table types to read from the existing database; use `null` or an empty array for the platform-specific default value
    `desiredModel` - The desired database schema
    `params` - The parameters used in the creation
  Returns:
    The SQL statements
  Throws:
    `DatabaseOperationException`

### alterTables

    public void alterTables(Connection connection,
                            String catalog,
                            String schema,
                            String[] tableTypes,
                            Database desiredModel,
                            boolean continueOnError)
                     throws DatabaseOperationException

  Alters the database schema so that it match the given model.

  Specified by:
    `alterTables` in interface `Platform`
  Parameters:
    `connection` - A connection to the existing database that shall be modified
    `catalog` - The catalog in the existing database to read (can be a pattern); use `null` for the platform-specific default value
    `schema` - The schema in the existing database to read (can be a pattern); use `null` for the platform-specific default value
    `tableTypes` - The table types to read from the existing database; use `null` or an empty array for the platform-specific default value
    `desiredModel` - The desired database schema
    `continueOnError` - Whether to continue with the next sql statement when an error occurred
  Throws:
    `DatabaseOperationException`

### getAlterTablesSql

    public String getAlterTablesSql(Connection connection,
                                    String catalog,
                                    String schema,
                                    String[] tableTypes,
                                    Database desiredModel)
                             throws DatabaseOperationException

  Returns the SQL for altering the database schema so that it match the given model.

  Specified by:
    `getAlterTablesSql` in interface `Platform`
  Parameters:
    `connection` - A connection to the existing database that shall be modified
    `catalog` - The catalog in the existing database to read (can be a pattern); use `null` for the platform-specific default value
    `schema` - The schema in the existing database to read (can be a pattern); use `null` for the platform-specific default value
    `tableTypes` - The table types to read from the existing database; use `null` or an empty array for the platform-specific default value
    `desiredModel` - The desired database schema
  Returns:
    The SQL statements
  Throws:
    `DatabaseOperationException`

### alterTables

    public void alterTables(Connection connection,
                            String catalog,
                            String schema,
                            String[] tableTypes,
                            Database desiredModel,
                            CreationParameters params,
                            boolean continueOnError)
                     throws DatabaseOperationException

  Alters the database schema so that it match the given model.

  Specified by:
    `alterTables` in interface `Platform`
  Parameters:
    `connection` - A connection to the existing database that shall be modified
    `catalog` - The catalog in the existing database to read (can be a pattern); use `null` for the platform-specific default value
    `schema` - The schema in the existing database to read (can be a pattern); use `null` for the platform-specific default value
    `tableTypes` - The table types to read from the existing database; use `null` or an empty array for the platform-specific default value
    `desiredModel` - The desired database schema
    `params` - The parameters used in the creation
    `continueOnError` - Whether to continue with the next sql statement when an error occurred
  Throws:
    `DatabaseOperationException`

### getAlterTablesSql

    public String getAlterTablesSql(Connection connection,
                                    String catalog,
                                    String schema,
                                    String[] tableTypes,
                                    Database desiredModel,
                                    CreationParameters params)
                             throws DatabaseOperationException

  Returns the SQL for altering the database schema so that it match the given model.

  Specified by:
    `getAlterTablesSql` in interface `Platform`
  Parameters:
    `connection` - A connection to the existing database that shall be modified
    `catalog` - The catalog in the existing database to read (can be a pattern); use `null` for the platform-specific default value
    `schema` - The schema in the existing database to read (can be a pattern); use `null` for the platform-specific default value
    `tableTypes` - The table types to read from the existing database; use `null` or an empty array for the platform-specific default value
    `desiredModel` - The desired database schema
    `params` - The parameters used in the creation
  Returns:
    The SQL statements
  Throws:
    `DatabaseOperationException`

### dropTable

    public void dropTable(Connection connection,
                          Database model,
                          Table table,
                          boolean continueOnError)
                   throws DatabaseOperationException

  Drops the specified table and all foreign keys pointing to it.

  Specified by:
    `dropTable` in interface `Platform`
  Parameters:
    `connection` - The connection to the database
    `model` - The database model
    `table` - The table to drop
    `continueOnError` - Whether to continue executing the sql commands when an error occurred
  Throws:
    `DatabaseOperationException`

### dropTable

    public void dropTable(Database model,
                          Table table,
                          boolean continueOnError)
                   throws DatabaseOperationException

  Drops the specified table and all foreign keys pointing to it.

  Specified by:
    `dropTable` in interface `Platform`
  Parameters:
    `model` - The database model
    `table` - The table to drop
    `continueOnError` - Whether to continue executing the sql commands when an error occurred
  Throws:
    `DatabaseOperationException`

### getDropTableSql

    public String getDropTableSql(Database model,
                                  Table table,
                                  boolean continueOnError)

  Returns the SQL for dropping the given table and all foreign keys pointing to it.

  Specified by:
    `getDropTableSql` in interface `Platform`
  Parameters:
    `model` - The database model
    `table` - The table to drop
    `continueOnError` - Whether to continue executing the sql commands when an error occurred
  Returns:
    The SQL statements

### dropTables

    public void dropTables(Database model,
                           boolean continueOnError)
                    throws DatabaseOperationException

  Drops the tables defined in the given database.

  Specified by:
    `dropTables` in interface `Platform`
  Parameters:
    `model` - The database model
    `continueOnError` - Whether to continue executing the sql commands when an error occurred
  Throws:
    `DatabaseOperationException`

### dropTables

    public void dropTables(Connection connection,
                           Database model,
                           boolean continueOnError)
                    throws DatabaseOperationException

  Drops the tables defined in the given database.

  Specified by:
    `dropTables` in interface `Platform`
  Parameters:
    `connection` - The connection to the database
    `model` - The database model
    `continueOnError` - Whether to continue executing the sql commands when an error occurred
  Throws:
    `DatabaseOperationException`

### getDropTablesSql

    public String getDropTablesSql(Database model,
                                   boolean continueOnError)

  Returns the SQL for dropping the tables defined in the given database.

  Specified by:
    `getDropTablesSql` in interface `Platform`
  Parameters:
    `model` - The database model
    `continueOnError` - Whether to continue executing the sql commands when an error occurred
  Returns:
    The SQL statements

### query

    public Iterator query(Database model,
                          String sql)
                   throws DatabaseOperationException

  Performs the given SQL query returning an iterator over the results.

  Specified by:
    `query` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `sql` - The sql query to perform
  Returns:
    An iterator for the dyna beans resulting from the query
  Throws:
    `DatabaseOperationException`

### query

    public Iterator query(Database model,
                          String sql,
                          Collection parameters)
                   throws DatabaseOperationException

  Performs the given parameterized SQL query returning an iterator over the results.

  Specified by:
    `query` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `sql` - The sql query to perform
    `parameters` - The query parameter values
  Returns:
    An iterator for the dyna beans resulting from the query
  Throws:
    `DatabaseOperationException`

### query

    public Iterator query(Database model,
                          String sql,
                          Table[] queryHints)
                   throws DatabaseOperationException

  Performs the given SQL query returning an iterator over the results.

  Specified by:
    `query` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `sql` - The sql query to perform
    `queryHints` - The tables that are queried (optional)
  Returns:
    An iterator for the dyna beans resulting from the query
  Throws:
    `DatabaseOperationException`

### query

    public Iterator query(Database model,
                          String sql,
                          Collection parameters,
                          Table[] queryHints)
                   throws DatabaseOperationException

  Performs the given parameterized SQL query returning an iterator over the results.

  Specified by:
    `query` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `sql` - The sql query to perform
    `parameters` - The query parameter values
    `queryHints` - The tables that are queried (optional)
  Returns:
    An iterator for the dyna beans resulting from the query
  Throws:
    `DatabaseOperationException`

### fetch

    public List fetch(Database model,
                      String sql)
               throws DatabaseOperationException

  Queries for a list of dyna beans representing rows of the given query. In contrast to the `Platform.query(Database, String)` method all beans will be materialized and the connection will be closed before returning the beans.

  Specified by:
    `fetch` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `sql` - The sql query
  Returns:
    The dyna beans resulting from the query
  Throws:
    `DatabaseOperationException`

### fetch

    public List fetch(Database model,
                      String sql,
                      Table[] queryHints)
               throws DatabaseOperationException

  Queries for a list of dyna beans representing rows of the given query. In contrast to the `Platform.query(Database, String)` method all beans will be materialized and the connection will be closed before returning the beans.

  Specified by:
    `fetch` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `sql` - The sql query
    `queryHints` - The tables that are queried (optional)
  Returns:
    The dyna beans resulting from the query
  Throws:
    `DatabaseOperationException`

### fetch

    public List fetch(Database model,
                      String sql,
                      int start,
                      int end)
               throws DatabaseOperationException

  Queries for a list of dyna beans representing rows of the given query. In contrast to the `Platform.query(Database, String)` method all beans will be materialized and the connection will be closed before returning the beans. Also, the two int parameters specify which rows of the result set to use. If there are more rows than desired, they will be ignored (and not read from the database).

  Specified by:
    `fetch` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `sql` - The sql query
    `start` - Row number to start from (0 for first row)
    `end` - Row number to stop at (inclusively; -1 for last row)
  Returns:
    The dyna beans resulting from the query
  Throws:
    `DatabaseOperationException`

### fetch

    public List fetch(Database model,
                      String sql,
                      Table[] queryHints,
                      int start,
                      int end)
               throws DatabaseOperationException

  Queries for a list of dyna beans representing rows of the given query. In contrast to the `Platform.query(Database, String, Table[])` method all beans will be materialized and the connection will be closed before returning the beans. Also, the two int parameters specify which rows of the result set to use. If there are more rows than desired, they will be ignored (and not read from the database).

  Specified by:
    `fetch` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `sql` - The sql query
    `queryHints` - The tables that are queried (optional)
    `start` - Row number to start from (0 for first row)
    `end` - Row number to stop at (inclusively; -1 for last row)
  Returns:
    The dyna beans resulting from the query
  Throws:
    `DatabaseOperationException`

### fetch

    public List fetch(Database model,
                      String sql,
                      Collection parameters)
               throws DatabaseOperationException

  Queries for a list of dyna beans representing rows of the given query. In contrast to the `Platform.query(Database, String, Collection)` method all beans will be materialized and the connection will be closed before returning the beans.

  Specified by:
    `fetch` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `sql` - The parameterized query
    `parameters` - The parameter values
  Returns:
    The dyna beans resulting from the query
  Throws:
    `DatabaseOperationException`

### fetch

    public List fetch(Database model,
                      String sql,
                      Collection parameters,
                      int start,
                      int end)
               throws DatabaseOperationException

  Queries for a list of dyna beans representing rows of the given query. In contrast to the `Platform.query(Database, String, Collection)` method all beans will be materialized and the connection will be closed before returning the beans. Also, the two int parameters specify which rows of the result set to use. If there are more rows than desired, they will be ignored (and not read from the database).

  Specified by:
    `fetch` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `sql` - The parameterized sql query
    `parameters` - The parameter values
    `start` - Row number to start from (0 for first row)
    `end` - Row number to stop at (inclusively; -1 for last row)
  Returns:
    The dyna beans resulting from the query
  Throws:
    `DatabaseOperationException`

### fetch

    public List fetch(Database model,
                      String sql,
                      Collection parameters,
                      Table[] queryHints)
               throws DatabaseOperationException

  Queries for a list of dyna beans representing rows of the given query. In contrast to the `Platform.query(Database, String, Collection)` method all beans will be materialized and the connection will be closed before returning the beans.

  Specified by:
    `fetch` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `sql` - The parameterized query
    `parameters` - The parameter values
    `queryHints` - The tables that are queried (optional)
  Returns:
    The dyna beans resulting from the query
  Throws:
    `DatabaseOperationException`

### fetch

    public List fetch(Database model,
                      String sql,
                      Collection parameters,
                      Table[] queryHints,
                      int start,
                      int end)
               throws DatabaseOperationException

  Queries for a list of dyna beans representing rows of the given query. In contrast to the `Platform.query(Database, String, Collection, Table[])` method all beans will be materialized and the connection will be closed before returning the beans. Also, the two int parameters specify which rows of the result set to use. If there are more rows than desired, they will be ignored (and not read from the database).

  Specified by:
    `fetch` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `sql` - The parameterized sql query
    `parameters` - The parameter values
    `queryHints` - The tables that are queried (optional)
    `start` - Row number to start from (0 for first row)
    `end` - Row number to stop at (inclusively; -1 for last row)
  Returns:
    The dyna beans resulting from the query
  Throws:
    `DatabaseOperationException`

### createInsertSql

    protected String createInsertSql(Database model,
                                     SqlDynaClass dynaClass,
                                     SqlDynaProperty[] properties,
                                     DynaBean bean)

  Creates the SQL for inserting an object of the given type. If a concrete bean is given, then a concrete insert statement is created, otherwise an insert statement usable in a prepared statement is build.

  Parameters:
    `model` - The database model
    `dynaClass` - The type
    `properties` - The properties to write
    `bean` - Optionally the concrete bean to insert
  Returns:
    The SQL required to insert an instance of the class

### createSelectLastInsertIdSql

    protected String createSelectLastInsertIdSql(Database model,
                                                 SqlDynaClass dynaClass)

  Creates the SQL for querying for the id generated by the last insert of an object of the given type.

  Parameters:
    `model` - The database model
    `dynaClass` - The type
  Returns:
    The SQL required for querying for the id, or `null` if the database does not support this

### getInsertSql

    public String getInsertSql(Database model,
                               DynaBean dynaBean)

  Returns the sql for inserting the given bean.

  Specified by:
    `getInsertSql` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `dynaBean` - The bean
  Returns:
    The insert sql

### insert

    public void insert(Connection connection,
                       Database model,
                       DynaBean dynaBean)
                throws DatabaseOperationException

  Inserts the bean. If one of the columns is an auto-incremented column, then the bean will also be updated with the column value generated by the database. Note that the connection will not be closed by this method.

  Specified by:
    `insert` in interface `Platform`
  Parameters:
    `connection` - The database connection
    `model` - The database model to use
    `dynaBean` - The bean
  Throws:
    `DatabaseOperationException`

### insert

    public void insert(Database model,
                       DynaBean dynaBean)
                throws DatabaseOperationException

  Inserts the given DynaBean in the database, assuming the primary key values are specified.

  Specified by:
    `insert` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `dynaBean` - The bean to insert
  Throws:
    `DatabaseOperationException`

### insert

    public void insert(Connection connection,
                       Database model,
                       Collection dynaBeans)
                throws DatabaseOperationException

  Inserts the given beans. Note that a batch insert is used for subsequent beans of the same type. Also the properties for the primary keys are not updated in the beans. Hence you should not use this method when the primary key values are defined by the database (via a sequence or identity constraint). This method does not close the connection.

  Specified by:
    `insert` in interface `Platform`
  Parameters:
    `connection` - The database connection
    `model` - The database model to use
    `dynaBeans` - The beans
  Throws:
    `DatabaseOperationException`

### insert

    public void insert(Database model,
                       Collection dynaBeans)
                throws DatabaseOperationException

  Inserts the given beans in the database, assuming the primary key values are specified. Note that a batch insert is used for subsequent beans of the same type. Also the properties for the primary keys are not updated in the beans. Hence you should not use this method when the primary key values are defined by the database (via a sequence or identity constraint).

  Specified by:
    `insert` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `dynaBeans` - The beans to insert
  Throws:
    `DatabaseOperationException`

### beforeInsert

    protected void beforeInsert(Connection connection,
                                Table table)
                         throws SQLException

  Allows platforms to issue statements directly before rows are inserted into the specified table.

  Parameters:
    `connection` - The connection used for the insertion
    `table` - The table that the rows are inserted into
  Throws:
    `SQLException`

### afterInsert

    protected void afterInsert(Connection connection,
                               Table table)
                        throws SQLException

  Allows platforms to issue statements directly after rows have been inserted into the specified table.

  Parameters:
    `connection` - The connection used for the insertion
    `table` - The table that the rows have been inserted into
  Throws:
    `SQLException`

### createUpdateSql

    protected String createUpdateSql(Database model,
                                     SqlDynaClass dynaClass,
                                     SqlDynaProperty[] primaryKeys,
                                     SqlDynaProperty[] properties,
                                     DynaBean bean)

  Creates the SQL for updating an object of the given type. If a concrete bean is given, then a concrete update statement is created, otherwise an update statement usable in a prepared statement is build.

  Parameters:
    `model` - The database model
    `dynaClass` - The type
    `primaryKeys` - The primary keys
    `properties` - The properties to write
    `bean` - Optionally the concrete bean to update
  Returns:
    The SQL required to update the instance

### getUpdateSql

    public String getUpdateSql(Database model,
                               DynaBean dynaBean)

  Returns the sql for updating the given bean in the database.

  Specified by:
    `getUpdateSql` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `dynaBean` - The bean
  Returns:
    The update sql

### update

    public void update(Connection connection,
                       Database model,
                       DynaBean dynaBean)
                throws DatabaseOperationException

  Updates the row which maps to the given bean.

  Specified by:
    `update` in interface `Platform`
  Parameters:
    `connection` - The database connection
    `model` - The database model to use
    `dynaBean` - The bean
  Throws:
    `DatabaseOperationException`

### update

    public void update(Database model,
                       DynaBean dynaBean)
                throws DatabaseOperationException

  Updates the given bean in the database, assuming the primary key values are specified.

  Specified by:
    `update` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `dynaBean` - The bean
  Throws:
    `DatabaseOperationException`

### beforeUpdate

    protected void beforeUpdate(Connection connection,
                                Table table)
                         throws SQLException

  Allows platforms to issue statements directly before rows are updated in the specified table.

  Parameters:
    `connection` - The connection used for the update
    `table` - The table that the rows are updateed into
  Throws:
    `SQLException`

### afterUpdate

    protected void afterUpdate(Connection connection,
                               Table table)
                        throws SQLException

  Allows platforms to issue statements directly after rows have been updated in the specified table.

  Parameters:
    `connection` - The connection used for the update
    `table` - The table that the rows have been updateed into
  Throws:
    `SQLException`

### exists

    protected boolean exists(Connection connection,
                             DynaBean dynaBean)

  Determines whether the given dyna bean is stored in the database.

  Parameters:
    `dynaBean` - The bean
    `connection` - The connection
  Returns:
    `true` if this dyna bean has a primary key

### store

    public void store(Database model,
                      DynaBean dynaBean)
               throws DatabaseOperationException

  Stores the given bean in the database, inserting it if there is no primary key otherwise the bean is updated in the database.

  Specified by:
    `store` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `dynaBean` - The bean to store
  Throws:
    `DatabaseOperationException`

### createDeleteSql

    protected String createDeleteSql(Database model,
                                     SqlDynaClass dynaClass,
                                     SqlDynaProperty[] primaryKeys,
                                     DynaBean bean)

  Creates the SQL for deleting an object of the given type. If a concrete bean is given, then a concrete delete statement is created, otherwise a delete statement usable in a prepared statement is build.

  Parameters:
    `model` - The database model
    `dynaClass` - The type
    `primaryKeys` - The primary keys
    `bean` - Optionally the concrete bean to update
  Returns:
    The SQL required to delete the instance

### getDeleteSql

    public String getDeleteSql(Database model,
                               DynaBean dynaBean)

  Returns the sql for deleting the given bean from the database.

  Specified by:
    `getDeleteSql` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `dynaBean` - The bean
  Returns:
    The sql

### delete

    public void delete(Database model,
                       DynaBean dynaBean)
                throws DatabaseOperationException

  Deletes the given bean from the database, assuming the primary key values are specified.

  Specified by:
    `delete` in interface `Platform`
  Parameters:
    `model` - The database model to use
    `dynaBean` - The bean to delete
  Throws:
    `DatabaseOperationException`

### delete

    public void delete(Connection connection,
                       Database model,
                       DynaBean dynaBean)
                throws DatabaseOperationException

  Deletes the row which maps to the given bean from the database.

  Specified by:
    `delete` in interface `Platform`
  Parameters:
    `connection` - The database connection
    `model` - The database model to use
    `dynaBean` - The bean
  Throws:
    `DatabaseOperationException`

### readModelFromDatabase

    public Database readModelFromDatabase(String name)
                                   throws DatabaseOperationException

  Reads the database model from the live database as specified by the data source set for this platform.

  Specified by:
    `readModelFromDatabase` in interface `Platform`
  Parameters:
    `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:
    `DatabaseOperationException` - If an error occurred during reading the model

### readModelFromDatabase

    public Database readModelFromDatabase(Connection connection,
                                          String name)
                                   throws DatabaseOperationException

  Reads the database model from the live database to which the given connection is pointing.

  Specified by:
    `readModelFromDatabase` in interface `Platform`
  Parameters:
    `connection` - The connection to the database
    `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:
    `DatabaseOperationException` - If an error occurred during reading the model

### readModelFromDatabase

    public Database readModelFromDatabase(String name,
                                          String catalog,
                                          String schema,
                                          String[] tableTypes)
                                   throws DatabaseOperationException

  Reads the database model from the live database as specified by the data source set for this platform.

  Specified by:
    `readModelFromDatabase` in interface `Platform`
  Parameters:
    `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 access in the database; use `null` for the default value
    `schema` - The schema to access 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:
    `DatabaseOperationException` - If an error occurred during reading the model

### readModelFromDatabase

    public Database readModelFromDatabase(Connection connection,
                                          String name,
                                          String catalog,
                                          String schema,
                                          String[] tableTypes)
                                   throws DatabaseOperationException

  Reads the database model from the live database to which the given connection is pointing.

  Specified by:
    `readModelFromDatabase` in interface `Platform`
  Parameters:
    `connection` - The connection to the database
    `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 access in the database; use `null` for the default value
    `schema` - The schema to access 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:
    `DatabaseOperationException` - If an error occurred during reading the model

### postprocessModelFromDatabase

    protected void postprocessModelFromDatabase(Database model)

  Allows the platform to postprocess the model just read from the database.

  Parameters:
    `model` - The model

### toColumnValues

    protected HashMap toColumnValues(SqlDynaProperty[] properties,
                                     DynaBean bean)

  Derives the column values for the given dyna properties from the dyna bean.

  Parameters:
    `properties` - The properties
    `bean` - The bean
  Returns:
    The values indexed by the column names

### setObject

    protected void setObject(PreparedStatement statement,
                             int sqlIndex,
                             DynaBean dynaBean,
                             SqlDynaProperty property)
                      throws SQLException

  Sets a parameter of the prepared statement based on the type of the column of the property.

  Parameters:
    `statement` - The statement
    `sqlIndex` - The index of the parameter to set in the statement
    `dynaBean` - The bean of which to take the value
    `property` - The property of the bean, which also defines the corresponding column
  Throws:
    `SQLException`

### setStatementParameterValue

    protected void setStatementParameterValue(PreparedStatement statement,
                                              int sqlIndex,
                                              int typeCode,
                                              Object value)
                                       throws SQLException

  This is the core method to set the parameter of a prepared statement to a given value. The primary purpose of this method is to call the appropriate method on the statement, and to give database-specific implementations the ability to change this behavior.

  Parameters:
    `statement` - The statement
    `sqlIndex` - The parameter index
    `typeCode` - The JDBC type code
    `value` - The value
  Throws:
    `SQLException` - If an error occurred while setting the parameter value

### getObjectFromResultSet

    protected Object getObjectFromResultSet(ResultSet resultSet,
                                            String columnName,
                                            Table table)
                                     throws SQLException

  Helper method esp. for the `ModelBasedResultSetIterator` class that retrieves the value for a column from the given result set. If a table was specified, and it contains the column, then the jdbc type defined for the column is used for extracting the value, otherwise the object directly retrieved from the result set is returned.
  The method is defined here rather than in the `ModelBasedResultSetIterator` class so that concrete platforms can modify its behavior.

  Parameters:
    `resultSet` - The result set
    `columnName` - The name of the column
    `table` - The table
  Returns:
    The value
  Throws:
    `SQLException`

### getObjectFromResultSet

    protected Object getObjectFromResultSet(ResultSet resultSet,
                                            Column column,
                                            int idx)
                                     throws SQLException

  Helper method for retrieving the value for a column from the given result set using the type code of the column.

  Parameters:
    `resultSet` - The result set
    `column` - The column
    `idx` - The value's index in the result set (starting from 1)
  Returns:
    The value
  Throws:
    `SQLException`

### extractColumnValue

    protected Object extractColumnValue(ResultSet resultSet,
                                        String columnName,
                                        int columnIdx,
                                        int jdbcType)
                                 throws SQLException

  This is the core method to retrieve a value for a column from a result set. Its primary purpose is to call the appropriate method on the result set, and to provide an extension point where database-specific implementations can change this behavior.

  Parameters:
    `resultSet` - The result set to extract the value from
    `columnName` - The name of the column; can be `null` in which case the `columnIdx` will be used instead
    `columnIdx` - The index of the column's value in the result set; is only used if `columnName` is `null`
    `jdbcType` - The jdbc type to extract
  Returns:
    The value
  Throws:
    `SQLException` - If an error occurred while accessing the result set

### createResultSetIterator

    protected ModelBasedResultSetIterator createResultSetIterator(Database model,
                                                                  ResultSet resultSet,
                                                                  Table[] queryHints)

  Creates an iterator over the given result set.

  Parameters:
    `model` - The database model
    `resultSet` - The result set to iterate over
    `queryHints` - The tables that were queried in the query that produced the given result set (optional)
  Returns:
    The iterator

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.