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