Symfoware

Symfowareについての考察blog

JDBC over Thriftを作成する その5(ResultSetクラスの実装)

CentOSにインストールしたSymfowareにWindowsからアクセスしてやろうと
Thrift経由でデータを取得するJDBCドライバを作成中しています。

JDBC over Thriftを作成する その1(JDBCドライバの作り方)
JDBC over Thriftを作成する その2(JDBCドライバのロード)
JDBC over Thriftを作成する その3(Connectionクラスの実装)
JDBC over Thriftを作成する その4(Statementクラスの実装)


今回はResultSetクラスを作成してみます。




ResultSetクラスの実装



ResultSetクラスは、java.sql.ResultSetを継承して作成します。
実装の抜粋は以下のとおり。


■ThriftResultSet.java


package com.fc2.blog68.symfoware.jdbc;

import java.io.InputStream;
import java.io.Reader;
import java.math.BigDecimal;
import java.net.URL;
import java.sql.Array;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Date;
import java.sql.NClob;
import java.sql.Ref;
import java.sql.ResultSetMetaData;
import java.sql.RowId;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.SQLXML;
import java.sql.Statement;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Map;

import com.fc2.blog68.symfoware.thrift.SymResultSet;
import com.fc2.blog68.symfoware.thrift.SymRow;

public class ThriftResultSet implements java.sql.ResultSet {

    private SymResultSet rs;
    private SymRow row;
    private int maxRow;
    private int fetchRow;
    
    //コンストラクタで、SymResultSetを引数にとり保持する
    public ThriftResultSet(SymResultSet rs) {
        this.rs = rs;
        this.maxRow = rs.SymRows.size();
        this.fetchRow = 0;
    }
    

    @Override
    public String getString(int arg0) throws SQLException {
        return this.row.getSymRowData().get(arg0);
    }

    @Override
    public String getString(String arg0) throws SQLException {
        int index = this.rs.getColumnNames().indexOf(arg0);
        if (index == -1) {
            return null;
        }
        return this.row.getSymRowData().get(index);
    }

    @Override
    public boolean next() throws SQLException {
        if (this.maxRow <= this.fetchRow ) {
            return false;
        }
        this.row = this.rs.getSymRows().get(this.fetchRow);
        this.fetchRow += 1;
        return true;
    }

}






必要最低限、getStringとnextを実装しました。

その他、absoluteやafterLastといったメソッドの実装も求められます。
全て、


    @Override
    public boolean absolute(int arg0) throws SQLException {
        throw new SQLException("Method not supported");
    }



このように、エラーをスローする実装としておきました。
これで、Thrift over JDBCの作成は完了のはず・・・


今度は、サーバー側のモジュールを作成します。






関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2010/04/30(金) 12:08:40|
  2. 開発
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
次のページ