KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > utils > BaseJoinIterator


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; // kept for seekForTopRelativeCase in case of Intersect when permanent
28

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 JavaDoc[][] tableAndKeyCount) throws com.daffodilwoods.database.resource.DException {
54       leftIterator.setKeyCount(tableAndKeyCount);
55    }
56
57    public TableDetails[] getTableDetails() throws com.daffodilwoods.database.resource.DException {
58       /**@todo Implement this com.daffodilwoods.daffodildb.server.sql99.dql.interfaces._Iterator method*/
59       throw new java.lang.UnsupportedOperationException JavaDoc("Method getTableDetails() not yet implemented.");
60    }
61
62    public _Iterator getBaseIterator(ColumnDetails column) throws com.daffodilwoods.database.resource.DException {
63       /**@todo Implement this com.daffodilwoods.daffodildb.server.sql99.dql.interfaces._Iterator method*/
64       throw new java.lang.UnsupportedOperationException JavaDoc("Method getBaseIterator() not yet implemented.");
65    }
66
67    public void setConditionVariableValue(_Reference[] parm1, Object JavaDoc[] 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       /**@todo Implement this com.daffodilwoods.daffodildb.server.sql99.dql.interfaces._Iterator method*/
83       throw new java.lang.UnsupportedOperationException JavaDoc("Method getExecutionPlan() not yet implemented.");
84    }
85
86    public ExecutionPlanForBrowser getExecutionPlanForBrowser() throws com.daffodilwoods.database.resource.DException {
87       /**@todo Implement this com.daffodilwoods.daffodildb.server.sql99.dql.interfaces._Iterator method*/
88       throw new java.lang.UnsupportedOperationException JavaDoc("Method getExecutionPlanForBrowser() not yet implemented.");
89    }
90
91    public Object JavaDoc getColumnValues(_Reference[] parm1) throws com.daffodilwoods.database.resource.DException {
92       /**@todo Implement this com.daffodilwoods.daffodildb.server.sql99.utils._BaseVariableValues method*/
93       throw new java.lang.UnsupportedOperationException JavaDoc("Method getColumnValues() not yet implemented.");
94    }
95
96    public Object JavaDoc getColumnValues(_Reference parm1) throws com.daffodilwoods.database.resource.DException {
97       return ( (Object JavaDoc[]) getColumnValues(new _Reference[] {parm1}))[0];
98    }
99
100    public boolean seekFromTop(_IndexPredicate[] parm1) throws com.daffodilwoods.database.resource.DException {
101       /**@todo Implement this com.daffodilwoods.daffodildb.server.datasystem.interfaces._SqlIndexIterator method*/
102       throw new java.lang.UnsupportedOperationException JavaDoc("Method seekFromTop() not yet implemented.");
103    }
104
105    public boolean seekFromBottom(_IndexPredicate[] parm1) throws com.daffodilwoods.database.resource.DException {
106       /**@todo Implement this com.daffodilwoods.daffodildb.server.datasystem.interfaces._SqlIndexIterator method*/
107       throw new java.lang.UnsupportedOperationException JavaDoc("Method seekFromBottom() not yet implemented.");
108    }
109
110    public boolean seekFromTopRelative(Object JavaDoc parm1) throws com.daffodilwoods.database.resource.DException {
111       while (next()) {
112          int cmp = compareValues( (Object JavaDoc[]) parm1);
113          if (cmp >= 0) {
114             return true;
115          }
116       }
117       state = AFTERLAST;
118       return false;
119    }
120
121    private int compareValues(Object JavaDoc[] second) throws DException {
122       ColumnDetails[] cd = null;
123       try {
124          cd = orderCount.getOrders().getColumnDetails();
125          Object JavaDoc[] first = (Object JavaDoc[]) getColumnValues(cd);
126          return superComparator.compare(first, second);
127       } catch (NullPointerException JavaDoc 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 JavaDoc parm1) throws com.daffodilwoods.database.resource.DException {
135       while (previous()) {
136          int cmp = compareValues( (Object JavaDoc[]) 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       /**@todo Implement this com.daffodilwoods.daffodildb.server.datasystem.interfaces._SqlIndexIterator method*/
147       throw new java.lang.UnsupportedOperationException JavaDoc("Method getKeyColumnInformations() not yet implemented.");
148    }
149
150    public Object JavaDoc[] getUniqueColumnReference() throws com.daffodilwoods.database.resource.DException {
151       /**@todo Implement this com.daffodilwoods.daffodildb.server.datasystem.interfaces._SqlIndexIterator method*/
152       throw new java.lang.UnsupportedOperationException JavaDoc("Method getUniqueColumnReference() not yet implemented.");
153    }
154
155    public boolean seek(Object JavaDoc parm1) throws com.daffodilwoods.database.resource.DException {
156       /**@todo Implement this com.daffodilwoods.daffodildb.server.datasystem.interfaces._SqlIndexIterator method*/
157       throw new java.lang.UnsupportedOperationException JavaDoc("Method seek() not yet implemented.");
158    }
159
160    public boolean first() throws com.daffodilwoods.database.resource.DException {
161       /**@todo Implement this com.daffodilwoods.daffodildb.server.datasystem.interfaces._Navigator method*/
162       throw new java.lang.UnsupportedOperationException JavaDoc("Method first() not yet implemented.");
163    }
164
165    public boolean last() throws com.daffodilwoods.database.resource.DException {
166       /**@todo Implement this com.daffodilwoods.daffodildb.server.datasystem.interfaces._Navigator method*/
167       throw new java.lang.UnsupportedOperationException JavaDoc("Method last() not yet implemented.");
168    }
169
170    public boolean next() throws com.daffodilwoods.database.resource.DException {
171       /**@todo Implement this com.daffodilwoods.daffodildb.server.datasystem.interfaces._Navigator method*/
172       throw new java.lang.UnsupportedOperationException JavaDoc("Method next() not yet implemented.");
173    }
174
175    public boolean previous() throws com.daffodilwoods.database.resource.DException {
176       /**@todo Implement this com.daffodilwoods.daffodildb.server.datasystem.interfaces._Navigator method*/
177       throw new java.lang.UnsupportedOperationException JavaDoc("Method previous() not yet implemented.");
178    }
179
180    public Object JavaDoc getKey() throws com.daffodilwoods.database.resource.DException {
181       return leftIterator.getKey();
182    }
183
184    public void move(Object JavaDoc 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       /**@todo Implement this com.daffodilwoods.daffodildb.server.datasystem.interfaces._Navigator method*/
198       throw new java.lang.UnsupportedOperationException JavaDoc("Method getRecord() not yet implemented.");
199    }
200
201    public Object JavaDoc getColumnValues() throws com.daffodilwoods.database.resource.DException {
202       /**@todo Implement this com.daffodilwoods.daffodildb.server.datasystem.interfaces._Navigator method*/
203       throw new java.lang.UnsupportedOperationException JavaDoc("Method getColumnValues() not yet implemented.");
204    }
205
206    public Object JavaDoc getColumnValues(int[] parm1) throws com.daffodilwoods.database.resource.DException {
207       new Exception JavaDoc("sdfsdjfb").printStackTrace();
208       /**@todo Implement this com.daffodilwoods.daffodildb.server.datasystem.interfaces._Navigator method*/
209       throw new java.lang.UnsupportedOperationException JavaDoc("Method getColumnValues() not yet implemented.");
210    }
211
212    public _ExecutionPlan getExecutionPlan(String JavaDoc 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 JavaDoc[][] 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 JavaDoc("Method not yet implemented.");
241    }
242
243    public FieldBase[] fields(_Reference[] references) throws com.daffodilwoods.database.resource.DException {
244       throw new java.lang.UnsupportedOperationException JavaDoc("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 JavaDoc("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