KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > cjdbc > driver > DatabaseMetaData


1 /**
2  * C-JDBC: Clustered JDBC.
3  * Copyright (C) 2002-2005 French National Institute For Research In Computer
4  * Science And Control (INRIA).
5  * Contact: c-jdbc@objectweb.org
6  *
7  * This library is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU Lesser General Public License as published by the
9  * Free Software Foundation; either version 2.1 of the License, or any later
10  * version.
11  *
12  * This library is distributed in the hope that it will be useful, but WITHOUT
13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
15  * for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public License
18  * along with this library; if not, write to the Free Software Foundation,
19  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
20  *
21  * Initial developer(s): Emmanuel Cecchet.
22  * Contributor(s): Jean-Bernard van Zuylen
23  */

24
25 package org.objectweb.cjdbc.driver;
26
27 import java.sql.SQLException JavaDoc;
28 import java.util.HashMap JavaDoc;
29
30 import org.objectweb.cjdbc.common.sql.metadata.MetadataContainer;
31 import org.objectweb.cjdbc.common.sql.metadata.MetadataDescription;
32 import org.objectweb.cjdbc.common.util.Constants;
33
34 /**
35  * DatabaseMetaData retrieves most of the values from the C-JDBC controller. If
36  * you are using an heterogeneous cluster, the values returned are the one of
37  * the first database that was enabled on the controller.
38  *
39  * @author <a HREF="mailto:Emmanuel.Cecchet@inria.fr">Emmanuel Cecchet </a>
40  * @author <a HREF="mailto:jbvanzuylen@transwide.com">Jean-Bernard van Zuylen
41  * </a>
42  * @version 1.0
43  */

