001package gudusoft.gsqlparser.stmt; 002 003 004import gudusoft.gsqlparser.*; 005import gudusoft.gsqlparser.nodes.*; 006import gudusoft.gsqlparser.nodes.mssql.TMssqlStmtStubSqlNode; 007 008public class TCreateSchemaSqlStatement extends TBlockSqlStatement { 009 010 public enum EFromSource {dataCatalog,hiveMetestore,postgres,mysql,kinesis,redshift,NA}; 011 012 private EFromSource fromSource = EFromSource.NA; 013 014 private TObjectName sourceDatabase; 015 private TObjectName sourceSchema; 016 017 public TObjectName getSourceDatabase() { 018 return sourceDatabase; 019 } 020 021 public TObjectName getSourceSchema() { 022 return sourceSchema; 023 } 024 025 public EFromSource getFromSource() { 026 return fromSource; 027 } 028 029 public TCreateSchemaSqlStatement(EDbVendor dbvendor) { 030 super(dbvendor); 031 sqlstatementtype = ESqlStatementType.sstcreateschema; 032 } 033 034 void buildsql() { 035 } 036 037 void clear() { 038 } 039 040 String getasprettytext() { 041 return ""; 042 } 043 044 void iterate(TVisitorAbs pvisitor) { 045 } 046 047 private boolean externalSchema; 048 049 public boolean isExternalSchema() { 050 return externalSchema; 051 } 052 053 private TObjectName schemaName = null; 054 private TObjectName ownerName; 055 private TObjectName cloneSourceSchema = null; 056 057 public TObjectName getCloneSourceSchema() { 058 return cloneSourceSchema; 059 } 060 061 public TObjectName getOwnerName() { 062 return ownerName; 063 } 064 065 public TObjectName getSchemaName() { 066 return schemaName; 067 } 068 069 public int doParseStatement(TCustomSqlStatement psql) { 070 if (rootNode == null) return -1; 071 super.doParseStatement(psql); 072 TDummy node; 073 TCreateSchemaSqlNode schemaNode; 074 switch (dbvendor){ 075 case dbvmssql: 076 case dbvpostgresql: 077 schemaNode = (TCreateSchemaSqlNode) rootNode; 078 schemaName = schemaNode.getSchemaName(); 079 ownerName = schemaNode.getOwnerName(); 080 081 if (schemaNode.getStatementListSqlNode() != null){ 082 schemaNode.getStatementListSqlNode().doParse(this,ESqlClause.unknown); 083 084 for(int i=0;i<schemaNode.getStatementListSqlNode().size();i++){ 085 this.getBodyStatements().add(schemaNode.getStatementListSqlNode().getStatementSqlNode(i).getStmt()); 086 } 087 } 088 break; 089 case dbvredshift: 090 schemaNode = (TCreateSchemaSqlNode) rootNode; 091 schemaName = schemaNode.getSchemaName(); 092 ownerName = schemaNode.getOwnerName(); 093 externalSchema = schemaNode.isExternalSchema(); 094 fromSource = schemaNode.getFromSource(); 095 sourceDatabase = schemaNode.getSourceDatabase(); 096 sourceSchema = schemaNode.getSourceSchema(); 097 break; 098 case dbvsnowflake: 099 node = (TDummy)rootNode; 100 schemaName = (TObjectName)node.node1; 101 cloneSourceSchema = (TObjectName)node.node2; 102 break; 103 case dbvhana: 104 node = (TDummy)rootNode; 105 schemaName = (TObjectName)node.node1; 106 break; 107 } 108 109 if((getSqlEnv().getDefaultCatalogName() != null)&&(schemaName != null)){ 110 if (schemaName.getDatabaseToken() == null){ 111 schemaName.setDatabaseToken(new TSourceToken(getSqlEnv().getDefaultCatalogName())); 112 } 113 } 114 115 return 0; 116 } 117 118 public void accept(TParseTreeVisitor v) { 119 v.preVisit(this); 120 v.postVisit(this); 121 } 122 123 124 public void acceptChildren(TParseTreeVisitor v) { 125 v.preVisit(this); 126 v.postVisit(this); 127 } 128 129 public void setSchemaName(TObjectName schemaName) { 130 this.schemaName = schemaName; 131 } 132}