org.clazzes.jdbc2xml.schema.impl
Class SchemaEngineImpl

java.lang.Object
  extended by org.clazzes.jdbc2xml.schema.SchemaEngine
      extended by org.clazzes.jdbc2xml.schema.impl.SchemaEngineImpl
All Implemented Interfaces:
ISchemaEngine

public class SchemaEngineImpl
extends SchemaEngine

The default implementation of the schema engine.

Author:
wglas

Constructor Summary
SchemaEngineImpl()
          Default constructor.
SchemaEngineImpl(IDialectFactory dialectFactory)
          Default constructor.
 
Method Summary
 TableInfo addColumn(TableInfo ti, ColumnInfo columnInfo)
          Add a column to an existing table.
 TableInfo addForeignKey(TableInfo ti, ForeignKeyInfo foreignKeyInfo)
          Add a foreign key to an existing table.
 TableInfo addIndex(TableInfo ti, IndexInfo indexInfo)
          Add an index to an existing table.
 TableInfo changeColumn(TableInfo ti, String oldColumnName, ColumnInfo columnInfo)
          Rename an existing column of an existing table and possibly change it's type.
 void commit()
          Perform all pending schema modifications and discard the rollback history.
 void createForeignKeys(TableInfo ti)
          Create foreign keys of an existing table in the database.
 void createIndices(TableInfo ti)
          Calls addIndex for each index
 PreparedStatement createInsertStatement(TableInfo ti, boolean setAutoValues)
          Create an insert statement for all column in the given table.
 void createTable(TableInfo ti, boolean addForeignKeys)
          Create a table in the database, including primary key and indices (which must have been added already).
 TableInfo dropColumn(TableInfo ti, String columnName, boolean force)
          Drop an existing column of an existing table.
 TableInfo dropForeignKey(TableInfo ti, String fkName)
          Drop an existing foreign key of an existing table.
 TableInfo dropForeignKeys(TableInfo ti)
          Drop all existing foreign keys of an existing table.
 TableInfo dropIndex(TableInfo ti, String indexName)
          Drop an index from an existing table.
 void dropStaleBackupTables()
          Some operations like drop table or drop column create backup tables for performing rollback operations.
 void dropTable(TableInfo ti, boolean force)
          Drop an existing table.
 void dropTables(List<TableInfo> tables, boolean force)
          Drop a list of existing table.
 TableInfo fetchTableInfo(String tableName, IndexFilter filter)
          Retrieve the current layout of the given table in the database.
 List<TableInfo> fetchTableInfos(TableFilter filter)
          Return the layout of multiple table in the database.
 int getMaxTableNameLength()
           
 List<String> getTempTableNames()
           
 TableInfo modifyColumn(TableInfo ti, ColumnInfo columnInfo)
          Change an existing column of an existing table.
 TableInfo renameTable(TableInfo ti, String newTableName)
          Rename an existing table.
 void rollback()
          Roll back all schema operations undertaken since the last call to ISchemaEngine.commit() or ISchemaEngine.rollback().
 void setConnection(Connection connection)
          This method initializes the database dialect too, if the the dialect has not been set through ISchemaEngine.setDialect(Dialect) before.
 
Methods inherited from class org.clazzes.jdbc2xml.schema.SchemaEngine
getConnection, getDialect, getSchema, getTimeZone, newInstance, setDialect, setSchema, setTimeZone
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SchemaEngineImpl

public SchemaEngineImpl()
Default constructor.


SchemaEngineImpl

public SchemaEngineImpl(IDialectFactory dialectFactory)
Default constructor.

Method Detail

setConnection

public void setConnection(Connection connection)
                   throws SQLException
Description copied from interface: ISchemaEngine
This method initializes the database dialect too, if the the dialect has not been set through ISchemaEngine.setDialect(Dialect) before. The dialect is retrieved through a call to IDialectFactory.newDialect(java.sql.DatabaseMetaData) on the instance returned by DialectFactory.newInstance().

Specified by:
setConnection in interface ISchemaEngine
Overrides:
setConnection in class SchemaEngine
Parameters:
connection - The database connection to set.
Throws:
SQLException - If the metadata retrieval on the database failed during the dialect initialization.

fetchTableInfo

