Oracle Fusion Middleware Java API Reference for Oracle Extension SDK
11g Release 2 (11.1.2.0.0)

E17493-01

oracle.javatools.db.ddl
Class BundleDDLGenerator<T extends DDLType>

java.lang.Object
  extended by oracle.javatools.db.property.AbstractPropertyManager
      extended by oracle.javatools.db.ddl.TokenDDLGenerator<T>
          extended by oracle.javatools.db.ddl.BundleDDLGenerator<T>
All Implemented Interfaces:
DDLGenerator<T>, PropertyManager

public abstract class BundleDDLGenerator<T extends DDLType>
extends TokenDDLGenerator<T>

TokenDDLGenerator subclass that uses either a set of Properties files or ResourceBundles with specially formatted keys to automatically register DDL for generation. In addition to the automatic registration process, additional tokens can be registered from the bundles by calling the registerBundle* methods from a subclass.

If the a key in a bundle is of the form:

All other keys are ignored.

When processing the entries of the resoure bundle, if any key contains two "."s and doesn't match a type, action or ddltype a severe message will be logged on the logger.


Constructor Summary
BundleDDLGenerator(DBObjectProvider pro, java.lang.String... resourceNames)
          Note the first parameter is a DBObjectProvider, not a Database.
 
Method Summary
protected  void addBundles(java.util.ResourceBundle... bundles)
          Adds the given bundles to this generator.
protected  void addResourceNames(java.lang.String... resourceNames)
          Adds the given resource names to this generator.
protected  DDL append(DDL ddl1, DDL ddl2)
          Appends the two ddls together and returns the result coping with either being null.
protected  boolean canChangeWithAlter(DBObject orig, DBObject update, java.lang.String prop)
          Returns true if the given property can be changed using an alter on the given original and updated objects.
protected  boolean canCreate(java.lang.String type, java.lang.String prop)
          Tests whether the given property is supported for create on the given object type.
protected  void copyGenerators(oracle.javatools.db.ddl.DDLGeneratorImpl other, java.lang.String type, boolean incAlter)
          Copies the ddl generators for the given object type from this generator to another generator implementation.
protected  java.lang.String findResource(java.lang.String key)
           
protected  DDL<T> finish(DDLOptions options, DDL<T> ddl)
          This method is called on every DDL created before it is returned.
 DDL<T> getCreateDDL(DDLOptions options, DBObject... objects)
          Gets CREATE statements for the given objects.
 Ddl getCreateDDL(Schema schema)
          Deprecated. 
 Ddl getCreateDDL(SchemaObject[] objects, boolean replace, boolean cascade)
          Deprecated. 
 Ddl getCreateDDL(SchemaObject obj, boolean replace, boolean cascade)
          Deprecated. 
protected  DDL<T> getCreateDDLImpl(DDLOptions options, DBObject... objects)
           
protected abstract  T getDDLType(java.lang.String type)
          Implement in subclasses to return the right DDLType implementation for the given string.
 DDL<T> getDeleteDDL(DDLOptions options, DBObject... objects)
          Gets DROP statements for the given objects.
 Ddl getDeleteDDL(Schema schema, boolean cascade)
          Deprecated. 
 Ddl getDeleteDDL(SchemaObject[] objects, boolean cascade)
          Deprecated. 
 Ddl getDeleteDDL(SchemaObject object, boolean cascade)
          Deprecated. 
protected  DDL<T> getDeleteDDLImpl(DDLOptions options, DBObject... objects)
           
