Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.openjpa.jdbc.meta
Class ReverseMappingTool

    java.lang.Object
      org.apache.openjpa.jdbc.meta.ReverseMappingTool

All Implemented Interfaces:
  Cloneable, MetaDataModes

    public class ReverseMappingTool

extends Object
implements MetaDataModes, Cloneable

Reverse-maps a schema into class mappings and the assiciated java code. Generates a Java code files for persistent classes and associated identity classes and metadata.

Author:
  Abe White

Nested Class Summary
`static class` | `ReverseMappingTool.Flags` Holder for run flags.

Field Summary
`static String` | `LEVEL_CLASS`
`static String` | `LEVEL_PACKAGE`
`static int` | `TABLE_ASSOCIATION` Association table.
`static int` | `TABLE_BASE` Primary table for a new base class.
`static int` | `TABLE_NONE` Unmapped table.
`static int` | `TABLE_SECONDARY` Secondary table of an existing class.
`static int` | `TABLE_SECONDARY_OUTER` Secondary table of an existing class.
`static int` | `TABLE_SUBCLASS` Subclass table.

Fields inherited from interface org.apache.openjpa.meta.MetaDataModes
`MODE_MAPPING, MODE_MAPPING_INIT, MODE_META, MODE_NONE, MODE_QUERY`

Constructor Summary
`ReverseMappingTool(JDBCConfiguration conf)` Constructor.

