KickJava   Java API By Example, From Geeks To Geeks.

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


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.util.Debug;
51
52 /**
53  * TableExpression permitting individual tables in the <code>SELECT</code>
54  * statement to be "renamed" via the <code>AS</code> clause.
55  * This may be necessary
56  * for example, in cases where a table is joined to itself. The optional
57  * column names in the FROM clause can be used to rename columns; this
58  * renaming doesn't affect the names of the columns in the final result
59  * set, but rather may be used to disambiguate column names in the
60  * <code>WHERE</code> clause.</p>
61  *
62  * @author Stan Bailes
63  */

64 public class SelectFromItem extends TableExpression implements Externalizable JavaDoc {
65     TableExpression e;
66     String JavaDoc asName = null;
67     Vector JavaDoc columns = null;
68
69     public SelectFromItem() {}
70
71     public SelectFromItem(TableExpression e, String JavaDoc asName, Vector JavaDoc columns) {
72     this.e = e;
73     this.asName = asName;
74     this.columns = columns;
75     }
76
77     public void readExternal(ObjectInput JavaDoc in)
78     throws IOException JavaDoc, ClassNotFoundException JavaDoc
79     {
80     this.e = (TableExpression)in.readObject();
81     this.asName = (String JavaDoc)in.readObject();
82     this.columns = (Vector JavaDoc)in.readObject();
83     }
84     
85     public void writeExternal(ObjectOutput JavaDoc out) throws IOException JavaDoc {
86     out.writeObject(e);
87     out.writeObject(asName);
88     out.writeObject(columns);
89     }
90
91     public int rank() { return e.rank(); }
92
93     public boolean isUpdatable() { return e.isUpdatable(); }
94
95     public void getBaseTables(Vector JavaDoc v) {
96     e.getBaseTables(v);
97     }
98
99     public void setWhere(Expression where) {
100         this.where = where;
101         e.setWhere(where);
102     }
103
104     public Cursor getCursor(Session session, Cursor outer)
105         throws SQLException JavaDoc
106     {
107     Cursor c = e.getCursor(session, outer);
108     return new RenameCursor(session, c, asName, columns);
109     }
110
111     public String JavaDoc toString() {
112         StringBuffer JavaDoc sb = new StringBuffer JavaDoc(e.toString());
113         if (asName != null && asName.length() > 0) {
114             sb.append(" AS ");
115             sb.append(asName);
116             if (columns != null) {
117                 sb.append('(');
118                 for (int i = 0; i < columns.size(); i++) {
119                     if (i > 0) sb.append(',');
120                     sb.append(columns.get(i));
121                 }
122                 sb.append(')');
123             }
124         }
125         return sb.toString();
126     }
127
128     //#ifdef DEBUG
129
public String JavaDoc name() {
130         StringBuffer JavaDoc sb = new StringBuffer JavaDoc(e.name());
131         if (asName != null) {
132             sb.append(" AS ");
133             sb.append(asName);
134         }
135         return sb.toString();
136     }
137     //#endif
138
}
139
140
Popular Tags