/*
* Created on Apr 4, 2006
*/
package org.seqcode.gsebricks.verbs;
import java.sql.*;
import java.util.Iterator;
import org.seqcode.gseutils.Closeable;
/**
* @author tdanford
*
* Adapts a java.sql.ResultSet to the Iterator interface.
*/
public class ResultSetIterator implements Iterator<ResultSet>, Closeable {
private ResultSet rs;
private boolean isReady;
private boolean hasNext;
public ResultSetIterator(ResultSet rs) {
this.rs = rs;
isReady = false;
hasNext();
}
/* (non-Javadoc)
* @see java.util.Iterator#hasNext()
*/
public boolean hasNext() {
if(!isReady) {
try {
hasNext = rs.next();
isReady = true;
} catch (SQLException e) {
e.printStackTrace();
}
}
return hasNext;
}
/* (non-Javadoc)
* @see java.util.Iterator#next()
*/
public ResultSet next() {
if(!hasNext()) { throw new IllegalStateException(); }
isReady = false;
return rs;
}
/* (non-Javadoc)
* @see java.util.Iterator#remove()
*/
public void remove() {
throw new UnsupportedOperationException();
}
public boolean isClosed() { return rs == null; }
public void close() {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
}