Class DatabaseObjectDefinition

java.lang.Object
org.eclipse.persistence.tools.schemaframework.DatabaseObjectDefinition
All Implemented Interfaces:
Serializable, Cloneable
Direct Known Subclasses:
IndexDefinition, NestedTableDefinition, PackageDefinition, SequenceDefinition, StoredProcedureDefinition, TableDefinition, TypeDefinition, VarrayDefinition, ViewDefinition

public abstract class DatabaseObjectDefinition extends Object implements Cloneable, Serializable

Purpose: Define a database object for the purpose of creation and deletion. A database object is an entity such as a table, view, proc, sequence...

Responsibilities:

  • Be able to create and drop the object from the database.
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
     
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    abstract Writer
    buildCreationWriter(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer writer)
    INTERNAL: Returns the writer used for creation of this object.
    abstract Writer
    buildDeletionWriter(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer writer)
    INTERNAL: Returns the writer used for deletion of this object.
    buildVPDCreationFunctionWriter(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer writer)
    INTERNAL: Sub classes should override.
    buildVPDCreationPolicyWriter(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer writer)
    INTERNAL: Sub classes should override.
    buildVPDDeletionWriter(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer writer)
    INTERNAL: Sub classes should override.
    PUBLIC:
    void
    createDatabaseSchema(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer writer, Set<String> createdDatabaseSchemas)
    INTERNAL: Execute the DDL to create the database schema for this object.
    void
    createDatabaseSchemaOnDatabase(org.eclipse.persistence.internal.sessions.AbstractSession session, Set<String> createdDatabaseSchemas)
    INTERNAL: Execute the DDL to create the database schema for this object.
    void
    createObject(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer schemaWriter)
    INTERNAL: Either drop from the database directly or write the statement to a file.
    void
    createOnDatabase(org.eclipse.persistence.internal.sessions.AbstractSession session)
    INTERNAL: Execute the DDL to create this object.
    void
    dropDatabaseSchema(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer writer)
    INTERNAL: Execute the DDL to drop the database schema for this object.
    void
    dropDatabaseSchemaOnDatabase(org.eclipse.persistence.internal.sessions.AbstractSession session)
    INTERNAL: Execute the DDL to drop the database schema for this object.
    void
    dropFromDatabase(org.eclipse.persistence.internal.sessions.AbstractSession session)
    INTERNAL: Execute the DDL to drop the object.
    void
    dropObject(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer schemaWriter, boolean createSQLFiles)
    INTERNAL: Execute the DDL to drop the object.
    PUBLIC: Return the database schema associated with this database object.
    protected static final org.eclipse.persistence.internal.databaseaccess.FieldTypeDefinition
    getFieldTypeDefinition(org.eclipse.persistence.internal.databaseaccess.DatabasePlatform platform, Class type, String name)
    INTERNAL: Retrieve database platform specific field definition from database specific platform handler for existing type or build a new one when type is null and type for type name could not be found.
    protected static final org.eclipse.persistence.internal.databaseaccess.FieldTypeDefinition
    getFieldTypeDefinition(org.eclipse.persistence.internal.sessions.AbstractSession session, Class type, String name)
    INTERNAL: Retrieve a database platform specific definition from session for existing type instance or build a new one when type is null.
    INTERNAL: Most major databases support a creator name scope.
    PUBLIC: Return the name of the object.
    PUBLIC: Most major databases support a creator name scope.
    protected boolean
    INTERNAL: Return true is this database object definition has a schema definition.
    void
    postCreateObject(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer createSchemaWriter, boolean createSQLFiles)
    Execute any statements required after the creation of the object
    void
    preDropObject(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer dropSchemaWriter, boolean createSQLFiles)
    Execute any statements required before the deletion of the object
    void
    PUBLIC: Set the name of the object.
    void
    setQualifier(String qualifier)
    PUBLIC: Most major databases support a creator name scope.
    boolean
    shouldCreateDatabaseSchema(Set<String> createdDatabaseSchemas)
    INTERNAL: Subclasses who care should override this method, e.g.
    boolean
    shouldCreateVPDCalls(org.eclipse.persistence.internal.sessions.AbstractSession session)
    INTERNAL: Subclasses who care should override this method.
     

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • name

      public String name
    • qualifier

      public String qualifier
  • Constructor Details

    • DatabaseObjectDefinition

      public DatabaseObjectDefinition()
  • Method Details

    • getFieldTypeDefinition

      protected static final org.eclipse.persistence.internal.databaseaccess.FieldTypeDefinition getFieldTypeDefinition(org.eclipse.persistence.internal.sessions.AbstractSession session, Class type, String name)
      INTERNAL: Retrieve a database platform specific definition from session for existing type instance or build a new one when type is null.
      Parameters:
      session - Session to search for already existing instances.
      type - Field type class.
      name - Filed type name.
      Returns:
      Database platform specific definition instance.
      Throws:
      ValidationException - when provided type is not valid database type.
    • getFieldTypeDefinition

      protected static final org.eclipse.persistence.internal.databaseaccess.FieldTypeDefinition getFieldTypeDefinition(org.eclipse.persistence.internal.databaseaccess.DatabasePlatform platform, Class type, String name)
      INTERNAL: Retrieve database platform specific field definition from database specific platform handler for existing type or build a new one when type is null and type for type name could not be found.
      Parameters:
      platform - Specific database platform handler.
      type - Field type (will be processed first when available).
      name - Field type name (will be processed as backup option when type class is not available).
      Throws:
      ValidationException - when provided type is not valid database type.
    • buildCreationWriter

      public abstract Writer buildCreationWriter(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer writer) throws ValidationException
      INTERNAL: Returns the writer used for creation of this object.
      Throws:
      ValidationException
    • buildVPDCreationPolicyWriter

      public Writer buildVPDCreationPolicyWriter(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer writer)
      INTERNAL: Sub classes should override.
    • buildVPDCreationFunctionWriter

      public Writer buildVPDCreationFunctionWriter(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer writer)
      INTERNAL: Sub classes should override.
    • buildVPDDeletionWriter

      public Writer buildVPDDeletionWriter(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer writer)
      INTERNAL: Sub classes should override.
    • buildDeletionWriter

      public abstract Writer buildDeletionWriter(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer writer) throws ValidationException
      INTERNAL: Returns the writer used for deletion of this object.
      Throws:
      ValidationException
    • clone

      public Object clone()
      PUBLIC:
      Overrides:
      clone in class Object
    • createDatabaseSchema

      public void createDatabaseSchema(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer writer, Set<String> createdDatabaseSchemas) throws EclipseLinkException
      INTERNAL: Execute the DDL to create the database schema for this object. Does nothing at this level, subclasses that support this must override this method.
      Throws:
      EclipseLinkException
      See Also:
    • createDatabaseSchemaOnDatabase

      public void createDatabaseSchemaOnDatabase(org.eclipse.persistence.internal.sessions.AbstractSession session, Set<String> createdDatabaseSchemas) throws EclipseLinkException
      INTERNAL: Execute the DDL to create the database schema for this object. Does nothing at this level, subclasses that support this must override this method.
      Throws:
      EclipseLinkException
      See Also:
    • createObject

      public void createObject(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer schemaWriter) throws EclipseLinkException
      INTERNAL: Either drop from the database directly or write the statement to a file. Database objects are root level entities such as tables, views, procs, sequences...
      Throws:
      EclipseLinkException
    • createOnDatabase

      public void createOnDatabase(org.eclipse.persistence.internal.sessions.AbstractSession session) throws EclipseLinkException
      INTERNAL: Execute the DDL to create this object.
      Throws:
      EclipseLinkException
    • shouldCreateDatabaseSchema

      public boolean shouldCreateDatabaseSchema(Set<String> createdDatabaseSchemas)
      INTERNAL: Subclasses who care should override this method, e.g. TableDefinition.
    • shouldCreateVPDCalls

      public boolean shouldCreateVPDCalls(org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Subclasses who care should override this method.
    • dropDatabaseSchema

      public void dropDatabaseSchema(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer writer) throws EclipseLinkException
      INTERNAL: Execute the DDL to drop the database schema for this object. Does nothing at this level, subclasses that support this must override this method.
      Throws:
      EclipseLinkException
      See Also:
    • dropDatabaseSchemaOnDatabase

      public void dropDatabaseSchemaOnDatabase(org.eclipse.persistence.internal.sessions.AbstractSession session) throws EclipseLinkException
      INTERNAL: Execute the DDL to drop the database schema for this object. Does nothing at this level, subclasses that support this must override this method.
      Throws:
      EclipseLinkException
      See Also:
    • dropFromDatabase

      public void dropFromDatabase(org.eclipse.persistence.internal.sessions.AbstractSession session) throws EclipseLinkException
      INTERNAL: Execute the DDL to drop the object.
      Throws:
      EclipseLinkException
    • dropObject

      public void dropObject(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer schemaWriter, boolean createSQLFiles) throws EclipseLinkException
      INTERNAL: Execute the DDL to drop the object. Either directly from the database of write out the statement to a file.
      Throws:
      EclipseLinkException
    • getDatabaseSchema

      public String getDatabaseSchema()
      PUBLIC: Return the database schema associated with this database object.
      See Also:
    • getFullName

      public String getFullName()
      INTERNAL: Most major databases support a creator name scope. This means whenever the database object is referenced, it must be qualified.
    • getName

      public String getName()
      PUBLIC: Return the name of the object. i.e. the table name or the sequence name.
    • getQualifier

      public String getQualifier()
      PUBLIC: Most major databases support a creator name scope. This means whenever the database object is referenced, it must be qualified.
    • hasDatabaseSchema

      protected boolean hasDatabaseSchema()
      INTERNAL: Return true is this database object definition has a schema definition.
    • postCreateObject

      public void postCreateObject(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer createSchemaWriter, boolean createSQLFiles)
      Execute any statements required after the creation of the object
      Parameters:
      session -
      createSchemaWriter -
    • preDropObject

      public void preDropObject(org.eclipse.persistence.internal.sessions.AbstractSession session, Writer dropSchemaWriter, boolean createSQLFiles)
      Execute any statements required before the deletion of the object
      Parameters:
      session -
      dropSchemaWriter -
    • setName

      public void setName(String name)
      PUBLIC: Set the name of the object. i.e. the table name or the sequence name.
    • setQualifier

      public void setQualifier(String qualifier)
      PUBLIC: Most major databases support a creator name scope. This means whenever the database object is referenced, it must be qualified.
    • toString

      public String toString()
      Overrides:
      toString in class Object