Method Summary
`void` | `addConstraints(ValueMapping vm)` Add existing unique constraints and indexes to the given value.
`void` | `addJoinConstraints(FieldMapping field)` Add existing unique constraints and indexes to the given field's join.
`Object` | `clone()` Return a new tool with the same settings as this one.
`Class` | `generateClass(String name, Class parent)` Generate a new class with the given name.
`boolean` | `getBlobAsObject()` Whether to reverse-map blob columns as containing serialized Java objects, rather than the default of using a byte[] field.
`ClassMapping` | `getClassMapping(Table table)` Return the class mapping for the given table, or null if none.
`CodeFormat` | `getCodeFormat()` The code formatter for the generated Java code.
`JDBCConfiguration` | `getConfiguration()` Return the configuration provided on construction.
`ReverseCustomizer` | `getCustomizer()` Return the customizer in use, or null if none.
`boolean` | `getDetachable()` Whether to make generated classes detachable.
`File` | `getDirectory()` The file to output the generated code to, or null for the current directory.
`String` | `getDiscriminatorStrategy()` Default discriminator strategy for base class mappings.
`String` | `getFieldName(String name, ClassMapping dec)` Return a default Java identifier-formatted name for the given column/table name.
`Class` | `getFieldType(Column col, boolean forceObject)` Return the default field type for the given column.
`String` | `getIdentityClassSuffix()` Suffix used to create application identity class name from a class name, or in the case of inner identity classes, the inner class name.
`boolean` | `getInnerIdentityClasses()` Whether or not to generate inner classes when creating application identity classes.
`boolean` | `getInverseRelations()` Whether to generate inverse 1-many/1-1 relations for all many-1/1-1 relations.
`Log` | `getLog()` Return the log to write to.
`ClassMapping[]` | `getMappings()` Return the generated mappings.
`boolean` | `getNullableAsObject()` Return whether even nullable columns will be mapped to wrappers rather than primitives.
`String` | `getPackageName()` Return the default package for the generated classes, or null if unset.
`boolean` | `getPrimaryKeyOnJoin()` Return true if join tables are allowed to have primary keys, false if all primary key tables will be mapped as persistent classes.
`MappingRepository` | `getRepository()` Return the mapping repository used to hold generated mappings.
`SchemaGroup` | `getSchemaGroup()` Return the schema group to reverse map.
`Properties` | `getTypeMap()` Map of JDBC-name to Java-type-name entries that allows customization of reverse mapping columns to field types.
`ForeignKey` | `getUniqueForeignKey(Table table)` If the given table has a single unique foreign key or a foreign key that matches the primary key, return it.
`boolean` | `getUseBuiltinIdentityClass()` Whether to use built in identity classes when possible.
`boolean` | `getUseDataStoreIdentity()` Whether to use datastore identity when possible.
`boolean` | `getUseForeignKeyName()` Return whether the foreign key name will be used to generate relation names.
`boolean` | `getUseSchemaName()` Return true if the schema name will be included in the generated class name for each table.
`String` | `getVersionStrategy()` Default version strategy for base class mappings.
`boolean` | `isBaseTable(Table table)` Return whether the given table is a base class table.
`boolean` | `isUnique(ForeignKey fk)` Return whether the given foreign key is unique.
`static void` | `main(String[] args)` Usage: java org.apache.openjpa.jdbc.meta.ReverseMappingTool [option]* <.schema file or resource>* Where the following options are recognized.
`ClassMapping` | `newClassMapping(Class cls, Table table)` Create a new class to be mapped to a table.
`FieldMapping` | `newFieldMapping(String name, Class type, Column col, ForeignKey fk, ClassMapping dec)` Create a field mapping for the given info, or return null if customizer rejects.
`List` | `recordCode()` Uses `CodeGenerator`s to write the Java code for the generated mappings to the proper packages.
`List` | `recordCode(Map output)` Write the code for the tool.
`Collection` | `recordMetaData(boolean perClass)` Write the generated metadata to the proper packages.
`Collection` | `recordMetaData(boolean perClass, Map output)` Write the code for the tool.
`void` | `run()` Generate mappings and class code for the current schema group.
`static boolean` | `run(JDBCConfiguration conf, String[] args, Options opts)` Run the tool.
`static void` | `run(JDBCConfiguration conf, String[] args, ReverseMappingTool.Flags flags, ClassLoader loader)` Run the tool.
`void` | `setBlobAsObject(boolean blobAsObj)` Whether to reverse-map blob columns as containing serialized Java objects, rather than the default of using a byte[] field.
`void` | `setCodeFormat(CodeFormat format)` Set the code formatter for the generated Java code.
`void` | `setCustomizer(ReverseCustomizer customizer)` Set the customizer.
`void` | `setDetachable(boolean detachable)` Whether to make generated classes detachable.
`void` | `setDirectory(File dir)` The file to output the generated code to, or null for the current directory.
`void` | `setDiscriminatorStrategy(String discStrat)` Default discriminator strategy for base class mappings.
`void` | `setIdentityClassSuffix(String suffix)` Suffix used to create application identity class name from a class name, or in the case of inner identity classes, the inner class name.
`void` | `setInnerIdentityClasses(boolean inner)` Whether or not to generate inner classes when creating application identity classes.
`void` | `setInverseRelations(boolean inverse)` Whether to generate inverse 1-many/1-1 relations for all many-1/1-1 relations.
`void` | `setNullableAsObject(boolean nullAsObj)` Set whether even nullable columns will be mapped to wrappers rather than primitives.
`void` | `setPackageName(String packageName)` Set the default package for the generated classes; use null to indicate no package.
`void` | `setPrimaryKeyOnJoin(boolean pkOnJoin)` Set to true if join tables are allowed to have primary keys, false if all primary key tables will be mapped as persistent classes.
`void` | `setRepository(MappingRepository repos)` Set the repository to use.
`void` | `setSchemaGroup(SchemaGroup schema)` Set the schema to reverse map.
`void` | `setTypeMap(Properties typeMap)` Map of JDBC-name to Java-type-name entries that allows customization of reverse mapping columns to field types.
`void` | `setUseBuiltinIdentityClass(boolean builtin)` Whether to use built in identity classes when possible.
`void` | `setUseDataStoreIdentity(boolean datastore)` Whether to use datastore identity when possible.
`void` | `setUseForeignKeyName(boolean useFK)` Set whether the foreign key name will be used to generate relation names.
`void` | `setUseSchemaName(boolean useSchema)` Set whether the schema name will be included in the generated class name for each table.
`void` | `setVersionStrategy(String versionStrat)` Default version strategy for base class mappings.

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

Field Detail

### TABLE_NONE

    public static final int TABLE_NONE

  Unmapped table.

  See Also:
    Constant Field Values

### TABLE_BASE

    public static final int TABLE_BASE

  Primary table for a new base class.

  See Also:
    Constant Field Values

### TABLE_SECONDARY

    public static final int TABLE_SECONDARY

  Secondary table of an existing class. There is exactly one row in this table for each row in the primary table.

  See Also:
    Constant Field Values

### TABLE_SECONDARY_OUTER

    public static final int TABLE_SECONDARY_OUTER

  Secondary table of an existing class. There is zero or one row in this table for each row in the primary table.

  See Also:
    Constant Field Values

### TABLE_ASSOCIATION

    public static final int TABLE_ASSOCIATION

  Association table.

  See Also:
    Constant Field Values

### TABLE_SUBCLASS

    public static final int TABLE_SUBCLASS

  Subclass table.

  See Also:
    Constant Field Values

