001package gudusoft.gsqlparser.stmt; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.nodes.*; 005import gudusoft.gsqlparser.nodes.hive.THiveWithDBPropertiesClause; 006import gudusoft.gsqlparser.nodes.mssql.TMssqlStmtStubSqlNode; 007 008/** 009 * 010 */ 011public class TCreateDatabaseSqlStatement extends TCustomSqlStatement { 012 013 private boolean ifNotExists; 014 private TObjectName databaseComment; 015 private TObjectName dbLocation; 016 private TSourceToken database; 017 private THiveWithDBPropertiesClause dbProperties; 018 private TObjectName dbOwner;//redshift 019 020 private TObjectName characterSet; 021 private TObjectName collationName; 022 023 private TObjectName cloneSourceDb = null; 024 025 026 public TObjectName getCloneSourceDb() { 027 return cloneSourceDb; 028 } 029 030 public TObjectName getCharacterSet() { 031 return characterSet; 032 } 033 034 public TObjectName getCollationName() { 035 return collationName; 036 } 037 038 public TObjectName getDbOwner() { 039 return dbOwner; 040 } 041 042 public TSourceToken getDatabase() { 043 return database; 044 } 045 046 public TObjectName getDatabaseComment() { 047 return databaseComment; 048 } 049 050 public TObjectName getDbLocation() { 051 return dbLocation; 052 } 053 054 public THiveWithDBPropertiesClause getDbProperties() { 055 return dbProperties; 056 } 057 058 public boolean isIfNotExists() { 059 return ifNotExists; 060 } 061 062 public TCreateDatabaseSqlStatement(EDbVendor dbvendor) { 063 super(dbvendor); 064 sqlstatementtype = ESqlStatementType.sstcreatedatabase; 065 } 066 067 void buildsql() { 068 } 069 070 void clear() { 071 } 072 073 String getasprettytext() { 074 return ""; 075 } 076 077 void iterate(TVisitorAbs pvisitor) { 078 } 079 080 private TObjectName databaseName = null; 081 082 public TObjectName getDatabaseName() { 083 return databaseName; 084 } 085 086 public int doParseStatement(TCustomSqlStatement psql) { 087 TStubStmtSqlNode sqlNode0; 088 TMssqlStmtStubSqlNode sqlNode; 089 TSourceToken startToken; 090 TSourceTokenList stList; 091 TSourceToken st; 092 093 if (rootNode == null) return -1; 094 switch (dbvendor){ 095 case dbvdb2: 096 sqlNode0 = (TStubStmtSqlNode)rootNode; 097 startToken = sqlNode0.getStartToken(); 098 stList = startToken.container; 099 st = null; 100 for(int i=0;i<stList.size();i++){ 101 st = stList.get(i); 102 if (st.isnonsolidtoken()) continue; 103 if (st.tokencode == TBaseType.ident){ 104 //databaseName = new TNodeFactory().createObjectName(null,null,st); 105 databaseName = TObjectName.createObjectName (this.dbvendor, EDbObjectType.database,st); 106 break; 107 } 108 } 109 break; 110 case dbvmssql: 111 case dbvazuresql: 112 case dbvinformix: 113 //sqlNode = (TMssqlStmtStubSqlNode)rootNode; 114 TCreateDatabaseSqlNode createDatabaseSqlNode2 = (TCreateDatabaseSqlNode)rootNode; 115 startToken = createDatabaseSqlNode2.getStartToken(); 116 stList = startToken.container; 117 st = null; 118 boolean isReady = false; 119 for(int i=startToken.posinlist ;i<stList.size();i++){ 120 st = stList.get(i); 121 if (st.isnonsolidtoken()) continue; 122 if (st.tokencode == TBaseType.rrw_database){ 123 isReady = true; 124 continue; 125 } 126 if (isReady){ 127 //databaseName = new TNodeFactory().createObjectName(null,null,st); 128 databaseName = TObjectName.createObjectName (this.dbvendor, EDbObjectType.database,st); 129 break; 130 } 131 } 132 break; 133 default: 134 TCreateDatabaseSqlNode createDatabaseSqlNode = (TCreateDatabaseSqlNode)rootNode; 135 super.doParseStatement(psql); 136 137 this.databaseName = createDatabaseSqlNode.getDatabaseName(); 138 this.databaseName.setDbObjectType(EDbObjectType.database); 139 this.database = createDatabaseSqlNode.getDatabase(); 140 this.dbLocation = createDatabaseSqlNode.getDbLocation(); 141 this.databaseComment = createDatabaseSqlNode.getDatabaseComment(); 142 this.dbProperties = createDatabaseSqlNode.getDbProperties(); 143 dbOwner = createDatabaseSqlNode.getDbOwner(); 144 characterSet = createDatabaseSqlNode.getCharacterSet(); 145 collationName = createDatabaseSqlNode.getCollationName(); 146 cloneSourceDb = createDatabaseSqlNode.getCloneSourceDb(); 147 break; 148 } 149 150 return 0; 151 } 152 153 public void accept(TParseTreeVisitor v){ 154 v.preVisit(this); 155 v.postVisit(this); 156 } 157 158 159 public void acceptChildren(TParseTreeVisitor v){ 160 v.preVisit(this); 161 this.getDatabaseName().acceptChildren(v); 162 v.postVisit(this); 163 } 164 165 public void setIfNotExists(boolean ifNotExists) { 166 this.ifNotExists = ifNotExists; 167 } 168 169 public void setDatabaseComment(TObjectName databaseComment) { 170 this.databaseComment = databaseComment; 171 } 172 173 public void setDbLocation(TObjectName dbLocation) { 174 this.dbLocation = dbLocation; 175 } 176 177 public void setDbProperties(THiveWithDBPropertiesClause dbProperties) { 178 this.dbProperties = dbProperties; 179 } 180 181 public void setDbOwner(TObjectName dbOwner) { 182 this.dbOwner = dbOwner; 183 } 184 185 public void setDatabaseName(TObjectName databaseName) { 186 this.databaseName = databaseName; 187 } 188}