package dbfit.util; import java.sql.*; import java.util.*; /** * Vendor-invariant detached rowset implementation. * Because oracle-specific extensions effectively prevent us from using * a generic cached result set, this class plays that role instead. */ public class DataTable { private List <DataRow> rows = new LinkedList<DataRow>(); private List <DataColumn> columns = new LinkedList<DataColumn>(); public DataTable(ResultSet rs) throws SQLException { try { init(rs); } finally { rs.close(); } } public DataTable(List<DataRow> rows, List<DataColumn> columns) { this.rows = rows; this.columns = columns; } private void init(final ResultSet rs) throws SQLException { ResultSetMetaData rsmd = rs.getMetaData(); for (int i = 1; i <= rsmd.getColumnCount(); i++) { columns.add(new DataColumn(rsmd,i)); } while (rs.next()) { rows.add(new DataRow(rs,rsmd)); } } public List<DataColumn> getColumns() { return columns; } public List<DataRow> getRows() { return rows; } }