001package gudusoft.gsqlparser.nodes;
002
003
004import gudusoft.gsqlparser.EExpressionType;
005import gudusoft.gsqlparser.ESetScope;
006import gudusoft.gsqlparser.TSourceToken;
007
008
009public class TSetAssignment extends TParseTreeNode {
010
011    private TExpression expression;
012    private ESetScope setScope = ESetScope.defaultScope;
013
014    private TObjectName parameterName;
015    private TExpression parameterValue;
016
017    public TObjectName getParameterName() {
018        return parameterName;
019    }
020
021    public TExpression getParameterValue() {
022        return parameterValue;
023    }
024
025    public TExpression getExpression() {
026        return expression;
027    }
028
029    public ESetScope getSetScope() {
030        return setScope;
031    }
032
033    public void init(Object arg1,Object arg2,Object arg3){
034        init(arg1,arg2);
035        if (arg3 != null){
036            TSourceToken st =(TSourceToken)arg3;
037            if (st.toString().equalsIgnoreCase("global")){
038                setScope = ESetScope.global;
039            }else if (st.toString().equalsIgnoreCase("session")){
040                setScope = ESetScope.session;
041            }
042        }
043    }
044
045    /**
046     * used in hive set statement
047     * @param arg1
048     */
049    public void init(Object arg1){
050        expression = (TExpression)arg1;
051        if ((expression.getLeftOperand()!= null) && (expression.getLeftOperand().getExpressionType() == EExpressionType.simple_object_name_t)){
052            parameterName = expression.getLeftOperand().getObjectOperand();
053            parameterValue = expression.getRightOperand();
054        }
055
056    }
057
058    public void init(Object arg1,Object arg2){
059        parameterName = (TObjectName)arg1;
060        parameterValue = (TExpression)arg2;
061
062        if ((arg1 == null)&&(arg2 instanceof TExpression)){
063            expression = (TExpression) arg2;
064            if ((expression.getLeftOperand() != null)&&(expression.getLeftOperand().getExpressionType() == EExpressionType.simple_object_name_t)){
065                parameterName = expression.getLeftOperand().getObjectOperand();
066                parameterValue = expression.getRightOperand();
067            }
068        }
069    }
070
071    public void accept(TParseTreeVisitor v){
072        v.preVisit(this);
073        v.postVisit(this);
074    }
075
076    public void acceptChildren(TParseTreeVisitor v){
077        v.preVisit(this);
078        v.postVisit(this);
079    }
080
081    public void setExpression(TExpression expression) {
082        this.expression = expression;
083    }
084
085    public void setSetScope(ESetScope setScope) {
086        this.setScope = setScope;
087    }
088}