001package gudusoft.gsqlparser.stmt; 002 003 004import gudusoft.gsqlparser.EDbObjectType; 005import gudusoft.gsqlparser.EDbVendor; 006import gudusoft.gsqlparser.ESqlStatementType; 007import gudusoft.gsqlparser.TCustomSqlStatement; 008import gudusoft.gsqlparser.nodes.TDummy; 009import gudusoft.gsqlparser.nodes.TObjectName; 010import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 011 012public class TCreateAliasStmt extends TCustomSqlStatement { 013 014 private TObjectName aliasName; 015 private EDbObjectType aliasType; 016 private TObjectName tableAlias; 017 private TObjectName moduleAlias; 018 private TObjectName sequenceAlias; 019 020 /** 021 * Sequence alias name, valid only when {@link #aliasType} = EDbObjectType.sequence 022 * @return Sequence alias name 023 */ 024 public TObjectName getSequenceAlias() { 025 return sequenceAlias; 026 } 027 028 /** 029 * Module alias name, valid only when {@link #aliasType} = EDbObjectType.module 030 * @return module alias name 031 */ 032 public TObjectName getModuleAlias() { 033 return moduleAlias; 034 } 035 036 /** 037 * Table alias name, valid only when {@link #aliasType} = EDbObjectType.table 038 * @return table alias name 039 */ 040 public TObjectName getTableAlias() { 041 return tableAlias; 042 } 043 044 045 046 047 /** 048 * One of those types: Table, Module and Sequence 049 * @return type of this alias. 050 */ 051 public EDbObjectType getAliasType() { 052 return aliasType; 053 } 054 055 056 /** 057 * Alias created. 058 * @return Name of created Alias. 059 */ 060 public TObjectName getAliasName() { 061 062 return aliasName; 063 } 064 065 public TCreateAliasStmt(EDbVendor dbvendor) { 066 super(dbvendor); 067 sqlstatementtype = ESqlStatementType.sstdb2createalias; 068 } 069 070 public int doParseStatement(TCustomSqlStatement psql) { 071 if (rootNode == null) return -1; 072 super.doParseStatement(psql); 073 TDummy node = (TDummy)rootNode; 074 aliasName = (TObjectName)(node.node1); 075 aliasName.setDbObjectType(EDbObjectType.alias); 076 aliasType = node.objectType; 077 switch (aliasType){ 078 case table: 079 tableAlias = (TObjectName)node.node2; 080 tableAlias.setDbObjectType(EDbObjectType.table); 081 break; 082 case module: 083 moduleAlias = (TObjectName)node.node2; 084 moduleAlias.setDbObjectType(EDbObjectType.module); 085 break; 086 case sequence: 087 sequenceAlias = (TObjectName)node.node2; 088 sequenceAlias.setDbObjectType(EDbObjectType.sequence); 089 break; 090 } 091 092 return 0; 093 } 094 095 public void accept(TParseTreeVisitor v){ 096 v.preVisit(this); 097 v.postVisit(this); 098 } 099 100 public void acceptChildren(TParseTreeVisitor v){ 101 v.preVisit(this); 102 v.postVisit(this); 103 } 104}