package tv.dyndns.kishibe.qmaclone.server.database;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.commons.dbutils.handlers.AbstractListHandler;
/**
* {@link org.apache.commons.dbutils.handlers.ColumnListHandler} よりコピー
*
* @author nodchip
*
* @param <T>
*/
public class ColumnListHandler<T> extends AbstractListHandler<T> {
private final Class<T> c;
public ColumnListHandler(Class<T> c) {
this.c = c;
}
protected T handleRow(ResultSet rs) throws SQLException {
Object object = rs.getObject(1);
if (c == object.getClass()) {
return c.cast(object);
} else if (c == Integer.class && object.getClass() == Long.class) {
// SQL の int(10) 型を Java の Long 型で返すため、特別処理
return c.cast((Integer) (int) (long) (Long) object);
} else {
throw new IllegalArgumentException(String.format("%s から %s にキャストできません", object
.getClass().toString(), c.toString()));
}
}
}