All Downloads are FREE. Search and download functionalities are using the official Maven repository.

oracle.toplink.essentials.tools.schemaframework.DatabaseObjectDefinition Maven / Gradle / Ivy

/*
 * The contents of this file are subject to the terms 
 * of the Common Development and Distribution License 
 * (the "License").  You may not use this file except 
 * in compliance with the License.
 * 
 * You can obtain a copy of the license at 
 * glassfish/bootstrap/legal/CDDLv1.0.txt or 
 * https://glassfish.dev.java.net/public/CDDLv1.0.html. 
 * See the License for the specific language governing 
 * permissions and limitations under the License.
 * 
 * When distributing Covered Code, include this CDDL 
 * HEADER in each file and include the License file at 
 * glassfish/bootstrap/legal/CDDLv1.0.txt.  If applicable, 
 * add the following below this CDDL HEADER, with the 
 * fields enclosed by brackets "[]" replaced with your 
 * own identifying information: Portions Copyright [yyyy] 
 * [name of copyright owner]
 */
// Copyright (c) 1998, 2007, Oracle. All rights reserved.  
package oracle.toplink.essentials.tools.schemaframework;

import java.io.*;
import oracle.toplink.essentials.internal.helper.*;
import oracle.toplink.essentials.exceptions.*;
import oracle.toplink.essentials.queryframework.*;
import oracle.toplink.essentials.internal.sessions.AbstractSession;

/**
 * 

* 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. *
*/ public abstract class DatabaseObjectDefinition implements Cloneable, Serializable { public String name; public String qualifier; public DatabaseObjectDefinition() { this.name = ""; this.qualifier = ""; } /** * INTERNAL: * Returns the writer used for creation of this object. */ public abstract Writer buildCreationWriter(AbstractSession session, Writer writer) throws ValidationException; /** * INTERNAL: * Returns the writer used for creation of this object. */ public abstract Writer buildDeletionWriter(AbstractSession session, Writer writer) throws ValidationException; /** * PUBLIC: */ public Object clone() { try { return super.clone(); } catch (CloneNotSupportedException impossible) { return null; } } /** * 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... */ public void createObject(AbstractSession session, Writer schemaWriter) throws TopLinkException { if (schemaWriter == null) { this.createOnDatabase(session); } else { this.buildCreationWriter(session, schemaWriter); } } /** * INTERNAL: * Execute the DDL to create the varray. */ public void createOnDatabase(AbstractSession session) throws TopLinkException { session.executeNonSelectingCall(new SQLCall(buildCreationWriter(session, new StringWriter()).toString())); } /** * INTERNAL: * Execute the DDL to drop the varray. */ public void dropFromDatabase(AbstractSession session) throws TopLinkException { session.executeNonSelectingCall(new SQLCall(buildDeletionWriter(session, new StringWriter()).toString())); } /** * INTERNAL: * Execute the DDL to drop the varray. Either directly from the database * of write out the statement to a file. */ public void dropObject(AbstractSession session, Writer schemaWriter) throws TopLinkException { if (schemaWriter == null) { this.dropFromDatabase(session); } else { buildDeletionWriter(session, schemaWriter); } } /** * INTERNAL: * Most major databases support a creator name scope. * This means whenever the database object is referecned, it must be qualified. */ public String getFullName() { if (getQualifier().equals("")) { return getName(); } else { return getQualifier() + "." + getName(); } } /** * PUBLIC: * Return the name of the object. * i.e. the table name or the sequence name. */ public String getName() { return name; } /** * PUBLIC: * Most major databases support a creator name scope. * This means whenever the database object is referecned, it must be qualified. */ public String getQualifier() { return qualifier; } /** * PUBLIC: * Set the name of the object. * i.e. the table name or the sequence name. */ public void setName(String name) { this.name = name; } /** * PUBLIC: * Most major databases support a creator name scope. * This means whenever the database object is referecned, it must be qualified. */ public void setQualifier(String qualifier) { this.qualifier = qualifier; } public String toString() { return Helper.getShortClassName(getClass()) + "(" + getFullName() + ")"; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy