| 1 package com.daffodilwoods.daffodildb.server.sql99.utils; 2 3 import com.daffodilwoods.daffodildb.client.*; 4 import com.daffodilwoods.daffodildb.server.datasystem.utility._Record; 5 import com.daffodilwoods.daffodildb.server.sql99.common.*; 6 import com.daffodilwoods.daffodildb.server.sql99.dql.execution.*; 7 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*; 8 import com.daffodilwoods.daffodildb.utils.comparator.*; 9 import com.daffodilwoods.daffodildb.utils.field.*; 10 import com.daffodilwoods.database.resource.*; 11 import com.daffodilwoods.database.sqlinitiator.*; 12 import com.daffodilwoods.database.utility.P; 13 14 15 public abstract class BaseJoinIterator implements _Iterator { 16 protected _Iterator leftIterator; 17 protected _Iterator rightIterator; 18 public final static int ONLYFIRSTHAVEDATA = -2; 19 public final static int ONLYSECONDHAVEDATA = 2; 20 public final static int BOTHHAVESAMEDATA = 0; 21 public final static int FIRSTISCURRENT = -1; 22 public final static int SECONDISCURRENT = 1; 23 protected ColumnDetails[] hasRecordReferences; 24 protected _OrderCount orderCount; 25 protected int leftOrderCount = -1; 26 protected int state = INVALIDSTATE; 27 private SuperComparator superComparator; 29 protected _Reference[] underlyingRef; 30 31 public BaseJoinIterator(_Iterator leftIterator0, _Iterator rightIterator0, ColumnDetails[] hasRecordReferences0) { 32 leftIterator = leftIterator0; 33 rightIterator = rightIterator0; 34 hasRecordReferences = hasRecordReferences0; 35 } 36 37 public BaseJoinIterator(_Iterator leftIterator0, _Iterator rightIterator0) { 38 leftIterator = leftIterator0; 39 rightIterator = rightIterator0; 40 } 41 42 public _OrderCount getOrderCounts() throws com.daffodilwoods.database.resource.DException { 43 _OrderCount orderCount1 = leftIterator.getOrderCounts(); 44 _OrderCount orderCount2 = rightIterator.getOrderCounts(); 45 int leftOrderCount = orderCount1.getOrderCount(); 46 _Order order1 = orderCount1.getOrders(); 47 _Order order2 = orderCount2.getOrders(); 48 _Order order = GeneralPurposeStaticClass.getJoinOrdered(order1, order2); 49 orderCount = new OrderCount(leftOrderCount + orderCount2.getOrderCount(), order); 50 return orderCount; 51 } 52 53 public void setKeyCount(Object [][] tableAndKeyCount) throws com.daffodilwoods.database.resource.DException { 54 leftIterator.setKeyCount(tableAndKeyCount); 55 } 56 57 public TableDetails[] getTableDetails() throws com.daffodilwoods.database.resource.DException { 58 59 throw new java.lang.UnsupportedOperationException ("Method getTableDetails() not yet implemented."); 60 } 61 62 public _Iterator getBaseIterator(ColumnDetails column) throws com.daffodilwoods.database.resource.DException { 63 64 throw new java.lang.UnsupportedOperationException ("Method getBaseIterator() not yet implemented."); 65 } 66 67 public void setConditionVariableValue(_Reference[] parm1, Object [] parm2, int parm3) throws DException { 68 if(underlyingRef!=null){ 69 parm1 = GeneralPurposeStaticClass.getJointReferences(parm1,underlyingRef); 70 parm2 = GeneralPurposeStaticClass.getJointValues(this, parm2,underlyingRef.length); 71 } 72 73 leftIterator.setConditionVariableValue(parm1, parm2, parm3); 74 rightIterator.setConditionVariableValue(parm1, parm2, parm3); 75 } 76 77 public _Order getDefaultOrder() throws com.daffodilwoods.database.resource.DException { 78 return GeneralPurposeStaticClass.getJoinOrdered(leftIterator.getDefaultOrder(), rightIterator.getDefaultOrder()); 79 } 80 81 public _ExecutionPlan getExecutionPlan() throws com.daffodilwoods.database.resource.DException { 82 83 throw new java.lang.UnsupportedOperationException ("Method getExecutionPlan() not yet implemented."); 84 } 85 86 public ExecutionPlanForBrowser getExecutionPlanForBrowser() throws com.daffodilwoods.database.resource.DException { 87 88 throw new java.lang.UnsupportedOperationException ("Method getExecutionPlanForBrowser() not yet implemented."); 89 } 90 91 public Object getColumnValues(_Reference[] parm1) throws com.daffodilwoods.database.resource.DException { 92 93 throw new java.lang.UnsupportedOperationException ("Method getColumnValues() not yet implemented."); 94 } 95 96 public Object getColumnValues(_Reference parm1) throws com.daffodilwoods.database.resource.DException { 97 return ( (Object []) getColumnValues(new _Reference[] {parm1}))[0]; 98 } 99 100 public boolean seekFromTop(_IndexPredicate[] parm1) throws com.daffodilwoods.database.resource.DException { 101 102 throw new java.lang.UnsupportedOperationException ("Method seekFromTop() not yet implemented."); 103 } 104 105 public boolean seekFromBottom(_IndexPredicate[] parm1) throws com.daffodilwoods.database.resource.DException { 106 107 throw new java.lang.UnsupportedOperationException ("Method seekFromBottom() not yet implemented."); 108 } 109 110 public boolean seekFromTopRelative(Object parm1) throws com.daffodilwoods.database.resource.DException { 111 while (next()) { 112 int cmp = compareValues( (Object []) parm1); 113 if (cmp >= 0) { 114 return true; 115 } 116 } 117 state = AFTERLAST; 118 return false; 119 } 120 121 private int compareValues(Object [] second) throws DException { 122 ColumnDetails[] cd = null; 123 try { 124 cd = orderCount.getOrders().getColumnDetails(); 125 Object [] first = (Object []) getColumnValues(cd); 126 return superComparator.compare(first, second); 127 } catch (NullPointerException ex) { 128 boolean[] orderType = orderCount.getOrders().getOrderOfColumns(); 129 superComparator = GeneralPurposeStaticClass.getObjectOrderComparator(orderType); 130 return superComparator.compare(getColumnValues(cd), second); 131 } 132 } 133 134 public boolean seekFromBottomRelative(Object parm1) throws com.daffodilwoods.database.resource.DException { 135 while (previous()) { 136 int cmp = compareValues( (Object []) parm1); 137 if (cmp <= 0) { 138 return true; 139 } 140 } 141 state = BEFOREFIRST; 142 return false; 143 } 144 145 public _KeyColumnInformation[] getKeyColumnInformations() throws com.daffodilwoods.database.resource.DException { 146 147 throw new java.lang.UnsupportedOperationException ("Method getKeyColumnInformations() not yet implemented."); 148 } 149 150 public Object [] getUniqueColumnReference() throws com.daffodilwoods.database.resource.DException { 151 152 throw new java.lang.UnsupportedOperationException ("Method getUniqueColumnReference() not yet implemented."); 153 } 154 155 public boolean seek(Object parm1) throws com.daffodilwoods.database.resource.DException { 156 157 throw new java.lang.UnsupportedOperationException ("Method seek() not yet implemented."); 158 } 159 160 public boolean first() throws com.daffodilwoods.database.resource.DException { 161 162 throw new java.lang.UnsupportedOperationException ("Method first() not yet implemented."); 163 } 164 165 public boolean last() throws com.daffodilwoods.database.resource.DException { 166 167 throw new java.lang.UnsupportedOperationException ("Method last() not yet implemented."); 168 } 169 170 public boolean next() throws com.daffodilwoods.database.resource.DException { 171 172 throw new java.lang.UnsupportedOperationException ("Method next() not yet implemented."); 173 } 174 175 public boolean previous() throws com.daffodilwoods.database.resource.DException { 176 177 throw new java.lang.UnsupportedOperationException ("Method previous() not yet implemented."); 178 } 179 180 public Object getKey() throws com.daffodilwoods.database.resource.DException { 181 return leftIterator.getKey(); 182 } 183 184 public void move(Object keys) throws com.daffodilwoods.database.resource.DException { 185 leftIterator.move(keys); 186 } 187 188 public byte[] getByteKey() throws DException { 189 return leftIterator.getByteKey(); 190 } 191 192 public void moveByteKey(byte[] key) throws DException { 193 leftIterator.moveByteKey(key); 194 } 195 196 public _Record getRecord() throws com.daffodilwoods.database.resource.DException { 197 198 throw new java.lang.UnsupportedOperationException ("Method getRecord() not yet implemented."); 199 } 200 201 public Object getColumnValues() throws com.daffodilwoods.database.resource.DException { 202 203 throw new java.lang.UnsupportedOperationException ("Method getColumnValues() not yet implemented."); 204 } 205 206 public Object getColumnValues(int[] parm1) throws com.daffodilwoods.database.resource.DException { 207 new Exception ("sdfsdjfb").printStackTrace(); 208 209 throw new java.lang.UnsupportedOperationException ("Method getColumnValues() not yet implemented."); 210 } 211 212 public _ExecutionPlan getExecutionPlan(String name) throws DException { 213 _ExecutionPlan cplans[] = new _ExecutionPlan[2]; 214 cplans[0] = leftIterator.getExecutionPlan(); 215 cplans[1] = rightIterator.getExecutionPlan(); 216 return new ExecutionPlan(name, cplans, null, null, null); 217 } 218 219 public Object [][] getFunctionalColumnMapping() throws DException { 220 return GeneralPurposeStaticClass.getMappingOfTableBVE(leftIterator.getFunctionalColumnMapping(), rightIterator.getFunctionalColumnMapping()); 221 } 222 223 public _Iterator getBaseIteratorHasRecord(ColumnDetails hasRecordColumn) throws DException { 224 if (hasRecordReferences != null) { 225 for (int i = 0, length = hasRecordReferences.length; i < length; i++) { 226 if (hasRecordReferences[i] == hasRecordColumn) { 227 return this; 228 } 229 } 230 } 231 _Iterator iterator = leftIterator.getBaseIteratorHasRecord(hasRecordColumn); 232 if (iterator != null) { 233 return iterator; 234 } 235 return rightIterator.getBaseIteratorHasRecord(hasRecordColumn); 236 237 } 238 239 public FieldBase field(_Reference reference) throws com.daffodilwoods.database.resource.DException { 240 throw new java.lang.UnsupportedOperationException ("Method not yet implemented."); 241 } 242 243 public FieldBase[] fields(_Reference[] references) throws com.daffodilwoods.database.resource.DException { 244 throw new java.lang.UnsupportedOperationException ("Method fields() not yet implemented."); 245 } 246 247 public FieldBase[] fields(int[] columns) throws com.daffodilwoods.database.resource.DException { 248 throw new java.lang.UnsupportedOperationException ("Method fields() not yet implemented."); 249 } 250 251 public void releaseResource() throws DException { 252 leftIterator.releaseResource(); 253 rightIterator.releaseResource(); 254 superComparator = null; 255 } 256 257 public void setSpecificUnderlyingReferences(_Reference[] specificUnderlyingReferences) throws DException{ 258 underlyingRef=specificUnderlyingReferences; 259 } 260 261 } 262 | Popular Tags |