001package gudusoft.gsqlparser.nodes;
002
003
004import gudusoft.gsqlparser.EDbObjectType;
005import gudusoft.gsqlparser.TSourceTokenList;
006import gudusoft.gsqlparser.nodes.mssql.TProcedureOption;
007import gudusoft.gsqlparser.nodes.oracle.TInvokerRightsClause;
008import gudusoft.gsqlparser.TBaseType;
009
010/**
011 * Internal use in the parser.
012*/
013
014public class TCreateProcedureSqlNode extends TParseTreeNode {
015
016    private TTypeName returnDataType = null;
017
018    public void setReturnDataType(TTypeName returnDataType) {
019        this.returnDataType = returnDataType;
020    }
021
022    public TTypeName getReturnDataType() {
023
024        return returnDataType;
025    }
026
027    private TConstant functionBody = null;
028
029    public TSourceTokenList getFunctionBodyTokenList() {
030        return functionBodyTokenList;
031    }
032
033    private TSourceTokenList functionBodyTokenList = null;
034
035    public void setFunctionBody(TConstant functionBody) {
036        this.functionBody = functionBody;
037    }
038    public void setFunctionBody(TDummy functionBody) {
039        // used in netezza
040        if (functionBody.node1 != null){
041            if (functionBody.node1 instanceof TConstant){
042                this.functionBody = (TConstant)functionBody.node1;
043            }
044        }else if ((functionBody.st1 != null)&&(functionBody.st2 != null)){
045             functionBodyTokenList = new TSourceTokenList();
046             for(int i=functionBody.st1.posinlist; i< functionBody.st2.posinlist;i++){
047                 functionBodyTokenList.add(functionBody.st1.container.get(i));
048             }
049        }
050
051    }
052
053    public TConstant getFunctionBody() {
054        return functionBody;
055    }
056    private TConstant procedureLanguage;
057
058    public void setProcedureLanguage(TConstant procedureLanguage) {
059        this.procedureLanguage = procedureLanguage;
060    }
061
062    public TConstant getProcedureLanguage() {
063        return procedureLanguage;
064    }
065    private TConstant objfile;
066    private TConstant linkSymbol;
067
068    public TConstant getLinkSymbol() {
069        return linkSymbol;
070    }
071
072    public TConstant getObjfile() {
073        return objfile;
074    }
075
076    public void setFunctionOption(TCreateFunctionOption option){
077        switch (option.getOptionType()){
078            case block:
079                functionBody = option.getFunctionBody();
080                break;
081            case stmts:
082                //setStmts(option.getSqlNodes());
083                functionBody = option.getFunctionBody();
084                break;
085            case language:
086                procedureLanguage = option.getLanguage();
087                break;
088            case objfile:
089                objfile = option.getObjfile();
090                linkSymbol = option.getLinkSymbol();
091                break;
092            default:
093                break;
094        }
095    }
096
097    public void setFunctionOptions(TPTNodeList<TCreateFunctionOption> options){
098        if (options == null) return;
099        for(int i=0;i<options.size();i++){
100            setFunctionOption(options.getElement(i));
101        }
102    }
103
104    private TObjectName endlabelName;
105
106    public void setEndlabelName(TObjectName endlabelName) {
107        this.endlabelName = endlabelName;
108    }
109
110    public TObjectName getEndlabelName() {
111
112        return endlabelName;
113    }
114
115    private TPTNodeList <TProcedureOption> procedureOptions;
116
117    public void setProcedureOptions(TPTNodeList<TProcedureOption> procedureOptions) {
118        this.procedureOptions = procedureOptions;
119    }
120
121    public TPTNodeList<TProcedureOption> getProcedureOptions() {
122
123        return procedureOptions;
124    }
125
126    private boolean isForReplication;
127
128    public void setForReplication(boolean isForReplication) {
129        this.isForReplication = isForReplication;
130    }
131
132    public boolean isForReplication() {
133
134        return isForReplication;
135    }
136
137    private TObjectName labelName;
138
139    public void setLabelName(TObjectName labelName) {
140        this.labelName = labelName;
141    }
142
143    public TObjectName getLabelName() {
144
145        return labelName;
146    }
147
148    private TInvokerRightsClause invokerRightsClause;
149
150    public void setInvokerRightsClause(TInvokerRightsClause invokerRightsClause) {
151        this.invokerRightsClause = invokerRightsClause;
152    }
153
154    public TInvokerRightsClause getInvokerRightsClause() {
155
156        return invokerRightsClause;
157    }
158
159    private TCallSpec callSpec = null;
160
161    public void setCallSpec(TCallSpec callSpec) {
162        this.callSpec = callSpec;
163    }
164
165    public TCallSpec getCallSpec() {
166
167        return callSpec;
168    }
169
170    public TObjectName getProcedureName() {
171        return procedureName;
172    }
173
174    private TObjectName procedureName = null;
175
176    public TParameterDeclarationList getParameters() {
177        return parameters;
178    }
179
180    private TParameterDeclarationList parameters = null;
181
182    public void setParameters(TParameterDeclarationList parameters) {
183        this.parameters = parameters;
184    }
185
186    public void setParametersByDummy(TDummy node) {
187        if (node == null) return;
188        if (node.node1 != null){
189            this.parameters = (TParameterDeclarationList)node.node1;
190        }
191    }
192
193    private TStatementListSqlNode innerStmts = null; //oracle plsql
194
195    public void setInnerStmts(TStatementListSqlNode innerStmts) {
196        this.innerStmts = innerStmts;
197    }
198
199    private TStatementSqlNode stmt = null;//mysql single stmt in function body
200
201    public void setStmt(TStatementSqlNode stmt) {
202        this.stmt = stmt;
203    }
204
205    public TStatementSqlNode getStmt() {
206
207        return stmt;
208    }
209
210    private TBlockSqlNode blcok = null;    // MySQL
211
212    public void setBlcok(TBlockSqlNode blcok) {
213        this.blcok = blcok;
214    }
215
216    public TBlockSqlNode getBlcok() {
217
218        return blcok;
219    }
220
221    public void init(Object arg1)
222    {
223       procedureName = (TObjectName)arg1;
224       //procedureName.setObjectType(TObjectName.ttobjProcedureName);
225       procedureName.setDbObjectType(EDbObjectType.procedure);
226       procedureName.splitNameInQuotedIdentifier();
227    }
228    
229    public int getKind() {
230        return kind;
231    }
232
233    public void setKind(int kind) {
234        this.kind = kind;
235
236    }
237
238    private int kind = TBaseType.kind_create;
239
240    public TExceptionClause getExceptionClause() {
241        return exceptionClause;
242    }
243
244    public void setExceptionClause(TExceptionClause exceptionClause) {
245        this.exceptionClause = exceptionClause;
246    }
247
248    private TExceptionClause exceptionClause = null; //plsql exception
249
250    public TStatementListSqlNode getInnerStmts() {
251        return innerStmts;
252    }
253
254    public TStatementListSqlNode getStmts() {
255        return stmts;
256    }
257
258    private TStatementListSqlNode stmts = null;
259
260    public TStatementListSqlNode getDeclareStmts() {
261        return declareStmts;
262    }
263
264    public void setDeclareStmts(TStatementListSqlNode declareStmts) {
265        this.declareStmts = declareStmts;
266
267    }
268
269    private TStatementListSqlNode declareStmts = null;
270
271    public void setStmts(TStatementListSqlNode stmts) {
272        this.stmts = stmts;
273    }
274
275    private TCompoundSqlNode compoundSqls = null;
276
277    public void setCompoundSqls(TCompoundSqlNode compoundSqls) {
278        this.compoundSqls = compoundSqls;
279    }
280
281    public TCompoundSqlNode getCompoundSqls() {
282
283        return compoundSqls;
284    }
285}