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