KickJava   Java API By Example, From Geeks To Geeks.

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


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  * Part of the 'ItemCursor' implementation, this implements a row that
57  * is a mapped Essentially, a vector with one-based indices.
58  *
59  * @author Stan Bailes
60  */

61 public class ItemsRow extends Row {
62     Session session;
63     Vector JavaDoc items;
64     Cursor cursor;
65     Row myRow;
66     Row baseRow;
67     int[] map;
68     
69     public ItemsRow(Session session, Vector JavaDoc items, Cursor cursor,
70             Row r, int[] map) throws SQLException JavaDoc {
71     this.session = session;
72     this.items = items;
73     this.cursor = cursor;
74     this.map = map;
75     this.myRow = new Row(items.size());
76     if (r == null && cursor != null) {
77         r = new Row(cursor.getColumnCount());
78         for (int i = 1; i <= r.size(); i++) r.set(i, ValueNull.valueNull);
79     }
80     this.nextRow(r);
81     }
82
83     Row getBaseRow() { return baseRow; }
84     
85     public void nextRow(Row r) throws SQLException JavaDoc {
86     this.baseRow = r;
87     for (int i = 1; i <= size(); i++) {
88         myRow.set(i, getItem(r, i));
89     }
90     }
91     
92     public int size() { return map.length; }
93
94     public Value item(int i) throws SQLException JavaDoc {
95     return myRow.item(i);
96     }
97     
98     public Value getItem(Row r, int i) throws SQLException JavaDoc {
99     int pos = map[i-1];
100     if (pos < 0) {
101         SelectItem item = (SelectItem)items.elementAt(i-1);
102         Expression e = item.getExpression();
103         return e.getValue(session, cursor);
104     } else if (r != null) {
105         return r.item(pos);
106     } else {
107         return new ValueNull();
108     }
109     }
110
111     public void set(int i, Value val) throws SQLException JavaDoc {
112     int pos = map[i-1];
113     if (pos < 0) {
114         throw new SQLException JavaDoc("Not updatable: " +
115                    items.elementAt(i-1),
116                    "42000");
117     }
118     myRow.set(i, val);
119     baseRow.set(map[i-1], val);
120     }
121
122     public boolean isUpdateable(int i) {
123         return map[i-1] >= 0;
124     }
125 }
126
Popular Tags