org.sfm.jdbc.impl.ResultSetIterator Maven / Gradle / Ivy
package org.sfm.jdbc.impl;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.NoSuchElementException;
import org.sfm.map.Mapper;
public class ResultSetIterator implements Iterator {
private final ResultSet rs;
private final Mapper mapper;
private boolean isFetched;
private boolean hasValue;
public ResultSetIterator(ResultSet rs, Mapper mapper) {
this.rs = rs;
this.mapper = mapper;
}
@Override
public boolean hasNext() {
fetch();
return hasValue;
}
private void fetch() {
if (!isFetched) {
try {
hasValue = rs.next();
isFetched = true;
} catch(SQLException e) {
throw new RuntimeException(e);
}
}
}
@Override
public T next() {
fetch();
if (hasValue) {
T t = mapper.map(rs);
isFetched = false;
return t;
} else {
throw new NoSuchElementException("No more rows");
}
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy