KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > quadcap > sql > JoinMapRow


1 package com.quadcap.sql;
2
3 /* Copyright 1999 - 2003 Quadcap Software. All rights reserved.
4  *
5  * This software is distributed under the Quadcap Free Software License.
6  * This software may be used or modified for any purpose, personal or
7  * commercial. Open Source redistributions are permitted. Commercial
8  * redistribution of larger works derived from, or works which bundle
9  * this software requires a "Commercial Redistribution License"; see
10  * http://www.quadcap.com/purchase.
11  *
12  * Redistributions qualify as "Open Source" under one of the following terms:
13  *
14  * Redistributions are made at no charge beyond the reasonable cost of
15  * materials and delivery.
16  *
17  * Redistributions are accompanied by a copy of the Source Code or by an
18  * irrevocable offer to provide a copy of the Source Code for up to three
19  * years at the cost of materials and delivery. Such redistributions
20  * must allow further use, modification, and redistribution of the Source
21  * Code under substantially the same terms as this license.
22  *
23  * Redistributions of source code must retain the copyright notices as they
24  * appear in each source code file, these license terms, and the
25  * disclaimer/limitation of liability set forth as paragraph 6 below.
26  *
27  * Redistributions in binary form must reproduce this Copyright Notice,
28  * these license terms, and the disclaimer/limitation of liability set
29  * forth as paragraph 6 below, in the documentation and/or other materials
30  * provided with the distribution.
31  *
32  * The Software is provided on an "AS IS" basis. No warranty is
33  * provided that the Software is free of defects, or fit for a
34  * particular purpose.
35  *
36  * Limitation of Liability. Quadcap Software shall not be liable
37  * for any damages suffered by the Licensee or any third party resulting
38  * from use of the Software.
39  */

40
41 import java.io.Externalizable JavaDoc;
42 import java.io.IOException JavaDoc;
43 import java.io.ObjectInput JavaDoc;
44 import java.io.ObjectOutput JavaDoc;
45
46 import java.util.Vector JavaDoc;
47
48 import java.sql.SQLException JavaDoc;
49
50 import com.quadcap.sql.types.Value;
51 import com.quadcap.sql.types.ValueNull;
52
53 import com.quadcap.util.Debug;
54
55 /**
56  * A row containing a cross-join, all columns from each of two cursors.
57  *
58  * @author Stan Bailes
59  */

60 public class JoinMapRow extends Row {
61     Row a;
62     Row b;
63
64     // n = map[i]; row[i] = if (n<0) a[0-n], if (n>0) rb[i], if (n==0) null
65
int[] map;
66     
67     public JoinMapRow(int[] map) {
68     this.map = map;
69     }
70
71     public final void setA(Row a) { this.a = a; }
72     public final void setB(Row b) { this.b = b; }
73
74     public final Row getA() { return a; }
75     public final Row getB() { return b; }
76     
77     public final int size() { return map.length; }
78
79     public final Value item(int i) throws SQLException JavaDoc {
80         int n = map[i-1];
81         if (n < 0) return a == null ? ValueNull.valueNull : a.item(0-n);
82         if (n > 0) return b == null ? ValueNull.valueNull : b.item(n);
83         return ValueNull.valueNull;
84     }
85
86     public final void set(int i, Value val) throws SQLException JavaDoc {
87         int n = map[i-1];
88         if (n < 0 && a != null) a.set(0-n, val);
89         if (n > 0 && b != null) b.set(n, val);
90     }
91
92     //#ifdef DEBUG
93
public String JavaDoc toString1() {
94         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("{");
95         for (int i = 1; i <= size(); i++) {
96             if (i > 1) sb.append(",");
97             int n = map[i-1];
98             if (n < 0) {
99                 sb.append("A");
100                 n = 0 - n;
101                 sb.append(n);
102             } else if (n > 0) {
103                 sb.append("B");
104                 sb.append(n);
105             } else if (n == 0) {
106                 sb.append("0:null");
107                 continue;
108             }
109             sb.append(":");
110             try {
111                 sb.append(item(i).toString());
112             } catch (Throwable JavaDoc t) {
113                 sb.append(t.toString());
114             }
115         }
116         sb.append("}");
117         return sb.toString();
118     }
119     //#endif
120
}
121
Popular Tags