public TableInfo fetchTableInfo(String tableName,
                                IndexFilter filter)
                         throws SQLException
Description copied from interface: ISchemaEngine
Retrieve the current layout of the given table in the database.

Parameters:
tableName - The name of the table to search.
filter - The filter retrieval configuration. If a null value is passed, a default filter will be used, which skips internal indices.
Returns:
The complete table information.
Throws:
SQLException - Upon database errors.
See Also:
IndexFilter.isKeepInternalIndices()

fetchTableInfos

public List<TableInfo> fetchTableInfos(TableFilter filter)
                                throws SQLException
Description copied from interface: ISchemaEngine
Return the layout of multiple table in the database.

Parameters:
filter - If null, return all tables of the configured schema. Otherwise return only those tables, for which TableFilter.processTable(String) returns true. Additionally, a null value incurs default table filtering, which means to fetch all table infos.
Returns:
The list of table informations.
Throws:
SQLException - Upon database errors.

createInsertStatement

public PreparedStatement createInsertStatement(TableInfo ti,
                                               boolean setAutoValues)
                                        throws SQLException
Description copied from interface: ISchemaEngine
Create an insert statement for all column in the given table. The placeholders in the insert statement are in the order of the ColumnInfo object inside the TableInfo's list of column

Parameters:
ti - The table metadata.
setAutoValues - If true, columns that use auto increment will be set by this statement too. If false database should set those values.
Returns:
A Prepared statement that may be used to insert data into the database.
Throws:
SQLException - Upon database errors.

createTable

public void createTable(TableInfo ti,
                        boolean addForeignKeys)
                 throws SQLException
Description copied from interface: ISchemaEngine
Create a table in the database, including primary key and indices (which must have been added already).

Parameters:
ti - The table metadata.
addForeignKeys - If this parameter is true, all foreign keys are generated together with the table structure. If set to false, you may create the foreign keys later on using ISchemaEngine.createForeignKeys(TableInfo).
Throws:
SQLException - upon database errors.

renameTable

public TableInfo renameTable(TableInfo ti,
                             String newTableName)
                      throws SQLException
Description copied from interface: ISchemaEngine
Rename an existing table.

Parameters:
ti - TableInfo describing the table to be renamed.
newTableName - The new name of the table.
Returns:
The updated table info, which contains the new name.
Throws:
SQLException - Upon database errors.

createIndices

public void createIndices(TableInfo ti)
                   throws SQLException
Calls addIndex for each index

Parameters:
ti -
Throws:
SQLException

createForeignKeys

public void createForeignKeys(TableInfo ti)
                       throws SQLException
Description copied from interface: ISchemaEngine
Create foreign keys of an existing table in the database.

Parameters:
ti - The table metadata.
Throws:
SQLException - Upon database errors.

dropForeignKeys

public TableInfo dropForeignKeys(TableInfo ti)
                          throws SQLException
Description copied from interface: ISchemaEngine
Drop all existing foreign keys of an existing table.

Parameters:
ti - TableInfo describing the table containing the foreign keys to drop.
Returns:
The updated TableInfo without foreign keys.
Throws:
SQLException - Upon database errors.

dropTable

public void dropTable(TableInfo ti,
                      boolean force)
               throws SQLException
Description copied from interface: ISchemaEngine
Drop an existing table.

Parameters:
ti - TableInfo describing the table to be dropped.
force - If set to true, the data is not backed up before dropping the table. Consequently, rollback is not supported, if force is set to true.
Throws:
SQLException - Upon database errors.

dropTables

public void dropTables(List<TableInfo> tables,
                       boolean force)
                throws SQLException
Description copied from interface: ISchemaEngine
Drop a list of existing table.

Parameters:
tables - A list of TableInfo objects describing the tables to be dropped.
force - If set to true, the data is not backed up before dropping the table. Consequently, rollback is not supported, if force is set to true.
Throws:
SQLException - Upon database errors.

addColumn

public TableInfo addColumn(TableInfo ti,
                           ColumnInfo columnInfo)
                    throws SQLException
Description copied from interface: ISchemaEngine
Add a column to an existing table.

Parameters:
ti - TableInfo describing the table to add column to.
columnInfo - ColumnInfo holding data for the column to be added.
Returns:
The updated TableInfo.
Throws:
SQLException - Upon database errors.

