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}