001package gudusoft.gsqlparser.nodes.mssql;
002
003import gudusoft.gsqlparser.EExecuteAsOption;
004import gudusoft.gsqlparser.TSourceToken;
005import gudusoft.gsqlparser.nodes.TParseTreeNode;
006import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
007
008/**
009 * SQL Server execute as clause
010 */
011public class TExecuteAsClause extends TParseTreeNode {
012
013    private EExecuteAsOption executeAsOption;
014    private String userName;
015
016
017    public void setExecuteAsOption(EExecuteAsOption executeAsOption) {
018        this.executeAsOption = executeAsOption;
019    }
020
021    public EExecuteAsOption getExecuteAsOption() {
022
023        return executeAsOption;
024    }
025
026    public void setUserName(String userName) {
027        this.userName = userName;
028    }
029
030    public String getUserName() {
031
032        return userName;
033    }
034
035    public void init(Object arg1){
036        if (arg1 instanceof TSourceToken){
037            String str = ((TSourceToken)arg1).toString();
038            if (str.startsWith("'")){
039                executeAsOption = EExecuteAsOption.eaoString;
040                userName = str;
041            }else{
042                if (str.equalsIgnoreCase("OWNER")){
043                    executeAsOption = EExecuteAsOption.eaoOwner;
044                }else if (str.equalsIgnoreCase("CALLER")){
045                    executeAsOption = EExecuteAsOption.eaoCaller;
046                }else if (str.equalsIgnoreCase("SELF")){
047                    executeAsOption = EExecuteAsOption.eaoSelf;
048                }else{
049                    executeAsOption = EExecuteAsOption.eaoUser;
050                    userName = str;
051
052                }
053            }
054        }
055
056    }
057
058    public void accept(TParseTreeVisitor v){
059        v.preVisit(this);
060        v.postVisit(this);
061    }
062
063    public void acceptChildren(TParseTreeVisitor v){
064        v.preVisit(this);
065        v.postVisit(this);
066    }
067}