modifyColumn

public TableInfo modifyColumn(TableInfo ti,
                              ColumnInfo columnInfo)
                       throws SQLException
Description copied from interface: ISchemaEngine
Change an existing column of an existing table.

Parameters:
ti - TableInfo describing the table containing the column to change.
columnInfo - ColumnInfo holding new definition data for the column.
Returns:
The updated TableInfo.
Throws:
SQLException - Upon database errors.

changeColumn

public TableInfo changeColumn(TableInfo ti,
                              String oldColumnName,
                              ColumnInfo columnInfo)
                       throws SQLException
Description copied from interface: ISchemaEngine
Rename an existing column of an existing table and possibly change it's type.

Parameters:
ti - TableInfo describing the table containing the column to change.
oldColumnName - The original name of the column.
columnInfo - ColumnInfo holding the new name and the new definition data for the column.
Returns:
The updated TableInfo.
Throws:
SQLException - Upon database errors.

dropColumn

public TableInfo dropColumn(TableInfo ti,
                            String columnName,
                            boolean force)
                     throws SQLException
Description copied from interface: ISchemaEngine
Drop an existing column of an existing table.

Parameters:
ti - TableInfo describing the table containing the column to drop.
columnName - Name of the column to drop.
force - If set to true, the data is not backed up before dropping the column. Consequently, rollback is not supported, if force is set to true.
Returns:
The updated TableInfo.
Throws:
SQLException - Upon database errors.

addForeignKey

public TableInfo addForeignKey(TableInfo ti,
                               ForeignKeyInfo foreignKeyInfo)
                        throws SQLException
Description copied from interface: ISchemaEngine
Add a foreign key to an existing table.

Parameters:
ti - TableInfo describing the table to add the foreign key to.
foreignKeyInfo - The ForeignKeyInfo to add.
Returns:
The updated TableInfo.
Throws:
SQLException - Upon database errors.

dropForeignKey

public TableInfo dropForeignKey(TableInfo ti,
                                String fkName)
                         throws SQLException
Description copied from interface: ISchemaEngine
Drop an existing foreign key of an existing table.

Parameters:
ti - TableInfo describing the table to drop the foreign key from.
fkName - The ForeignKeyInfo to drop.
Returns:
The updated TableInfo.
Throws:
SQLException - Upon database errors.

addIndex

public TableInfo addIndex(TableInfo ti,
                          IndexInfo indexInfo)
                   throws SQLException
Description copied from interface: ISchemaEngine
Add an index to an existing table.

Parameters:
ti - TableInfo describing the table to add the index.
indexInfo - The IndexInfo to add.
Returns:
The updated TableInfo.
Throws:
SQLException - Upon database errors.

dropIndex

public TableInfo dropIndex(TableInfo ti,
                           String indexName)
                    throws SQLException
Description copied from interface: ISchemaEngine
Drop an index from an existing table.

Parameters:
ti - TableInfo describing the table to drop the index from.
indexName - The name of the IndexInfo to drop.
Returns:
The updated TableInfo.
Throws:
SQLException - Upon database errors.

dropStaleBackupTables

public void dropStaleBackupTables()
                           throws SQLException
Description copied from interface: ISchemaEngine
Some operations like drop table or drop column create backup tables for performing rollback operations. If a rollback of such an operation fails or a user does not ISchemaEngine.commit() after such operations, these backup tables remain in the target database. This call searches these tables, which are named like JDBC2XML__* and drops them, if necessary.

Throws:
SQLException

commit

public void commit()
            throws SQLException
Description copied from interface: ISchemaEngine
Perform all pending schema modifications and discard the rollback history.

Throws:
SQLException - Upon database errors.

rollback

public void rollback()
              throws SQLException
Description copied from interface: ISchemaEngine
Roll back all schema operations undertaken since the last call to ISchemaEngine.commit() or ISchemaEngine.rollback().

Throws:
SQLException - Upon database errors or when a rollback of a schema operation is not supported.

getTempTableNames

public List<String> getTempTableNames()
Returns:
the queue

getMaxTableNameLength

public int getMaxTableNameLength()


Copyright © 2011. All Rights Reserved.