/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Other licenses:
 * -----------------------------------------------------------------------------
 * Commercial licenses for this work are available. These replace the above
 * ASL 2.0 and offer limited warranties, support, maintenance, and commercial
 * database integrations.
 *
 * For more information, please visit: http://www.jooq.org/licenses
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package org.jooq.meta;

import java.util.List;

import org.jooq.Name;

A general interface defining any database object, such as tables, views, stored procedures, etc.
Author:Lukas Eder
/** * A general interface defining any database object, such as tables, views, * stored procedures, etc. * * @author Lukas Eder */
public interface Definition {
Returns:A reference to the Database context
/** * @return A reference to the Database context */
Database getDatabase();
Returns:The catalog of this object.
/** * @return The catalog of this object. */
CatalogDefinition getCatalog();
Returns:The schema of this object or null if this object is a CatalogDefinition.
/** * @return The schema of this object or <code>null</code> if this object is * a {@link CatalogDefinition}. */
SchemaDefinition getSchema();
Returns:The package of this object or null if this object is not contained in a package.
/** * @return The package of this object or <code>null</code> if this object is * not contained in a package. */
PackageDefinition getPackage();
Returns:The name of this object, e.g. [my_table]. This corresponds to getInputName()
/** * @return The name of this object, e.g. [my_table]. This corresponds to * {@link #getInputName()} */
String getName();
Returns:The name of this object, e.g. [my_table], as defined in the source database.
/** * @return The name of this object, e.g. [my_table], as defined in the * source database. */
String getInputName();
Returns:The name of this object, e.g. [my_table], as defined for the target database. This may differ from the input name if schema / table rewriting is applied.
/** * @return The name of this object, e.g. [my_table], as defined for the * target database. This may differ from the input name if schema / * table rewriting is applied. */
String getOutputName();
Returns:The comment of this object
/** * @return The comment of this object */
String getComment();
Returns:A path of definitions for this definition, e.g. [schema].[package].[routine].[parameter]
/** * @return A path of definitions for this definition, e.g. * <code>[schema].[package].[routine].[parameter]</code> */
List<Definition> getDefinitionPath();
Returns:A qualified name for this object (corresponding to getName())
/** * @return A qualified name for this object (corresponding to * {@link #getName()}) */
String getQualifiedName();
Returns:A qualified name for this object (corresponding to getInputName())
/** * @return A qualified name for this object (corresponding to * {@link #getInputName()}) */
String getQualifiedInputName();
Returns:A qualified name for this object (corresponding to getOutputName())
/** * @return A qualified name for this object (corresponding to * {@link #getOutputName()}) */
String getQualifiedOutputName();
Returns:A qualified name for this object (corresponding to getName())
/** * @return A qualified name for this object (corresponding to * {@link #getName()}) */
Name getQualifiedNamePart();
Returns:A qualified name for this object (corresponding to getInputName())
/** * @return A qualified name for this object (corresponding to * {@link #getInputName()}) */
Name getQualifiedInputNamePart();
Returns:A qualified name for this object (corresponding to getOutputName())
/** * @return A qualified name for this object (corresponding to * {@link #getOutputName()}) */
Name getQualifiedOutputNamePart();
Returns:The overload suffix if applicable
/** * @return The overload suffix if applicable */
String getOverload();
Returns:The source code of this object, if applicable, or null, if no such source code is available.
/** * @return The source code of this object, if applicable, or * <code>null</code>, if no such source code is available. */
String getSource(); }