### LEVEL_PACKAGE

    public static final String LEVEL_PACKAGE

See Also:
  Constant Field Values

### LEVEL_CLASS

    public static final String LEVEL_CLASS

See Also:
  Constant Field Values

Constructor Detail

### ReverseMappingTool

    public ReverseMappingTool(JDBCConfiguration conf)

  Constructor. Supply configuration.

Method Detail

### getConfiguration

    public JDBCConfiguration getConfiguration()

  Return the configuration provided on construction.

### getLog

    public Log getLog()

  Return the log to write to.

### getPackageName

    public String getPackageName()

  Return the default package for the generated classes, or null if unset.

### setPackageName

    public void setPackageName(String packageName)

  Set the default package for the generated classes; use null to indicate no package.

### getDirectory

    public File getDirectory()

  The file to output the generated code to, or null for the current directory. If the directory matches the package, it will be used. Otherwise, the package structure will be created under this directory.

### setDirectory

    public void setDirectory(File dir)

  The file to output the generated code to, or null for the current directory. If the directory matches the package, it will be used. Otherwise, the package structure will be created under this directory.

### getUseSchemaName

    public boolean getUseSchemaName()

  Return true if the schema name will be included in the generated class name for each table. Defaults to false.

### setUseSchemaName

    public void setUseSchemaName(boolean useSchema)

  Set whether the schema name will be included in the generated class name for each table. Defaults to false.

### getUseForeignKeyName

    public boolean getUseForeignKeyName()

  Return whether the foreign key name will be used to generate relation names. Defaults to false.

### setUseForeignKeyName

    public void setUseForeignKeyName(boolean useFK)

  Set whether the foreign key name will be used to generate relation names. Defaults to false.

### getNullableAsObject

    public boolean getNullableAsObject()

  Return whether even nullable columns will be mapped to wrappers rather than primitives. Defaults to false.

### setNullableAsObject

    public void setNullableAsObject(boolean nullAsObj)

  Set whether even nullable columns will be mapped to wrappers rather than primitives. Defaults to false.

### getBlobAsObject

    public boolean getBlobAsObject()

  Whether to reverse-map blob columns as containing serialized Java objects, rather than the default of using a byte[] field.

### setBlobAsObject

    public void setBlobAsObject(boolean blobAsObj)

  Whether to reverse-map blob columns as containing serialized Java objects, rather than the default of using a byte[] field.

### getTypeMap

    public Properties getTypeMap()

  Map of JDBC-name to Java-type-name entries that allows customization of reverse mapping columns to field types.

### setTypeMap

    public void setTypeMap(Properties typeMap)

  Map of JDBC-name to Java-type-name entries that allows customization of reverse mapping columns to field types.

### getPrimaryKeyOnJoin

    public boolean getPrimaryKeyOnJoin()

  Return true if join tables are allowed to have primary keys, false if all primary key tables will be mapped as persistent classes. Defaults to false.

### setPrimaryKeyOnJoin

    public void setPrimaryKeyOnJoin(boolean pkOnJoin)

  Set to true if join tables are allowed to have primary keys, false if all primary key tables will be mapped as persistent classes. Defaults to false.

### getUseDataStoreIdentity

    public boolean getUseDataStoreIdentity()

  Whether to use datastore identity when possible. Defaults to false.

### setUseDataStoreIdentity

    public void setUseDataStoreIdentity(boolean datastore)

  Whether to use datastore identity when possible. Defaults to false.

### getUseBuiltinIdentityClass

    public boolean getUseBuiltinIdentityClass()

  Whether to use built in identity classes when possible. Defaults to true.

### setUseBuiltinIdentityClass

    public void setUseBuiltinIdentityClass(boolean builtin)

  Whether to use built in identity classes when possible. Defaults to true.

### getInnerIdentityClasses

    public boolean getInnerIdentityClasses()

  Whether or not to generate inner classes when creating application identity classes.

### setInnerIdentityClasses

    public void setInnerIdentityClasses(boolean inner)

  Whether or not to generate inner classes when creating application identity classes.

### getIdentityClassSuffix

    public String getIdentityClassSuffix()

  Suffix used to create application identity class name from a class name, or in the case of inner identity classes, the inner class name.

### setIdentityClassSuffix

    public void setIdentityClassSuffix(String suffix)

  Suffix used to create application identity class name from a class name, or in the case of inner identity classes, the inner class name.

### getInverseRelations

    public boolean getInverseRelations()

  Whether to generate inverse 1-many/1-1 relations for all many-1/1-1 relations. Defaults to true.

