001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041: package org.netbeans.modules.sql.framework.model;
042:
043: import java.util.List;
044:
045: import org.netbeans.modules.etl.model.ETLObject;
046:
047: /**
048: * Root interface to be implemented by data sources that provide information in
049: * a database or database-like format. Implementing classes must support the
050: * Cloneable interface.
051: *
052: * @author Sudhendra Seshachala, Jonathan Giron
053: */
054: public interface DatabaseModel extends Cloneable {
055: /**
056: * Gets associated DBConnectionDefinition
057: *
058: * @return DBConnectionDefinition
059: */
060: public DBConnectionDefinition getConnectionDefinition();
061:
062: /**
063: * Gets the name of this DatabaseModel.
064: *
065: * @return model name
066: */
067: public String getModelName();
068:
069: /**
070: * Gets the user-defined description string, if any, for this DatabaseModel.
071: * @return String description, or null if none was defined
072: */
073: public String getModelDescription();
074:
075: /**
076: * Gets List of DBTables contained in this DatabaseModel
077: * @return List of DBTable instances
078: */
079: public List<DBTable> getTables();
080:
081: /**
082: * Gets the table, if any, associated with the given tuple
083: * (table name, schema name, catalog name)
084: *
085: * @param fqTableName Fully qualified table name (implementation-specific)
086: * @return The table value
087: */
088: public DBTable getTable(String fqTableName);
089:
090: /**
091: * Gets the table, if any, associated with the given tuple
092: * (table name, schema name, catalog name)
093: *
094: * @param tableName Table name
095: * @param schemaName Schema name; may be null
096: * @param catalogName Catalog name; may be null
097: * @return The table value
098: */
099: public DBTable getTable(String tableName, String schemaName,
100: String catalogName);
101:
102: /**
103: * Constructs a fully qualified name that uniquely identifies the given
104: * DBTable instance from among the available tables in this model The
105: * format of this string is implementation-specific and useful only within
106: * the context of retrieving tables from this model.
107: *
108: * @param tbl DBTable whose fully-qualified name is to be generated.
109: * @return fully qualified table name for tbl
110: */
111: public String getFullyQualifiedTableName(DBTable tbl);
112:
113: /**
114: * Constructs a fully qualified name that uniquely identifies a table
115: * with the given plain table, schema and catalog names. The format of
116: * this string is implementation-specific and useful only within the
117: * context of retrieving tables from this model.
118: *
119: * @param table plain (unqualified) table name - mandatory
120: * @param schema schema name - may be null
121: * @param catalog catalog name - may be null
122: * @return fully qualified table name based on above parameters
123: */
124: public String getFullyQualifiedTableName(String table,
125: String schema, String catalog);
126:
127: /**
128: * Gets repository object, if any, providing underlying data for this
129: * DatabaseModel.
130: *
131: * @return ETLObject hosting this object's metadata, or null if
132: * data are not held by a ETLObject.
133: */
134: public ETLObject getSource();
135:
136: }
|