KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > dcl > sqlcontrolstatement > ifstatement


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 JavaDoc run(Object JavaDoc 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 JavaDoc 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 JavaDoc res = ss.execute(variableValues);
50             return res;
51          }
52       }
53       return null;
54    }
55
56    public Object JavaDoc[] getParameters(Object JavaDoc object) throws DException {
57       ArrayList list = new ArrayList();
58       if (_Optifstatementelseclause2 != null) {
59          Object JavaDoc[] 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 JavaDoc[] par2 = _OptRepifstatementelseifclause3[i].getParameters(object);
67             if (par2 != null) {
68                list.addAll(Arrays.asList(par2));
69             }
70          }
71       }
72       Object JavaDoc[] par3 = _ifstatementthenclause4.getParameters(object);
73       if (par3 != null) {
74          list.addAll(Arrays.asList(par3));
75       }
76       Object JavaDoc[] par4 = _searchcondition5.getParameters(object);
77       if (par4 != null) {
78          list.addAll(Arrays.asList(par4));
79       }
80       return list.toArray();
81    }
82
83    /* public _Reference[] checkSemantic(_ServerSession object) throws DException {
84          serverSession = object;
85          if (_searchcondition5.hasContainClause())
86             throw new DException("DSE8138", null);
87          TreeSet set = new TreeSet(ReferenceComparator.comparator);
88          if (_Optifstatementelseclause2 != null) {
89             _Reference[] par1 = _Optifstatementelseclause2.checkSemantic(object);
90             if (par1 != null) {
91                set.addAll(Arrays.asList(par1));
92             }
93          }
94          if (_OptRepifstatementelseifclause3 != null) {
95             for (int i = 0; i < _OptRepifstatementelseifclause3.length; i++) {
96                _Reference[] par2 = _OptRepifstatementelseifclause3[i].checkSemantic(
97                    object);
98                if (par2 != null) {
99                   set.addAll(Arrays.asList(par2));
100                }
101             }
102          }
103          _Reference[] par3 = _ifstatementthenclause4.checkSemantic(object);
104          if (par3 != null) {
105             set.addAll(Arrays.asList(par3));
106          }
107          searchConditionRefs = _searchcondition5.getReferences(dummyTableDetail);
108          if (searchConditionRefs != null) {
109             if (searchConditionRefs[0].getReferenceType() != SimpleConstants.SUBQUERY)
110                set.addAll(Arrays.asList(searchConditionRefs));
111          }
112          /**
113      * call checkSemantic of searchCondition in try catch Suggest by Mr. Parveen Agarwal. Related to bug 11653.
114              try {
115                 _searchcondition5.getColumnDetails();
116                 _searchcondition5.checkSemantic(serverSession);
117              } catch (DException ex) {
118                 if (!ex.getDseCode().equalsIgnoreCase("DSE4115")) {
119                    throw ex;
120                 }
121              }
122              return (_Reference[]) set.toArray(new _Reference[0]);
123           }*/

124
125     public Object JavaDoc execute(_VariableValues variableValues) throws DException {
126        Object JavaDoc 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 JavaDoc 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); // Invalid label used in leave or iterate statement
155
}
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 JavaDoc execute(Object JavaDoc[] values) throws DException {
170       throw new UnsupportedOperationException JavaDoc();
171    }
172
173    public Object JavaDoc executeForFresh(Object JavaDoc[] values) throws DException {
174       throw new UnsupportedOperationException JavaDoc();
175    }
176
177    public ParameterInfo[] getParameterInfo() throws DException {
178       throw new UnsupportedOperationException JavaDoc();
179    }
180
181    public String JavaDoc toString() {
182       StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
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 JavaDoc clone() throws CloneNotSupportedException JavaDoc {
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       /**
265        * call checkSemantic of searchCondition in try catch Suggest by Mr. Parveen Agarwal. Related to bug 11653. */

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