Package org.apache.openjpa.jdbc.schema
Class SchemaGenerator
- java.lang.Object
-
- org.apache.openjpa.jdbc.schema.SchemaGenerator
-
public class SchemaGenerator extends java.lang.Object
The SchemaGenerator createsSchema
s matching the current database. All schemas are added to the currentSchemaGroup
. 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 theSchemaTool
.- Author:
- Abe White
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static 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
Constructors Constructor Description SchemaGenerator(JDBCConfiguration conf)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addListener(SchemaGenerator.Listener l)
Adds a listener for schema generation events.void
generateForeignKeys(java.lang.String schemaName, java.lang.String[] tableNames)
Deprecated.void
generateForeignKeys(java.lang.String schemaName, java.lang.String tableName, java.sql.Connection conn, java.sql.DatabaseMetaData meta)
Generates table foreign keys.void
generateForeignKeys(DBIdentifier schemaName, DBIdentifier[] tableNames)
Generate foreign key information for the given schema.void
generateForeignKeys(DBIdentifier schemaName, DBIdentifier tableName, java.sql.Connection conn, java.sql.DatabaseMetaData meta)
void
generateIndexes(java.lang.String schemaName, java.lang.String[] tableNames)
Deprecated.void
generateIndexes(java.lang.String schemaName, java.lang.String tableName, java.sql.Connection conn, java.sql.DatabaseMetaData meta)
Deprecated.void
generateIndexes(DBIdentifier schemaName, DBIdentifier[] tableNames)
Generate index information for the given schema.void
generateIndexes(DBIdentifier schemaName, DBIdentifier tableName, java.sql.Connection conn, java.sql.DatabaseMetaData meta)
void
generatePrimaryKeys(java.lang.String schemaName, java.lang.String[] tableNames)
Deprecated.void
generatePrimaryKeys(java.lang.String schemaName, java.lang.String tableName, java.sql.Connection conn, java.sql.DatabaseMetaData meta)
Deprecated.void
generatePrimaryKeys(DBIdentifier schemaName, DBIdentifier[] tableNames)
Generate primary key information for the given schema.void
generatePrimaryKeys(DBIdentifier schemaName, DBIdentifier tableName, java.sql.Connection conn, java.sql.DatabaseMetaData meta)
void
generateSchema(java.lang.String name, java.lang.String[] tableNames)
Deprecated.void
generateSchema(DBIdentifier name, DBIdentifier[] tableNames)
Add a fully-constructedSchema
matching the given database schema to the current group.void
generateSchemas()
Generate all schemas set in the configuration.void
generateSchemas(java.lang.String[] schemasAndTables)
Deprecated.void
generateSchemas(DBIdentifier[] schemasAndTables)
Generate the schemas and/or tables named in the given strings.void
generateSequences(java.lang.String schemaName, java.lang.String sequenceName, java.sql.Connection conn, java.sql.DatabaseMetaData meta)
Deprecated.void
generateSequences(DBIdentifier schemaName, DBIdentifier sequenceName, java.sql.Connection conn, java.sql.DatabaseMetaData meta)
void
generateTables(java.lang.String schemaName, java.lang.String tableName, java.sql.Connection conn, java.sql.DatabaseMetaData meta)
Deprecated.void
generateTables(DBIdentifier schemaName, DBIdentifier tableName, java.sql.Connection conn, java.sql.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.
-
-
-
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 java.sql.SQLException
Generate all schemas set in the configuration. This method also callsgenerateIndexes(java.lang.String, java.lang.String[])
,generatePrimaryKeys(java.lang.String, java.lang.String[])
, andgenerateForeignKeys(java.lang.String, java.lang.String[])
automatically.- Throws:
java.sql.SQLException
-
generateSchemas
@Deprecated public void generateSchemas(java.lang.String[] schemasAndTables) throws java.sql.SQLException
Deprecated.- Throws:
java.sql.SQLException
-
generateSchemas
public void generateSchemas(DBIdentifier[] schemasAndTables) throws java.sql.SQLException
Generate the schemas and/or tables named in the given strings. This method callsgenerateIndexes(java.lang.String, java.lang.String[])
,generatePrimaryKeys(java.lang.String, java.lang.String[])
, andgenerateForeignKeys(java.lang.String, java.lang.String[])
automatically.- Throws:
java.sql.SQLException
-
generateSchema
@Deprecated public void generateSchema(java.lang.String name, java.lang.String[] tableNames) throws java.sql.SQLException
Deprecated.- Parameters:
name
-tableNames
-- Throws:
java.sql.SQLException
-
generateSchema
public void generateSchema(DBIdentifier name, DBIdentifier[] tableNames) throws java.sql.SQLException
Add a fully-constructedSchema
matching the given database schema to the current group. No foreign keys are generated because some keys might span schemas. You must callgeneratePrimaryKeys(java.lang.String, java.lang.String[])
,generateIndexes(java.lang.String, java.lang.String[])
, andgenerateForeignKeys(java.lang.String, java.lang.String[])
separately.- Parameters:
name
- the database name of the schema, or null for all schemastableNames
- a list of tables to generate in the schema, or null to generate all tables- Throws:
java.sql.SQLException
-
generatePrimaryKeys
@Deprecated public void generatePrimaryKeys(java.lang.String schemaName, java.lang.String[] tableNames) throws java.sql.SQLException
Deprecated.Generate primary key information for the given schema. This method must be called in addition togenerateSchema(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:
java.sql.SQLException
-
generatePrimaryKeys
public void generatePrimaryKeys(DBIdentifier schemaName, DBIdentifier[] tableNames) throws java.sql.SQLException
Generate primary key information for the given schema. This method must be called in addition togenerateSchema(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:
java.sql.SQLException
-
generateIndexes
@Deprecated public void generateIndexes(java.lang.String schemaName, java.lang.String[] tableNames) throws java.sql.SQLException
Deprecated.Generate index information for the given schema. This method must be called in addition togenerateSchema(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:
java.sql.SQLException
-
generateIndexes
public void generateIndexes(DBIdentifier schemaName, DBIdentifier[] tableNames) throws java.sql.SQLException
Generate index information for the given schema. This method must be called in addition togenerateSchema(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:
java.sql.SQLException
-
generateForeignKeys
@Deprecated public void generateForeignKeys(java.lang.String schemaName, java.lang.String[] tableNames) throws java.sql.SQLException
Deprecated.Generate foreign key information for the given schema. This method must be called in addition togenerateSchema(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:
java.sql.SQLException
-
generateForeignKeys
public void generateForeignKeys(DBIdentifier schemaName, DBIdentifier[] tableNames) throws java.sql.SQLException
Generate foreign key information for the given schema. This method must be called in addition togenerateSchema(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:
java.sql.SQLException
-
generateTables
@Deprecated public void generateTables(java.lang.String schemaName, java.lang.String tableName, java.sql.Connection conn, java.sql.DatabaseMetaData meta) throws java.sql.SQLException
Deprecated.- Throws:
java.sql.SQLException
-
generateTables
public void generateTables(DBIdentifier schemaName, DBIdentifier tableName, java.sql.Connection conn, java.sql.DatabaseMetaData meta) throws java.sql.SQLException
Adds all tables matching the given name pattern to the schema.- Throws:
java.sql.SQLException
-
generatePrimaryKeys
@Deprecated public void generatePrimaryKeys(java.lang.String schemaName, java.lang.String tableName, java.sql.Connection conn, java.sql.DatabaseMetaData meta) throws java.sql.SQLException
Deprecated.Generates table primary keys.- Throws:
java.sql.SQLException
-
generatePrimaryKeys
public void generatePrimaryKeys(DBIdentifier schemaName, DBIdentifier tableName, java.sql.Connection conn, java.sql.DatabaseMetaData meta) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
generateIndexes
@Deprecated public void generateIndexes(java.lang.String schemaName, java.lang.String tableName, java.sql.Connection conn, java.sql.DatabaseMetaData meta) throws java.sql.SQLException
Deprecated.Generates table indexes.- Throws:
java.sql.SQLException
-
generateIndexes
public void generateIndexes(DBIdentifier schemaName, DBIdentifier tableName, java.sql.Connection conn, java.sql.DatabaseMetaData meta) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
generateForeignKeys
public void generateForeignKeys(java.lang.String schemaName, java.lang.String tableName, java.sql.Connection conn, java.sql.DatabaseMetaData meta) throws java.sql.SQLException
Generates table foreign keys.- Throws:
java.sql.SQLException
-
generateForeignKeys
public void generateForeignKeys(DBIdentifier schemaName, DBIdentifier tableName, java.sql.Connection conn, java.sql.DatabaseMetaData meta) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
generateSequences
@Deprecated public void generateSequences(java.lang.String schemaName, java.lang.String sequenceName, java.sql.Connection conn, java.sql.DatabaseMetaData meta) throws java.sql.SQLException
Deprecated.Adds all sequences matching the given name pattern to the schema.- Throws:
java.sql.SQLException
-
generateSequences
public void generateSequences(DBIdentifier schemaName, DBIdentifier sequenceName, java.sql.Connection conn, java.sql.DatabaseMetaData meta) throws java.sql.SQLException
- Throws:
java.sql.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
-
-