private void setup() {
   StringBuffer buf = new StringBuffer(100);
   buf.append("SELECT ");
   StringBuffer whereBuf = new StringBuffer(100);
   whereBuf.append(" WHERE");
   List primaryKeyList = new ArrayList();
   for (int i = 0; i < table.getColumnSize(); ++i) {
     DataColumn column = table.getColumn(i);
     buf.append(column.getColumnName());
     buf.append(", ");
     if (column.isPrimaryKey()) {
       whereBuf.append(" ");
       whereBuf.append(column.getColumnName());
       whereBuf.append(" = ? AND");
       primaryKeyList.add(column.getColumnName());
     }
   }
   buf.setLength(buf.length() - 2);
   whereBuf.setLength(whereBuf.length() - 4);
   buf.append(" FROM ");
   buf.append(table.getTableName());
   buf.append(whereBuf);
   sql = buf.toString();
   primaryKeys = (String[]) primaryKeyList.toArray(new String[primaryKeyList.size()]);
 }
 public DataTable read() {
   DataTable newTable = new DataTableImpl(table.getTableName());
   for (int i = 0; i < table.getColumnSize(); ++i) {
     DataColumn column = table.getColumn(i);
     newTable.addColumn(column.getColumnName(), column.getColumnType());
   }
   for (int i = 0; i < table.getRowSize(); ++i) {
     DataRow row = table.getRow(i);
     DataRow newRow = newTable.addRow();
     reload(row, newRow);
   }
   return newTable;
 }
  /**
   * {@link SqlReloadTableReader}を作成します。
   *
   * @param dataSource データソース
   * @param table テーブル
   */
  public SqlReloadTableReader(DataSource dataSource, DataTable table) {

    this.dataSource = dataSource;
    this.table = table;
    Connection con = DataSourceUtil.getConnection(dataSource);
    try {
      DatabaseMetaData dbMetaData = ConnectionUtil.getMetaData(con);
      table.setupMetaData(dbMetaData);
    } finally {
      ConnectionUtil.close(con);
    }
    setup();
  }
 /** @throws Exception */
 public void testHandle2() throws Exception {
   String sql = "select dept_no, d_name from dept3 where dept_no = ?";
   DataTable table = new DataTableImpl("dept3");
   table.addColumn("dept_no").setPrimaryKey(true);
   table.addColumn("d_name");
   DataRow row = table.addRow();
   row.setValue("dept_no", new BigDecimal(20));
   row.setValue("d_name", "RESEARCH");
   DataTable newTable = new DataTableImpl("dept3");
   newTable.addColumn("dept_no").setPrimaryKey(true);
   newTable.addColumn("d_name");
   DataRow newRow = newTable.addRow();
   SelectHandler handler =
       new BasicSelectHandler(ds_, sql, new DataRowReloadResultSetHandler(newRow));
   handler.execute(new Object[] {new Integer(20)});
   System.out.println(newRow);
   assertEquals(row, newRow);
 }
 /** @throws Exception */
 public void testHandle() throws Exception {
   String sql = "select empno, ename from emp where empno = ?";
   DataTable table = new DataTableImpl("emp");
   table.addColumn("empno").setPrimaryKey(true);
   table.addColumn("ename");
   DataRow row = table.addRow();
   row.setValue("empno", new BigDecimal(7788));
   row.setValue("ename", "SCOTT");
   DataTable newTable = new DataTableImpl("emp");
   newTable.addColumn("empno").setPrimaryKey(true);
   newTable.addColumn("ename");
   DataRow newRow = newTable.addRow();
   SelectHandler handler =
       new BasicSelectHandler(ds_, sql, new DataRowReloadResultSetHandler(newRow));
   handler.execute(new Object[] {new Integer(7788)});
   System.out.println(newRow);
   assertEquals("2", row, newRow);
 }