001package gudusoft.gsqlparser.stmt.oracle; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.nodes.TCreatePackageSqlNode; 005import gudusoft.gsqlparser.nodes.TObjectName; 006import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 007import gudusoft.gsqlparser.nodes.oracle.TInvokerRightsClause; 008import gudusoft.gsqlparser.stmt.TCommonStoredProcedureSqlStatement; 009 010/** 011 * The CREATE PACKAGE statement creates or replaces the specification for a stored package, 012 * which is an encapsulated collection of related procedures, functions, 013 * and other program objects stored together in the database. 014 * The package specification declares these objects. 015 * The package body, specified subsequently, defines these objects. 016 * 017 * @see gudusoft.gsqlparser.stmt.TCommonStoredProcedureSqlStatement#declareStatements 018 * @see gudusoft.gsqlparser.stmt.TCommonStoredProcedureSqlStatement#bodyStatements 019*/ 020 021public class TPlsqlCreatePackage extends TCommonStoredProcedureSqlStatement { 022 023 public void setPackageNameStr(String packageNameStr) { 024 this.packageNameStr = packageNameStr; 025 } 026 027 public String getPackageNameStr() { 028 return packageNameStr; 029 } 030 031 // found in getRawStatement() method 032 private String packageNameStr; 033 034 private TObjectName endlabelName; 035 036 037 public TObjectName getEndlabelName() { 038 039 return endlabelName; 040 } 041 042 private TInvokerRightsClause invokerRightsClause; 043 044 public void setInvokerRightsClause(TInvokerRightsClause invokerRightsClause) { 045 this.invokerRightsClause = invokerRightsClause; 046 } 047 048 public TInvokerRightsClause getInvokerRightsClause() { 049 050 return invokerRightsClause; 051 } 052 053 @Override 054 public TObjectName getStoredProcedureName(){ 055 return packageName; 056 } 057 /** 058 * This class represents package specification or create package body. 059 * @return 060 */ 061 public int getKind() { 062 return kind; 063 } 064 065 private int kind = TBaseType.kind_create; 066 067 public TPlsqlCreatePackage(){ 068 this(EDbVendor.dbvoracle); 069 } 070 071 public TPlsqlCreatePackage(EDbVendor dbvendor){ 072 super(dbvendor); 073 sqlstatementtype = ESqlStatementType.sstplsql_createpackage ; 074 } 075 076 void buildsql() { 077 } 078 079 void clear() { 080 } 081 082 String getasprettytext() { 083 return ""; 084 } 085 086 void iterate(TVisitorAbs pvisitor) { 087 } 088 089 public int doParseStatement(TCustomSqlStatement psql) { 090 if (rootNode == null) return -1; 091 if (super.doParseStatement(psql) != 0) return -1; 092 093 TCreatePackageSqlNode createPackageNode = (TCreatePackageSqlNode)rootNode; 094 095 this.packageName = createPackageNode.getPackageName(); 096 this.kind = createPackageNode.getKind(); 097 098 invokerRightsClause = createPackageNode.getInvokerRightsClause(); 099 setEndlabelName(createPackageNode.getLabelName()); 100 101 if (createPackageNode.getDefinitions_or_declarations() != null){ 102 createPackageNode.getDefinitions_or_declarations().doParse(this,ESqlClause.unknown); 103 for(int i=0;i<createPackageNode.getDefinitions_or_declarations().size();i++){ 104 this.getDeclareStatements().add(createPackageNode.getDefinitions_or_declarations().getStatementSqlNode(i).getStmt()); 105 } 106 } 107 108 if (createPackageNode.getStmts() != null){ 109 createPackageNode.getStmts().doParse(this,ESqlClause.unknown); 110 for(int i=0;i<createPackageNode.getStmts().size();i++){ 111 this.getBodyStatements().add(createPackageNode.getStmts().getStatementSqlNode(i).getStmt()); 112 } 113 } 114 115 if (createPackageNode.getExceptionClause() != null){ 116 createPackageNode.getExceptionClause().doParse(this,ESqlClause.unknown); 117 // this.setExceptionClause(createPackageNode.getExceptionClause()); 118 } 119 120 endlabelName = createPackageNode.getEndlabelName(); 121 return 0; 122 } 123 124 private TObjectName packageName; 125 126 public void setPackageName(TObjectName packageName) { 127 this.packageName = packageName; 128 } 129 130 /** 131 * Name of a package stored in the database. 132 * @return 133 */ 134 public TObjectName getPackageName() { 135 return packageName; 136 } 137 138 139 public void accept(TParseTreeVisitor v){ 140 v.preVisit(this); 141 v.postVisit(this); 142 } 143 144 public void acceptChildren(TParseTreeVisitor v){ 145 v.preVisit(this); 146 if (this.getParameterDeclarations() != null) getParameterDeclarations().acceptChildren(v); 147 if (this.getDeclareStatements().size() > 0) this.getDeclareStatements().acceptChildren(v); 148 if ( this.getBodyStatements().size() > 0) getBodyStatements().acceptChildren(v); 149 if (getExceptionClause() != null) getExceptionClause().acceptChildren(v); 150 151 v.postVisit(this); 152 } 153 154 public void setKind(int kind) { 155 this.kind = kind; 156 } 157}