dgraham 2003/10/17 17:11:52
Modified: dbutils/src/java/org/apache/commons/dbutils
ResultSetIterator.java ResultSetIteratorV1.java
DbUtils.java
Log:
Removed the DbUtils.iterateResultSet() methods and made the
ResultSetIterator classes public for clients to use directly. Clients
shouldn't have to ask DbUtils for an iterator when this is easier:
Iterator i = new ResultSetIterator(rs);
Added javadoc to ResultSetIterator as well as the ability to specify
the processor used to convert rows into Object[]s.
Revision Changes Path
1.6 +51 -10
jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/ResultSetIterator.java
Index: ResultSetIterator.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/ResultSetIterator.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ResultSetIterator.java 16 Oct 2003 04:21:11 -0000 1.5
+++ ResultSetIterator.java 18 Oct 2003 00:11:52 -0000 1.6
@@ -66,19 +66,51 @@
import java.util.Iterator;
/**
- * A version of ResultSetIterator that is simpler, but needs isLast which
- * Oracle fails to offer. As such this is sidelined until Oracle adds
- * features.
+ * <p>
+ * Wraps a <code>ResultSet</code> in an <code>Iterator</code>. This is useful
+ * when you want to present a non-database application layer with domain
+ * neutral data.
+ * </p>
+ *
+ * <p>
+ * This implementation requires the <code>ResultSet.isLast()</code> method
+ * to be implemented.
+ * </p>
*
* @author Henri Yandell
+ * @author David Graham
*/
-class ResultSetIterator implements Iterator {
+public class ResultSetIterator implements Iterator {
+ /**
+ * The wrapped <code>ResultSet</code>.
+ */
private ResultSet rs = null;
-
+
+ /**
+ * The processor to use when converting a row into an Object[].
+ */
+ private ResultSetConverter convert = BasicResultSetConverter.instance();
+
+ /**
+ * Constructor for ResultSetIterator.
+ * @param rs Wrap this <code>ResultSet</code> in an <code>Iterator</code>.
+ */
public ResultSetIterator(ResultSet rs) {
this.rs = rs;
}
+
+ /**
+ * Constructor for ResultSetIterator.
+ * @param rs Wrap this <code>ResultSet</code> in an <code>Iterator</code>.
+ * @param convert The processor to use when converting a row into an
+ * <code>Object[]</code>. Defaults to a
+ * <code>BasicResultSetConverter</code>.
+ */
+ public ResultSetIterator(ResultSet rs, ResultSetConverter convert) {
+ this.rs = rs;
+ this.convert = convert;
+ }
public boolean hasNext() {
try {
@@ -91,10 +123,16 @@
}
}
+ /**
+ * Returns the next row as an <code>Object[]</code>.
+ * @return An <code>Object[]</code> with the same number of elements as
+ * columns in the <code>ResultSet</code>.
+ * @see java.util.Iterator#next()
+ */
public Object next() {
try {
rs.next();
- return BasicResultSetConverter.instance().toArray(rs);
+ return this.convert.toArray(rs);
} catch (SQLException e) {
// TODO Logging?
@@ -103,8 +141,11 @@
}
}
+ /**
+ * Deletes the current row from the <code>ResultSet</code>.
+ * @see java.util.Iterator#remove()
+ */
public void remove() {
-
try {
this.rs.deleteRow();
1.6 +14 -5
jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/ResultSetIteratorV1.java
Index: ResultSetIteratorV1.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/ResultSetIteratorV1.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ResultSetIteratorV1.java 16 Oct 2003 04:21:11 -0000 1.5
+++ ResultSetIteratorV1.java 18 Oct 2003 00:11:52 -0000 1.6
@@ -65,10 +65,19 @@
import java.sql.SQLException;
import java.util.Iterator;
-class ResultSetIteratorV1 implements Iterator {
+/**
+ * A version of ResultSetIterator that doesn't require isLast() which
+ * Oracle fails to offer.
+ *
+ * @author Henri Yandell
+ * @author David Graham
+ */
+public class ResultSetIteratorV1 implements Iterator {
private ResultSet rs;
+
private boolean hasNextCalledLast = false;
+
private Object val = null;
public ResultSetIteratorV1(ResultSet rs) {
@@ -95,7 +104,7 @@
try {
rs.next();
this.val = BasicResultSetConverter.instance().toArray(rs);
-
+
} catch (SQLException sqle) {
this.val = null;
}
1.36 +4 -23
jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/DbUtils.java
Index: DbUtils.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/DbUtils.java,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- DbUtils.java 16 Oct 2003 04:21:11 -0000 1.35
+++ DbUtils.java 18 Oct 2003 00:11:52 -0000 1.36
@@ -342,26 +342,7 @@
return false;
}
}
-
- /**
- * Iterate over a result set, getting an Object[] back
- * for each row of the result set.
- * This version uses JDBC-2 code, which Oracle 9i fails
- * to support.
- */
- public static Iterator iterateResultSet(ResultSet rs) {
- return new ResultSetIterator(rs);
- }
-
- /**
- * Iterate over a result set, getting an Object[] back
- * for each row of the result set.
- * This version uses JDBC-1 code.
- */
- public static Iterator iterateResultSetVersion1(ResultSet rs) {
- return new ResultSetIteratorV1(rs);
- }
-
+
/**
* Close a <code>Connection</code>, avoid closing if null.
*/
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]