KickJava   Java API By Example, From Geeks To Geeks.

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


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.*;
7 import com.daffodilwoods.daffodildb.server.sql99.common.*;
8 import com.daffodilwoods.daffodildb.server.sql99.ddl.schemadefinition.*;
9 import com.daffodilwoods.daffodildb.server.sql99.dml.*;
10 import com.daffodilwoods.daffodildb.server.sql99.utils.*;
11 import com.daffodilwoods.database.resource.*;
12
13 public class SQLstatementlist implements _Executer {
14    public terminatedSQLstatement[] _SQLstatementlist0;
15
16    private SQLcontrolstatement outerControlStatment;
17    private _Reference[][] referencesPerStatement;
18    private _Executer[] executers;
19    private _ServerSession serverSession;
20    public ColumnDetails[] sqlStatementListCD;
21
22    public Object JavaDoc run(Object JavaDoc object) throws DException {
23       executers = new _Executer[_SQLstatementlist0.length];
24       for (int i = 0; i < _SQLstatementlist0.length; i++) {
25          executers[i] = _SQLstatementlist0[i].getExecuter(object);
26       }
27       return this;
28    }
29
30    public ArrayList getStatements() {
31       ArrayList list = new ArrayList();
32       for (int i = 0, size = _SQLstatementlist0.length; i < size; i++) {
33          list.add(_SQLstatementlist0[i].getProcedureStatement());
34       }
35       return list;
36    }
37
38    public boolean constainsLeaveStatement() throws DException {
39       ArrayList list = new ArrayList();
40       for (int i = 0, size = _SQLstatementlist0.length; i < size; i++) {
41          if (_SQLstatementlist0[i]._SQLprocedurestatement1._SQLprocedurestatement0 instanceof
42              leavestatement) {
43             return true;
44          }
45       }
46       return false;
47    }
48
49    public void setOuterControlStatement(SQLcontrolstatement st) {
50       ArrayList statements = getStatements();
51       for (int i = 0, size = statements.size(); i < size; i++) {
52          SQLprocedurestatement statement = (SQLprocedurestatement) statements.get(
53              i);
54          if (statement.getExecutableStatement() instanceof SQLcontrolstatement) {
55             ( (SQLcontrolstatement) statement._SQLprocedurestatement0).
56                 setOuterControlStatement(st);
57          }
58       }
59    }
60
61    public Object JavaDoc[] getParameters(Object JavaDoc object) throws DException {
62       ArrayList list = new ArrayList();
63       for (int i = 0; i < _SQLstatementlist0.length; i++) {
64          Object JavaDoc[] para = _SQLstatementlist0[i].getParameters(object);
65          if (para != null) {
66             list.addAll(Arrays.asList(para));
67          }
68       }
69       return list.toArray();
70    }
71
72    /* public _Reference[] checkSemantic(_ServerSession object) throws DException {
73         serverSession = object;
74         referencesPerStatement = new _Reference[_SQLstatementlist0.length][];
75         ArrayList set = new ArrayList();
76         ArrayList set1 = new ArrayList();
77
78         for (int i = 0; i < _SQLstatementlist0.length; i++) {
79            referencesPerStatement[i] = _SQLstatementlist0[i].checkSemantic(object);
80            Object refs[] = _SQLstatementlist0[i].getParameters(serverSession);
81            if (refs != null && refs.length != 0) {
82               throw new DException("DSE8164", null);
83            } // Changes by harvinder over
84            if (referencesPerStatement[i] != null) {
85               for (int j = 0; j < referencesPerStatement[i].length; j++) {
86                  String aa = referencesPerStatement[i][j].getQualifiedColumnName().trim().toUpperCase();
87                  if (!set1.contains(aa)) {
88                     set1.add(aa);
89                     set.add(referencesPerStatement[i][j]);
90                  }
91               }
92            }
93         }
94         return (_Reference[]) set.toArray(new _Reference[0]);
95      }*/

96
97    /** @todo uncomment the code */
98    public Object JavaDoc execute(_VariableValues variableValues) throws DException {
99       SqlStatementListResult sqlStatementListResult = new SqlStatementListResult(executers.length);
100       for (int i = 0; i < executers.length; i++) {
101          Object JavaDoc result = executeSingleProcedureStatement(
102              _SQLstatementlist0[i].getProcedureStatement(),
103              executers[i], variableValues, referencesPerStatement[i]);
104
105          if (result instanceof SqlStatementListResult) {
106             SqlStatementListResult tt = (SqlStatementListResult) result;
107             if (tt.hasIterateLeaveResult()) {
108                sqlStatementListResult.setIterateLeaveResult(tt.getIterateLeaveResult());
109                sqlStatementListResult.addResult(i, tt.getResult());
110                return sqlStatementListResult;
111             } else {
112                sqlStatementListResult.addResult(i, tt.getResult());
113             }
114          } else if (result instanceof IterateLeaveResult) {
115             sqlStatementListResult.addResult(i, "IteraeLeaveResult");
116             sqlStatementListResult.setIterateLeaveResult( (IterateLeaveResult)
117                 result);
118             return sqlStatementListResult;
119          } else if (result instanceof ReturnResult) {
120             return result;
121          } else {
122             sqlStatementListResult.addResult(i, result);
123          }
124       }
125       return sqlStatementListResult;
126    }
127
128    private Object JavaDoc executeSingleProcedureStatement(SQLprocedurestatement
129                                                   statement,
130                                                   _Executer sttExecuter,
131                                                   _VariableValues variableValues,
132                                                   _Reference[] refs) throws
133        DException {
134       Object JavaDoc returnValue = null;
135       SQLexecutablestatement sqlexe = statement.getExecutableStatement();
136       if ( (sqlexe instanceof SQLdatastatement) ||
137           (sqlexe instanceof SQLcontrolstatement)) {
138          if (refs != null) {
139             Object JavaDoc[] values = new Object JavaDoc[refs.length];
140             Object JavaDoc[][] beforeExecuteRefValuePair = variableValues.getReferenceAndValuePair();
141             if (beforeExecuteRefValuePair != null) {
142                for (int i = 0; i < beforeExecuteRefValuePair.length; i++) {
143                   _Reference vvRef = (_Reference) beforeExecuteRefValuePair[i][0];
144                   for (int j = 0; j < refs.length; j++) {
145                      if (vvRef.getQualifiedColumnName().equalsIgnoreCase(refs[j].getQualifiedColumnName())) {
146                         refs[j].setDatatype(vvRef.getDatatype());
147                         refs[j].setSize(vvRef.getSize());
148                         values[j] = beforeExecuteRefValuePair[i][1];
149                      }
150                   }
151                }
152             }
153
154             VariableValues vv = new VariableValues(serverSession);
155             vv.addColumnValues(refs, values, 1);
156             returnValue = sttExecuter.execute(vv);
157
158             /** @todo getOutparmaeters value from VV
159              * and set the changed value in global varibale parametersValues */

160             Object JavaDoc[][] afterExecuteRefValuePair = vv.getReferenceAndValuePair();
161             Object JavaDoc[][] valueToSetPair = variableValues.getReferenceAndValuePair();
162             if (afterExecuteRefValuePair != null) {
163                for (int i = 0; i < afterExecuteRefValuePair.length; i++) {
164                   _Reference vvRef = (_Reference) afterExecuteRefValuePair[i][0];
165                   boolean existingRef = false;
166                   if (valueToSetPair != null) {
167                      for (int j = 0; j < valueToSetPair.length; j++) {
168                         _Reference toSetRef = (_Reference) valueToSetPair[j][0];
169                         if (vvRef.getQualifiedColumnName().equalsIgnoreCase(toSetRef.getQualifiedColumnName())) {
170                            existingRef = true;
171                            variableValues.setConditionVariableValue(
172                                new _Reference[] {toSetRef}
173                                , new Object JavaDoc[] {afterExecuteRefValuePair[i][1]}
174                                , 1);
175                         }
176                      }
177                   }
178                   if (existingRef == false) {
179                      variableValues.setConditionVariableValue(new _Reference[] {vvRef}
180                          , new Object JavaDoc[] {afterExecuteRefValuePair[i][1]}
181                          , 1);
182                   }
183                }
184             }
185          } else {
186             VariableValues vv = new VariableValues(refs, serverSession);
187             returnValue = sttExecuter.execute(vv);
188          }
189       } else {
190          ;//// Removed By Program ** System.out.println(
191
}
192       return returnValue;
193    }
194
195    public Object JavaDoc execute(Object JavaDoc[] values) throws DException {
196       throw new UnsupportedOperationException JavaDoc();
197    }
198
199    public Object JavaDoc executeForFresh(Object JavaDoc[] values) throws DException {
200       throw new UnsupportedOperationException JavaDoc();
201    }
202
203    public String JavaDoc toString() {
204       StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
205       sb.append(" ");
206       sb.append(" ");
207       for (int i = 0; i < _SQLstatementlist0.length; i++) {
208          sb.append(_SQLstatementlist0[i]);
209       }
210       return sb.toString().trim();
211    }
212
213    public Object JavaDoc clone() throws CloneNotSupportedException JavaDoc {
214       return this;
215    }
216
217    public ColumnDetails[] getColumnDetails() throws DException {
218       if (sqlStatementListCD != null)
219          return sqlStatementListCD;
220       if (_SQLstatementlist0 != null) {
221          ArrayList listOfColumnDetails = new ArrayList();
222          for (int i = 0; i < _SQLstatementlist0.length; i++) {
223             SQLprocedurestatement sqlp = _SQLstatementlist0[i].getProcedureStatement();
224             SQLexecutablestatement sqlexe = sqlp.getExecutableStatement();
225             if (sqlexe instanceof SQLcontrolstatement) {
226                SQLcontrolstatement contStt = (SQLcontrolstatement) sqlexe;
227                ColumnDetails[] cd = contStt.getColumnDetails();
228                if (cd != null)
229                   listOfColumnDetails.addAll(Arrays.asList(cd));
230             }
231          }
232          sqlStatementListCD = (ColumnDetails[]) listOfColumnDetails.toArray(new ColumnDetails[0]);
233          return sqlStatementListCD;
234       }
235       return new ColumnDetails[0];
236    }
237
238    public _Reference[] checkSemantic(_ServerSession object) throws DException {
239       serverSession = object;
240       referencesPerStatement = new _Reference[_SQLstatementlist0.length][];
241       ArrayList newSet = new ArrayList();
242       for (int i = 0; i < _SQLstatementlist0.length; i++) {
243          referencesPerStatement[i] = _SQLstatementlist0[i].checkSemantic(object);
244          Object JavaDoc refs[] = _SQLstatementlist0[i].getParameters(serverSession);
245          if (refs != null && refs.length != 0) {
246             throw new DException("DSE8164", null);
247          }
248          if (referencesPerStatement[i] != null) {
249             for (int j = 0; j < referencesPerStatement[i].length; j++) {
250                newSet.add(referencesPerStatement[i][j]);
251             }
252          }
253       }
254       return (_Reference[]) newSet.toArray(new _Reference[0]);
255    }
256 }
257
Popular Tags