### setInverseRelations

    public void setInverseRelations(boolean inverse)

  Whether to generate inverse 1-many/1-1 relations for all many-1/1-1 relations. Defaults to true.

### getDetachable

    public boolean getDetachable()

  Whether to make generated classes detachable. Defaults to false.

### setDetachable

    public void setDetachable(boolean detachable)

  Whether to make generated classes detachable. Defaults to false.

### getDiscriminatorStrategy

    public String getDiscriminatorStrategy()

  Default discriminator strategy for base class mappings.

### setDiscriminatorStrategy

    public void setDiscriminatorStrategy(String discStrat)

  Default discriminator strategy for base class mappings.

### getVersionStrategy

    public String getVersionStrategy()

  Default version strategy for base class mappings.

### setVersionStrategy

    public void setVersionStrategy(String versionStrat)

  Default version strategy for base class mappings.

### getCodeFormat

    public CodeFormat getCodeFormat()

  The code formatter for the generated Java code.

### setCodeFormat

    public void setCodeFormat(CodeFormat format)

  Set the code formatter for the generated Java code.

### getCustomizer

    public ReverseCustomizer getCustomizer()

  Return the customizer in use, or null if none.

### setCustomizer

    public void setCustomizer(ReverseCustomizer customizer)

  Set the customizer. The configuration on the customizer, if any, should already be set.

### getRepository

    public MappingRepository getRepository()

  Return the mapping repository used to hold generated mappings. You can also use the repository to seed the schema group to generate classes from.

### setRepository

    public void setRepository(MappingRepository repos)

  Set the repository to use.

### getSchemaGroup

    public SchemaGroup getSchemaGroup()

  Return the schema group to reverse map. If none has been set, the schema will be generated from the database.

### setSchemaGroup

    public void setSchemaGroup(SchemaGroup schema)

  Set the schema to reverse map.

### getMappings

    public ClassMapping[] getMappings()

  Return the generated mappings.

### run

    public void run()

  Generate mappings and class code for the current schema group.

### recordCode

    public List recordCode()
                    throws IOException

  Uses `CodeGenerator`s to write the Java code for the generated mappings to the proper packages.

  Returns:
    a list of `File` instances that were written
  Throws:
    `IOException`

### recordCode

    public List recordCode(Map output)
                    throws IOException

  Write the code for the tool.

  Parameters:
    `output` - if null, then perform the write directly to the filesystem; otherwise, populate the specified map with keys as the generated `ClassMapping` and values as a `String` that contains the generated code
  Returns:
    a list of `File` instances that were written
  Throws:
    `IOException`

### recordMetaData

    public Collection recordMetaData(boolean perClass)
                              throws IOException

  Write the generated metadata to the proper packages.

  Returns:
    the set of metadata `File`s that were written
  Throws:
    `IOException`

### recordMetaData

    public Collection recordMetaData(boolean perClass,
                                     Map output)
                              throws IOException

  Write the code for the tool.

  Parameters:
    `output` - if null, then perform the write directly to the filesystem; otherwise, populate the specified map with keys as the generated `ClassMapping` and values as a `String` that contains the generated code
  Returns:
    the set of metadata `File`s that were written
  Throws:
    `IOException`

### getClassMapping

    public ClassMapping getClassMapping(Table table)

  Return the class mapping for the given table, or null if none.

### newClassMapping

    public ClassMapping newClassMapping(Class cls,
                                        Table table)

  Create a new class to be mapped to a table. The class will start out with a default application identity class set.

### generateClass

    public Class generateClass(String name,
                               Class parent)

  Generate a new class with the given name. If a non-null parent class is given, it will be set as the superclass.

### isUnique

    public boolean isUnique(ForeignKey fk)

  Return whether the given foreign key is unique.

### getUniqueForeignKey

    public ForeignKey getUniqueForeignKey(Table table)

  If the given table has a single unique foreign key or a foreign key that matches the primary key, return it. Else return null.

### addJoinConstraints

    public void addJoinConstraints(FieldMapping field)

  Add existing unique constraints and indexes to the given field's join.

### addConstraints

    public void addConstraints(ValueMapping vm)

  Add existing unique constraints and indexes to the given value.

### isBaseTable

    public boolean isBaseTable(Table table)

  Return whether the given table is a base class table.

### newFieldMapping

    public FieldMapping newFieldMapping(String name,
                                        Class type,
                                        Column col,
                                        ForeignKey fk,
                                        ClassMapping dec)

  Create a field mapping for the given info, or return null if customizer rejects.

