org.apache.openjpa.jdbc.schema
Class SchemaGenerator

java.lang.Object
  extended by org.apache.openjpa.jdbc.schema.SchemaGenerator

public class SchemaGenerator
extends Object

The SchemaGenerator creates Schemas matching the current database. All schemas are added to the current SchemaGroup. Note that tables whose name starts with "OPENJPA_" will be not be added to the database schema. This enables the creation of special tables that will never be dropped by the SchemaTool.

Author:
Abe White

Nested Class Summary
 class SchemaGenerator.Event
          An event corresponding to the generation of a schema object.
static interface SchemaGenerator.Listener
          A listener for a potentially lengthy schema generation process.
 
Constructor Summary
SchemaGenerator(JDBCConfiguration conf)
          Constructor.
 
Method Summary
 void addListener(SchemaGenerator.Listener l)
          Adds a listener for schema generation events.
 void generateForeignKeys(String schemaName, String[] tableNames)
          Generate foreign key information for the given schema.
 void generateForeignKeys(String schemaName, String tableName, Connection conn, DatabaseMetaData meta)
          Generates table foreign keys.
 void generateIndexes(String schemaName, String[] tableNames)
          Generate index information for the given schema.
 void generateIndexes(String schemaName, String tableName, Connection conn, DatabaseMetaData meta)
          Generates table indexes.
 void generatePrimaryKeys(String schemaName, String[] tableNames)
          Generate primary key information for the given schema.
 void generatePrimaryKeys(String schemaName, String tableName, Connection conn, DatabaseMetaData meta)
          Generates table primary keys.
 void generateSchema(String name, String[] tableNames)
          Add a fully-constructed Schema matching the given database schema to the current group.
 void generateSchemas()
          Generate all schemas set in the configuration.
 void generateSchemas(String[] schemasAndTables)
          Generate the schemas and/or tables named in the given strings.
 void generateSequences(String schemaName, String sequenceName, Connection conn, DatabaseMetaData meta)
          Adds all sequences matching the given name pattern to the schema.
 void generateTables(String schemaName, String tableName, Connection conn, DatabaseMetaData meta)
          Adds all tables matching the given name pattern to the schema.
 boolean getForeignKeys()
          Return whether foreign keys should be generated.
 boolean getIndexes()
          Return whether indexes should be generated.
 boolean getOpenJPATables()
          Whether to generate info on special tables used by OpenJPA components for bookkeeping.
 boolean getPrimaryKeys()
          Return whether primary keys should be generated.
 SchemaGroup getSchemaGroup()
          Return the current schema group.
 boolean getSequences()
          Return whether sequences should be generated.
 boolean removeListener(SchemaGenerator.Listener l)
          Removes a schema generation listener for schema events.
 void setForeignKeys(boolean fks)
          Set whether foreign keys should be generated.
 void setIndexes(boolean indexes)
          Set whether indexes should be generated.
 void setOpenJPATables(boolean openjpaTables)
          Whether to generate info on special tables used by OpenJPA components for bookkeeping.
 void setPrimaryKeys(boolean pks)
          Set whether primary keys should be generated.
 void setSchemaGroup(SchemaGroup group)
          Set the schema group to add generated schemas to.
 void setSequences(boolean seqs)
          Set whether sequences should be generated.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SchemaGenerator

public SchemaGenerator(JDBCConfiguration conf)
Constructor.

Parameters:
conf - configuration for connecting to the data store
Method Detail

getIndexes

public boolean getIndexes()
Return whether indexes should be generated. Defaults to true.


setIndexes

public void setIndexes(boolean indexes)
Set whether indexes should be generated. Defaults to true.


getForeignKeys

public boolean getForeignKeys()
Return whether foreign keys should be generated. Defaults to true.


setForeignKeys

public void setForeignKeys(boolean fks)
Set whether foreign keys should be generated. Defaults to true.


getPrimaryKeys

public boolean getPrimaryKeys()
Return whether primary keys should be generated. Defaults to true.


setPrimaryKeys

public void setPrimaryKeys(boolean pks)
Set whether primary keys should be generated. Defaults to true.


getSequences

public boolean getSequences()
Return whether sequences should be generated. Defaults to true.


setSequences

public void setSequences(boolean seqs)
Set whether sequences should be generated. Defaults to true.


getOpenJPATables

public boolean getOpenJPATables()
Whether to generate info on special tables used by OpenJPA components for bookkeeping. Defaults to true.


