Package jp.co.ntt.oss

Source Code of jp.co.ntt.oss.FullReader

package jp.co.ntt.oss;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

import jp.co.ntt.oss.mapper.MappingData;

public class FullReader implements Reader {
  // the number of rows to fetch
  private static final int FETCH_SIZE = 100;

  private Statement stmt = null;
  private ResultSet rset = null;
  private MappingData columnMapping = null;

  public FullReader(final Connection conn, final String query)
      throws SQLException, SyncDatabaseException {
    if (conn == null || query == null) {
      throw new SyncDatabaseException("error.argument");
    }

    try {
      stmt = conn.createStatement();
      stmt.setFetchSize(FETCH_SIZE);
      rset = stmt.executeQuery(query);

      final ResultSetMetaData rmd = rset.getMetaData();
      final int columnCount = rmd.getColumnCount();
      columnMapping = new MappingData(columnCount);
      for (int i = 0; i < columnCount; i++) {
        columnMapping.setColumnType(i, rmd.getColumnType(i + 1));
        columnMapping
            .setColumnTypeName(i, rmd.getColumnTypeName(i + 1));
      }
    } catch (final SQLException e) {
      if (rset != null) {
        rset.close();
      }
      if (stmt != null) {
        stmt.close();
      }

      throw e;
    }
  }

  public final void close() throws SQLException {
    if (rset != null) {
      rset.close();
    }
    if (stmt != null) {
      stmt.close();
    }
  }

  public final Object[] getNextColumns() throws SQLException,
      SyncDatabaseException {
    if (!rset.next()) {
      return null;
    }

    final Object[] columns = new Object[columnMapping.getColumnCount()];

    // get column data
    for (int i = 0; i < columnMapping.getColumnCount(); i++) {
      columns[i] = columnMapping.getDataMapper(i).getObject(rset, i + 1);
    }

    return columns;
  }

  public final int getColumnCount() {
    return columnMapping.getColumnCount();
  }

  public final MappingData getColumnMapping() {
    return columnMapping;
  }

}
TOP

Related Classes of jp.co.ntt.oss.FullReader

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.