KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > quadcap > sql > meta > MetaSchemas


1 package com.quadcap.sql.meta;
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.IOException JavaDoc;
42
43 import java.util.HashMap JavaDoc;
44 import java.util.Iterator JavaDoc;
45 import java.util.Vector JavaDoc;
46
47 import java.sql.DatabaseMetaData JavaDoc;
48 import java.sql.SQLException JavaDoc;
49
50 import com.quadcap.sql.Column;
51 import com.quadcap.sql.Database;
52 import com.quadcap.sql.Row;
53 import com.quadcap.sql.Session;
54
55 import com.quadcap.sql.index.Btree;
56 import com.quadcap.sql.index.BCursor;
57
58 import com.quadcap.sql.types.*;
59
60 import com.quadcap.util.Debug;
61
62 /**
63  * A Cursor supporting the <code>getSchemas</code> function.
64  *
65  * @author Stan Bailes
66  */

67 public class MetaSchemas extends MetaCursor {
68     static Column[] cols = {
69     new Column("TABLE_SCHEM", typeString) // 1
70
};
71
72     static int[] sortColumns = { 1 };
73
74     /**
75      * Cursor constructor.
76      */

77     public MetaSchemas(Session session)
78     throws SQLException JavaDoc
79     {
80     super(session, null);
81     try {
82         addColumns(cols);
83             HashMap JavaDoc schemaNames = new HashMap JavaDoc();
84         Database db = session.getDatabase();
85             session.getTableWriteLock("#Schema");
86             synchronized (db.getFile().getLock()) {
87                 Iterator JavaDoc iter = db.getRelationNameIterator();
88                 while (iter.hasNext()) {
89                     String JavaDoc name = iter.next().toString();
90                     int idx = name.indexOf('.');
91                     if (idx > 0) {
92                         name = name.substring(0, idx);
93                     } else {
94                         name = session.getConnection().getAuth();
95                     }
96                     if (!schemaNames.containsKey(name)) {
97                         Row row = new Row(1);
98                         row.set(1, new ValueString(name));
99                         addRow(row);
100                         schemaNames.put(name, "");
101                     }
102                 }
103             }
104         sort();
105     } catch (ValueException e) {
106         Debug.print(e);
107         SQLException JavaDoc te = new SQLException JavaDoc(e.toString(), "Q000P");
108         te.setNextException(e);
109         throw te;
110     } catch (IOException JavaDoc e) {
111         Debug.print(e);
112         throw new SQLException JavaDoc(e.toString(), "Q000Q");
113     }
114     }
115     
116     /**
117      * Sort by type
118      */

119     public int[] getSortColumns() {
120     return sortColumns;
121     }
122 }
123
Popular Tags