001package gudusoft.gsqlparser.nodes;
002
003
004import gudusoft.gsqlparser.TBaseType;
005import gudusoft.gsqlparser.stmt.TCreateSchemaSqlStatement;
006
007public class TCreateSchemaSqlNode extends TParseTreeNode {
008    public enum ESchemaMode  {nameOnly, nameWithAuthor,authorOnly,externalSchema};
009
010    private TObjectName sourceDatabase;
011    private TObjectName sourceSchema;
012
013    public TObjectName getSourceDatabase() {
014        return sourceDatabase;
015    }
016
017    public TObjectName getSourceSchema() {
018        return sourceSchema;
019    }
020
021    public void setDatabasebyDummy(TDummy dummy){
022        if (dummy == null) return;
023        sourceDatabase = (TObjectName)dummy.node1;
024        if (dummy.node2 != null){
025            sourceSchema = (TObjectName)dummy.node2;
026        }
027    }
028
029
030    public void setFromSourceByDummy(TDummy dummy){
031        switch (dummy.int1){
032            case 1:
033                this.fromSource = TCreateSchemaSqlStatement.EFromSource.dataCatalog;
034                break;
035            case 2:
036                this.fromSource = TCreateSchemaSqlStatement.EFromSource.hiveMetestore;
037                break;
038            case 3:
039                this.fromSource = TCreateSchemaSqlStatement.EFromSource.postgres;
040                break;
041            case 4:
042                this.fromSource = TCreateSchemaSqlStatement.EFromSource.mysql;
043                break;
044            case 5:
045                this.fromSource = TCreateSchemaSqlStatement.EFromSource.kinesis;
046                break;
047            case 6:
048                this.fromSource = TCreateSchemaSqlStatement.EFromSource.redshift;
049                break;
050        }
051    }
052
053    public TCreateSchemaSqlStatement.EFromSource getFromSource() {
054        return fromSource;
055    }
056
057    private TCreateSchemaSqlStatement.EFromSource fromSource;
058
059    private ESchemaMode schemaMode = ESchemaMode.nameOnly;
060
061    private boolean externalSchema;
062
063    public boolean isExternalSchema() {
064        return externalSchema;
065    }
066
067    private TObjectName schemaName = null;
068    private TObjectName ownerName;
069    private TStatementListSqlNode statementListSqlNode;
070
071    public TStatementListSqlNode getStatementListSqlNode() {
072        return statementListSqlNode;
073    }
074
075    public  void setSchemaNameClause(TDummy dummy){
076        schemaName = (TObjectName)dummy.node1;
077        ownerName = (TObjectName)dummy.node2;
078    }
079
080    public TObjectName getOwnerName() {
081        return ownerName;
082    }
083
084    public void init(Object arg1)
085    {
086        statementListSqlNode = (TStatementListSqlNode)arg1;
087    }
088
089    public void init(Object arg1,Object arg2){
090        schemaMode = (ESchemaMode)arg1;
091        switch (schemaMode){
092            case nameOnly:
093            case nameWithAuthor:
094                schemaName = (TObjectName)arg2;
095                break;
096            case authorOnly:
097                ownerName = (TObjectName)arg2;
098                break;
099            case externalSchema:
100                schemaName = (TObjectName)arg2;
101                externalSchema = true;
102                break;
103        }
104    }
105
106    public void init(Object arg1,Object arg2,Object arg3){
107        init(arg1,arg2);
108        switch (schemaMode){
109            case nameWithAuthor:
110                ownerName = (TObjectName)arg3;
111                break;
112        }
113    }
114
115    public TObjectName getSchemaName() {
116        return schemaName;
117    }
118
119}