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: import java.util.Map;
045:
046: import org.netbeans.modules.sql.framework.model.visitors.SQLVisitedObject;
047:
048: import com.sun.sql.framework.exception.BaseException;
049:
050: /**
051: * Interface for all objects in the UI Object Model which accept inputs in the form of
052: * SQLObject implementation instances.
053: *
054: * @author Jonathan Giron
055: * @version $Revision$
056: */
057: public interface SQLConnectableObject extends SQLObject,
058: SQLVisitedObject {
059:
060: /**
061: * Adds the given SQLInputObject as an input.
062: *
063: * @param argName name of argument whose associated SQLObject input is requested
064: * @param newInput SQLInputObject serving as input
065: * @throws BaseException if newInput cannot be added to this instance
066: */
067: public void addInput(String argName, SQLObject newInput)
068: throws BaseException;
069:
070: /**
071: * Gets SQLInputObject instance, if any, associated as an input with the given
072: * argument name.
073: *
074: * @param argName name of argument whose associated SQLInputObject input is requested
075: * @return SQLInputObject associated with argName, or null if no such instance exists
076: */
077: public SQLInputObject getInput(String argName);
078:
079: /**
080: * Gets a Map of argument names to corresponding SQLInputObject instances.
081: *
082: * @return Map of arguments to SQLInputObject inputs.
083: */
084: public Map getInputObjectMap();
085:
086: /**
087: * Returns List of Source table columns used in the expression.
088: *
089: * @return List of Source table columns used in the expression.
090: */
091: public List getSourceColumnsUsed();
092:
093: /**
094: * Gets SQLObject instance, if any, referenced as an input with the given argument
095: * name.
096: *
097: * @param argName name of argument whose associated SQLInputObject input is requested
098: * @return SQLObject associated with argName, or null if no such instance exists
099: */
100: public SQLObject getSQLObject(String argName);
101:
102: /**
103: * Gets Map of argument names to SQLObject instances, if any, referenced as inputs.
104: *
105: * @return List of SQLObject instances referenced as inputs for this instance; empty
106: * if no SQLObjects are currently referenced.
107: */
108: public Map getSQLObjectMap();
109:
110: /**
111: * Returns List of Target table columns used in the expression.
112: *
113: * @return List of Target table columns used in the expression.
114: */
115: public List getTargetColumnsUsed();
116:
117: /**
118: * @return true if expression contains source column.
119: */
120: public boolean hasSourceColumn();
121:
122: /**
123: * @return true if expression contains target column.
124: */
125: public boolean hasTargetColumn();
126:
127: /**
128: * Indicates whether the given object is compatible as an input for this instance.
129: *
130: * @param argName name of argument field whose type will be checked against input for
131: * compatibility
132: * @param input SQLObject to test for compatibility
133: * @return SQLConstants.TYPE_CHECK_SAME if input and argument field are of identical
134: * type, SQLConstants.TYPE_CHECK_COMPATIBLE if input can be can be cast to
135: * type that is compatible with the argument field,
136: * SQLConstants.TYPE_CHECK_INCOMPATIBLE if input and argument field are
137: * incompatible
138: */
139: public int isInputCompatible(String argName, SQLObject input);
140:
141: /**
142: * Indicates whether the given object is a static input for this instance.
143: *
144: * @param argName name of argument whose type will be checked against input for
145: * validity
146: * @return true if input is static, false otherwise
147: */
148: public boolean isInputStatic(String argName);
149:
150: /**
151: * Indicates whether the given object is a valid input for this instance.
152: *
153: * @param argName name of argument whose type will be checked against input for
154: * validity
155: * @param input SQLObject to test for validity
156: * @return true if input is valid, false otherwise
157: */
158: public boolean isInputValid(String argName, SQLObject input);
159:
160: /**
161: * Removes the SQLObject, if any, associated with the given argument name.
162: *
163: * @param argName name of argument whose associated SQLObject input, if any, should be
164: * removed
165: * @return SQLObject formerly associated with argName, or null if no SQLObject was
166: * associated with argName.
167: * @throws BaseException if error occurs during removal
168: */
169: public SQLObject removeInputByArgName(String argName,
170: SQLObject sqlObj) throws BaseException;
171: }
|