Open Source Repository

Home /spring/spring-jdbc-3.0.5 | Repository Home


org/springframework/jdbc/support/rowset/ResultSetWrappingSqlRowSetMetaData.java
/*
 * Copyright 2002-2005 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.jdbc.support.rowset;

import java.sql.ResultSetMetaData;
import java.sql.SQLException;

import org.springframework.jdbc.InvalidResultSetAccessException;

/**
 * Default implementation of Spring's SqlRowSetMetaData interface.
 * Used by ResultSetWrappingSqlRowSet.
 *
 <p>This implementation wraps a <code>javax.sql.ResultSetMetaData</code>
 * instance, catching any SQLExceptions and translating them to the
 * appropriate Spring DataAccessException.
 *
 @author Thomas Risberg
 @author Juergen Hoeller
 @since 1.2
 @see ResultSetWrappingSqlRowSet#getMetaData
 */
public class ResultSetWrappingSqlRowSetMetaData implements SqlRowSetMetaData {

  private final ResultSetMetaData resultSetMetaData;

  private String[] columnNames;


  /**
   * Create a new ResultSetWrappingSqlRowSetMetaData object
   * for the given ResultSetMetaData instance.
   @param resultSetMetaData a disconnected ResultSetMetaData instance
   * to wrap (usually a <code>javax.sql.RowSetMetaData</code> instance)
   @see java.sql.ResultSet#getMetaData
   @see javax.sql.RowSetMetaData
   @see ResultSetWrappingSqlRowSet#getMetaData
   */
  public ResultSetWrappingSqlRowSetMetaData(ResultSetMetaData resultSetMetaData) {
    this.resultSetMetaData = resultSetMetaData;
  }


  public String getCatalogName(int columnthrows InvalidResultSetAccessException {
    try {
      return this.resultSetMetaData.getCatalogName(column);
    }
    catch (SQLException se) {
      throw new InvalidResultSetAccessException(se);
    }
  }
  
  public String getColumnClassName(int columnthrows InvalidResultSetAccessException {
    try {
      return this.resultSetMetaData.getColumnClassName(column);
    }
    catch (SQLException se) {
      throw new InvalidResultSetAccessException(se);
    }
  }

  public int getColumnCount() throws InvalidResultSetAccessException {
    try {
      return this.resultSetMetaData.getColumnCount();
    }
    catch (SQLException se) {
      throw new InvalidResultSetAccessException(se);
    }
  }

  public String[] getColumnNames() throws InvalidResultSetAccessException {
    if (this.columnNames == null) {
      this.columnNames = new String[getColumnCount()];
      for (int i = 0; i < getColumnCount(); i++) {
        this.columnNames[i= getColumnName(i + 1);
      }
    }
    return this.columnNames;
  }

  public int getColumnDisplaySize(int columnthrows InvalidResultSetAccessException {
    try {
      return this.resultSetMetaData.getColumnDisplaySize(column);
    }
    catch (SQLException se) {
      throw new InvalidResultSetAccessException(se);
    }
  }

  public String getColumnLabel(int columnthrows InvalidResultSetAccessException {
    try {
      return this.resultSetMetaData.getColumnLabel(column);
    }
    catch (SQLException se) {
      throw new InvalidResultSetAccessException(se);
    }
  }

  public String getColumnName(int columnthrows InvalidResultSetAccessException {
    try {
      return this.resultSetMetaData.getColumnName(column);
    }
    catch (SQLException se) {
      throw new InvalidResultSetAccessException(se);
    }
  }

  public int getColumnType(int columnthrows InvalidResultSetAccessException {
    try {
      return this.resultSetMetaData.getColumnType(column);
    }
    catch (SQLException se) {
      throw new InvalidResultSetAccessException(se);
    }
  }

  public String getColumnTypeName(int columnthrows InvalidResultSetAccessException {
    try {
      return this.resultSetMetaData.getColumnTypeName(column);
    }
    catch (SQLException se) {
      throw new InvalidResultSetAccessException(se);
    }
  }

  public int getPrecision(int columnthrows InvalidResultSetAccessException {
    try {
      return this.resultSetMetaData.getPrecision(column);
    }
    catch (SQLException se) {
      throw new InvalidResultSetAccessException(se);
    }
  }

  public int getScale(int columnthrows InvalidResultSetAccessException {
    try {
      return this.resultSetMetaData.getScale(column);
    }
    catch (SQLException se) {
      throw new InvalidResultSetAccessException(se);
    }
  }

  public String getSchemaName(int columnthrows InvalidResultSetAccessException {
    try {
      return this.resultSetMetaData.getSchemaName(column);
    }
    catch (SQLException se) {
      throw new InvalidResultSetAccessException(se);
    }
  }

  public String getTableName(int columnthrows InvalidResultSetAccessException {
    try {
      return this.resultSetMetaData.getTableName(column);
    }
    catch (SQLException se) {
      throw new InvalidResultSetAccessException(se);
    }
  }

  public boolean isCaseSensitive(int columnthrows InvalidResultSetAccessException {
    try {
      return this.resultSetMetaData.isCaseSensitive(column);
    }
    catch (SQLException se) {
      throw new InvalidResultSetAccessException(se);
    }
  }

  public boolean isCurrency(int columnthrows InvalidResultSetAccessException {
    try {
      return this.resultSetMetaData.isCurrency(column);
    }
    catch (SQLException se) {
      throw new InvalidResultSetAccessException(se);
    }
  }

  public boolean isSigned(int columnthrows InvalidResultSetAccessException {
    try {
      return this.resultSetMetaData.isSigned(column);
    }
    catch (SQLException se) {
      throw new InvalidResultSetAccessException(se);
    }
  }
  
}