1 package com.daffodilwoods.daffodildb.server.sql99.dcl.sqlcontrolstatement; 2 3 import java.util.*; 4 5 import com.daffodilwoods.daffodildb.server.serversystem.*; 6 import com.daffodilwoods.daffodildb.server.sql99.common.*; 7 import com.daffodilwoods.daffodildb.server.sql99.token.*; 8 import com.daffodilwoods.daffodildb.server.sql99.utils.*; 9 import com.daffodilwoods.database.resource.*; 10 11 public class ifstatement implements SQLcontrolstatement { 12 13 public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439220; 14 public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439221; 15 public ifstatementelseclause _Optifstatementelseclause2; 16 public ifstatementelseifclause[] _OptRepifstatementelseifclause3; 17 public ifstatementthenclause _ifstatementthenclause4; 18 public searchcondition _searchcondition5; 19 public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439226; 20 21 private SQLcontrolstatement outerControlStatement; 22 private _Reference[] searchConditionRefs; 23 private _ServerSession serverSession; 24 25 public void setOuterControlStatement(SQLcontrolstatement outerst) { 26 outerControlStatement = outerst; 27 } 28 29 public Object run(Object object) throws DException { 30 _searchcondition5.getColumnDetails(); 31 if (_Optifstatementelseclause2 != null) { 32 _Optifstatementelseclause2.run(object); 33 } 34 if (_OptRepifstatementelseifclause3 != null) { 35 for (int i = 0; i < _OptRepifstatementelseifclause3.length; i++) { 36 _OptRepifstatementelseifclause3[i].run(object); 37 } 38 } 39 _ifstatementthenclause4.run(object); 40 return this; 41 } 42 43 public Object executeElseIfClause(_VariableValues variableValues) throws DException { 44 for (int i = 0, size = _OptRepifstatementelseifclause3.length; i < size; i++) { 45 SQLstatementlist ss = _OptRepifstatementelseifclause3[i]. 46 getSQLstatementlistIfConditionSatisfied(variableValues); 47 if (ss != null) { 48 ss.setOuterControlStatement(this); 49 Object res = ss.execute(variableValues); 50 return res; 51 } 52 } 53 return null; 54 } 55 56 public Object [] getParameters(Object object) throws DException { 57 ArrayList list = new ArrayList(); 58 if (_Optifstatementelseclause2 != null) { 59 Object [] par1 = _Optifstatementelseclause2.getParameters(object); 60 if (par1 != null) { 61 list.addAll(Arrays.asList(par1)); 62 } 63 } 64 if (_OptRepifstatementelseifclause3 != null) { 65 for (int i = 0; i < _OptRepifstatementelseifclause3.length; i++) { 66 Object [] par2 = _OptRepifstatementelseifclause3[i].getParameters(object); 67 if (par2 != null) { 68 list.addAll(Arrays.asList(par2)); 69 } 70 } 71 } 72 Object [] par3 = _ifstatementthenclause4.getParameters(object); 73 if (par3 != null) { 74 list.addAll(Arrays.asList(par3)); 75 } 76 Object [] par4 = _searchcondition5.getParameters(object); 77 if (par4 != null) { 78 list.addAll(Arrays.asList(par4)); 79 } 80 return list.toArray(); 81 } 82 83 124 125 public Object execute(_VariableValues variableValues) throws DException { 126 Object result = null; 127 if (SearchConditionUtility.executeExpression(_searchcondition5, searchConditionRefs, 128 variableValues, serverSession).hashCode() == 0) { 129 SQLstatementlist ss = _ifstatementthenclause4.getSQLstatementlist(); 130 ss.setOuterControlStatement(this); 131 result = ss.execute(variableValues); 132 } else { 133 if (_OptRepifstatementelseifclause3 != null) { 134 Object tempResult = executeElseIfClause(variableValues); 135 if (tempResult == null) { 136 if (_Optifstatementelseclause2 != null) { 137 SQLstatementlist ss = _Optifstatementelseclause2.getSQLstatementlist(); 138 ss.setOuterControlStatement(this); 139 result = ss.execute(variableValues); 140 } 141 } else { 142 result = tempResult; 143 } 144 } else if (_Optifstatementelseclause2 != null) { 145 SQLstatementlist ss = _Optifstatementelseclause2.getSQLstatementlist(); 146 ss.setOuterControlStatement(this); 147 result = ss.execute(variableValues); 148 } 149 } 150 ArrayList returningResultList = new ArrayList(); 151 if (result instanceof SqlStatementListResult) { 152 SqlStatementListResult temp = (SqlStatementListResult) result; 153 if (result != null && outerControlStatement == null && temp.hasIterateLeaveResult()) { 154 throw new DException("DSE8038", null); } 156 if (temp.hasIterateLeaveResult()) { 157 IterateLeaveResult ilResult = temp.getIterateLeaveResult(); 158 SqlStatementListResult returningResult = new SqlStatementListResult(0); 159 returningResult.setResult(returningResultList.toArray()); 160 returningResult.setIterateLeaveResult(ilResult); 161 return returningResult; 162 } else { 163 returningResultList.add(temp.getResult()); 164 } 165 } 166 return returningResultList.toArray(); 167 } 168 169 public Object execute(Object [] values) throws DException { 170 throw new UnsupportedOperationException (); 171 } 172 173 public Object executeForFresh(Object [] values) throws DException { 174 throw new UnsupportedOperationException (); 175 } 176 177 public ParameterInfo[] getParameterInfo() throws DException { 178 throw new UnsupportedOperationException (); 179 } 180 181 public String toString() { 182 StringBuffer sb = new StringBuffer (); 183 sb.append(" "); 184 sb.append(_SRESERVEDWORD12065439226); 185 sb.append(" "); 186 sb.append(_searchcondition5); 187 sb.append(" "); 188 sb.append(_ifstatementthenclause4); 189 sb.append(" "); 190 if (_OptRepifstatementelseifclause3 != null) { 191 for (int i = 0; i < _OptRepifstatementelseifclause3.length; i++) { 192 sb.append("").append(_OptRepifstatementelseifclause3[i]); 193 } 194 } 195 sb.append(" "); 196 if (_Optifstatementelseclause2 != null) { 197 sb.append(_Optifstatementelseclause2); 198 } 199 sb.append(" "); 200 sb.append(_SRESERVEDWORD12065439221); 201 sb.append(" "); 202 sb.append(_SRESERVEDWORD12065439220); 203 return sb.toString().trim(); 204 } 205 206 public Object clone() throws CloneNotSupportedException { 207 return this; 208 } 209 210 public ColumnDetails[] getColumnDetails() throws DException { 211 ColumnDetails[] searchConditionCD = _searchcondition5.getColumnDetails(); 212 ColumnDetails[] ifStatementThenClauseCD = null, ifStatementElseIfClauseCD = null, ifStatementElseClauseCD = null; 213 ArrayList listOfIfStatementElseIfClauseCD = new ArrayList(); 214 if (_ifstatementthenclause4 != null) { 215 ifStatementThenClauseCD = _ifstatementthenclause4.getColumnDetails(); 216 } 217 if (_OptRepifstatementelseifclause3 != null) { 218 for (int i = 0; i < _OptRepifstatementelseifclause3.length; i++) { 219 ColumnDetails[] cd = _OptRepifstatementelseifclause3[i].getColumnDetails(); 220 if (cd != null) 221 listOfIfStatementElseIfClauseCD.addAll(Arrays.asList(cd)); 222 } 223 ifStatementElseIfClauseCD = (ColumnDetails[]) listOfIfStatementElseIfClauseCD.toArray(new ColumnDetails[0]); 224 } 225 if (_Optifstatementelseclause2 != null) { 226 ifStatementElseClauseCD = _Optifstatementelseclause2.getColumnDetails(); 227 } 228 ColumnDetails cd1[] = GeneralPurposeStaticClass.getJointColumnDetails(searchConditionCD, ifStatementThenClauseCD); 229 ColumnDetails cd2[] = GeneralPurposeStaticClass.getJointColumnDetails(ifStatementElseIfClauseCD, ifStatementElseClauseCD); 230 return GeneralPurposeStaticClass.getJointColumnDetails(cd1, cd2); 231 } 232 233 public _Reference[] checkSemantic(_ServerSession object) throws DException { 234 serverSession = object; 235 if (_searchcondition5.hasContainClause()) 236 throw new DException("DSE8138", null); 237 ArrayList set = new ArrayList(); 238 if (_Optifstatementelseclause2 != null) { 239 _Reference[] par1 = _Optifstatementelseclause2.checkSemantic(object); 240 if (par1 != null) { 241 set.addAll(Arrays.asList(par1)); 242 } 243 } 244 if (_OptRepifstatementelseifclause3 != null) { 245 for (int i = 0; i < _OptRepifstatementelseifclause3.length; i++) { 246 _Reference[] par2 = _OptRepifstatementelseifclause3[i].checkSemantic( 247 object); 248 if (par2 != null) { 249 set.addAll(Arrays.asList(par2)); 250 } 251 } 252 } 253 _Reference[] par3 = _ifstatementthenclause4.checkSemantic(object); 254 if (par3 != null) { 255 set.addAll(Arrays.asList(par3)); 256 } 257 searchConditionRefs = _searchcondition5.getReferences(dummyTableDetail); 258 if (searchConditionRefs != null) { 259 for (int i = 0; i < searchConditionRefs.length; i++) { 260 if (searchConditionRefs[i].getReferenceType() != SimpleConstants.SUBQUERY) 261 set.add(searchConditionRefs[i]); 262 } 263 } 264 266 try { 267 _searchcondition5.getColumnDetails(); 268 _searchcondition5.checkSemantic(serverSession); 269 } catch (DException ex) { 270 if (!ex.getDseCode().equalsIgnoreCase("DSE4115")) { 271 throw ex; 272 } 273 } 274 return (_Reference[]) set.toArray(new _Reference[0]); 275 } 276 277 public void getTableIncluded(ArrayList aList) throws DException { 278 if (_OptRepifstatementelseifclause3 != null) { 279 for (int i = 0; i < _OptRepifstatementelseifclause3.length; i++) { 280 _OptRepifstatementelseifclause3[i].getTableIncluded(aList); 281 } 282 } 283 _searchcondition5.getTablesIncluded(aList); 284 } 285 286 public void getColumnsIncluded(ArrayList aList) throws DException { 287 if (_OptRepifstatementelseifclause3 != null) { 288 for (int i = 0; i < _OptRepifstatementelseifclause3.length; i++) { 289 _OptRepifstatementelseifclause3[i].getColumnsIncluded(aList); 290 } 291 } 292 _searchcondition5.getColumnsIncluded(aList); 293 } 294 } 295 | Popular Tags |