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 role:
099                this.assignments = (TPTNodeList)arg2;
100                break;
101            case schema:
102                variableName = (TObjectName)arg2;
103            case reset:
104                variableName = (TObjectName)arg2;
105            default:
106                break;
107        }
108    }
109
110    public TObjectName getCharacterSetName() {
111        return characterSetName;
112    }
113
114    public TObjectName getCollationName() {
115        return collationName;
116    }
117
118    public ETransactionIsolationLevel getIsolationLevel() {
119        return isolationLevel;
120    }
121
122    public TObjectName getPassword() {
123        return password;
124    }
125
126    public TObjectName getUserName() {
127        return userName;
128    }
129
130    public void init(Object arg1,Object arg2,Object arg3){
131        init(arg1,arg2);
132        switch (setStatementType){
133            case names:
134                collationName = (TObjectName)arg3;
135                break;
136            case password:
137                password = (TObjectName)arg3;
138                break;
139            case variable:
140                if (arg3 instanceof TExpression){
141                    this.variableValue = (TExpression)arg3;
142                }else if (arg3 instanceof TExpressionList){
143                    this.variableValueList = (TExpressionList)arg3;
144                    this.variableValue = this.variableValueList.getExpression(0);
145                }
146
147                if (this.variableValue == null){
148                    System.out.println("Variable value is null for "+variableName.toString());
149                }
150
151                break;
152            case variableList:
153                if (arg3 instanceof TExpression){
154                    // subquery
155                    this.variableValue = (TExpression)arg3;
156                }else{
157                    this.variableValueList = (TExpressionList)arg3;
158                    this.variableValue = this.variableValueList.getExpression(0);
159                }
160                break;
161            default:
162                break;
163        }
164    }
165
166
167}