package org.sql2o;
import org.sql2o.quirks.Quirks;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Iterator for a {@link java.sql.ResultSet}. Tricky part here is getting {@link #hasNext()}
* to work properly, meaning it can be called multiple times without calling {@link #next()}.
*
* @author aldenquimby@gmail.com
*/
public class PojoResultSetIterator<T> extends ResultSetIteratorBase<T> {
private ResultSetHandler<T> handler;
public PojoResultSetIterator(ResultSet rs, boolean isCaseSensitive, Quirks quirks, ResultSetHandlerFactory<T> factory) {
super(rs, isCaseSensitive, quirks);
try {
this.handler = factory.newResultSetHandler(rs.getMetaData());
} catch (SQLException e) {
throw new Sql2oException("Database error: " + e.getMessage(), e);
}
}
public PojoResultSetIterator(ResultSet rs, boolean isCaseSensitive, Quirks quirks, ResultSetHandler<T> handler) {
super(rs, isCaseSensitive, quirks);
this.handler = handler;
}
@Override
protected T readNext() throws SQLException {
return handler.handle(rs);
}
}