001package gudusoft.gsqlparser.stmt.mssql;
002
003import gudusoft.gsqlparser.*;
004import gudusoft.gsqlparser.nodes.TExecuteAsSqlNode;
005import gudusoft.gsqlparser.nodes.TObjectName;
006import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
007import gudusoft.gsqlparser.nodes.mssql.TExecuteAsClause;
008
009public class TMssqlExecuteAs extends TCustomSqlStatement {
010     public TMssqlExecuteAs (EDbVendor dbvendor){
011        super(dbvendor);
012        sqlstatementtype = ESqlStatementType.sstmssqlexecuteas ;
013        }
014
015    void buildsql() {
016    }
017
018    void clear() {
019    }
020
021    String getasprettytext() {
022        return "";
023    }
024
025    void iterate(TVisitorAbs pvisitor) {
026    }
027
028    private EExecuteAsOption executeAsOption;
029
030    public void setExecuteAsOption(EExecuteAsOption executeAsOption) {
031        this.executeAsOption = executeAsOption;
032    }
033
034    public EExecuteAsOption getExecuteAsOption() {
035
036        return executeAsOption;
037    }
038
039    private boolean noRevert;
040    private String userName;
041    private TObjectName loginName;
042
043    public void setLoginName(TObjectName loginName) {
044        this.loginName = loginName;
045    }
046
047    public TObjectName getLoginName() {
048
049        return loginName;
050    }
051
052    private TObjectName cookie;
053
054    public void setCookie(TObjectName cookie) {
055        this.cookie = cookie;
056    }
057
058    public String getUserName() {
059        if (loginName == null) return null;
060
061        return loginName.toString();
062    }
063
064    public void setNoRevert(boolean noRevert) {
065        this.noRevert = noRevert;
066    }
067
068    public void setUserName(String userName) {
069        this.userName = userName;
070    }
071
072    public boolean isNoRevert() {
073
074        return noRevert;
075    }
076
077    public TObjectName getCookie() {
078        return cookie;
079    }
080
081    public int doParseStatement(TCustomSqlStatement psql) {
082        if (rootNode == null) return -1;
083
084        TExecuteAsSqlNode sqlNode = (TExecuteAsSqlNode)rootNode;
085        String str = sqlNode.getLoginToken().toString();
086        if (str.equalsIgnoreCase("USER")){
087            executeAsOption = EExecuteAsOption.eaoUser;
088        }else if (str.equalsIgnoreCase("CALLER")){
089            executeAsOption = EExecuteAsOption.eaoCaller;
090        }else if (str.equalsIgnoreCase("LOGIN")){
091            executeAsOption = EExecuteAsOption.eaoLogin;
092        }
093
094        loginName = sqlNode.getLoginName();
095
096//        if (sqlNode.getNameToken() != null){
097//            userName = sqlNode.getNameToken().toString();
098//        }
099
100        noRevert = sqlNode.isNoRevert();
101        cookie = sqlNode.getCookie();
102
103
104
105        super.doParseStatement(psql);
106       return 0;
107    }
108
109    public void accept(TParseTreeVisitor v){
110        v.preVisit(this);
111        v.postVisit(this);
112    }
113
114    public void acceptChildren(TParseTreeVisitor v){
115        v.preVisit(this);
116        v.postVisit(this);
117    }
118
119}