001package gudusoft.gsqlparser.nodes;
002
003
004import gudusoft.gsqlparser.EDbObjectType;
005
006public class TStageLocation extends TParseTreeNode {
007
008    public enum EStageLocationType { internalUser,  internalTable, internalNamed, external, location, unknown};
009
010    private EStageLocationType stageLocationType  = TStageLocation.EStageLocationType.unknown;
011
012    public EStageLocationType getStageLocationType() {
013        return stageLocationType;
014    }
015
016    private boolean isStage = true;
017
018    public void setStage(boolean stage) {
019        isStage = stage;
020    }
021
022    public boolean isStage() {
023        return isStage;
024    }
025
026    private TObjectName nameSpace;
027    private TObjectName stageName;
028    private TObjectName tableName;
029    private TObjectName externalLocation;
030
031    public void setExternalLocation(TObjectName externalLocation) {
032        this.externalLocation = externalLocation;
033    }
034
035    public TObjectName getExternalLocation() {
036        return externalLocation;
037    }
038
039    public void init(Object arg1, Object arg2,Object arg3){
040        init(arg1,arg2);
041        switch (stageLocationType){
042            case internalTable:
043            case internalNamed:
044                this.nameSpace = (TObjectName)arg3;
045                this.nameSpace.setDbObjectType(EDbObjectType.schema);
046                break;
047        }
048    }
049    public void init(Object arg1, Object arg2){
050        init(arg1);
051        this.stageName = (TObjectName)arg2;
052        this.stageName.setDbObjectType(EDbObjectType.stage);
053    }
054
055    public void init(Object arg1){
056        this.stageLocationType = (EStageLocationType)arg1;
057    }
058
059    public void setNameSpace(TObjectName nameSpace) {
060        this.nameSpace = nameSpace;
061    }
062
063    public void setStageName(TObjectName stageName) {
064        this.stageName = stageName;
065    }
066
067    public void setTableName(TObjectName tableName) {
068        this.tableName = tableName;
069    }
070
071    public void setPath(TPathSqlNode path) {
072        this.path = path;
073    }
074
075    public TObjectName getNameSpace() {
076        return nameSpace;
077    }
078
079    public TObjectName getStageName() {
080        return stageName;
081    }
082
083    public TObjectName getTableName() {
084        return tableName;
085    }
086
087    public TPathSqlNode getPath() {
088        return path;
089    }
090
091    private TPathSqlNode path;
092
093    public void accept(TParseTreeVisitor v){
094        v.preVisit(this);
095        v.postVisit(this);
096    }
097    public void acceptChildren(TParseTreeVisitor v){
098        v.preVisit(this);
099        v.postVisit(this);
100    }
101}