setOpenJPATables

public void setOpenJPATables(boolean openjpaTables)
Whether to generate info on special tables used by OpenJPA components for bookkeeping. Defaults to true.


getSchemaGroup

public SchemaGroup getSchemaGroup()
Return the current schema group.


setSchemaGroup

public void setSchemaGroup(SchemaGroup group)
Set the schema group to add generated schemas to.


generateSchemas

public void generateSchemas()
                     throws SQLException
Generate all schemas set in the configuration. This method also calls generateIndexes(java.lang.String, java.lang.String[]), generatePrimaryKeys(java.lang.String, java.lang.String[]), and generateForeignKeys(java.lang.String, java.lang.String[]) automatically.

Throws:
SQLException

generateSchemas

public void generateSchemas(String[] schemasAndTables)
                     throws SQLException
Generate the schemas and/or tables named in the given strings. This method calls generateIndexes(java.lang.String, java.lang.String[]), generatePrimaryKeys(java.lang.String, java.lang.String[]), and generateForeignKeys(java.lang.String, java.lang.String[]) automatically.

Throws:
SQLException

generateSchema

public void generateSchema(String name,
                           String[] tableNames)
                    throws SQLException
Add a fully-constructed Schema matching the given database schema to the current group. No foreign keys are generated because some keys might span schemas. You must call generatePrimaryKeys(java.lang.String, java.lang.String[]), generateIndexes(java.lang.String, java.lang.String[]), and generateForeignKeys(java.lang.String, java.lang.String[]) separately.

Parameters:
name - the database name of the schema, or null for all schemas
tableNames - a list of tables to generate in the schema, or null to generate all tables
Throws:
SQLException

generatePrimaryKeys

public void generatePrimaryKeys(String schemaName,
                                String[] tableNames)
                         throws SQLException
Generate primary key information for the given schema. This method must be called in addition to generateSchema(java.lang.String, java.lang.String[]). It should only be called after all schemas are generated. The schema name and tables array can be null to indicate that indexes should be generated for all schemas and/or tables.

Throws:
SQLException

generateIndexes

public void generateIndexes(String schemaName,
                            String[] tableNames)
                     throws SQLException
Generate index information for the given schema. This method must be called in addition to generateSchema(java.lang.String, java.lang.String[]). It should only be called after all schemas are generated. The schema name and tables array can be null to indicate that indexes should be generated for all schemas and/or tables.

Throws:
SQLException

generateForeignKeys

public void generateForeignKeys(String schemaName,
                                String[] tableNames)
                         throws SQLException
Generate foreign key information for the given schema. This method must be called in addition to generateSchema(java.lang.String, java.lang.String[]). It should only be called after all schemas are generated. The schema name and tables array can be null to indicate that indexes should be generated for all schemas and/or tables.

Throws:
SQLException

generateTables

public void generateTables(String schemaName,
                           String tableName,
                           Connection conn,
                           DatabaseMetaData meta)
                    throws SQLException
Adds all tables matching the given name pattern to the schema.

Throws:
SQLException

generatePrimaryKeys

public void generatePrimaryKeys(String schemaName,
                                String tableName,
                                Connection conn,
                                DatabaseMetaData meta)
                         throws SQLException
Generates table primary keys.

Throws:
SQLException

generateIndexes

public void generateIndexes(String schemaName,
                            String tableName,
                            Connection conn,
                            DatabaseMetaData meta)
                     throws SQLException
Generates table indexes.

Throws:
SQLException

generateForeignKeys

public void generateForeignKeys(String schemaName,
                                String tableName,
                                Connection conn,
                                DatabaseMetaData meta)
                         throws SQLException
Generates table foreign keys.

Throws:
SQLException

generateSequences

public void generateSequences(String schemaName,
                              String sequenceName,
                              Connection conn,
                              DatabaseMetaData meta)
                       throws SQLException
Adds all sequences matching the given name pattern to the schema.

Throws:
SQLException

addListener

public void addListener(SchemaGenerator.Listener l)
Adds a listener for schema generation events.

Parameters:
l - the listener to add

removeListener

public boolean removeListener(SchemaGenerator.Listener l)
Removes a schema generation listener for schema events.

Parameters:
l - the listener to remove
Returns:
true if it was successfully removed


Copyright © 2006-2008 Apache Software Foundation. All Rights Reserved.