001package gudusoft.gsqlparser.nodes;
002/*
003 * Date: 2010-12-28
004 * Time: 11:11:23
005 */
006
007import gudusoft.gsqlparser.ESetStatementType;
008import gudusoft.gsqlparser.ETransactionIsolationLevel;
009
010public class TSetSqlNode extends TParseTreeNode {
011    public TPTNodeList<TSetAssignment> getAssignments() {
012        return assignments;
013    }
014
015    //private TExpressionList exprList = null;
016    private TPTNodeList<TSetAssignment> assignments;
017    private ESetStatementType setStatementType;
018    private  TObjectName characterSetName;
019    private TObjectName collationName;
020    private TObjectName userName;
021    private TObjectName password;
022    private ETransactionIsolationLevel isolationLevel;
023
024
025    //snowflake
026
027    public void setVariableName(TObjectName variableName) {
028        this.variableName = variableName;
029    }
030
031    public void setVariableNameList(TObjectNameList variableNameList) {
032        this.variableNameList = variableNameList;
033    }
034
035    public void setVariableValue(TExpression variableValue) {
036        this.variableValue = variableValue;
037    }
038
039    public void setVariableValueList(TExpressionList variableValueList) {
040        this.variableValueList = variableValueList;
041    }
042
043    public TObjectName getVariableName() {
044
045        return variableName;
046    }
047
048    public TObjectNameList getVariableNameList() {
049        return variableNameList;
050    }
051
052    public TExpression getVariableValue() {
053        return variableValue;
054    }
055
056    public TExpressionList getVariableValueList() {
057        return variableValueList;
058    }
059
060    private TObjectName variableName;
061    private TObjectNameList variableNameList;
062    private TExpression variableValue;
063    private TExpressionList variableValueList;
064
065    public ESetStatementType getSetStatementType() {
066        return setStatementType;
067    }
068
069    public void init(Object arg1){
070        setStatementType = (ESetStatementType)arg1;
071    }
072
073    public void init(Object arg1,Object arg2){
074        init(arg1);
075        switch (setStatementType){
076            case variable:
077                if (arg2 instanceof TObjectName){
078                    this.variableName = (TObjectName) arg2;
079                }else{
080                    this.assignments = (TPTNodeList)arg2;
081                }
082
083                break;
084            case variableList:
085                variableNameList = (TObjectNameList) arg2;
086                this.variableName = variableNameList.getObjectName(0);
087                break;
088            case character_set:
089            case names:
090                characterSetName = (TObjectName)arg2;
091                break;
092            case password:
093                userName = (TObjectName)arg2;
094                break;
095            case transaction:
096                isolationLevel = (ETransactionIsolationLevel)arg2;
097                break;
098            case schema:
099                variableName = (TObjectName)arg2;
100            case reset:
101                variableName = (TObjectName)arg2;
102            default:
103                break;
104        }
105    }
106
107    public TObjectName getCharacterSetName() {
108        return characterSetName;
109    }
110
111    public TObjectName getCollationName() {
112        return collationName;
113    }
114
115    public ETransactionIsolationLevel getIsolationLevel() {
116        return isolationLevel;
117    }
118
119    public TObjectName getPassword() {
120        return password;
121    }
122
123    public TObjectName getUserName() {
124        return userName;
125    }
126
127    public void init(Object arg1,Object arg2,Object arg3){
128        init(arg1,arg2);
129        switch (setStatementType){
130            case names:
131                collationName = (TObjectName)arg3;
132                break;
133            case password:
134                password = (TObjectName)arg3;
135                break;
136            case variable:
137                if (arg3 instanceof TExpression){
138                    this.variableValue = (TExpression)arg3;
139                }else if (arg3 instanceof TExpressionList){
140                    this.variableValueList = (TExpressionList)arg3;
141                    this.variableValue = this.variableValueList.getExpression(0);
142                }
143
144                if (this.variableValue == null){
145                    System.out.println("Variable value is null for "+variableName.toString());
146                }
147
148                break;
149            case variableList:
150                if (arg3 instanceof TExpression){
151                    // subquery
152                    this.variableValue = (TExpression)arg3;
153                }else{
154                    this.variableValueList = (TExpressionList)arg3;
155                    this.variableValue = this.variableValueList.getExpression(0);
156                }
157                break;
158            default:
159                break;
160        }
161    }
162
163
164}