protected  PropertyHelper getPropertyHelper()
           
 DDL<T> getUndeleteDDL(DDLOptions options, DBObject... objects)
          Gets statements to undelete (e.g.
 DDL<T> getUpdateDDL(DDLOptions options, Difference resultSet)
          Gets ALTER statements for the given objects where possible, or DROP/CREATE, or CREATE AND REPLACE where appropriate/necessary.
 Ddl[] getUpdateDDL(Difference resultSet, boolean replace, boolean cascade)
          Deprecated. 
 Ddl[] getUpdateDDL(SchemaObject[] oldObjects, SchemaObject[] newObjects)
          Deprecated. 
 Ddl[] getUpdateDDL(SchemaObject oldObject, SchemaObject newObject)
          Deprecated. 
protected  DDL<T> getUpdateDDLImpl(DDLOptions options, Difference rs)
          Gets the update DDL for the given Difference.
protected  void registerAlterGenerator(java.lang.String type, AlterDDLGenerator deletor)
           
protected  void registerBundleAlterDDL(java.lang.String type, java.lang.String resName, T ddlType)
          Registers alter DDL code from the ResourceBundle by the resource name of the code in that bundle.
protected  void registerBundleCreateDDL(java.lang.String type, java.lang.String resName, T ddlType)
          Registers create DDL code from the ResourceBundle by the resource name of the code in that bundle.
protected  void registerBundleDropDDL(java.lang.String type, java.lang.String resName, T ddlType)
          Registers drop DDL code from the ResourceBundle by the resource name of the code in that bundle.
protected  void registerBundleEntry(java.lang.String key, java.lang.String code)
          Registers an entry from an underlying bundle (or property file).
protected  void registerBundleTokens()
          Registers all the tokens in the underyling resource bundles.
protected  void registerBundleUndeleteDDL(java.lang.String type, java.lang.String resName, T ddlType)
          Registers undelete DDL code from the ResourceBundle by the resource name of the code in that bundle.
protected  void registerCreateGenerator(java.lang.String type, CreateDDLGenerator creator)
           
protected  void registerDropGenerator(java.lang.String type, DropDDLGenerator dropper)
           
protected  void registerTopLevelChild(java.lang.String type, java.lang.String propPath, java.lang.String childType)
          Registers a child object property, that can be treated as a top level object in the ddl, and therefore when encountered the generator should recurse onto the object.
protected  void registerUndeleteGenerator(java.lang.String type, UndeleteDDLGenerator undeletor)
           
 boolean supportsAction(java.lang.String type, PropertyAction.Type actionType)
          Asks whether a given action is supported for the specified object type in this provider.
 
Methods inherited from class oracle.javatools.db.ddl.TokenDDLGenerator
createDDL, createUpdateDDL, includeSyntax, registerAlterDDL, registerCreateDDL, registerDropDDL, registerTokenGenerator, registerUndeleteDDL
 
Methods inherited from class oracle.javatools.db.property.AbstractPropertyManager
canAlterProperty, canChangeProperty, canChangeWithReplace, canCreate, canUpdateObject, canUpdateObject, getLogger, getProvider, getProviderClass, supportsProperty, supportsProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface oracle.javatools.db.property.PropertyManager
canAlterProperty, canChangeProperty, canUpdateObject, canUpdateObject, supportsProperty
 

Constructor Detail

BundleDDLGenerator

public BundleDDLGenerator(DBObjectProvider pro,
                          java.lang.String... resourceNames)
Note the first parameter is a DBObjectProvider, not a Database. All DDLGenerator implementations must be instantiable with a DBObjectProvider so that generic features (like the offline database) can leverage DDL generation for all supported databases.

If the resourceNames parameter is non-null this will call #addResourcesNames and therefore initialise the generator. If resourceNames is omitted, addResourceNames(java.lang.String...) or addBundles(java.util.ResourceBundle...) must be called for the generator to function.

Parameters:
pro - the provider for this generator to use for name externalisation etc
bundles - either Strings (for properties files) or ResourceBundles that contains the ddl token syntax.
Method Detail

addResourceNames

protected void addResourceNames(java.lang.String... resourceNames)
Adds the given resource names to this generator. Resource names are the names of properties files to load that contain the token syntax for the ddl.This or addBundles(java.util.ResourceBundle...) should be called only once for a given generator to avoid duplicate registration of resources.

Parameters:
resourceNames - the names of properties files containing the resources

addBundles

protected void addBundles(java.util.ResourceBundle... bundles)
Adds the given bundles to this generator. The resource bundles should contain the token syntax for the ddl. This or addResourceNames(java.lang.String...) should be called only once for a given generator to avoid duplicate registration of resources.

Parameters:
bundles - the ResourceBundles containing the ddl token strings.

findResource

protected final java.lang.String findResource(java.lang.String key)

registerBundleTokens

protected final void registerBundleTokens()
Registers all the tokens in the underyling resource bundles.


registerBundleEntry

protected void registerBundleEntry(java.lang.String key,
                                   java.lang.String code)
Registers an entry from an underlying bundle (or property file). The key must be a properly formatted bundle key and the code is the token ddl code to be registered

Parameters:
key -
code -

getDDLType

protected abstract T getDDLType(java.lang.String type)
Implement in subclasses to return the right DDLType implementation for the given string.


registerBundleCreateDDL

protected final void registerBundleCreateDDL(java.lang.String type,
                                             java.lang.String resName,
                                             T ddlType)
Registers create DDL code from the ResourceBundle by the resource name of the code in that bundle.

See Also:
TokenDDLGenerator.registerCreateDDL(String,String,oracle.javatools.db.ddl.DDLType)

registerBundleDropDDL

protected final void registerBundleDropDDL(java.lang.String type,
                                           java.lang.String resName,
                                           T ddlType)
Registers drop DDL code from the ResourceBundle by the resource name of the code in that bundle.

See Also:
TokenDDLGenerator.registerDropDDL(String,String,oracle.javatools.db.ddl.DDLType)

registerBundleUndeleteDDL

protected final void registerBundleUndeleteDDL(java.lang.String type,
                                               java.lang.String resName,
                                               T ddlType)
Registers undelete DDL code from the ResourceBundle by the resource name of the code in that bundle.

See Also:
TokenDDLGenerator.registerDropDDL(String,String,oracle.javatools.db.ddl.DDLType)

registerBundleAlterDDL

protected final void registerBundleAlterDDL(java.lang.String type,
                                            java.lang.String resName,
                                            T ddlType)
Registers alter DDL code from the ResourceBundle by the resource name of the code in that bundle.

See Also:
TokenDDLGenerator.registerAlterDDL(String,String,oracle.javatools.db.ddl.DDLType)

getPropertyHelper

protected PropertyHelper getPropertyHelper()

registerCreateGenerator

protected final void registerCreateGenerator(java.lang.String type,
                                             CreateDDLGenerator creator)

registerDropGenerator

protected final void registerDropGenerator(java.lang.String type,
                                           DropDDLGenerator dropper)

registerAlterGenerator

protected final void registerAlterGenerator(java.lang.String type,
                                            AlterDDLGenerator deletor)

registerUndeleteGenerator

protected final void registerUndeleteGenerator(java.lang.String type,
                                               UndeleteDDLGenerator undeletor)

copyGenerators

protected final void copyGenerators(oracle.javatools.db.ddl.DDLGeneratorImpl other,
                                    java.lang.String type,
                                    boolean incAlter)
Copies the ddl generators for the given object type from this generator to another generator implementation.

Parameters:
other - the ddl generator to copy syntax to
type - the object type to copy
incAlter - whether to include alter ddl statements, or just create and drop.

registerTopLevelChild

protected final void registerTopLevelChild(java.lang.String type,
                                           java.lang.String propPath,
                                           java.lang.String childType)
Registers a child object property, that can be treated as a top level object in the ddl, and therefore when encountered the generator should recurse onto the object. For example, Indexes exist on Tables and are also objects that can be created in their own right. The ddl statements for both are identical, so to provide support for indexes on tables, the child type is registered using this method.

Parameters:
type - the parent object type (e.g. Table.TYPE)
propPath - the path to the child property (e.g. indexes)
childType - the child object type that can be treated in its own right in the ddl generator (e.g. Index.TYPE)

getCreateDDLImpl

protected DDL<T> getCreateDDLImpl(DDLOptions options,
                                  DBObject... objects)

getDeleteDDLImpl

protected DDL<T> getDeleteDDLImpl(DDLOptions options,
                                  DBObject... objects)

getUndeleteDDL

public DDL<T> getUndeleteDDL(DDLOptions options,
                             DBObject... objects)
Description copied from interface: DDLGenerator
Gets statements to undelete (e.g. FLASHBACK) the given objects.


getUpdateDDLImpl

protected DDL<T> getUpdateDDLImpl(DDLOptions options,
                                  Difference rs)
Gets the update DDL for the given Difference. The Difference should be a generic DBObject diff and will be at the object level (i.e. it will be a MAP Difference that has a SchemaObject as a() and b() for which we require the update DDL if possible, otherwise drop/recreate DDL.

Parameters:
options - the options for generation
rs - the Difference for the object to alter
Returns:
the DDL to perform the operation

canCreate

protected boolean canCreate(java.lang.String type,
                            java.lang.String prop)
Description copied from class: AbstractPropertyManager
Tests whether the given property is supported for create on the given object type.


supportsAction

public boolean supportsAction(java.lang.String type,
                              PropertyAction.Type actionType)
Description copied from interface: PropertyManager
Asks whether a given action is supported for the specified object type in this provider.

Specified by:
supportsAction in interface PropertyManager

canChangeWithAlter

protected boolean canChangeWithAlter(DBObject orig,
                                     DBObject update,
                                     java.lang.String prop)
Description copied from class: AbstractPropertyManager
Returns true if the given property can be changed using an alter on the given original and updated objects.

Overrides:
canChangeWithAlter in class AbstractPropertyManager

getCreateDDL

public final DDL<T> getCreateDDL(DDLOptions options,
                                 DBObject... objects)
Description copied from interface: DDLGenerator
Gets CREATE statements for the given objects.

Specified by:
getCreateDDL in interface DDLGenerator<T extends DDLType>

getDeleteDDL

public final DDL<T> getDeleteDDL(DDLOptions options,
                                 DBObject... objects)
Description copied from interface: DDLGenerator
Gets DROP statements for the given objects.

Specified by:
getDeleteDDL in interface DDLGenerator<T extends DDLType>

getUpdateDDL

public final DDL<T> getUpdateDDL(DDLOptions options,
                                 Difference resultSet)
Description copied from interface: DDLGenerator
Gets ALTER statements for the given objects where possible, or DROP/CREATE, or CREATE AND REPLACE where appropriate/necessary.

Specified by:
getUpdateDDL in interface DDLGenerator<T extends DDLType>

finish

protected DDL<T> finish(DDLOptions options,
                        DDL<T> ddl)
This method is called on every DDL created before it is returned. It allows implementations to customise the ddl given the options (e.g. to add prompts).

Parameters:
options - the options for the current generation
ddl - the ddl we've generated and are about to return - can be null

append

protected DDL append(DDL ddl1,
                     DDL ddl2)
Appends the two ddls together and returns the result coping with either being null.


getCreateDDL

@Deprecated
public final Ddl getCreateDDL(SchemaObject obj,
                                         boolean replace,
                                         boolean cascade)
Deprecated. 


getCreateDDL

@Deprecated
public final Ddl getCreateDDL(SchemaObject[] objects,
                                         boolean replace,
                                         boolean cascade)
Deprecated. 


getDeleteDDL

@Deprecated
public final Ddl getDeleteDDL(SchemaObject object,
                                         boolean cascade)
Deprecated. 


getDeleteDDL

@Deprecated
public final Ddl getDeleteDDL(SchemaObject[] objects,
                                         boolean cascade)
Deprecated. 


getUpdateDDL

@Deprecated
public final Ddl[] getUpdateDDL(SchemaObject oldObject,
                                           SchemaObject newObject)
Deprecated. 


getUpdateDDL

@Deprecated
public final Ddl[] getUpdateDDL(SchemaObject[] oldObjects,
                                           SchemaObject[] newObjects)
Deprecated. 


getUpdateDDL

@Deprecated
public final Ddl[] getUpdateDDL(Difference resultSet,
                                           boolean replace,
                                           boolean cascade)
Deprecated. 


getCreateDDL

@Deprecated
public final Ddl getCreateDDL(Schema schema)
Deprecated. 


getDeleteDDL

@Deprecated
public final Ddl getDeleteDDL(Schema schema,
                                         boolean cascade)
Deprecated. 


Oracle Fusion Middleware Java API Reference for Oracle Extension SDK
11g Release 2 (11.1.2.0.0)

E17493-01

Copyright © 1997, 2011, Oracle. All rights reserved.