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.*;
009
010import java.util.ArrayList;
011
012public class TAlterRoleStmt extends TCustomSqlStatement {
013
014    private TObjectName roleName;
015    private TObjectName newRoleName;
016
017    private TAlterRoleSqlNode.EAlterRoleType alterType;
018    private TObjectName roleSpecification;
019    private TObjectName inDatabase;
020    private ArrayList<TRoleOption> roleOptions;
021    private TObjectName parameterName;
022    private TExpression parameterValue;
023    private boolean isResetAll;
024
025    public TAlterRoleSqlNode.EAlterRoleType getAlterType() {
026        return alterType;
027    }
028
029    public TObjectName getRoleSpecification() {
030        return roleSpecification;
031    }
032
033    public TObjectName getInDatabase() {
034        return inDatabase;
035    }
036
037    public ArrayList<TRoleOption> getRoleOptions() {
038        return roleOptions;
039    }
040
041    public TObjectName getParameterName() {
042        return parameterName;
043    }
044
045    public TExpression getParameterValue() {
046        return parameterValue;
047    }
048
049    public boolean isResetAll() {
050        return isResetAll;
051    }
052
053    public TAlterRoleStmt(EDbVendor dbvendor) {
054        super(dbvendor);
055        sqlstatementtype = ESqlStatementType.sstAlterRole;
056    }
057
058
059    public TObjectName getRoleName() {
060        return roleName;
061    }
062
063    public TObjectName getNewRoleName() {
064        return newRoleName;
065    }
066
067    public int doParseStatement(TCustomSqlStatement psql) {
068        if (rootNode == null) return -1;
069        super.doParseStatement(psql);
070        switch (dbvendor) {
071            case dbvpostgresql:
072                TAlterRoleSqlNode alterRoleNode = (TAlterRoleSqlNode)rootNode;
073                this.alterType = alterRoleNode.getAlterType();
074                this.roleSpecification = alterRoleNode.getRoleSpecification();
075                this.roleName = this.roleSpecification;
076                this.roleName.setDbObjectType(EDbObjectType.role);
077                this.inDatabase = alterRoleNode.getInDatabase();
078                this.newRoleName = alterRoleNode.getNewRoleName();
079                if (this.newRoleName != null) {
080                    this.newRoleName.setDbObjectType(EDbObjectType.role);
081                }
082                this.roleOptions = alterRoleNode.getRoleOptions();
083                this.parameterName = alterRoleNode.getParameterName();
084                this.parameterValue = alterRoleNode.getParameterValue();
085                this.isResetAll = alterRoleNode.isResetAll();
086                break;
087            default:
088                TDummy node = (TDummy)(rootNode);
089                roleName = (TObjectName)node.node1;
090                if (roleName != null){
091                    this.roleName.setDbObjectType(EDbObjectType.role);
092                }
093                newRoleName = (TObjectName)node.node2;
094                if (newRoleName != null){
095                    this.newRoleName.setDbObjectType(EDbObjectType.role);
096                }
097                break;
098        }
099
100        return 0;
101    }
102
103    public void accept(TParseTreeVisitor v){
104        v.preVisit(this);
105        v.postVisit(this);
106    }
107
108    public void acceptChildren(TParseTreeVisitor v){
109        v.preVisit(this);
110        v.postVisit(this);
111    }
112}