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]

Reply via email to