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:
042: package org.netbeans.modules.etl.model;
043:
044: import java.util.Collection;
045: import java.util.List;
046: import org.netbeans.modules.sql.framework.model.RuntimeDatabaseModel;
047: import org.netbeans.modules.sql.framework.model.SQLDefinition;
048: import org.netbeans.modules.sql.framework.model.SQLObject;
049: import org.netbeans.modules.sql.framework.model.SQLObjectListener;
050: import org.w3c.dom.Element;
051: import com.sun.sql.framework.exception.BaseException;
052: import org.netbeans.modules.sql.framework.model.DBTable;
053: import org.netbeans.modules.sql.framework.model.DatabaseModel;
054: import org.netbeans.modules.sql.framework.model.SQLDBModel;
055: import org.netbeans.modules.sql.framework.model.ValidationInfo;
056:
057: /**
058: * @author Ritesh Adval
059: * @author Ahimanikya Satapathy
060: * @version $Revision$
061: *
062: */
063: public interface ETLDefinition {
064:
065: /**
066: * Adds given SQLObject instance to this SQLDefinition.
067: *
068: * @param newObject new instance to add
069: * @throws BaseException if add fails or instance implements an unrecognized object
070: * type.
071: */
072: public void addObject(SQLObject newObject) throws BaseException;
073:
074: /**
075: * add an sql object listener
076: *
077: * @param listener sql object listener
078: */
079: public void addSQLObjectListener(SQLObjectListener listener);
080:
081: /**
082: * Gets Collection of all SQLObjects in this model.
083: *
084: * @return Collection, possibly empty, of all SQLObjects
085: */
086: public Collection<SQLObject> getAllObjects();
087:
088: /**
089: * Gets the List of Databases
090: *
091: * @return java.util.List for this
092: */
093: public List<SQLDBModel> getAllDatabases();
094:
095: /**
096: * Getter for DatabaseModel
097: *
098: * @param modelName to be retrieved
099: * @return DatabaseModel for given Model Name
100: */
101: public DatabaseModel getDatabaseModel(String modelName);
102:
103: /**
104: * Gets display name.
105: *
106: * @return current display name
107: */
108: public String getDisplayName();
109:
110: /**
111: * Gets execution stratergy code set for this collaboration.
112: * @return execution stratergy code
113: */
114: public Integer getExecutionStrategyCode();
115:
116: /**
117: * get the parent repository object
118: *
119: * @return parent repository object
120: */
121: public Object getParent();
122:
123: /**
124: * get runtime db model
125: *
126: * @return runtime dbmodel
127: */
128: public RuntimeDatabaseModel getRuntimeDbModel();
129:
130: /**
131: * Gets a List of target DatabaseModels
132: *
133: * @return List, possibly empty, of source DatabaseModels
134: */
135: public List<SQLDBModel> getSourceDatabaseModels();
136:
137: /**
138: * Gets the List of SourceTables
139: *
140: * @return List, possibly empty, of SourceTables
141: */
142: public List<DBTable> getSourceTables();
143:
144: /**
145: * get the sql definition
146: *
147: * @return sqldefinition
148: */
149: public SQLDefinition getSQLDefinition();
150:
151: /**
152: * Gets a List of target DatabaseModels
153: *
154: * @return List, possibly empty, of target DatabaseModels
155: */
156: public List<SQLDBModel> getTargetDatabaseModels();
157:
158: /**
159: * Gets the List of TargetTables
160: *
161: * @return List, possibly empty, of TargetTables
162: */
163: public List<DBTable> getTargetTables();
164:
165: /**
166: * get the version
167: *
168: * @return version
169: */
170: public String getVersion();
171:
172: /**
173: * Check if a java operator is used in the model.
174: *
175: * @return true if a java operator is used.
176: */
177: public boolean isContainsJavaOperators();
178:
179: /**
180: * Parses the XML content, if any, using the given Element as a source for
181: * reconstituting the member variables and collections of this instance.
182: *
183: * @param xmlElement DOM element containing XML marshalled version of a SQLDefinition
184: * instance
185: * @throws BaseException thrown while parsing XML, or if xmlElement is null
186: */
187: public void parseXML(Element xmlElement) throws BaseException;
188:
189: /**
190: * remove sql object listener
191: *
192: * @param listener sql object listener
193: */
194: public void removeSQLObjectListener(SQLObjectListener listener);
195:
196: /**
197: * Sets display name to given value.
198: *
199: * @param newName new display name
200: */
201: public void setDisplayName(String newName);
202:
203: /**
204: * Sets execution stratergy codefor this collaboration.
205: * @param code execution stratergy code
206: */
207: public void setExecutionStrategyCode(Integer code);
208:
209: /**
210: * set the parent repository object
211: *
212: * @param parent parent repository object
213: */
214: public void setParent(Object parent);
215:
216: /**
217: * Returns the XML representation of collabSegment.
218: *
219: * @param prefix the xml.
220: * @return Returns the XML representation of colabSegment.
221: */
222: public String toXMLString(String prefix) throws BaseException;
223:
224: /**
225: * validate the definition starting from the target tables.
226: *
227: * @return Map of invalid input object as keys and reason as value
228: */
229: public List<ValidationInfo> validate();
230:
231: /**
232: * validate the definition starting from the target tables.
233: *
234: * @return Map of invalid input object as keys and reason as value
235: */
236: public List<ValidationInfo> badgeValidate();
237: }
|