package com.godoro.samples.jdbc;

import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;

public class ResultSetTableModel extends AbstractTableModel{
    
    private ResultSet resultSet;
    private int rowCount;
    private int columnCount;    
    private ArrayList data=new ArrayList();

    public ResultSetTableModel(ResultSet resultSet) 
        throws Exception
    {
        setResultSet(resultSet);
    }
    public void setResultSet(ResultSet resultSet)
        throws Exception
    {
        this.resultSet=resultSet;            
        ResultSetMetaData metaData=resultSet.getMetaData();
        rowCount=0;
        columnCount=metaData.getColumnCount();
        while(resultSet.next()){
            Object[] row=new Object[columnCount];
            for(int j=0;j<columnCount;j++){
                row[j]=resultSet.getObject(j+1);                
            }
            data.add(row);
            rowCount++;
        }
    }
    public int getColumnCount(){
        return columnCount;
    }        
    public int getRowCount(){
        return rowCount;
    }        
    public Object getValueAt(int rowIndex, int columnIndex){
        Object[] row=(Object[]) data.get(rowIndex);
        return row[columnIndex];
    }
    public String getColumnName(int columnIndex){
        try{
            ResultSetMetaData metaData=resultSet.getMetaData();
            return metaData.getColumnName(columnIndex+1);
        }catch(Exception e){
            e.printStackTrace();
            return "";
        }
    }        
}

