001: /*
002:
003: Derby - Class org.apache.derby.client.net.NetDatabaseMetaData40
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to You under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021:
022: package org.apache.derby.client.net;
023:
024: import java.sql.ResultSet;
025: import java.sql.RowIdLifetime;
026: import java.sql.SQLException;
027: import org.apache.derby.client.am.ClientMessageId;
028: import org.apache.derby.client.am.SqlException;
029: import org.apache.derby.client.am.SQLExceptionFactory;
030: import org.apache.derby.shared.common.reference.SQLState;
031:
032: public class NetDatabaseMetaData40 extends
033: org.apache.derby.client.net.NetDatabaseMetaData {
034:
035: public NetDatabaseMetaData40(NetAgent netAgent,
036: NetConnection netConnection) {
037: super (netAgent, netConnection);
038: }
039:
040: /**
041: * Retrieves the major JDBC version number for this driver.
042: * @return JDBC version major number
043: * @exception SQLException if the connection is closed
044: */
045: public int getJDBCMajorVersion() throws SQLException {
046: checkForClosedConnection();
047: return 4;
048: }
049:
050: /**
051: * Retrieves the minor JDBC version number for this driver.
052: * @return JDBC version minor number
053: * @exception SQLException if the connection is closed
054: */
055: public int getJDBCMinorVersion() throws SQLException {
056: checkForClosedConnection();
057: return 0;
058: }
059:
060: /**
061: * Indicates whether or not this data source supports the SQL
062: * <code>ROWID</code> type. Since Derby does not support the
063: * <code>ROWID</code> type, return <code>ROWID_UNSUPPORTED</code>.
064: *
065: * @return <code>ROWID_UNSUPPORTED</code>
066: * @exception SQLException if a database access error occurs
067: */
068: public RowIdLifetime getRowIdLifetime() throws SQLException {
069: checkForClosedConnection();
070: return RowIdLifetime.ROWID_UNSUPPORTED;
071: }
072:
073: /**
074: * Returns false unless <code>interfaces</code> is implemented
075: *
076: * @param interfaces a Class defining an interface.
077: * @return true if this implements the interface or
078: * directly or indirectly wraps an object
079: * that does.
080: * @throws java.sql.SQLException if an error occurs while determining
081: * whether this is a wrapper for an object
082: * with the given interface.
083: */
084: public boolean isWrapperFor(Class<?> interfaces)
085: throws SQLException {
086: return interfaces.isInstance(this );
087: }
088:
089: /**
090: * Returns <code>this</code> if this class implements the interface
091: *
092: * @param interfaces a Class defining an interface
093: * @return an object that implements the interface
094: * @throws java.sql.SQLExption if no object if found that implements the
095: * interface
096: */
097: public <T> T unwrap(java.lang.Class<T> interfaces)
098: throws SQLException {
099: try {
100: return interfaces.cast(this );
101: } catch (ClassCastException cce) {
102: throw new SqlException(null, new ClientMessageId(
103: SQLState.UNABLE_TO_UNWRAP), interfaces)
104: .getSQLException();
105: }
106: }
107: }
|