44 public class DatabaseMetaData implements java.sql.DatabaseMetaData JavaDoc
45 {
46   /** The connection association */
47   private Connection connection;
48
49   /**
50    * ("getXXX(Y,Z,...)", value) hash table of the metadata queries.
51    */

52   private HashMap JavaDoc metadataContainer;
53
54   /**
55    * Creates a new <code>DatabaseMetaData</code> instance.
56    *
57    * @param conn a <code>Connection</code> value
58    */

59   public DatabaseMetaData(Connection conn)
60   {
61     this.connection = conn;
62     metadataContainer = new HashMap JavaDoc();
63   }
64
65   /**
66    * Lazy evaluation of a static metadata value. If the value is already in the
67    * hash table, we return it. Else we send a network request to the controller
68    * and add it to the table. <br>
69    *
70    * @param methodName metadata method name
71    * @param parametersType parameters type of method to invoke
72    * @param arguments arguments to invoke the method
73    * @param allowsNull true if a null metadata can be returned, if set to false
74    * an exception will be thrown if the metadata is null
75    * @return the value returned by the given method
76    * @throws SQLException if the connection fails
77    */

78   private Object JavaDoc getMetadata(String JavaDoc methodName, Class JavaDoc[] parametersType,
79       Object JavaDoc[] arguments, boolean allowsNull) throws SQLException JavaDoc
80   {
81     String JavaDoc key = MetadataContainer.getContainerKey(methodName, parametersType,
82         arguments);
83     Object JavaDoc value = metadataContainer.get(key);
84
85     if (value == null)
86     { // Value not yet in container
87
value = connection.getStaticMetadata(key);
88       if ((value == null) && !allowsNull)
89         throw new SQLException JavaDoc("Unable to retrieve metadata for " + key);
90       metadataContainer.put(key, value);
91     }
92     return value;
93   }
94
95   /**
96    * @see java.sql.DatabaseMetaData#allProceduresAreCallable()
97    */

98   public boolean allProceduresAreCallable() throws SQLException JavaDoc
99   {
100     return ((Boolean JavaDoc) getMetadata(
101         MetadataDescription.ALL_PROCEDURES_ARE_CALLABLE, null, null, false))
102         .booleanValue();
103   }
104
105   /**
106    * @see java.sql.DatabaseMetaData#allTablesAreSelectable()
107    */

108   public boolean allTablesAreSelectable() throws SQLException JavaDoc
109   {
110     return ((Boolean JavaDoc) getMetadata(
111         MetadataDescription.ALL_TABLES_ARE_SELECTABLE, null, null, false))
112         .booleanValue();
113   }
114
115   /**
116    * @see java.sql.DatabaseMetaData#dataDefinitionCausesTransactionCommit()
117    */

118   public boolean dataDefinitionCausesTransactionCommit() throws SQLException JavaDoc
119   {
120     return ((Boolean JavaDoc) getMetadata(
121         MetadataDescription.DATA_DEFINITION_CAUSES_TRANSACTION_COMMIT, null,
122         null, false)).booleanValue();
123   }
124
125   /**
126    * @see java.sql.DatabaseMetaData#dataDefinitionIgnoredInTransactions()
127    */

128   public boolean dataDefinitionIgnoredInTransactions() throws SQLException JavaDoc
129   {
130     return ((Boolean JavaDoc) getMetadata(
131         MetadataDescription.DATA_DEFINITION_IGNORED_IN_TRANSACTIONS, null,
132         null, false)).booleanValue();
133   }
134
135   /**
136    * @see java.sql.DatabaseMetaData#deletesAreDetected(int)
137    */

138   public boolean deletesAreDetected(int type) throws SQLException JavaDoc
139   {
140     return ((Boolean JavaDoc) getMetadata(MetadataDescription.DELETES_ARE_DETECTED,
141         new Class JavaDoc[]{Integer.TYPE}, new Object JavaDoc[]{new Integer JavaDoc(type)}, false))
142         .booleanValue();
143   }
144
145   /**
146    * @see java.sql.DatabaseMetaData#doesMaxRowSizeIncludeBlobs()
147    */

148   public boolean doesMaxRowSizeIncludeBlobs() throws SQLException JavaDoc
149   {
150     return ((Boolean JavaDoc) getMetadata(
151         MetadataDescription.DOES_MAX_ROW_SIZE_INCLUDE_BLOBS, null, null, false))
152         .booleanValue();
153   }
154
155   /**
156    * @see java.sql.DatabaseMetaData#getBestRowIdentifier(java.lang.String,
157    * java.lang.String, java.lang.String, int, boolean)
158    */

159   public java.sql.ResultSet JavaDoc getBestRowIdentifier(String JavaDoc catalog, String JavaDoc schema,
160       String JavaDoc table, int scope, boolean nullable) throws SQLException JavaDoc
161   {
162     return connection.getBestRowIdentifier(catalog, schema, table, scope,
163         nullable);
164   }
165
166   /**
167    * @see java.sql.DatabaseMetaData#getCatalogs()
168    */

169   public java.sql.ResultSet JavaDoc getCatalogs() throws SQLException JavaDoc
170   {
171     return connection.getCatalogs();
172   }
173
174   /**
175    * @see java.sql.DatabaseMetaData#getCatalogSeparator()
176    */

177   public String JavaDoc getCatalogSeparator() throws SQLException JavaDoc
178   {
179     return ((String JavaDoc) getMetadata(MetadataDescription.GET_CATALOG_SEPARATOR,
180         null, null, true));
181   }
182
183   /**
184    * @see java.sql.DatabaseMetaData#getCatalogTerm()
185    */

186   public String JavaDoc getCatalogTerm() throws SQLException JavaDoc
187   {
188     return ((String JavaDoc) getMetadata(MetadataDescription.GET_CATALOG_TERM, null,
189         null, true));
190   }
191
192   /**
193    * @param catalog a catalog name; "" retrieves those without a catalog
194    * @param schemaPattern a schema name pattern; "" retrieves those without a
195    * schema
196    * @param tableNamePattern a table name pattern
197    * @param columnNamePattern a column name pattern
198    * @return <code>null</code>
199    * @exception SQLException if an error occurs
200    * @see #getSearchStringEscape
201    */

202   public java.sql.ResultSet JavaDoc getColumns(String JavaDoc catalog, String JavaDoc schemaPattern,
203       String JavaDoc tableNamePattern, String JavaDoc columnNamePattern) throws SQLException JavaDoc
204   {
205     return connection.getColumns(catalog, schemaPattern, tableNamePattern,
206         columnNamePattern);
207   }
208
209   /**
210    * @see java.sql.DatabaseMetaData#getColumnPrivileges(java.lang.String,
211    * java.lang.String, java.lang.String, java.lang.String)
212    */

213   public java.sql.ResultSet JavaDoc getColumnPrivileges(String JavaDoc catalog,
214       String JavaDoc schemaPattern, String JavaDoc tableNamePattern, String JavaDoc columnNamePattern)
215       throws SQLException JavaDoc
216   {
217     return connection.getColumnPrivileges(catalog, schemaPattern,
218         tableNamePattern, columnNamePattern);
219   }
220
221   /**
222    * Retrieves the <code>Connection</code> that produced this
223    * <code>DatabaseMetaData</code>.
224    *
225    * @return the <code>Connection</code> object
226    * @exception SQLException if an error occurs
227    */

228   public java.sql.Connection JavaDoc getConnection() throws SQLException JavaDoc
229   {
230     return connection;
231   }
232
233   /**
234    * @see java.sql.DatabaseMetaData#getCrossReference(java.lang.String,
235    * java.lang.String, java.lang.String, java.lang.String,
236    * java.lang.String, java.lang.String)
237    */

238   public java.sql.ResultSet JavaDoc getCrossReference(String JavaDoc primaryCatalog,
239       String JavaDoc primarySchema, String JavaDoc primaryTable, String JavaDoc foreignCatalog,
240       String JavaDoc foreignSchema, String JavaDoc foreignTable) throws SQLException JavaDoc
241   {
242     return connection.getCrossReference(primaryCatalog, primarySchema,
243         primaryTable, foreignCatalog, foreignSchema, foreignTable);
244   }
245
246   /**
247    * We return a comma separated list of database engine names connected to the
248    * controller. A name appears only once regardless of the number of instances
249    * of this particular db engine. If no database product name is provided by
250    * the backend drivers, default is to return "C-JDBC Controller".
251    *
252    * @return comma separated list of database product names
253    * @exception SQLException if a database access error occurs
254    */

255   public String JavaDoc getDatabaseProductName() throws SQLException JavaDoc
256   {
257     return connection.getDatabaseProductName();
258   }
259
260   /**
261    * What is the version of this database product.
262    *
263    * @return the C-JDBC driver version
264    * @exception SQLException if an error occurs
265    */

266   public String JavaDoc getDatabaseProductVersion() throws SQLException JavaDoc
267   {
268     return connection.getControllerVersionNumber();
269   }
270
271   /**
272    * @see java.sql.DatabaseMetaData#getDefaultTransactionIsolation()
273    */

274   public int getDefaultTransactionIsolation() throws SQLException JavaDoc
275   {
276     return ((Integer JavaDoc) getMetadata(
277         MetadataDescription.GET_DEFAULT_TRANSACTION_ISOLATION, null, null,
278         false)).intValue();
279   }
280
281   /**
282    * What is this JDBC driver's major version number?
283    *
284    * @return the JDBC driver major version
285    */

286   public int getDriverMajorVersion()
287   {
288     return Driver.MAJOR_VERSION;
289   }
290
291   /**
292    * What is this JDBC driver's minor version number?
293    *
294    * @return the JDBC driver minor version
295    */

296   public int getDriverMinorVersion()
297   {
298     return Driver.MINOR_VERSION;
299   }
300
301   /**
302    * What is the name of this JDBC driver?
303    *
304    * @return the JDBC driver name
305    * @exception SQLException why?
306    */

307   public String JavaDoc getDriverName() throws SQLException JavaDoc
308   {
309     return "C-JDBC Generic Driver";
310   }
311
312   /**
313    * What is the version string of this JDBC driver?
314    *
315    * @return the JDBC driver name.
316    * @exception SQLException why?
317    */

318   public String JavaDoc getDriverVersion() throws SQLException JavaDoc
319   {
320     return Constants.VERSION;
321   }
322
323   /**
324    * @see java.sql.DatabaseMetaData#getExportedKeys(java.lang.String,
325    * java.lang.String, java.lang.String)
326    */

327   public java.sql.ResultSet JavaDoc getExportedKeys(String JavaDoc catalog, String JavaDoc schema,
328       String JavaDoc table) throws SQLException JavaDoc
329   {
330     return connection.getExportedKeys(catalog, schema, table);
331   }
332
333   /**
334    * @see java.sql.DatabaseMetaData#getExtraNameCharacters()
335    */

336   public String JavaDoc getExtraNameCharacters() throws SQLException JavaDoc
337   {
338     return ((String JavaDoc) getMetadata(MetadataDescription.GET_EXTRA_NAME_CHARACTERS,
339         null, null, true));
340   }
341
342   /**
343    * @see java.sql.DatabaseMetaData#getIdentifierQuoteString()
344    */

345   public String JavaDoc getIdentifierQuoteString() throws SQLException JavaDoc
346   {
347     return ((String JavaDoc) getMetadata(
348         MetadataDescription.GET_IDENTIFIER_QUOTE_STRING, null, null, true));
349   }
350
351   /**
352    * @see java.sql.DatabaseMetaData#getImportedKeys(java.lang.String,
353    * java.lang.String, java.lang.String)
354    */

355   public java.sql.ResultSet JavaDoc getImportedKeys(String JavaDoc catalog, String JavaDoc schema,
356       String JavaDoc table) throws SQLException JavaDoc
357   {
358     return connection.getImportedKeys(catalog, schema, table);
359   }
360
361   /**
362    * @see java.sql.DatabaseMetaData#getIndexInfo(java.lang.String,
363    * java.lang.String, java.lang.String, boolean, boolean)
364    */

365   public java.sql.ResultSet JavaDoc getIndexInfo(String JavaDoc catalog, String JavaDoc schema,
366       String JavaDoc table, boolean unique, boolean approximate) throws SQLException JavaDoc
367   {
368     return connection.getIndexInfo(catalog, schema, table, unique, approximate);
369   }
370
371   /**
372    * @see java.sql.DatabaseMetaData#getMaxBinaryLiteralLength()
373    */

374   public int getMaxBinaryLiteralLength() throws SQLException JavaDoc
375   {
376     return ((Integer JavaDoc) getMetadata(
377         MetadataDescription.GET_MAX_BINARY_LITERAL_LENGTH, null, null, false))
378         .intValue();
379
380   }
381
382   /**
383    * @see java.sql.DatabaseMetaData#getMaxCatalogNameLength()
384    */

385   public int getMaxCatalogNameLength() throws SQLException JavaDoc
386   {
387     return ((Integer JavaDoc) getMetadata(
388         MetadataDescription.GET_MAX_CATALOG_NAME_LENGTH, null, null, false))
389         .intValue();
390   }
391
392   /**
393    * @see java.sql.DatabaseMetaData#getMaxCharLiteralLength()
394    */

395   public int getMaxCharLiteralLength() throws SQLException JavaDoc
396   {
397     return ((Integer JavaDoc) getMetadata(
398         MetadataDescription.GET_MAX_CHAR_LITERAL_LENGTH, null, null, false))
399         .intValue();
400   }
401
402   /**
403    * @see java.sql.DatabaseMetaData#getMaxColumnNameLength()
404    */

405   public int getMaxColumnNameLength() throws SQLException JavaDoc
406   {
407     return ((Integer JavaDoc) getMetadata(
408         MetadataDescription.GET_MAX_COLUMN_NAME_LENGTH, null, null, false))
409         .intValue();
410   }
411
412   /**
413    * @see java.sql.DatabaseMetaData#getMaxColumnsInGroupBy()
414    */

415   public int getMaxColumnsInGroupBy() throws SQLException JavaDoc
416   {
417     return ((Integer JavaDoc) getMetadata(
418         MetadataDescription.GET_MAX_COLUMNS_IN_GROUP_BY, null, null, false))
419         .intValue();
420   }
421
422   /**
423    * @see java.sql.DatabaseMetaData#getMaxColumnsInIndex()
424    */

425   public int getMaxColumnsInIndex() throws SQLException JavaDoc
426   {
427     return ((Integer JavaDoc) getMetadata(MetadataDescription.GET_MAX_COLUMNS_IN_INDEX,
428         null, null, false)).intValue();
429   }
430
431   /**
432    * @see java.sql.DatabaseMetaData#getMaxColumnsInOrderBy()
433    */

434   public int getMaxColumnsInOrderBy() throws SQLException JavaDoc
435   {
436     return ((Integer JavaDoc) getMetadata(
437         MetadataDescription.GET_MAX_COLUMNS_IN_ORDER_BY, null, null, false))
438         .intValue();
439   }
440
441   /**
442    * @see java.sql.DatabaseMetaData#getMaxColumnsInSelect()
443    */

444   public int getMaxColumnsInSelect() throws SQLException JavaDoc
445   {
446     return ((Integer JavaDoc) getMetadata(
447         MetadataDescription.GET_MAX_COLUMNS_IN_SELECT, null, null, false))
448         .intValue();
449   }
450
451   /**
452    * @see java.sql.DatabaseMetaData#getMaxColumnsInTable()
453    */

454   public int getMaxColumnsInTable() throws SQLException JavaDoc
455   {
456     return ((Integer JavaDoc) getMetadata(MetadataDescription.GET_MAX_COLUMNS_IN_TABLE,
457         null, null, false)).intValue();
458   }
459
460   /**
461    * Maximum number of connections to the database (virtually no limit since
462    * these are virtual connections to the Controller). The spec says 0 should be
463    * returned if unknown.
464    *
465    * @return value retrieved from first enabled backend
466    * @exception SQLException if a database access error occurs
467    */

468   public int getMaxConnections() throws SQLException JavaDoc
469   {
470     // TODO: max connection should be the max number of connection to the
471
// virtual database
472
return ((Integer JavaDoc) getMetadata(MetadataDescription.GET_MAX_CONNECTIONS,
473         null, null, false)).intValue();
474   }
475
476   /**
477    * @see java.sql.DatabaseMetaData#getMaxCursorNameLength()
478    */

479   public int getMaxCursorNameLength() throws SQLException JavaDoc
480   {
481     return ((Integer JavaDoc) getMetadata(
482         MetadataDescription.GET_MAX_CURSOR_NAME_LENGTH, null, null, false))
483         .intValue();
484   }
485
486   /**
487    * @see java.sql.DatabaseMetaData#getMaxIndexLength()
488    */

489   public int getMaxIndexLength() throws SQLException JavaDoc
490   {
491     return ((Integer JavaDoc) getMetadata(MetadataDescription.GET_MAX_INDEX_LENGTH,
492         null, null, false)).intValue();
493   }
494
495   /**
496    * @see java.sql.DatabaseMetaData#getMaxProcedureNameLength()
497    */

498   public int getMaxProcedureNameLength() throws SQLException JavaDoc
499   {
500     return ((Integer JavaDoc) getMetadata(
501         MetadataDescription.GET_MAX_PROCEDURE_NAME_LENGTH, null, null, false))
502         .intValue();
503   }
504
505   /**
506    * @see java.sql.DatabaseMetaData#getMaxRowSize()
507    */

508   public int getMaxRowSize() throws SQLException JavaDoc
509   {
510     return ((Integer JavaDoc) getMetadata(MetadataDescription.GET_MAX_ROW_SIZE, null,
511         null, false)).intValue();
512   }
513
514   /**
515    * @see java.sql.DatabaseMetaData#getMaxSchemaNameLength()
516    */

517   public int getMaxSchemaNameLength() throws SQLException JavaDoc
518   {
519     return ((Integer JavaDoc) getMetadata(
520         MetadataDescription.GET_MAX_SCHEMA_NAME_LENGTH, null, null, false))
521         .intValue();
522   }
523
524   /**
525    * @see java.sql.DatabaseMetaData#getMaxStatementLength()
526    */

527   public int getMaxStatementLength() throws SQLException JavaDoc
528   {
529     return ((Integer JavaDoc) getMetadata(MetadataDescription.GET_MAX_STATEMENT_LENGTH,
530         null, null, false)).intValue();
531   }
532
533   /**
534    * @see java.sql.DatabaseMetaData#getMaxStatements()
535    */

536   public int getMaxStatements() throws SQLException JavaDoc
537   {
538     return ((Integer JavaDoc) getMetadata(MetadataDescription.GET_MAX_STATEMENTS, null,
539         null, false)).intValue();
540   }
541
542   /**
543    * @see java.sql.DatabaseMetaData#getMaxTableNameLength()
544    */

545   public int getMaxTableNameLength() throws SQLException JavaDoc
546   {
547     return ((Integer JavaDoc) getMetadata(
548         MetadataDescription.GET_MAX_TABLE_NAME_LENGTH, null, null, false))
549         .intValue();
550   }
551
552   /**
553    * @see java.sql.DatabaseMetaData#getMaxTablesInSelect()
554    */

555   public int getMaxTablesInSelect() throws SQLException JavaDoc
556   {
557     return ((Integer JavaDoc) getMetadata(MetadataDescription.GET_MAX_TABLES_IN_SELECT,
558         null, null, false)).intValue();
559   }
560
561   /**
562    * @see java.sql.DatabaseMetaData#getMaxUserNameLength()
563    */

564   public int getMaxUserNameLength() throws SQLException JavaDoc
565   {
566     return ((Integer JavaDoc) getMetadata(MetadataDescription.GET_MAX_USER_NAME_LENGTH,
567         null, null, false)).intValue();
568   }
569
570   /**
571    * @see java.sql.DatabaseMetaData#getNumericFunctions()
572    */

573   public String JavaDoc getNumericFunctions() throws SQLException JavaDoc
574   {
575     return ((String JavaDoc) getMetadata(MetadataDescription.GET_NUMERIC_FUNCTIONS,
576         null, null, true));
577   }
578
579   /**
580    * @see java.sql.DatabaseMetaData#getPrimaryKeys(java.lang.String,
581    * java.lang.String, java.lang.String)
582    */

583   public java.sql.ResultSet JavaDoc getPrimaryKeys(String JavaDoc catalog, String JavaDoc schema,
584       String JavaDoc table) throws SQLException JavaDoc
585   {
586     return connection.getPrimaryKeys(catalog, schema, table);
587   }
588
589   /**
590    * @see java.sql.DatabaseMetaData#getProcedureColumns(java.lang.String,
591    * java.lang.String, java.lang.String, java.lang.String)
592    */

593   public java.sql.ResultSet JavaDoc getProcedureColumns(String JavaDoc catalog,
594       String JavaDoc schemaPattern, String JavaDoc procedureNamePattern,
595       String JavaDoc columnNamePattern) throws SQLException JavaDoc
596   {
597     return connection.getProcedureColumns(catalog, schemaPattern,
598         procedureNamePattern, columnNamePattern);
599   }
600
601   /**
602    * @see java.sql.DatabaseMetaData#getProcedures(java.lang.String,
603    * java.lang.String, java.lang.String)
604    */

605   public java.sql.ResultSet JavaDoc getProcedures(String JavaDoc catalog, String JavaDoc schemaPattern,
606       String JavaDoc procedureNamePattern) throws SQLException JavaDoc
607   {
608     return connection.getProcedures(catalog, schemaPattern,
609         procedureNamePattern);
610   }
611
612   /**
613    * @see java.sql.DatabaseMetaData#getProcedureTerm()
614    */

615   public String JavaDoc getProcedureTerm() throws SQLException JavaDoc
616   {
617     return ((String JavaDoc) getMetadata(MetadataDescription.GET_PROCEDURE_TERM, null,
618         null, true));
619   }
620
621   /**
622    * @see java.sql.DatabaseMetaData#getSchemas()
623    */

624   public java.sql.ResultSet JavaDoc getSchemas() throws SQLException JavaDoc
625   {
626     return connection.getSchemas();
627   }
628
629   /**
630    * @see java.sql.DatabaseMetaData#getSchemaTerm()
631    */

632   public String JavaDoc getSchemaTerm() throws SQLException JavaDoc
633   {
634     return ((String JavaDoc) getMetadata(MetadataDescription.GET_SCHEMA_TERM, null,
635         null, true));
636   }
637
638   /**
639    * @see java.sql.DatabaseMetaData#getSearchStringEscape()
640    */

641   public String JavaDoc getSearchStringEscape() throws SQLException JavaDoc
642   {
643     return ((String JavaDoc) getMetadata(MetadataDescription.GET_SEARCH_STRING_ESCAPE,
644         null, null, true));
645   }
646
647   /**
648    * @see java.sql.DatabaseMetaData#getSQLKeywords()
649    */

650   public String JavaDoc getSQLKeywords() throws SQLException JavaDoc
651   {
652     return ((String JavaDoc) getMetadata(MetadataDescription.GET_SQL_KEYWORDS, null,
653         null, true));
654   }
655
656   /**
657    * @see java.sql.DatabaseMetaData#getStringFunctions()
658    */

659   public String JavaDoc getStringFunctions() throws SQLException JavaDoc
660   {
661     return ((String JavaDoc) getMetadata(MetadataDescription.GET_STRING_FUNCTIONS,
662         null, null, true));
663   }
664
665   /**
666    * @see java.sql.DatabaseMetaData#getSystemFunctions()
667    */

668   public String JavaDoc getSystemFunctions() throws SQLException JavaDoc
669   {
670     return ((String JavaDoc) getMetadata(MetadataDescription.GET_SYSTEM_FUNCTIONS,
671         null, null, true));
672   }
673
674   /**
675    * Gets a description of the available tables.
676    *
677    * @param catalog a catalog name; this is ignored, and should be set to
678    * <code>null</code>
679    * @param schemaPattern a schema name pattern; this is ignored, and should be
680    * set to <code>null</code>
681    * @param tableNamePattern a table name pattern. For all tables this should be
682    * "%"
683    * @param types a list of table types to include; <code>null</code> returns
684    * all types
685    * @return <code>null</code>
686    * @exception SQLException if a database-access error occurs.
687    */

688   public java.sql.ResultSet JavaDoc getTables(String JavaDoc catalog, String JavaDoc schemaPattern,
689       String JavaDoc tableNamePattern, String JavaDoc[] types) throws SQLException JavaDoc
690   {
691     return connection
692         .getTables(catalog, schemaPattern, tableNamePattern, types);
693   }
694
695   /**
696    * Gets a description of the access rights for each table available in a
697    * catalog. Note that a table privilege applies to one or more columns in the
698    * table. It would be wrong to assume that this priviledge applies to all
699    * columns (this may be true for some systems but is not true for all.) Only
700    * privileges matching the schema and table name criteria are returned. They
701    * are ordered by TABLE_SCHEM, TABLE_NAME, and PRIVILEGE.
702    *
703    * @param catalog a catalog name; "" retrieves those without a catalog; null
704    * means drop catalog name from the selection criteria
705    * @param schemaPattern a schema name pattern; "" retrieves those without a
706    * schema
707    * @param tableNamePattern a table name pattern
708    * @return <code>ResultSet</code> each row is a table privilege description
709    * @throws SQLException if a database access error occurs
710    */

711   public java.sql.ResultSet JavaDoc getTablePrivileges(String JavaDoc catalog,
712       String JavaDoc schemaPattern, String JavaDoc tableNamePattern) throws SQLException JavaDoc
713   {
714     return connection.getTablePrivileges(catalog, schemaPattern,
715         tableNamePattern);
716   }
717
718   /**
719    * Gets the table types available in this database. The results are ordered by
720    * table type.
721    *
722    * @return <code>ResultSet</code> each row has a single String column that
723    * is a catalog name
724    * @throws SQLException if a database error occurs
725    */

726   public java.sql.ResultSet JavaDoc getTableTypes() throws SQLException JavaDoc
727   {
728     return connection.getTableTypes();
729   }
730
731   /**
732    * @see java.sql.DatabaseMetaData#getTimeDateFunctions()
733    */

734   public String JavaDoc getTimeDateFunctions() throws SQLException JavaDoc
735   {
736     return ((String JavaDoc) getMetadata(MetadataDescription.GET_TIME_DATE_FUNCTIONS,
737         null, null, true));
738   }
739
740   /**
741    * @see java.sql.DatabaseMetaData#getTypeInfo()
742    */

743   public java.sql.ResultSet JavaDoc getTypeInfo() throws SQLException JavaDoc
744   {
745     return connection.getTypeInfo();
746   }
747
748   /**
749    * @see java.sql.DatabaseMetaData#getUDTs(java.lang.String, java.lang.String,
750    * java.lang.String, int[])
751    */

752   public java.sql.ResultSet JavaDoc getUDTs(String JavaDoc catalog, String JavaDoc schemaPattern,
753       String JavaDoc typeNamePattern, int[] types) throws SQLException JavaDoc
754   {
755     return connection.getUDTs(catalog, schemaPattern, typeNamePattern, types);
756   }
757
758   /**
759    * What is the URL for this database?
760    *
761    * @return the url or null if it cannott be generated
762    * @exception SQLException if a database access error occurs
763    */

764   public String JavaDoc getURL() throws SQLException JavaDoc
765   {
766     return connection.getUrl();
767   }
768
769   /**
770    * What is our user name as known to the database?
771    *
772    * @return our database user name
773    * @exception SQLException if a database access error occurs
774    */

775   public String JavaDoc getUserName() throws SQLException JavaDoc
776   {
777     return connection.getUserName();
778   }
779
780   /**
781    * @see java.sql.DatabaseMetaData#getVersionColumns(java.lang.String,
782    * java.lang.String, java.lang.String)
783    */

784   public java.sql.ResultSet JavaDoc getVersionColumns(String JavaDoc catalog, String JavaDoc schema,
785       String JavaDoc table) throws SQLException JavaDoc
786   {
787     return connection.getVersionColumns(catalog, schema, table);
788   }
789
790   /**
791    * @see java.sql.DatabaseMetaData#insertsAreDetected(int)
792    */

793   public boolean insertsAreDetected(int type) throws SQLException JavaDoc
794   {
795     return ((Boolean JavaDoc) getMetadata(MetadataDescription.INSERTS_ARE_DETECTED,
796         new Class JavaDoc[]{Integer.TYPE}, new Object JavaDoc[]{new Integer JavaDoc(type)}, false))
797         .booleanValue();
798   }
799
800   /**
801    * @see java.sql.DatabaseMetaData#isCatalogAtStart()
802    */

803   public boolean isCatalogAtStart() throws SQLException JavaDoc
804   {
805     return ((Boolean JavaDoc) getMetadata(MetadataDescription.IS_CATALOG_AT_START,
806         null, null, false)).booleanValue();
807   }
808
809   /**
810    * Is the database in read-only mode?
811    *
812    * @return <code>true</code> if so
813    * @exception SQLException if a database access error occurs
814    */

815   public boolean isReadOnly() throws SQLException JavaDoc
816   {
817     return connection.isReadOnly();
818   }
819
820   /**
821    * @see java.sql.DatabaseMetaData#nullPlusNonNullIsNull()
822    */

823   public boolean nullPlusNonNullIsNull() throws SQLException JavaDoc
824   {
825     return ((Boolean JavaDoc) getMetadata(
826         MetadataDescription.NULL_PLUS_NON_NULL_IS_NULL, null, null, false))
827         .booleanValue();
828   }
829
830   /**
831    * @see java.sql.DatabaseMetaData#nullsAreSortedAtEnd()
832    */

833   public boolean nullsAreSortedAtEnd() throws SQLException JavaDoc
834   {
835     return ((Boolean JavaDoc) getMetadata(MetadataDescription.NULLS_ARE_SORTED_AT_END,
836         null, null, false)).booleanValue();
837   }
838
839   /**
840    * @see java.sql.DatabaseMetaData#nullsAreSortedAtStart()
841    */

842   public boolean nullsAreSortedAtStart() throws SQLException JavaDoc
843   {
844     return ((Boolean JavaDoc) getMetadata(
845         MetadataDescription.NULLS_ARE_SORTED_AT_START, null, null, false))
846         .booleanValue();
847   }
848
849   /**
850    * @see java.sql.DatabaseMetaData#nullsAreSortedHigh()
851    */

852   public boolean nullsAreSortedHigh() throws SQLException JavaDoc
853   {
854     return ((Boolean JavaDoc) getMetadata(MetadataDescription.NULLS_ARE_SORTED_HIGH,
855         null, null, false)).booleanValue();
856   }
857
858   /**
859    * @see java.sql.DatabaseMetaData#nullsAreSortedLow()
860    */

861   public boolean nullsAreSortedLow() throws SQLException JavaDoc
862   {
863     return ((Boolean JavaDoc) getMetadata(MetadataDescription.NULLS_ARE_SORTED_LOW,
864         null, null, false)).booleanValue();
865   }
866
867   /**
868    * @see java.sql.DatabaseMetaData#othersDeletesAreVisible(int)
869    */

870   public boolean othersDeletesAreVisible(int type) throws SQLException JavaDoc
871   {
872     return ((Boolean JavaDoc) getMetadata(
873         MetadataDescription.OTHERS_DELETES_ARE_VISIBLE,
874         new Class JavaDoc[]{Integer.TYPE}, new Object JavaDoc[]{new Integer JavaDoc(type)}, false))
875         .booleanValue();
876   }
877
878   /**
879    * @see java.sql.DatabaseMetaData#othersInsertsAreVisible(int)
880    */

881   public boolean othersInsertsAreVisible(int type) throws SQLException JavaDoc
882   {
883     return ((Boolean JavaDoc) getMetadata(
884         MetadataDescription.OTHERS_INSERTS_ARE_VISIBLE,
885         new Class JavaDoc[]{Integer.TYPE}, new Object JavaDoc[]{new Integer JavaDoc(type)}, false))
886         .booleanValue();
887   }
888
889   /**
890    * @see java.sql.DatabaseMetaData#othersUpdatesAreVisible(int)
891    */

892   public boolean othersUpdatesAreVisible(int type) throws SQLException JavaDoc
893   {
894     return ((Boolean JavaDoc) getMetadata(
895         MetadataDescription.OTHERS_UPDATES_ARE_VISIBLE,
896         new Class JavaDoc[]{Integer.TYPE}, new Object JavaDoc[]{new Integer JavaDoc(type)}, false))
897         .booleanValue();
898   }
899
900   /**
901    * @see java.sql.DatabaseMetaData#ownDeletesAreVisible(int)
902    */

903   public boolean ownDeletesAreVisible(int type) throws SQLException JavaDoc
904   {
905     return ((Boolean JavaDoc) getMetadata(MetadataDescription.OWN_DELETES_ARE_VISIBLE,
906         new Class JavaDoc[]{Integer.TYPE}, new Object JavaDoc[]{new Integer JavaDoc(type)}, false))
907         .booleanValue();
908   }
909
910   /**
911    * @see java.sql.DatabaseMetaData#ownInsertsAreVisible(int)
912    */

913   public boolean ownInsertsAreVisible(int type) throws SQLException JavaDoc
914   {
915     return ((Boolean JavaDoc) getMetadata(MetadataDescription.OWN_INSERTS_ARE_VISIBLE,
916         new Class JavaDoc[]{Integer.TYPE}, new Object JavaDoc[]{new Integer JavaDoc(type)}, false))
917         .booleanValue();
918
919   }
920
921   /**
922    * @see java.sql.DatabaseMetaData#ownUpdatesAreVisible(int)
923    */

924   public boolean ownUpdatesAreVisible(int type) throws SQLException JavaDoc
925   {
926     return ((Boolean JavaDoc) getMetadata(MetadataDescription.OWN_UPDATES_ARE_VISIBLE,
927         new Class JavaDoc[]{Integer.TYPE}, new Object JavaDoc[]{new Integer JavaDoc(type)}, false))
928         .booleanValue();
929   }
930
931   /**
932    * @see java.sql.DatabaseMetaData#storesLowerCaseIdentifiers()
933    */

934   public boolean storesLowerCaseIdentifiers() throws SQLException JavaDoc
935   {
936     return ((Boolean JavaDoc) getMetadata(
937         MetadataDescription.STORES_LOWER_CASE_IDENTIFIERS, null, null, false))
938         .booleanValue();
939   }
940
941   /**
942    * @see java.sql.DatabaseMetaData#storesLowerCaseQuotedIdentifiers()
943    */

944   public boolean storesLowerCaseQuotedIdentifiers() throws SQLException JavaDoc
945   {
946     return ((Boolean JavaDoc) getMetadata(
947         MetadataDescription.STORES_LOWER_CASE_QUOTED_IDENTIFIERS, null, null,
948         false)).booleanValue();
949   }
950
951   /**
952    * @see java.sql.DatabaseMetaData#storesMixedCaseIdentifiers()
953    */

954   public boolean storesMixedCaseIdentifiers() throws SQLException JavaDoc
955   {
956     return ((Boolean JavaDoc) getMetadata(
957         MetadataDescription.STORES_MIXED_CASE_IDENTIFIERS, null, null, false))
958         .booleanValue();
959   }
960
961   /**
962    * @see java.sql.DatabaseMetaData#storesMixedCaseQuotedIdentifiers()
963    */

964   public boolean storesMixedCaseQuotedIdentifiers() throws SQLException JavaDoc
965   {
966     return ((Boolean JavaDoc) getMetadata(
967         MetadataDescription.STORES_MIXED_CASE_QUOTED_IDENTIFIERS, null, null,
968         false)).booleanValue();
969   }
970
971   /**
972    * @see java.sql.DatabaseMetaData#storesUpperCaseIdentifiers()
973    */

974   public boolean storesUpperCaseIdentifiers() throws SQLException JavaDoc
975   {
976     return ((Boolean JavaDoc) getMetadata(
977         MetadataDescription.STORES_UPPER_CASE_IDENTIFIERS, null, null, false))
978         .booleanValue();
979   }
980
981   /**
982    * @see java.sql.DatabaseMetaData#storesUpperCaseQuotedIdentifiers()
983    */

984   public boolean storesUpperCaseQuotedIdentifiers() throws SQLException JavaDoc
985   {
986     return ((Boolean JavaDoc) getMetadata(
987         MetadataDescription.STORES_UPPER_CASE_QUOTED_IDENTIFIERS, null, null,
988         false)).booleanValue();
989   }
990
991   /**
992    * @see java.sql.DatabaseMetaData#supportsAlterTableWithAddColumn()
993    */

994   public boolean supportsAlterTableWithAddColumn() throws SQLException JavaDoc
995   {
996     return ((Boolean JavaDoc) getMetadata(
997         MetadataDescription.SUPPORTS_ALTER_TABLE_WITH_ADD_COLUMN, null, null,
998         false)).booleanValue();
999   }
1000
1001  /**
1002   * @see java.sql.DatabaseMetaData#supportsAlterTableWithDropColumn()
1003   */

1004  public boolean supportsAlterTableWithDropColumn() throws SQLException JavaDoc
1005  {
1006    return ((Boolean JavaDoc) getMetadata(
1007        MetadataDescription.SUPPORTS_ALTER_TABLE_WITH_DROP_COLUMN, null, null,
1008        false)).booleanValue();
1009  }
1010
1011  /**
1012   * @see java.sql.DatabaseMetaData#supportsANSI92EntryLevelSQL()
1013   */

1014  public boolean supportsANSI92EntryLevelSQL() throws SQLException JavaDoc
1015  {
1016    return ((Boolean JavaDoc) getMetadata(
1017        MetadataDescription.SUPPORTS_ANSI92_ENTRY_LEVEL_SQL, null, null, false))
1018        .booleanValue();
1019  }
1020
1021  /**
1022   * @see java.sql.DatabaseMetaData#supportsANSI92FullSQL()
1023   */

1024  public boolean supportsANSI92FullSQL() throws SQLException JavaDoc
1025  {
1026    return ((Boolean JavaDoc) getMetadata(MetadataDescription.SUPPORTS_ANSI92_FULL_SQL,
1027        null, null, false)).booleanValue();
1028  }
1029
1030  /**
1031   * @see java.sql.DatabaseMetaData#supportsANSI92IntermediateSQL()
1032   */

1033  public boolean supportsANSI92IntermediateSQL() throws SQLException JavaDoc
1034  {
1035    return ((Boolean JavaDoc) getMetadata(
1036        MetadataDescription.SUPPORTS_ANSI92_INTERMEDIATE_SQL, null, null, false))
1037        .booleanValue();
1038  }
1039
1040  /**
1041   * @see java.sql.DatabaseMetaData#supportsBatchUpdates()
1042   */

1043  public boolean supportsBatchUpdates() throws SQLException JavaDoc
1044  {
1045    return ((Boolean JavaDoc) getMetadata(MetadataDescription.SUPPORTS_BATCH_UPDATES,
1046        null, null, false)).booleanValue();
1047  }
1048
1049  /**
1050   * @see java.sql.DatabaseMetaData#supportsCatalogsInDataManipulation()
1051   */

1052  public boolean supportsCatalogsInDataManipulation() throws SQLException JavaDoc
1053  {
1054    return ((Boolean JavaDoc) getMetadata(
1055        MetadataDescription.SUPPORTS_CATALOGS_IN_DATA_MANIPULATION, null, null,
1056        false)).booleanValue();
1057  }
1058
1059  /**
1060   * @see java.sql.DatabaseMetaData#supportsCatalogsInIndexDefinitions()
1061   */

1062  public boolean supportsCatalogsInIndexDefinitions() throws SQLException JavaDoc
1063  {
1064    return ((Boolean JavaDoc) getMetadata(
1065        MetadataDescription.SUPPORTS_CATALOGS_IN_INDEX_DEFINITIONS, null, null,
1066        false)).booleanValue();
1067  }
1068
1069  /**
1070   * @see java.sql.DatabaseMetaData#supportsCatalogsInPrivilegeDefinitions()
1071   */

1072  public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException JavaDoc
1073  {
1074    return ((Boolean JavaDoc) getMetadata(
1075        MetadataDescription.SUPPORTS_CATALOGS_IN_PRIVILEGE_DEFINITIONS, null,
1076        null, false)).booleanValue();
1077  }
1078
1079  /**
1080   * @see java.sql.DatabaseMetaData#supportsCatalogsInProcedureCalls()
1081   */

1082  public boolean supportsCatalogsInProcedureCalls() throws SQLException JavaDoc
1083  {
1084    return ((Boolean JavaDoc) getMetadata(
1085        MetadataDescription.SUPPORTS_CATALOGS_IN_PROCEDURE_CALLS, null, null,
1086        false)).booleanValue();
1087  }
1088
1089  /**
1090   * @see java.sql.DatabaseMetaData#supportsCatalogsInTableDefinitions()
1091   */

1092  public boolean supportsCatalogsInTableDefinitions() throws SQLException JavaDoc
1093  {
1094    return ((Boolean JavaDoc) getMetadata(
1095        MetadataDescription.SUPPORTS_CATALOGS_IN_TABLE_DEFINITIONS, null, null,
1096        false)).booleanValue();
1097  }
1098
1099  /**
1100   * @see java.sql.DatabaseMetaData#supportsColumnAliasing()
1101   */

1102  public boolean supportsColumnAliasing() throws SQLException JavaDoc
1103  {
1104    return ((Boolean JavaDoc) getMetadata(MetadataDescription.SUPPORTS_COLUMN_ALIASING,
1105        null, null, false)).booleanValue();
1106  }
1107
1108  /**
1109   * @see java.sql.DatabaseMetaData#supportsConvert()
1110   */

1111  public boolean supportsConvert() throws SQLException JavaDoc
1112  {
1113    return ((Boolean JavaDoc) getMetadata(MetadataDescription.SUPPORTS_CONVERT, null,
1114        null, false)).booleanValue();
1115  }
1116
1117  /**
1118   * Not implemented (returns <code>false</code>). We should ask the
1119   * Controller to know.
1120   *
1121   * @param fromType an <code>int</code> value
1122   * @param toType an <code>int</code> value
1123   * @return <code>false</code>
1124   * @exception SQLException <description>
1125   */

1126  public boolean supportsConvert(int fromType, int toType) throws SQLException JavaDoc
1127  {
1128    return false;
1129  }
1130
1131  /**
1132   * @see java.sql.DatabaseMetaData#supportsCoreSQLGrammar()
1133   */

1134  public boolean supportsCoreSQLGrammar() throws SQLException JavaDoc
1135  {
1136    return ((Boolean JavaDoc) getMetadata(
1137        MetadataDescription.SUPPORTS_CORE_SQL_GRAMMAR, null, null, false))
1138        .booleanValue();
1139  }
1140
1141  /**
1142   * @see java.sql.DatabaseMetaData#supportsCorrelatedSubqueries()
1143   */

1144  public boolean supportsCorrelatedSubqueries() throws SQLException JavaDoc
1145  {
1146    return ((Boolean JavaDoc) getMetadata(
1147        MetadataDescription.SUPPORTS_CORRELATED_SUBQUERIES, null, null, false))
1148        .booleanValue();
1149  }
1150
1151  /**
1152   * @see java.sql.DatabaseMetaData#supportsDataDefinitionAndDataManipulationTransactions()
1153   */

1154  public boolean supportsDataDefinitionAndDataManipulationTransactions()
1155      throws SQLException JavaDoc
1156  {
1157    return ((Boolean JavaDoc) getMetadata(
1158        MetadataDescription.SUPPORTS_DATA_DEFINITION_AND_DATA_MANIPULATION_TRANSACTIONS,
1159        null, null, false)).booleanValue();
1160  }
1161
1162  /**
1163   * @see java.sql.DatabaseMetaData#supportsDataManipulationTransactionsOnly()
1164   */

1165  public boolean supportsDataManipulationTransactionsOnly() throws SQLException JavaDoc
1166  {
1167    return ((Boolean JavaDoc) getMetadata(
1168        MetadataDescription.SUPPORTS_DATA_MANIPULATION_TRANSACTIONS_ONLY, null,
1169        null, false)).booleanValue();
1170  }
1171
1172  /**
1173   * @see java.sql.DatabaseMetaData#supportsDifferentTableCorrelationNames()
1174   */

1175  public boolean supportsDifferentTableCorrelationNames() throws SQLException JavaDoc
1176  {
1177    return ((Boolean JavaDoc) getMetadata(
1178        MetadataDescription.SUPPORTS_DIFFERENT_TABLE_CORRELATION_NAMES, null,
1179        null, false)).booleanValue();
1180  }
1181
1182  /**
1183   * @see java.sql.DatabaseMetaData#supportsExpressionsInOrderBy()
1184   */

1185  public boolean supportsExpressionsInOrderBy() throws SQLException JavaDoc
1186  {
1187    return ((Boolean JavaDoc) getMetadata(
1188        MetadataDescription.SUPPORTS_EXPRESSIONS_IN_ORDER_BY, null, null, false))
1189        .booleanValue();
1190  }
1191
1192  /**
1193   * @see java.sql.DatabaseMetaData#supportsExtendedSQLGrammar()
1194   */

1195  public boolean supportsExtendedSQLGrammar() throws SQLException JavaDoc
1196  {
1197    return ((Boolean JavaDoc) getMetadata(
1198        MetadataDescription.SUPPORTS_EXTENDED_SQL_GRAMMAR, null, null, false))
1199        .booleanValue();
1200  }
1201
1202  /**
1203   * @see java.sql.DatabaseMetaData#supportsFullOuterJoins()
1204   */

1205  public boolean supportsFullOuterJoins() throws SQLException JavaDoc
1206  {
1207    return ((Boolean JavaDoc) getMetadata(
1208        MetadataDescription.SUPPORTS_FULL_OUTER_JOINS, null, null, false))
1209        .booleanValue();
1210  }
1211
1212  /**
1213   * @see java.sql.DatabaseMetaData#supportsGroupBy()
1214   */

1215  public boolean supportsGroupBy() throws SQLException JavaDoc
1216  {
1217    return ((Boolean JavaDoc) getMetadata(MetadataDescription.SUPPORTS_GROUP_BY, null,
1218        null, false)).booleanValue();
1219  }
1220
1221  /**
1222   * @see java.sql.DatabaseMetaData#supportsGroupByBeyondSelect()
1223   */

1224  public boolean supportsGroupByBeyondSelect() throws SQLException JavaDoc
1225  {
1226    return ((Boolean JavaDoc) getMetadata(
1227        MetadataDescription.SUPPORTS_GROUP_BY_BEYOND_SELECT, null, null, false))
1228        .booleanValue();
1229  }
1230
1231  /**
1232   * @see java.sql.DatabaseMetaData#supportsGroupByUnrelated()
1233   */

1234  public boolean supportsGroupByUnrelated() throws SQLException JavaDoc
1235  {
1236    return ((Boolean JavaDoc) getMetadata(
1237        MetadataDescription.SUPPORTS_GROUP_BY_UNRELATED, null, null, false))
1238        .booleanValue();
1239  }
1240
1241  /**
1242   * @see java.sql.DatabaseMetaData#supportsIntegrityEnhancementFacility()
1243   */

1244  public boolean supportsIntegrityEnhancementFacility() throws SQLException JavaDoc
1245  {
1246    return ((Boolean JavaDoc) getMetadata(
1247        MetadataDescription.SUPPORTS_INTEGRITY_ENHANCEMENT_FACILITY, null,
1248        null, false)).booleanValue();
1249  }
1250
1251  /**
1252   * @see java.sql.DatabaseMetaData#supportsLikeEscapeClause()
1253   */

1254  public boolean supportsLikeEscapeClause() throws SQLException JavaDoc
1255  {
1256    return ((Boolean JavaDoc) getMetadata(
1257        MetadataDescription.SUPPORTS_LIKE_ESCAPE_CLAUSE, null, null, false))
1258        .booleanValue();
1259  }
1260
1261  /**
1262   * @see java.sql.DatabaseMetaData#supportsLimitedOuterJoins()
1263   */

1264  public boolean supportsLimitedOuterJoins() throws SQLException JavaDoc
1265  {
1266    return ((Boolean JavaDoc) getMetadata(
1267        MetadataDescription.SUPPORTS_LIMITED_OUTER_JOINS, null, null, false))
1268        .booleanValue();
1269  }
1270
1271  /**
1272   * @see java.sql.DatabaseMetaData#supportsMinimumSQLGrammar()
1273   */

1274  public boolean supportsMinimumSQLGrammar() throws SQLException JavaDoc
1275  {
1276    return ((Boolean JavaDoc) getMetadata(
1277        MetadataDescription.SUPPORTS_MINIMUM_SQL_GRAMMAR, null, null, false))
1278        .booleanValue();
1279  }
1280
1281  /**
1282   * @see java.sql.DatabaseMetaData#supportsMixedCaseIdentifiers()
1283   */

1284  public boolean supportsMixedCaseIdentifiers() throws SQLException JavaDoc
1285  {
1286    return ((Boolean JavaDoc) getMetadata(
1287        MetadataDescription.SUPPORTS_MIXED_CASE_IDENTIFIERS, null, null, false))
1288        .booleanValue();
1289  }
1290
1291  /**
1292   * @see java.sql.DatabaseMetaData#supportsMixedCaseQuotedIdentifiers()
1293   */

1294  public boolean supportsMixedCaseQuotedIdentifiers() throws SQLException JavaDoc
1295  {
1296    return ((Boolean JavaDoc) getMetadata(
1297        MetadataDescription.SUPPORTS_MIXED_CASE_QUOTED_IDENTIFIERS, null, null,
1298        false)).booleanValue();
1299  }
1300
1301  /**
1302   * @see java.sql.DatabaseMetaData#supportsMultipleResultSets()
1303   */

1304  public boolean supportsMultipleResultSets() throws SQLException JavaDoc
1305  {
1306    return ((Boolean JavaDoc) getMetadata(
1307        MetadataDescription.SUPPORTS_MULTIPLE_RESULTSETS, null, null, false))
1308        .booleanValue();
1309  }
1310
1311  /**
1312   * @see java.sql.DatabaseMetaData#supportsMultipleTransactions()
1313   */

1314  public boolean supportsMultipleTransactions() throws SQLException JavaDoc
1315  {
1316    return ((Boolean JavaDoc) getMetadata(
1317        MetadataDescription.SUPPORTS_MULTIPLE_TRANSACTIONS, null, null, false))
1318        .booleanValue();
1319  }
1320
1321  /**
1322   * @see java.sql.DatabaseMetaData#supportsNonNullableColumns()
1323   */

1324  public boolean supportsNonNullableColumns() throws SQLException JavaDoc
1325  {
1326    return ((Boolean JavaDoc) getMetadata(
1327        MetadataDescription.SUPPORTS_NON_NULLABLE_COLUMNS, null, null, false))
1328        .booleanValue();
1329  }
1330
1331  /**
1332   * @see java.sql.DatabaseMetaData#supportsOpenCursorsAcrossCommit()
1333   */

1334  public boolean supportsOpenCursorsAcrossCommit() throws SQLException JavaDoc
1335  {
1336    return ((Boolean JavaDoc) getMetadata(
1337        MetadataDescription.SUPPORTS_OPEN_CURSORS_ACROSS_COMMIT, null, null,
1338        false)).booleanValue();
1339  }
1340
1341  /**
1342   * @see java.sql.DatabaseMetaData#supportsOpenCursorsAcrossRollback()
1343   */

1344  public boolean supportsOpenCursorsAcrossRollback() throws SQLException JavaDoc
1345  {
1346    return ((Boolean JavaDoc) getMetadata(
1347        MetadataDescription.SUPPORTS_OPEN_CURSORS_ACROSS_ROLLBACK, null, null,
1348        false)).booleanValue();
1349  }
1350
1351  /**
1352   * @see java.sql.DatabaseMetaData#supportsOpenStatementsAcrossCommit()
1353   */

1354  public boolean supportsOpenStatementsAcrossCommit() throws SQLException JavaDoc
1355  {
1356    return ((Boolean JavaDoc) getMetadata(
1357        MetadataDescription.SUPPORTS_OPEN_STATEMENTS_ACROSS_COMMIT, null, null,
1358        false)).booleanValue();
1359  }
1360
1361  /**
1362   * @see java.sql.DatabaseMetaData#supportsOpenStatementsAcrossRollback()
1363   */

1364  public boolean supportsOpenStatementsAcrossRollback() throws SQLException JavaDoc
1365  {
1366    return ((Boolean JavaDoc) getMetadata(
1367        MetadataDescription.SUPPORTS_OPEN_STATEMENTS_ACROSS_ROLLBACK, null,
1368        null, false)).booleanValue();
1369  }
1370
1371  /**
1372   * @see java.sql.DatabaseMetaData#supportsOrderByUnrelated()
1373   */

1374  public boolean supportsOrderByUnrelated() throws SQLException JavaDoc
1375  {
1376    return ((Boolean JavaDoc) getMetadata(
1377        MetadataDescription.SUPPORTS_ORDER_BY_UNRELATED, null, null, false))
1378        .booleanValue();
1379  }
1380
1381  /**
1382   * @see java.sql.DatabaseMetaData#supportsOuterJoins()
1383   */

1384  public boolean supportsOuterJoins() throws SQLException JavaDoc
1385  {
1386    return ((Boolean JavaDoc) getMetadata(MetadataDescription.SUPPORTS_OUTER_JOINS,
1387        null, null, false)).booleanValue();
1388  }
1389
1390  /**
1391   * @see java.sql.DatabaseMetaData#supportsPositionedDelete()
1392   */

1393  public boolean supportsPositionedDelete() throws SQLException JavaDoc
1394  {
1395    return ((Boolean JavaDoc) getMetadata(
1396        MetadataDescription.SUPPORTS_POSITIONED_DELETE, null, null, false))
1397        .booleanValue();
1398  }
1399
1400  /**
1401   * @see java.sql.DatabaseMetaData#supportsPositionedUpdate()
1402   */

1403  public boolean supportsPositionedUpdate() throws SQLException JavaDoc
1404  {
1405    return ((Boolean JavaDoc) getMetadata(
1406        MetadataDescription.SUPPORTS_POSITIONED_UPDATE, null, null, false))
1407        .booleanValue();
1408  }
1409
1410  /**
1411   * @see java.sql.DatabaseMetaData#supportsResultSetConcurrency(int, int)
1412   */

1413  public boolean supportsResultSetConcurrency(int type, int concurrency)
1414      throws SQLException JavaDoc
1415  {
1416    return ((Boolean JavaDoc) getMetadata(
1417        MetadataDescription.SUPPORTS_RESULT_SET_CONCURRENCY, new Class JavaDoc[]{
1418            Integer.TYPE, Integer.TYPE}, new Object JavaDoc[]{new Integer JavaDoc(type),
1419            new Integer JavaDoc(concurrency)}, false)).booleanValue();
1420  }
1421
1422  /**
1423   * @see java.sql.DatabaseMetaData#supportsResultSetHoldability(int)
1424   */

1425  public boolean supportsResultSetHoldability(int holdability)
1426      throws SQLException JavaDoc
1427  {
1428    return ((Boolean JavaDoc) getMetadata(
1429        MetadataDescription.SUPPORTS_RESULT_SET_HOLDABILITY,
1430        new Class JavaDoc[]{Integer.TYPE}, new Object JavaDoc[]{new Integer JavaDoc(holdability)},
1431        false)).booleanValue();
1432  }
1433
1434  /**
1435   * @see java.sql.DatabaseMetaData#supportsResultSetType(int)
1436   */

1437  public boolean supportsResultSetType(int type) throws SQLException JavaDoc
1438  {
1439    return ((Boolean JavaDoc) getMetadata(MetadataDescription.SUPPORTS_RESULT_SET_TYPE,
1440        new Class JavaDoc[]{Integer.TYPE}, new Object JavaDoc[]{new Integer JavaDoc(type)}, false))
1441        .booleanValue();
1442  }
1443
1444  /**
1445   * @see java.sql.DatabaseMetaData#supportsSchemasInDataManipulation()
1446   */

1447  public boolean supportsSchemasInDataManipulation() throws SQLException JavaDoc
1448  {
1449    return ((Boolean JavaDoc) getMetadata(
1450        MetadataDescription.SUPPORTS_SCHEMAS_IN_DATA_MANIPULATION, null, null,
1451        false)).booleanValue();
1452  }
1453
1454  /**
1455   * @see java.sql.DatabaseMetaData#supportsSchemasInIndexDefinitions()
1456   */

1457  public boolean supportsSchemasInIndexDefinitions() throws SQLException JavaDoc
1458  {
1459    return ((Boolean JavaDoc) getMetadata(
1460        MetadataDescription.SUPPORTS_SCHEMAS_IN_INDEX_DEFINITIONS, null, null,
1461        false)).booleanValue();
1462  }
1463
1464  /**
1465   * @see java.sql.DatabaseMetaData#supportsSchemasInPrivilegeDefinitions()
1466   */

1467  public boolean supportsSchemasInPrivilegeDefinitions() throws SQLException JavaDoc
1468  {
1469    return ((Boolean JavaDoc) getMetadata(
1470        MetadataDescription.SUPPORTS_SCHEMAS_IN_PRIVILEGE_DEFINITIONS, null,
1471        null, false)).booleanValue();
1472  }
1473
1474  /**
1475   * @see java.sql.DatabaseMetaData#supportsSchemasInProcedureCalls()
1476   */

1477  public boolean supportsSchemasInProcedureCalls() throws SQLException JavaDoc
1478  {
1479    return ((Boolean JavaDoc) getMetadata(
1480        MetadataDescription.SUPPORTS_SCHEMAS_IN_PROCEDURE_CALLS, null, null,
1481        false)).booleanValue();
1482  }
1483
1484  /**
1485   * @see java.sql.DatabaseMetaData#supportsSchemasInTableDefinitions()
1486   */

1487  public boolean supportsSchemasInTableDefinitions() throws SQLException JavaDoc
1488  {
1489    return ((Boolean JavaDoc) getMetadata(
1490        MetadataDescription.SUPPORTS_SCHEMAS_IN_TABLE_DEFINITIONS, null, null,
1491        false)).booleanValue();
1492  }
1493
1494  /**
1495   * @see java.sql.DatabaseMetaData#supportsSelectForUpdate()
1496   */

1497  public boolean supportsSelectForUpdate() throws SQLException JavaDoc
1498  {
1499    return ((Boolean JavaDoc) getMetadata(
1500        MetadataDescription.SUPPORTS_SELECT_FOR_UPDATE, null, null, false))
1501        .booleanValue();
1502  }
1503
1504  /**
1505   * @see java.sql.DatabaseMetaData#supportsStoredProcedures()
1506   */

1507  public boolean supportsStoredProcedures() throws SQLException JavaDoc
1508  {
1509    return ((Boolean JavaDoc) getMetadata(
1510        MetadataDescription.SUPPORTS_STORED_PROCEDURES, null, null, false))
1511        .booleanValue();
1512  }
1513
1514  /**
1515   * @see java.sql.DatabaseMetaData#supportsSubqueriesInComparisons()
1516   */

1517  public boolean supportsSubqueriesInComparisons() throws SQLException JavaDoc
1518  {
1519    return ((Boolean JavaDoc) getMetadata(
1520        MetadataDescription.SUPPORTS_SUB_QUERIES_IN_COMPARISONS, null, null,
1521        false)).booleanValue();
1522  }
1523
1524  /**
1525   * @see java.sql.DatabaseMetaData#supportsSubqueriesInExists()
1526   */

1527  public boolean supportsSubqueriesInExists() throws SQLException JavaDoc
1528  {
1529    return ((Boolean JavaDoc) getMetadata(
1530        MetadataDescription.SUPPORTS_SUB_QUERIES_IN_EXISTS, null, null, false))
1531        .booleanValue();
1532  }
1533
1534  /**
1535   * @see java.sql.DatabaseMetaData#supportsSubqueriesInIns()
1536   */

1537  public boolean supportsSubqueriesInIns() throws SQLException JavaDoc
1538  {
1539    return ((Boolean JavaDoc) getMetadata(
1540        MetadataDescription.SUPPORTS_SUB_QUERIES_IN_INS, null, null, false))
1541        .booleanValue();
1542  }
1543
1544  /**
1545   * @see java.sql.DatabaseMetaData#supportsSubqueriesInQuantifieds()
1546   */

1547  public boolean supportsSubqueriesInQuantifieds() throws SQLException JavaDoc
1548  {
1549    return ((Boolean JavaDoc) getMetadata(
1550        MetadataDescription.SUPPORTS_SUB_QUERIES_IN_QUANTIFIEDS, null, null,
1551        false)).booleanValue();
1552  }
1553
1554  /**
1555   * @see java.sql.DatabaseMetaData#supportsTableCorrelationNames()
1556   */

1557  public boolean supportsTableCorrelationNames() throws SQLException JavaDoc
1558  {
1559    return ((Boolean JavaDoc) getMetadata(
1560        MetadataDescription.SUPPORTS_TABLE_CORRELATION_NAMES, null, null, false))
1561        .booleanValue();
1562  }
1563
1564  /**
1565   * @see java.sql.DatabaseMetaData#supportsTransactionIsolationLevel(int)
1566   */

1567  public boolean supportsTransactionIsolationLevel(int level)
1568      throws SQLException JavaDoc
1569  {
1570    return ((Boolean JavaDoc) getMetadata(
1571        MetadataDescription.SUPPORTS_TRANSACTION_ISOLATION_LEVEL,
1572        new Class JavaDoc[]{Integer.TYPE}, new Object JavaDoc[]{new Integer JavaDoc(level)}, false))
1573        .booleanValue();
1574  }
1575
1576  /**
1577   * @see java.sql.DatabaseMetaData#supportsTransactions()
1578   */

1579  public boolean supportsTransactions() throws SQLException JavaDoc
1580  {
1581    return ((Boolean JavaDoc) getMetadata(MetadataDescription.SUPPORTS_TRANSACTIONS,
1582        null, null, false)).booleanValue();
1583  }
1584
1585  /**
1586   * @see java.sql.DatabaseMetaData#supportsUnion()
1587   */

1588  public boolean supportsUnion() throws SQLException JavaDoc
1589  {
1590    return ((Boolean JavaDoc) getMetadata(MetadataDescription.SUPPORTS_UNION, null,
1591        null, false)).booleanValue();
1592  }
1593
1594  /**
1595   * @see java.sql.DatabaseMetaData#supportsUnionAll()
1596   */

1597  public boolean supportsUnionAll() throws SQLException JavaDoc
1598  {
1599    return ((Boolean JavaDoc) getMetadata(MetadataDescription.SUPPORTS_UNION_ALL, null,
1600        null, false)).booleanValue();
1601  }
1602
1603  /**
1604   * @see java.sql.DatabaseMetaData#updatesAreDetected(int)
1605   */

1606  public boolean updatesAreDetected(int type) throws SQLException JavaDoc
1607  {
1608    return ((Boolean JavaDoc) getMetadata(MetadataDescription.UPDATES_ARE_DETECTED,
1609        new Class JavaDoc[]{Integer.TYPE}, new Object JavaDoc[]{new Integer JavaDoc(type)}, false))
1610        .booleanValue();
1611  }
1612
1613  /**
1614   * @see java.sql.DatabaseMetaData#usesLocalFilePerTable()
1615   */

1616  public boolean usesLocalFilePerTable() throws SQLException JavaDoc
1617  {
1618    return ((Boolean JavaDoc) getMetadata(
1619        MetadataDescription.USES_LOCAL_FILE_PER_TABLE, null, null, false))
1620        .booleanValue();
1621  }
1622
1623  /**
1624   * @see java.sql.DatabaseMetaData#usesLocalFiles()
1625   */

1626  public boolean usesLocalFiles() throws SQLException JavaDoc
1627  {
1628    return ((Boolean JavaDoc) getMetadata(MetadataDescription.USES_LOCAL_FILES, null,
1629        null, false)).booleanValue();
1630  }
1631
1632  // ------------------- JDBC 3.0 -------------------------
1633

1634  /**
1635   * @see java.sql.DatabaseMetaData#supportsSavepoints()
1636   */

1637  public boolean supportsSavepoints() throws SQLException JavaDoc
1638  {
1639    return ((Boolean JavaDoc) getMetadata(MetadataDescription.SUPPORTS_SAVEPOINTS,
1640        null, null, false)).booleanValue();
1641  }
1642
1643  /**
1644   * @see java.sql.DatabaseMetaData#supportsNamedParameters()
1645   */

1646  public boolean supportsNamedParameters() throws SQLException JavaDoc
1647  {
1648    return ((Boolean JavaDoc) getMetadata(
1649        MetadataDescription.SUPPORTS_NAMED_PARAMETERS, null, null, false))
1650        .booleanValue();
1651  }
1652
1653  /**
1654   * @see java.sql.DatabaseMetaData#supportsMultipleOpenResults()
1655   */

1656  public boolean supportsMultipleOpenResults() throws SQLException JavaDoc
1657  {
1658    return ((Boolean JavaDoc) getMetadata(
1659        MetadataDescription.SUPPORTS_MULTIPLE_OPEN_RESULTS, null, null, false))
1660        .booleanValue();
1661  }
1662
1663  /**
1664   * @see java.sql.DatabaseMetaData#supportsGetGeneratedKeys()
1665   */

1666  public boolean supportsGetGeneratedKeys() throws SQLException JavaDoc
1667  {
1668    return ((Boolean JavaDoc) getMetadata(
1669        MetadataDescription.SUPPORTS_GET_GENERATED_KEYS, null, null, false))
1670        .booleanValue();
1671  }
1672
1673  /**
1674   * @see java.sql.DatabaseMetaData#getSuperTypes(java.lang.String,
1675   * java.lang.String, java.lang.String)
1676   */

1677  public java.sql.ResultSet JavaDoc getSuperTypes(String JavaDoc catalog, String JavaDoc schemaPattern,
1678      String JavaDoc typeNamePattern) throws SQLException JavaDoc
1679  {
1680    return connection.getSuperTypes(catalog, schemaPattern, typeNamePattern);
1681  }
1682
1683  /**
1684   * @see java.sql.DatabaseMetaData#getSuperTables(java.lang.String,
1685   * java.lang.String, java.lang.String)
1686   */

1687  public java.sql.ResultSet JavaDoc getSuperTables(String JavaDoc catalog,
1688      String JavaDoc schemaPattern, String JavaDoc tableNamePattern) throws SQLException JavaDoc
1689  {
1690    return connection.getSuperTables(catalog, schemaPattern, tableNamePattern);
1691  }
1692
1693  /**
1694   * @see java.sql.DatabaseMetaData#getAttributes(java.lang.String,
1695   * java.lang.String, java.lang.String, java.lang.String)
1696   */

1697  public java.sql.ResultSet JavaDoc getAttributes(String JavaDoc catalog, String JavaDoc schemaPattern,
1698      String JavaDoc typeNamePattern, String JavaDoc attributeNamePattern) throws SQLException JavaDoc
1699  {
1700    return connection.getAttributes(catalog, schemaPattern, typeNamePattern,
1701        attributeNamePattern);
1702  }
1703
1704  /**
1705   * @see java.sql.DatabaseMetaData#getResultSetHoldability()
1706   */

1707  public int getResultSetHoldability() throws SQLException JavaDoc
1708  {
1709    return ((Integer JavaDoc) getMetadata(
1710        MetadataDescription.GET_RESULTSET_HOLDABILITY, null, null, false))
1711        .intValue();
1712  }
1713
1714  /**
1715   * @see java.sql.DatabaseMetaData#getDatabaseMajorVersion()
1716   */

1717  public int getDatabaseMajorVersion() throws SQLException JavaDoc
1718  {
1719    return ((Integer JavaDoc) getMetadata(
1720        MetadataDescription.GET_DATABASE_MAJOR_VERSION, null, null, false))
1721        .intValue();
1722  }
1723
1724  /**
1725   * @see java.sql.DatabaseMetaData#getDatabaseMinorVersion()
1726   */

1727  public int getDatabaseMinorVersion() throws SQLException JavaDoc
1728  {
1729    return ((Integer JavaDoc) getMetadata(
1730        MetadataDescription.GET_DATABASE_MINOR_VERSION, null, null, false))
1731        .intValue();
1732  }
1733
1734  /**
1735   * Retrieves the major JDBC version number for this driver.
1736   *
1737   * @return JDBC version major number
1738   * @exception SQLException if a database access error occurs
1739   * @since JDK 1.4
1740   */

1741  public int getJDBCMajorVersion() throws SQLException JavaDoc
1742  {
1743    return Driver.MAJOR_VERSION;
1744  }
1745
1746  /**
1747   * Retrieves the minor JDBC version number for this driver.
1748   *
1749   * @return JDBC version minor number
1750   * @exception SQLException if a database access error occurs
1751   * @since JDK 1.4
1752   */

1753  public int getJDBCMinorVersion() throws SQLException JavaDoc
1754  {
1755    return Driver.MINOR_VERSION;
1756  }
1757
1758  /**
1759   * @see java.sql.DatabaseMetaData#getSQLStateType()
1760   */

1761  public int getSQLStateType() throws SQLException JavaDoc
1762  {
1763    return ((Integer JavaDoc) getMetadata(MetadataDescription.GET_SQL_STATE_TYPE, null,
1764        null, false)).intValue();
1765  }
1766
1767  /**
1768   * @see java.sql.DatabaseMetaData#locatorsUpdateCopy()
1769   */

1770  public boolean locatorsUpdateCopy() throws SQLException JavaDoc
1771  {
1772    return ((Boolean JavaDoc) getMetadata(MetadataDescription.LOCATORS_UPDATE_COPY,
1773        null, null, false)).booleanValue();
1774  }
1775
1776  /**
1777   * @see java.sql.DatabaseMetaData#supportsStatementPooling()
1778   */

1779  public boolean supportsStatementPooling() throws SQLException JavaDoc
1780  {
1781    return ((Boolean JavaDoc) getMetadata(
1782        MetadataDescription.SUPPORTS_STATEMENT_POOLING, null, null, false))
1783        .booleanValue();
1784  }
1785}
Popular Tags