1 package com.daffodilwoods.daffodildb.server.sql99.dcl.sqlcontrolstatement; 2 3 import com.daffodilwoods.daffodildb.server.serversystem.*; 4 import com.daffodilwoods.daffodildb.server.sql99.*; 5 import com.daffodilwoods.daffodildb.server.sql99.utils.*; 6 import com.daffodilwoods.daffodildb.utils.*; 7 import com.daffodilwoods.daffodildb.utils.byteconverter.*; 8 import com.daffodilwoods.daffodildb.utils.field.*; 9 import com.daffodilwoods.daffodildb.utils.parser.*; 10 import com.daffodilwoods.database.resource.*; 11 12 public class SearchConditionUtility { 13 14 public static Object executeExpression(StatementExecuter searchCon, 15 _Reference[] searchConRefs, 16 _VariableValues variableValues, 17 _ServerSession serverSession) throws DException { 18 Object returnValue; 19 if (searchConRefs != null) { 20 Object [] values = new Object [searchConRefs.length]; 21 Object [][] beforeExecuteRefValuePair = variableValues.getReferenceAndValuePair(); 22 if (beforeExecuteRefValuePair != null) { 23 for (int i = 0; i < beforeExecuteRefValuePair.length; i++) { 24 _Reference vvRef = (_Reference) beforeExecuteRefValuePair[i][0]; 25 for (int j = 0; j < searchConRefs.length; j++) { 26 if (vvRef.getQualifiedColumnName().equalsIgnoreCase(searchConRefs[j].getQualifiedColumnName())) { 27 searchConRefs[j].setDatatype(vvRef.getDatatype()); 28 30 searchConRefs[j].setSize(vvRef.getSize()); 31 values[j] = beforeExecuteRefValuePair[i][1]; 32 } 33 } 34 } 35 } 36 37 for (int i = 0; i < values.length; i++) { 38 FieldBase fb = (FieldBase) values[i]; 39 if (!fb.isNull()) { 40 if (fb.getBufferRange() == null) { 41 byte[] by = CCzufDpowfsufs.getBytes(fb.getObject(), fb.getDatatype(), -1, false); 42 fb.setBufferRange(new BufferRange(by)); 43 } 44 } 45 } 46 47 VariableValues tempVV = new VariableValues(searchConRefs, serverSession); 48 tempVV.setConditionVariableValue(searchConRefs, values, 1); 49 returnValue = searchCon.run(tempVV); 50 51 53 Object [][] afterExecuteRefValuePair = tempVV.getReferenceAndValuePair(); 54 Object [][] valueToSetPair = variableValues.getReferenceAndValuePair(); 55 if (afterExecuteRefValuePair != null) { 56 for (int i = 0; i < afterExecuteRefValuePair.length; i++) { 57 _Reference vvRef = (_Reference) afterExecuteRefValuePair[i][0]; 58 if (valueToSetPair != null) { 59 for (int j = 0; j < valueToSetPair.length; j++) { 60 _Reference toSetRef = (_Reference) valueToSetPair[j][0]; 61 if (vvRef.getQualifiedColumnName().equalsIgnoreCase(toSetRef.getQualifiedColumnName())) { 62 variableValues.setConditionVariableValue( 63 new _Reference[] {toSetRef} 64 , 65 new Object [] {afterExecuteRefValuePair[i][1]} 66 , 67 1); 68 } 69 } 70 } 71 } 72 } 73 } else { 74 VariableValues tempVV = new VariableValues(searchConRefs, serverSession); 75 returnValue = searchCon.run(tempVV); 76 } 77 return returnValue; 78 } 79 80 public static Object executeStatements(_Executer stt, 81 _Reference[] searchConRefs, 82 _VariableValues variableValues, 83 _ServerSession serverSession) throws 84 DException { 85 86 Object returnValue; 87 if (searchConRefs != null) { 88 Object [] values = new Object [searchConRefs.length]; 89 Object [][] beforeExecuteRefValuePair = variableValues.getReferenceAndValuePair(); 90 if (beforeExecuteRefValuePair != null) { 91 for (int i = 0; i < beforeExecuteRefValuePair.length; i++) { 92 _Reference vvRef = (_Reference) beforeExecuteRefValuePair[i][0]; 93 for (int j = 0; j < searchConRefs.length; j++) { 94 if (vvRef.getQualifiedColumnName().equalsIgnoreCase(searchConRefs[j]. 95 getQualifiedColumnName())) { 96 searchConRefs[j].setDatatype(vvRef.getDatatype()); 97 99 searchConRefs[j].setSize(vvRef.getSize()); 100 values[j] = beforeExecuteRefValuePair[i][1]; 101 } 102 } 103 } 104 } 105 106 for (int i = 0; i < values.length; i++) { 107 FieldBase fb = (FieldBase) values[i]; 108 if (!fb.isNull()) { 109 if (fb.getBufferRange() == null) { 110 byte[] by = CCzufDpowfsufs.getBytes(fb.getObject(), fb.getDatatype(), -1, false); 111 fb.setBufferRange(new BufferRange(by)); 112 } 113 } 114 } 115 VariableValues tempVV = new VariableValues(searchConRefs, serverSession); 116 tempVV.setConditionVariableValue(searchConRefs, values, 1); 117 returnValue = stt.execute(tempVV); 118 119 121 Object [][] afterExecuteRefValuePair = tempVV.getReferenceAndValuePair(); 122 Object [][] valueToSetPair = variableValues.getReferenceAndValuePair(); 123 if (afterExecuteRefValuePair != null) { 124 for (int i = 0; i < afterExecuteRefValuePair.length; i++) { 125 _Reference vvRef = (_Reference) afterExecuteRefValuePair[i][0]; 126 if (valueToSetPair != null) { 127 for (int j = 0; j < valueToSetPair.length; j++) { 128 _Reference toSetRef = (_Reference) valueToSetPair[j][0]; 129 if (vvRef.getQualifiedColumnName().equalsIgnoreCase(toSetRef.getQualifiedColumnName())) { 130 variableValues.setConditionVariableValue( 131 new _Reference[] {toSetRef} 132 , 133 new Object [] {afterExecuteRefValuePair[i][1]} 134 , 135 1); 136 } 137 } 138 } 139 } 140 } 141 } else { 142 VariableValues tempVV = new VariableValues(searchConRefs, serverSession); 143 returnValue = stt.execute(tempVV); 144 } 145 return returnValue; 146 } 147 148 public static void printReferences(_Reference[] refs) { 149 if (refs != null) 150 for (int i = 0; i < refs.length; i++) { 151 ; } 153 } 154 155 public static Object executeForAliasStatements(_Executer stt, 156 _Reference[] searchConRefs, 157 _VariableValues variableValues, 158 _ServerSession serverSession) throws DException { 159 160 Object returnValue; 161 if (searchConRefs != null) { 162 Object [] values = new Object [searchConRefs.length]; 163 VariableValues tempVV = new VariableValues(searchConRefs, serverSession); 164 tempVV.setConditionVariableValue(searchConRefs, values, 1); 165 returnValue = stt.execute(tempVV); 166 167 169 Object [][] afterExecuteRefValuePair = tempVV.getReferenceAndValuePair(); 170 Object [][] valueToSetPair = variableValues.getReferenceAndValuePair(); 171 if (afterExecuteRefValuePair != null) { 172 for (int i = 0; i < afterExecuteRefValuePair.length; i++) { 173 _Reference vvRef = (_Reference) afterExecuteRefValuePair[i][0]; 174 if (valueToSetPair != null) { 175 for (int j = 0; j < valueToSetPair.length; j++) { 176 _Reference toSetRef = (_Reference) valueToSetPair[j][0]; 177 if (vvRef.getQualifiedColumnName().equalsIgnoreCase(toSetRef.getQualifiedColumnName())) { 178 variableValues.setConditionVariableValue( 179 new _Reference[] {toSetRef} 180 , 181 new Object [] {afterExecuteRefValuePair[i][1]} 182 , 183 1); 184 } 185 } 186 } 187 } 188 } 189 } else { 190 VariableValues tempVV = new VariableValues(searchConRefs, serverSession); 191 returnValue = stt.execute(tempVV); 192 } 193 return returnValue; 194 } 195 } 196 | Popular Tags |