KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > dml > updatestatementsearched


1 package com.daffodilwoods.daffodildb.server.sql99.dml;
2
3 import java.util.*;
4
5 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*;
6 import com.daffodilwoods.daffodildb.server.serversystem.*;
7 import com.daffodilwoods.daffodildb.server.sessionsystem.*;
8 import com.daffodilwoods.daffodildb.server.sql99.common.*;
9 import com.daffodilwoods.daffodildb.server.sql99.dql.execution.*;
10 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*;
11 import com.daffodilwoods.daffodildb.server.sql99.dql.semanticchecker.*;
12 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.*;
13 import com.daffodilwoods.daffodildb.server.sql99.token.*;
14 import com.daffodilwoods.daffodildb.server.sql99.utils.*;
15 import com.daffodilwoods.database.general.*;
16 import com.daffodilwoods.database.resource.*;
17 import com.daffodilwoods.database.utility.P;
18 import com.daffodilwoods.daffodildb.server.sql99.expression.*;
19 import com.daffodilwoods.daffodildb.server.sql99.dql.listenerevents.IteratorConstants;
20 import java.util.ArrayList JavaDoc;
21 import com.daffodilwoods.daffodildb.server.sql99.dql.plan.table.SingleTablePlan;
22 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.table.SelectedColumnIterator;
23
24
25 public class updatestatementsearched implements com.daffodilwoods.daffodildb.utils.parser.StatementExecuter, SQLdatachangestatement, Parameters, TypeConstants {
26
27    public SRESERVEDWORD1206543922searchcondition _OptSRESERVEDWORD1206543922searchcondition0;
28    public setclauselist _setclauselist1;
29    public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439222;
30    public correlationname _Optcorrelationname3 ;
31    public targettable _targettable4 ;
32    public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439225 ;
33
34
35    private TableDetails tableDetails = null;
36    private ArrayList JavaDoc knownReferences;
37    private boolean checkingPerformed;
38    private _Reference[] questionMarks;
39    private String JavaDoc aliasName =null;
40    private ColumnDetails[] columnDetail =null;
41    public _Reference[] checkSemantic(_ServerSession serverSession) throws DException {
42       tableDetails = (TableDetails) _targettable4.run(serverSession);
43       if(_Optcorrelationname3 != null){
44         aliasName = (String JavaDoc) _Optcorrelationname3.run(serverSession);
45         tableDetails.setAliasName(aliasName);
46       }
47       SemanticChecker.initializeCatalogNameAndSchemaNameOfTable(tableDetails, serverSession);
48       _ColumnCharacteristics cc = serverSession.getColumnCharacteristics(tableDetails.getQualifiedIdentifier());
49       tableDetails.cc = cc;
50       tableDetails.setTableType(cc.getTableType());
51       /**
52        * Note -- Following code is commented to implement Updatable view
53        */

54
55       /*
56         if (tableDetails.getTableType() == TypeConstants.VIEW) {
57          throw new DmlStatementException("DSE1276", new Object[] {tableDetails.getQualifiedTableName()}
58                                          , new DException("DSE1267", null));
59       } */

60       ColumnDetails[] leftCDs = _setclauselist1.getLeftColumnDetails(serverSession);
61       DmlStaticFunctionality.checkColumnUniqueness(leftCDs);
62       checkColumnsValidity(leftCDs, tableDetails);
63       knownReferences = new ArrayList JavaDoc(4);
64       _Reference[] rightReferences = getRightSetClauseReferences(tableDetails, serverSession);
65
66       _Reference[] references1 = _setclauselist1.checkSemantic(serverSession);
67       _PrivilegeTable privilegeTable = serverSession.getUserSession().getPrivilegeCharacteristics().getPrivilegeTable(tableDetails.getQualifiedIdentifier());
68       boolean updateRight = privilegeTable.hasTablePrivileges(_PrivilegeTable.UPDATE);
69       ArrayList JavaDoc LeftColumnList = new ArrayList JavaDoc();
70       GeneralPurposeStaticClass.addRecursively(leftCDs, LeftColumnList);
71       ColumnDetails[] leftColunmcds = (ColumnDetails[]) LeftColumnList.toArray(new ColumnDetails[0]);
72       int[] columns = getColumns(leftColunmcds, cc, TypeConstants.REFERENCE);
73       if (columns == null && !updateRight)
74          throw new PrivilegeException("DSE340", new Object JavaDoc[] {"UPDATE", tableDetails.getQualifiedIdentifier()});
75       updateRight = privilegeTable.hasColumnPrivileges(_PrivilegeTable.UPDATE, columns);
76       if (!updateRight)
77          throw new PrivilegeException("DSE340", new Object JavaDoc[] {"UPDATE", tableDetails.getQualifiedIdentifier()});
78
79       ColumnDetails[] rightCDs = _setclauselist1.getColumnDetails(serverSession);
80       ArrayList JavaDoc rightColumnList = new ArrayList JavaDoc();
81       GeneralPurposeStaticClass.addRecursively(rightCDs, rightColumnList);
82       ColumnDetails[] rightColunmcds = (ColumnDetails[]) rightColumnList.toArray(new ColumnDetails[0]);
83       columns = getColumns(rightColunmcds, cc, ColumnDetails.COLUMNDETAIL);
84       if (columns != null) {
85          updateRight = privilegeTable.hasColumnPrivileges(_PrivilegeTable.SELECT, columns);
86          if (!updateRight)
87             throw new PrivilegeException("DSE8132", null);
88       }
89
90       references1 = makeProvisionForKnownReferences(references1, tableDetails);
91       checkingPerformed = true;
92
93       if (_OptSRESERVEDWORD1206543922searchcondition0 == null) {
94          _Reference[] asd = GeneralPurposeStaticClass.getJointReferences(references1, rightReferences);
95          setDataTypeInKnownReferences(serverSession);
96          return getRefereceWithSequence(asd);
97       }
98       ArrayList JavaDoc list = new ArrayList JavaDoc();
99       GeneralPurposeStaticClass.addRecursively(_OptSRESERVEDWORD1206543922searchcondition0.getColumnDetails(), list);
100       ColumnDetails[] cds = (ColumnDetails[]) list.toArray(new ColumnDetails[0]);
101       int[] wherecolumns = getColumns(cds, cc, ColumnDetails.COLUMNDETAIL);
102       if (wherecolumns != null) {
103          boolean fetchRight = privilegeTable.hasColumnPrivileges(_PrivilegeTable.SELECT,
104              wherecolumns);
105          if (!fetchRight) {
106             throw new DException("DSE8132", null);
107          }
108       }
109
110       _Reference[] ref = GeneralPurposeStaticClass.getJointReferences(rightReferences, getWhereReferences(tableDetails, serverSession));
111       _Reference[] asd = GeneralPurposeStaticClass.getJointReferences(references1, ref);
112       setDataTypeInKnownReferences(serverSession);
113
114       return getRefereceWithSequence(asd);
115    }
116
117   private void setDataTypeInKnownReferences(_ServerSession serverSession) throws
118       DException {
119     if (knownReferences.size()> 0) {
120       ArrayList JavaDoc aList = new ArrayList JavaDoc(5);
121       SetColumnProperties.setTableNamesAndDatatypesOfAllColumns(serverSession,
122           (ColumnDetails[]) knownReferences.toArray(new ColumnDetails[0]),
123           new TableDetails[] {tableDetails}
124           , aList, new ArrayList JavaDoc());
125       if(aList.size()>0){
126         knownReferences.clear();
127         knownReferences.addAll(Arrays.asList(aList.toArray()));
128       }
129     }
130   }
131
132    private int[] getColumns(ColumnDetails[] cds, _ColumnCharacteristics cc, int columnDetailType) throws DException {
133       int[] columns = new int[cds.length];
134       int j = 0;
135       for (int i = 0; i < cds.length; i++) {
136          if (cds[i].getType() == columnDetailType) {
137             try {
138                columns[j] = cds[i].getIndex();
139             } catch (DException e) {
140                int tt = cc.getColumnIndex(cds[i].getColumn());
141                cds[i].setIndex(tt);
142                columns[j] = tt;
143             }
144             j++;
145          }
146       }
147       if (j > 0) {
148          int[] toReturn = new int[j];
149          System.arraycopy(columns, 0, toReturn, 0, j);
150          return toReturn;
151       }
152       return null;
153    }
154
155    private _Reference[] getRefereceWithSequence(_Reference[] asd) throws DException {
156       if (asd != null) {
157          ArrayList JavaDoc list = new ArrayList JavaDoc();
158          for (int i = 0; i < asd.length; i++) {
159             if (asd[i].getReferenceType() != SimpleConstants.SEQUENCE) {
160                list.add(asd[i]);
161             }
162          }
163          return list.size() == 0 ? null : (_Reference[]) list.toArray(new _Reference[0]);
164       }
165       return asd;
166    }
167
168    public Object JavaDoc run(Object JavaDoc object) throws DException {
169       _StatementExecutionContext sec = (_StatementExecutionContext) object;
170       _ServerSession serverSession = sec.getServerSession();
171       if (!checkingPerformed) {
172          performChecking(serverSession);
173       }
174       Object JavaDoc[][] setclauselistarray = (Object JavaDoc[][]) _setclauselist1.run(serverSession);
175       Object JavaDoc referencesIteratorMapping = _setclauselist1.getReferenceIteratorMapping(tableDetails, serverSession);
176       booleanvalueexpression condition = null;
177       if (_OptSRESERVEDWORD1206543922searchcondition0 != null) {
178          condition = (booleanvalueexpression) _OptSRESERVEDWORD1206543922searchcondition0.run(object);
179       }
180       QualifiedIdentifier tTable = tableDetails.getQualifiedIdentifier();
181       ArrayList JavaDoc listOfTables = new ArrayList JavaDoc();
182       if (_OptSRESERVEDWORD1206543922searchcondition0 != null)
183          _OptSRESERVEDWORD1206543922searchcondition0.getTablesIncluded(listOfTables);
184       _setclauselist1.getTablesIncluded(listOfTables);
185
186
187       if (tableDetails.getTableType() == TypeConstants.VIEW) {
188        String JavaDoc query ="Select * from " +tTable;
189         if(condition!=null)
190          query += " where "+condition.toString();
191
192       _Iterator iterator =(_Iterator) serverSession.execute(query,0,IteratorConstants.UPDATABLE);
193        if(iterator instanceof SelectedColumnIterator )
194         throw new DException("DSE8205",new Object JavaDoc[]{tTable});
195       ViewUpdateExecuter viwUpdateExecuter = new ViewUpdateExecuter(sec, tableDetails, iterator, setclauselistarray, System.currentTimeMillis(), referencesIteratorMapping, knownReferences.size() > 0 ? (_Reference[]) knownReferences.toArray(new _Reference[0]) : null, questionMarks, listOfTables, tTable);
196       return viwUpdateExecuter;
197        }
198
199
200       SingleTablePlan singleTablePlan = new SingleTablePlan(tTable.toString(),condition,tableDetails,null,true,columnDetail);
201       singleTablePlan.setInternalIteratorRequired(true);
202       _Iterator iterator = singleTablePlan.execute(serverSession);
203
204       UpdateExecuter uExecuter = new UpdateExecuter(sec, tableDetails, iterator, setclauselistarray, System.currentTimeMillis(), referencesIteratorMapping, knownReferences.size() > 0 ? (_Reference[]) knownReferences.toArray(new _Reference[0]) : null, questionMarks, listOfTables, tTable);
205       return uExecuter;
206    }
207
208    public _Reference[] getReferences(Object JavaDoc[] obj) throws DException {
209       throw new UnsupportedOperationException JavaDoc(" METHOD NOT IMPLEMENTED ");
210    }
211
212    public Object JavaDoc[] getParameters(Object JavaDoc object) throws DException {
213       Object JavaDoc[] values = _setclauselist1.getParameters(object);
214       if (_OptSRESERVEDWORD1206543922searchcondition0 == null) {
215          return values;
216       }
217       Object JavaDoc[] temp = _OptSRESERVEDWORD1206543922searchcondition0.getParameters(object);
218       if (values == null || values.length == 0) {
219          return temp;
220       }
221       if (temp == null || temp.length == 0) {
222          return values;
223       }
224       ArrayList JavaDoc arr = new ArrayList JavaDoc();
225       arr.addAll(Arrays.asList(values));
226       arr.addAll(Arrays.asList(temp));
227       return arr.toArray();
228    }
229
230    public ParameterInfo[] getParameterInfo() throws DException {
231       ParameterInfo[] setClauseP = _setclauselist1.getParameterInfo();
232       ParameterInfo[] whereP = _OptSRESERVEDWORD1206543922searchcondition0 == null ? null :
233           _OptSRESERVEDWORD1206543922searchcondition0.getParameterInfo();
234       if (whereP == null) {
235          return getParam(setClauseP);
236       }
237       if (setClauseP == null) {
238          return getParam(whereP);
239       }
240       ParameterInfo[] merged = new ParameterInfo[setClauseP.length + whereP.length];
241       System.arraycopy(setClauseP, 0, merged, 0, setClauseP.length);
242       System.arraycopy(whereP, 0, merged, setClauseP.length, whereP.length);
243       ParameterInfo[] param = getParam(merged);
244       return param;
245    }
246
247    private ParameterInfo[] getParam(ParameterInfo[] param) throws DException {
248       if (param == null)
249          return new ParameterInfo[] {};
250       _ColumnCharacteristics cc = tableDetails.getColumnCharacteristics();
251       ArrayList JavaDoc list = new ArrayList JavaDoc();
252       for (int i = 0; i < param.length; i++) {
253          if (param[i].getQuestionMark()) {
254             String JavaDoc columnName = param[i].getName();
255             if (columnName != null) {
256                if (param[i].getDataType() == -1) {
257                   int index = cc.getColumnIndex(columnName);
258                   param[i].setDataType(cc.getColumnType(index));
259                }
260              }else {
261                    try {
262                     int ordinalPosition=param[i].getOridinalPosition();
263                     param[i].setName(cc.getColumnName(ordinalPosition+6));
264                     if (param[i].getDataType() == -1) {
265                     param[i].setDataType(cc.getColumnType(ordinalPosition+6));
266                     }
267                    } catch (IllegalColumnException ex) {
268                       if (ex.getDseCode().equalsIgnoreCase("DSE3514")) {
269                          if (cc.getColumnCount() < (i + 6))
270                             throw new DmlStatementException("DSE8141", null);
271                       }
272                       throw ex;
273                    }
274                 }
275
276             list.add(param[i]);
277
278          } else if (param[i].getSubQuery()) {
279             ParameterInfo[] pp = param[i].getParameterInfoArray();
280             if (pp != null) {
281                list.addAll(Arrays.asList(pp));
282             }
283          }
284
285       }
286       ParameterInfo[] tt = new ParameterInfo[list.size()];
287       list.toArray(tt);
288       return tt;
289    }
290
291    public _Reference[] getReferences() throws com.daffodilwoods.database.resource.DException {
292       return null;
293    }
294
295    public _Reference[] checkColumnsValidityAsReference(ColumnDetails[] columns, TableDetails tableDetails, _ServerSession serverSession) throws DException {
296       ArrayList JavaDoc aList = new ArrayList JavaDoc(5);
297       if (columns != null) {
298          SetColumnProperties.setTableNamesAndDatatypesOfAllColumns(serverSession, columns, new TableDetails[] {tableDetails}
299              , aList, new ArrayList JavaDoc());
300          for (int i = 0, length = aList.size(); i < length; i++) {
301             ( (ColumnDetails) aList.get(i)).setUnderLyingReference(true);
302          }
303          return aList.size() > 0 ? (_Reference[]) aList.toArray(new _Reference[0]) : null;
304       }
305       return null;
306    }
307
308    private void checkColumnsValidity(ColumnDetails[] columns, TableDetails tableDetails) throws DException {
309       if (columns != null) {
310          for (int i = 0; i < columns.length; i++) {
311             if (!check(tableDetails, columns[i].getColumnName())) {
312                throw new DmlStatementException("DSE1276", new Object JavaDoc[] {tableDetails.getQualifiedTableName()}
313                                                , new DException("DSE1130", new Object JavaDoc[] {columns[i].getColumn(), tableDetails.getQualifiedTableName()}));
314             }
315          }
316       }
317    }
318
319    private boolean check(TableDetails tableDetails, String JavaDoc[] columnName) throws DException {
320       try {
321         if(_Optcorrelationname3 !=null){
322           String JavaDoc aliasName = (String JavaDoc)_Optcorrelationname3.run(null);
323           if(columnName.length >=2 && aliasName.equalsIgnoreCase(columnName[0])){
324             return true;
325           }
326         }
327           String JavaDoc[] tableName = tableDetails.getTableName();
328           for (int i = columnName.length - 2, j = tableName.length - 1,
329                length = columnName.length; i >= 0 && j >= 0; i--, j--) {
330             if (!tableName[j].equalsIgnoreCase(columnName[i])) {
331               return false;
332             }
333           }
334          boolean columnFound= tableDetails.cc.getColumnIndex(columnName[columnName.length - 1]) != -1;
335          return columnFound;
336       } catch (Exception JavaDoc e) {
337          return false;
338       }
339    }
340
341
342    private _Reference[] getWhereReferences(TableDetails tableDetails, _ServerSession serverSession) throws DException {
343          ArrayList JavaDoc list =new ArrayList JavaDoc();
344          ColumnDetails[] whereColumnDetails = _OptSRESERVEDWORD1206543922searchcondition0.getColumnDetails();
345         _Reference[] ref1 = checkColumnsValidityAsReference(whereColumnDetails, tableDetails, serverSession);
346          setKnownReferences(ref1, tableDetails,list);
347         _Reference[] ref2 = _OptSRESERVEDWORD1206543922searchcondition0.checkSemantic(serverSession);
348         _Reference[] ref3 = makeProvisionForKnownReferences(ref2, tableDetails);
349          list.addAll(knownReferences);
350           _Reference[] ref4 =(_Reference[])list.toArray(new _Reference[0]);
351
352           whereColumnDetails = removeUnknownColumnDetailFromWhereClause(whereColumnDetails,tableDetails);
353           columnDetail =GeneralPurposeStaticClass.getJoinOfColumnDetailsAndReferences(whereColumnDetails,ref4);
354
355           for (int i = 0; i < columnDetail.length; i++) {
356           if(columnDetail[i].getTableDetails()==null)
357             columnDetail[i].setTableDetails(tableDetails);
358           }
359
360          return GeneralPurposeStaticClass.getJointReferences(ref1, ref3);
361      }
362
363
364      /**
365         * Set the known references in Arraylist which come from where part
366         * e.g. where t1.ename='ename'
367         */

368        private void setKnownReferences(_Reference[] columns, TableDetails tableDetails,ArrayList JavaDoc alist) throws DException {
369           if (columns != null ) {
370              int len = columns.length;
371              for (int i = 0; i < len; i++) {
372                 if ( (columns[i].getReferenceType() != SimpleConstants.VARIABLECOLUMN) && check(tableDetails, ( (ColumnDetails) columns[i]).getColumnName())) {
373                    alist.add(columns[i]);
374                 }
375              }
376           }
377        }
378
379        private ColumnDetails[] removeUnknownColumnDetailFromWhereClause(ColumnDetails[] cd,TableDetails tableDetails) throws DException{
380          ArrayList JavaDoc listcd =new ArrayList JavaDoc();
381          for (int j = 0, length1 = cd.length; j < length1; ++j) {
382          if ((cd[j].getType() == REFERENCE || cd[j].getUnderLyingReference()) && cd[j].getTable() != null ) {
383            if (cd[j].getTable().equals(tableDetails))
384              listcd.add(cd[j]);
385          }
386        }
387           ColumnDetails[] cdlast = (ColumnDetails[]) listcd.toArray(new ColumnDetails[0]);
388           return cdlast ;
389        }
390
391
392
393    private _Reference[] getRightSetClauseReferences(TableDetails tableDetails, _ServerSession serverSession) throws DException {
394       ColumnDetails[] setRightColumnDetails = _setclauselist1.getColumnDetails(serverSession);
395       /* _Reference[] ref2 = _setclauselist1.checkSemantic(serverSession);
396          _Reference[] ref3 = makeProvisionForKnownReferences(ref1 , tableDetails) ;
397          return GeneralPurposeStaticClass.getJointReferences( ref1 , ref3 ); /n/c/b/ss */

398      return checkColumnsValidityAsReference(setRightColumnDetails, tableDetails, serverSession);
399    }
400
401    /* private void performChecking(_ServerSession serverSession) throws DException {
402        _Reference[] refToCheck = checkSemantic(serverSession);
403        if (refToCheck != null) {
404          for (int i = 0; i < refToCheck.length; i++) {
405            if (refToCheck[i].getReferenceType() != SimpleConstants.VARIABLECOLUMN) {
406              throw new DmlStatementException("DSE1276",new Object[] {tableDetails.getQualifiedTableName()},new DException("DSE1130",new Object[] {refToCheck[i].getColumn(),tableDetails.getQualifiedTableName()}));
407            }
408          }
409        }
410        questionMarks = refToCheck;
411     } */

412
413    private void performChecking(_ServerSession serverSession) throws DException {
414       _Reference[] refToCheck = checkSemantic(serverSession);
415       if (refToCheck != null) {
416          for (int i = 0; i < refToCheck.length; i++) {
417             if (refToCheck[i].getReferenceType() != SimpleConstants.VARIABLECOLUMN) {
418                String JavaDoc targetTableName = tableDetails.getQualifiedTableName();
419                ColumnDetails columnDetails = ( (ColumnDetails) refToCheck[i]);
420                String JavaDoc[] column_name = columnDetails.getColumnName();
421                if (column_name.length == 1) {
422                   throw new DmlStatementException("DSE1276", new Object JavaDoc[] {targetTableName}
423                                                   , new DException("DSE1130", new Object JavaDoc[] {refToCheck[i].getColumn(), targetTableName}));
424                } else if (column_name.length == 2) {
425                   String JavaDoc tableName = tableDetails.getQualifiedTableName();
426                   int lastIndexOfDot = tableName.lastIndexOf(".");
427                   tableName = tableName.substring(lastIndexOfDot + 1);
428                   if( aliasName == null || !aliasName.equalsIgnoreCase(column_name[0])){
429                     if (tableName.equalsIgnoreCase(column_name[0])) {
430                       throw new DmlStatementException("DSE1276",
431                                                       new Object JavaDoc[] {targetTableName}
432                                                       ,
433                                                       new DException("DSE1130",
434                           new Object JavaDoc[] {refToCheck[i].getColumn(), targetTableName}));
435                     }
436                     else {
437                       throw new DmlStatementException("DSE1276",
438                                                       new Object JavaDoc[] {targetTableName}
439                                                       ,
440                                                       new DException("DSE1130",
441                           new Object JavaDoc[] {refToCheck[i].getColumn(), column_name[0]}));
442                     }
443                   }
444                } else if (column_name.length == 3) {
445                   String JavaDoc tableName = tableDetails.getQualifiedTableName();
446                   int lastIndexOfDot = tableName.lastIndexOf(".");
447                   tableName = tableName.substring(lastIndexOfDot + 1);
448                   String JavaDoc schemName = tableDetails.getSchemaName();
449                   if ( (schemName + "." + tableName).equalsIgnoreCase(column_name[0] + "." + column_name[1])) {
450                      throw new DmlStatementException("DSE1276", new Object JavaDoc[] {targetTableName}
451                          , new DException("DSE1130", new Object JavaDoc[] {refToCheck[i].getColumn(), targetTableName}));
452                   } else {
453                      throw new DmlStatementException("DSE1276", new Object JavaDoc[] {targetTableName}
454                          , new DException("DSE1130", new Object JavaDoc[] {refToCheck[i].getColumn(), column_name[0] + "." + column_name[1]}));
455                   }
456                } else {
457                   if ( (targetTableName).equalsIgnoreCase(column_name[0] + "." + column_name[1] + column_name[2])) {
458                      throw new DmlStatementException("DSE1276", new Object JavaDoc[] {targetTableName}
459                          , new DException("DSE1130", new Object JavaDoc[] {refToCheck[i].getColumn(), targetTableName}));
460                   } else {
461                      throw new DmlStatementException("DSE1276", new Object JavaDoc[] {targetTableName}
462                          , new DException("DSE1130", new Object JavaDoc[] {refToCheck[i].getColumn(), column_name[0] + "." + column_name[1] + "." + column_name[2]}));
463                   }
464                }
465             }
466          }
467       }
468       questionMarks = refToCheck;
469    }
470
471    private _Reference[] makeProvisionForKnownReferences(_Reference[] columns, TableDetails tableDetails) throws DException {
472       ArrayList JavaDoc toReturn = new ArrayList JavaDoc(5);
473       if (columns != null) {
474          int len = columns.length;
475          for (int i = 0; i < len; i++) {
476
477             if ( (columns[i].getReferenceType() != SimpleConstants.SEQUENCE) && (columns[i].getReferenceType() != SimpleConstants.VARIABLECOLUMN) && check(tableDetails, ( (ColumnDetails) columns[i]).getColumnName())) {
478                knownReferences.add(columns[i]);
479             } else {
480                toReturn.add(columns[i]);
481             }
482          }
483       }
484       return toReturn.size() > 0 ? (_Reference[]) toReturn.toArray(new _Reference[0]) : null;
485    }
486
487    public Object JavaDoc clone() throws CloneNotSupportedException JavaDoc {
488       return this;
489    }
490
491
492   private ColumnDetails[] getColumnDetail() throws DException {
493
494     if(_OptSRESERVEDWORD1206543922searchcondition0!=null) {
495       ColumnDetails[] columndetail =_OptSRESERVEDWORD1206543922searchcondition0.getColumnDetails();
496       ArrayList JavaDoc list =new ArrayList JavaDoc();
497       for (int i = 0; i < columndetail.length; i++) {
498       int type = columndetail[i].getType();
499       if (type == FUNCTIONAL || type == GROUPING || type == SCALARFUNCTION ||
500           type == CASEEXPRESSION || type == USERFUNCTION ) {
501         addColumns(list, columndetail[i].getExistingColumnDetails());
502       }
503       }
504
505       return (ColumnDetails[]) list.toArray(new ColumnDetails[0]);
506     }
507     return null;
508   }
509
510   private void addColumns(ArrayList JavaDoc set, ColumnDetails[] columnDetails1) throws
511     DException {
512       if (columnDetails1.length > 0 && columnDetails1[0].getContainClauseFlag()) {
513         return;
514       }
515       for (int i = 0, length = columnDetails1.length; i < length; i++) {
516         int type = columnDetails1[i].getType();
517         if (type == FUNCTIONAL || type == GROUPING || type == SCALARFUNCTION ||
518             type == CASEEXPRESSION || type == USERFUNCTION ) {
519           addColumns(set, columnDetails1[i].getExistingColumnDetails());
520         }
521       }
522     }
523
524
525    public String JavaDoc toString() {
526            StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
527            sb.append(" ");
528            sb.append(_SRESERVEDWORD12065439225);
529            sb.append(" ");
530            sb.append(_targettable4);
531            sb.append(" ");
532            if(_Optcorrelationname3 != null){
533              sb.append(_Optcorrelationname3);
534              sb.append(" ");
535            }
536            sb.append(_SRESERVEDWORD12065439222);
537            sb.append(" ");
538            sb.append(_setclauselist1);
539            sb.append(" ");
540            if(_OptSRESERVEDWORD1206543922searchcondition0 != null ) {
541            sb.append(_OptSRESERVEDWORD1206543922searchcondition0);
542            }
543            return sb.toString();
544    }
545
546 }
547
Popular Tags