### getFieldName

    public String getFieldName(String name,
                               ClassMapping dec)

  Return a default Java identifier-formatted name for the given column/table name.

### getFieldType

    public Class getFieldType(Column col,
                              boolean forceObject)

  Return the default field type for the given column.

### clone

    public Object clone()

  Return a new tool with the same settings as this one. Used in workbench.

  Overrides:
    `clone` in class `Object`

### main

    public static void main(String[] args)
                     throws IOException,
                            SQLException

  Usage: java org.apache.openjpa.jdbc.meta.ReverseMappingTool [option]* <.schema file or resource>* Where the following options are recognized.
  - -properties/-p <properties file or resource>: The path or resource name of a OpenJPA properties file containing information such as the license key data as outlined in `OpenJPAConfiguration`. Optional.
  - -<property name> <property value>: All bean properties of the OpenJPA `JDBCConfiguration` can be set by using their names and supplying a value. For example: `-licenseKey adslfja83r3lkadf`
  - -schemas/-s <schemas and tables>: Comma-separated list of schemas and tables to reverse-map.
  - -package/-pkg <package name>: The name of the package for all generated classes. Defaults to no package.
  - -directory/-d <output directory>: The directory where all generated code should be placed. Defaults to the current directory.
  - -useSchemaName/-sn <true/t | false/f>: Set this flag to true to include the schema name as part of the generated class name for each table.
  - -useForeignKeyName/-fkn <true/t | false/f>: Set this flag to true to use the foreign key name to generate fields representing relations between classes.
  - -nullableAsObject/-no <true/t | false/f>: Set to true to make all nullable columns map to object types; columns that would normally map to a primitive will map to the appropriate wrapper type instead.
  - -blobAsObject/-bo <true/t | false/f>: Set to true to make all binary columns map to Object rather than byte[].
  - -typeMap/-typ <types>: Default mapping of SQL type names to Java classes.
  - -primaryKeyOnJoin/-pkj <true/t | false/f>: Set to true to allow primary keys on join tables.
  - -useDatastoreIdentity/-ds <true/t | false/f>: Set to true to use datastore identity where possible.
  - -useBuiltinIdentityClass/-bic <true/t | false/f>: Set to false to never use OpenJPA's builtin application identity classes.
  - -innerIdentityClasses/-inn <true/t | false/f>: Set to true to generate the application identity classes as inner classes.
  - -identityClassSuffix/-is <suffix>: Suffix to append to class names to create identity class name, or for inner identity classes, the inner class name.
  - -inverseRelations/-ir <true/t | false/f>: Set to false to prevent the creation of inverse 1-many/1-1 relations for each encountered many-1/1-1 relation.
  - -detachable/-det <true/t | false/f>: Set to true to make generated classes detachable.
  - -discriminatorStrategy/-ds <strategy>: The default discriminator strategy to place on base classes.
  - -versionStrategy/-vs <strategy>: The default version strategy to place on base classes.
  - -metadata/-md <class | package>: Specify the level the metadata should be generated at. Defaults to generating a single package-level metadata file.
  - -customizerClass/-cc <class name>: The full class name of a `ReverseCustomizer` implementation to use to customize the reverse mapping process. Optional.
  - -customizerProperties/-cp <properties file or resource> : The path or resource name of a properties file that will be passed to the reverse customizer on initialization. Optional.
  - -customizer/-c.<property name> < property value> : Arguments like this will be used to configure the bean properties of the `ReverseCustomizer`.
  - -codeFormat/-cf.<property name> < property value> : Arguments like this will be used to configure the bean properties of the internal `CodeFormat`.
  Each schema given as an argument will be reverse-mapped into persistent classes and associated metadata. If no arguments are given, the database schemas defined by the system configuration will be reverse-mapped.

  Throws:
    `IOException`
    `SQLException`

### run

    public static boolean run(JDBCConfiguration conf,
                              String[] args,
                              Options opts)
                       throws IOException,
                              SQLException

  Run the tool. Returns false if invalid options were given.

  Throws:
    `IOException`
    `SQLException`
  See Also:
    `main(java.lang.String[])`

### run

    public static void run(JDBCConfiguration conf,
                           String[] args,
                           ReverseMappingTool.Flags flags,
                           ClassLoader loader)
                    throws IOException,
                           SQLException

  Run the tool.

  Throws:
    `IOException`
    `SQLException`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2006 Apache Software Foundation. All Rights Reserved.