KickJava   Java API By Example, From Geeks To Geeks.

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


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.sql99.*;
8 import com.daffodilwoods.daffodildb.server.sql99.common.*;
9 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*;
10 import com.daffodilwoods.daffodildb.server.sql99.dql.listenerevents.*;
11 import com.daffodilwoods.daffodildb.server.sql99.dql.queryexpression.*;
12 import com.daffodilwoods.daffodildb.server.sql99.dql.queryexpression.orderbyclause.*;
13 import com.daffodilwoods.daffodildb.server.sql99.dql.queryexpression.queryspecification.*;
14 import com.daffodilwoods.daffodildb.server.sql99.dql.resultset.*;
15 import com.daffodilwoods.daffodildb.server.sql99.dql.tableexpression.*;
16 import com.daffodilwoods.daffodildb.server.sql99.token.*;
17 import com.daffodilwoods.daffodildb.server.sql99.utils.*;
18 import com.daffodilwoods.daffodildb.utils.*;
19 import com.daffodilwoods.daffodildb.utils.field.*;
20 import com.daffodilwoods.database.resource.*;
21
22 public class selectstatementsinglerow implements com.daffodilwoods.daffodildb.utils.parser.StatementExecuter, SQLdatastatement, _Executer {
23    public orderbyclause _Optorderbyclause0;
24    public tableexpression _tableexpression1;
25    public selecttargetlist _selecttargetlist2;
26    public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439223;
27    public selectlist _selectlist4;
28    public topfunction _Opttopfunction5;
29    public setquantifier _Optsetquantifier6;
30    public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439227;
31
32
33    _Reference[] queryExpressionReferences;
34    private Object JavaDoc[][] refValueFromRecievedVV;
35    int refValueCount = 0;
36
37    private _QueryExecuter executer;
38    private queryexpression queryExpression;
39
40    public _Reference[] checkSemantic(_ServerSession serverSession) throws DException {
41       queryspecification querySpecification = new queryspecification();
42       querySpecification._SRESERVEDWORD12065439224 = new SRESERVEDWORD1206543922();
43       querySpecification._SRESERVEDWORD12065439224._SRESERVEDWORD12065439220 = " SELECT ";
44       querySpecification._selectlist1 = _selectlist4;
45       querySpecification._Opttopfunction2 = _Opttopfunction5;
46       querySpecification._Optsetquantifier3 = _Optsetquantifier6;
47       querySpecification._tableexpression0 = _tableexpression1;
48
49       queryExpression = new queryexpression();
50       queryExpression._queryexpressionbody2 = querySpecification;
51       queryExpression._Optorderbyclause1 = _Optorderbyclause0;
52       queryExpressionReferences = queryExpression.checkSemantic(serverSession, true);
53       ParameterInfo[] paraInfo = queryExpression.getParameterInfo();
54       if (paraInfo != null)
55          for (int i = 0; i < paraInfo.length; i++) {
56             if (paraInfo[i].getQuestionMark()) {
57                throw new DException("DSE8164", null);
58             }
59          }
60       checkForLength();
61       _Reference[] ref2 = GeneralPurposeStaticClass.changeReferences(_selecttargetlist2.getColumnDetails());
62       return GeneralPurposeStaticClass.getJointReferences(queryExpressionReferences, ref2);
63    }
64
65    public Object JavaDoc run(Object JavaDoc obj) throws DException {
66       executer = (_QueryExecuter) queryExpression.run( ( (_StatementExecutionContext) obj).getServerSession());
67       return this;
68    }
69
70    public Object JavaDoc execute(_VariableValues vv) throws DException {
71       if (vv == null) {
72          return null;
73       }
74       _Iterator iterator = (_Iterator) executer.executeForFresh(vv);
75       vv.setIterator(iterator);
76       if (queryExpressionReferences != null) {
77          iterator.setConditionVariableValue(queryExpressionReferences, (Object JavaDoc[]) vv.getColumnValues(queryExpressionReferences), 0);
78
79       }
80       if (iterator.first()) { // To ensure that only a single row exists
81
if (iterator.next()) { // in the iterator for select
82
throw new DException("DSE1301", (Object JavaDoc[])null);
83          }
84       }
85       Object JavaDoc[][] refValueFromRecievedVV = vv.getReferenceAndValuePair();
86       if (iterator.first()) {
87          _ColumnCharacteristics cc = ( (_SelectIterator) iterator).getColumnCharacteristics();
88          Object JavaDoc[] recordValue = (Object JavaDoc[]) ( (_SelectIterator) iterator).getSelectColumnValues();
89          String JavaDoc[] columnNames = cc.getColumnNames();
90          int columnCount = columnNames.length;
91          _Reference[] targetReferences = (_Reference[]) _selecttargetlist2.getColumnDetails();
92          _Reference[] refToSet = new _Reference[columnCount];
93          Object JavaDoc[] valuesToSet = new Object JavaDoc[columnCount];
94          for (int i = 0; i < columnCount; i++) {
95             refToSet[i] = getCorrespondingReference(targetReferences[i].getColumn(), refValueFromRecievedVV);
96             valuesToSet[i] = recordValue[i];
97          }
98          makeProvisionForAllReferences(refToSet, valuesToSet, vv);
99          vv.setConditionVariableValue(refToSet, valuesToSet, 0);
100       } else {
101       }
102       return null;
103    }
104
105    private _Reference getCorrespondingReference(String JavaDoc name, Object JavaDoc[][] refValueFromRecievedVV) throws DException {
106       _Reference tmpReference = null;
107       for (int i = 0; i < refValueFromRecievedVV.length; i++) {
108          tmpReference = (_Reference) refValueFromRecievedVV[i][0];
109          if (name.equalsIgnoreCase(tmpReference.getColumn())) {
110             return tmpReference;
111          }
112       }
113       throw new DException("DSE306", (Object JavaDoc[])null);
114    }
115
116    public Object JavaDoc execute(Object JavaDoc[] objectArray) throws DException {
117       throw new RuntimeException JavaDoc(" This method is not Valid, Call this method with Variable Values ");
118    }
119
120    public void checkForLength() throws DException {
121       ColumnDetails[] columnDetails = _selecttargetlist2.getColumnDetails();
122       if (_selectlist4.getDerivedColumnDetails().length != columnDetails.length) {
123          throw new DException("DSE214", null);
124       }
125    }
126
127    public Object JavaDoc[] getParameters(Object JavaDoc obj) throws com.daffodilwoods.database.resource.DException {
128       Object JavaDoc[] parm1 = _selecttargetlist2.getParameters(obj);
129       return parm1; // To return object from merging parm1 and parm2
130
}
131
132    public _Reference[] getReferences() throws DException {
133       ArrayList arr = new ArrayList();
134       arr.addAll(Arrays.asList( (_Reference[]) _selecttargetlist2.getColumnDetails()));
135       if (queryExpressionReferences != null) {
136          arr.addAll(Arrays.asList(queryExpressionReferences));
137       }
138       return (_Reference[]) arr.toArray(new _Reference[0]);
139    }
140
141    public Object JavaDoc executeForFresh(Object JavaDoc[] values) throws DException {
142       throw new RuntimeException JavaDoc(" This method is not Valid, Call Execute Method with Variable Values ");
143    }
144
145    public String JavaDoc toString() {
146       StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
147       sb.append(" ");
148       sb.append(_SRESERVEDWORD12065439227);
149       sb.append(" ");
150       if (_Optsetquantifier6 != null) {
151          sb.append(_Optsetquantifier6);
152          sb.append(" ");
153       }
154       if (_Opttopfunction5 != null) {
155          sb.append(_Opttopfunction5);
156          sb.append(" ");
157       }
158       sb.append(_selectlist4);
159       sb.append(" ");
160       sb.append(_SRESERVEDWORD12065439223);
161       sb.append(" ");
162       sb.append(_selecttargetlist2);
163       sb.append(" ");
164       sb.append(_tableexpression1);
165       return sb.toString();
166    }
167
168    private void makeProvisionForAllReferences(_Reference[] references, Object JavaDoc[] values, _VariableValues vv) throws DException {
169       Object JavaDoc[][] afterExecuteRefValuePair = vv.getReferenceAndValuePair();
170       for (int j = 0; j < references.length; j++) {
171          for (int i = 0; i < afterExecuteRefValuePair.length; i++) {
172             _Reference vvRef = (_Reference) afterExecuteRefValuePair[i][0];
173             if (vvRef.getColumn().equalsIgnoreCase(references[j].getColumn())) {
174                values[j] = FieldUtility.convertToAppropriateType( (FieldBase) values[j], vvRef.getDatatype(), vvRef.getSize(), null);
175                vv.setConditionVariableValue(
176                    new _Reference[] {vvRef}
177                    , new Object JavaDoc[] {values[j]}
178                    , 1);
179             }
180          }
181       }
182    }
183
184    public Object JavaDoc clone() throws CloneNotSupportedException JavaDoc {
185       return this;
186    }
187 }
188
Popular Tags