001: package org.netbeans.modules.sql.framework.ui.graph.impl;
002:
003: import java.awt.datatransfer.Transferable;
004: import java.beans.PropertyChangeListener;
005: import java.util.ArrayList;
006: import java.util.HashMap;
007: import java.util.Iterator;
008: import java.util.List;
009: import java.util.Map;
010:
011: import javax.swing.Icon;
012:
013: import org.netbeans.modules.sql.framework.model.SQLOperatorArg;
014: import org.netbeans.modules.sql.framework.ui.graph.IOperatorField;
015: import org.netbeans.modules.sql.framework.ui.graph.IOperatorXmlInfo;
016:
017: import com.sun.sql.framework.jdbc.SQLUtils;
018:
019: /**
020: * Implements IOperatorXmlInfo, but will be used as model for UserFunctions w/o persisting
021: * each of user's customization in Layer file.
022: *
023: * @author Girish Patil
024: * @version $Revision$
025: */
026: public class CustomOperatorNode implements IOperatorXmlInfo {
027: private IOperatorXmlInfo delegate = null;
028: private int inputCount = 0;
029: private List inputList = new ArrayList();
030: private List outputList = new ArrayList();
031: private Map inputFieldMap = new HashMap();
032:
033: private CustomOperatorNode(IOperatorXmlInfo delegate) {
034: this .delegate = delegate;
035: }
036:
037: /**
038: public CustomOperatorNode(IOperatorXmlInfo delegate, Map inputMap) {
039: this(delegate);
040:
041: if ((inputMap != null) && (inputMap.size() > 0)) {
042: this.inputCount = inputMap.size();
043: Iterator itr = inputMap.values().iterator();
044: IOperatorField templateField = delegate.getInputField("arg1");
045: IOperatorField newField = null;
046:
047: int cnt = 1;
048: String argName = null;
049: String argDisplayName = null;
050: String argToolTip = null;
051:
052: if (templateField != null) {
053: argDisplayName = templateField.getDisplayName();
054: argToolTip = templateField.getToolTip();
055: }
056:
057: while (itr.hasNext()) {
058: itr.next();
059: argName = "arg" + cnt;
060:
061: if (templateField != null) {
062: newField = new OperatorFieldNode(argName, argDisplayName);
063: newField.setToolTip(argToolTip);
064: } else {
065: newField = new OperatorFieldNode(argName, argName);
066: }
067:
068: newField.setEditable(false);
069: this.inputList.add(newField);
070: this.inputFieldMap.put(argName, newField);
071: cnt++;
072: }
073: }
074: }*/
075:
076: public CustomOperatorNode(IOperatorXmlInfo delegate,
077: List inputArgs, SQLOperatorArg retType) {
078: this (delegate);
079:
080: if ((inputArgs != null) && (inputArgs.size() > 0)) {
081: this .inputCount = inputArgs.size();
082: Iterator itr = inputArgs.iterator();
083: IOperatorField templateField = delegate
084: .getInputField("arg1");
085: IOperatorField newField = null;
086:
087: int cnt = 1;
088: String argName = null;
089: String argDisplayName = null;
090: String argToolTip = null;
091:
092: if (templateField != null) {
093: //argDisplayName = templateField.getDisplayName();
094: argToolTip = templateField.getToolTip();
095: }
096:
097: while (itr.hasNext()) {
098: SQLOperatorArg inputArg = (SQLOperatorArg) itr.next();
099: argName = inputArg.getArgName(); // "arg" + cnt;
100: argDisplayName = argName
101: + " ("
102: + SQLUtils
103: .getStdSqlType(inputArg.getJdbcType())
104: + ')';
105: if (templateField != null) {
106: newField = new OperatorFieldNode(argName,
107: argDisplayName);
108: newField.setToolTip(argToolTip);
109: } else {
110: newField = new OperatorFieldNode(argName, argName);
111: }
112:
113: newField.setEditable(false);
114: this .inputList.add(newField);
115: this .inputFieldMap.put(argName, newField);
116: cnt++;
117: }
118: String retTypeStr = SQLUtils.getStdSqlType(retType
119: .getJdbcType());
120: IOperatorField outputField = new OperatorFieldNode(retType
121: .getArgName(), retType.getArgName() + " ("
122: + retTypeStr + ')');
123: outputField.setAttributeValue("retTypeStr", retTypeStr);
124: this .outputList.add(outputField);
125: }
126: }
127:
128: public void addPropertyChangeListener(PropertyChangeListener l) {
129: delegate.addPropertyChangeListener(l);
130: }
131:
132: public Object getAttributeValue(String name) {
133: return delegate.getAttributeValue(name);
134: }
135:
136: public String getDisplayName() {
137: return delegate.getDisplayName();
138: }
139:
140: public Icon getIcon() {
141: return delegate.getIcon();
142: }
143:
144: public int getInputCount() {
145: return this .inputCount;
146: }
147:
148: public IOperatorField getInputField(String name) {
149: return (IOperatorField) this .inputFieldMap.get(name);
150: }
151:
152: public List getInputFields() {
153: return this .inputList;
154: }
155:
156: public String getName() {
157: return delegate.getName();
158: }
159:
160: public String getObjectClassName() {
161: return delegate.getObjectClassName();
162: }
163:
164: public int getOutputCount() {
165: return delegate.getOutputCount();
166: }
167:
168: public List getOutputFields() {
169: return this .outputList; // delegate.getOutputFields();
170: }
171:
172: public int getToolbarType() {
173: return delegate.getToolbarType();
174: }
175:
176: public String getToolTip() {
177: return delegate.getToolTip();
178: }
179:
180: public Transferable getTransferable() {
181: return delegate.getTransferable();
182: }
183:
184: public boolean isChecked() {
185: return delegate.isChecked();
186: }
187:
188: public boolean isJavaOperator() {
189: return delegate.isJavaOperator();
190: }
191:
192: public boolean isShowParenthesis() {
193: return delegate.isShowParenthesis();
194: }
195:
196: public void removePropertyChangeListener(PropertyChangeListener l) {
197: delegate.removePropertyChangeListener(l);
198: }
199:
200: public void setAttributeValue(String attrName, Object val) {
201: delegate.setAttributeValue(attrName, val);
202: }
203:
204: public void setChecked(boolean checked) {
205: delegate.setChecked(checked);
206: }
207:
208: public void setDropInstance(boolean dropped) {
209: delegate.setDropInstance(dropped);
210: }
211: }
|