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 [][] 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 run(Object obj) throws DException { 66 executer = (_QueryExecuter) queryExpression.run( ( (_StatementExecutionContext) obj).getServerSession()); 67 return this; 68 } 69 70 public Object 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 []) vv.getColumnValues(queryExpressionReferences), 0); 78 79 } 80 if (iterator.first()) { if (iterator.next()) { throw new DException("DSE1301", (Object [])null); 83 } 84 } 85 Object [][] refValueFromRecievedVV = vv.getReferenceAndValuePair(); 86 if (iterator.first()) { 87 _ColumnCharacteristics cc = ( (_SelectIterator) iterator).getColumnCharacteristics(); 88 Object [] recordValue = (Object []) ( (_SelectIterator) iterator).getSelectColumnValues(); 89 String [] columnNames = cc.getColumnNames(); 90 int columnCount = columnNames.length; 91 _Reference[] targetReferences = (_Reference[]) _selecttargetlist2.getColumnDetails(); 92 _Reference[] refToSet = new _Reference[columnCount]; 93 Object [] valuesToSet = new Object [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 name, Object [][] 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 [])null); 114 } 115 116 public Object execute(Object [] objectArray) throws DException { 117 throw new RuntimeException (" 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 [] getParameters(Object obj) throws com.daffodilwoods.database.resource.DException { 128 Object [] parm1 = _selecttargetlist2.getParameters(obj); 129 return parm1; } 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 executeForFresh(Object [] values) throws DException { 142 throw new RuntimeException (" This method is not Valid, Call Execute Method with Variable Values "); 143 } 144 145 public String toString() { 146 StringBuffer sb = new StringBuffer (); 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 [] values, _VariableValues vv) throws DException { 169 Object [][] 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 [] {values[j]} 178 , 1); 179 } 180 } 181 } 182 } 183 184 public Object clone() throws CloneNotSupportedException { 185 return this; 186 } 187 } 188 | Popular Tags |