You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by dg...@apache.org on 2003/10/16 05:14:38 UTC

cvs commit: jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils ScalarHandler.java VectorHandler.java MapHandler.java CollectionHandler.java BeanCollectionHandler.java

dgraham     2003/10/15 20:14:38

  Modified:    dbutils/src/java/org/apache/commons/dbutils
                        ScalarHandler.java VectorHandler.java
                        MapHandler.java CollectionHandler.java
                        BeanCollectionHandler.java
  Log:
  Added javadoc, Apache licenses and some logic changes.  It is not an
  error condition for the ResultSet to have 0 rows so the handle method
  should return null instead of throwing an exception.  It's perfectly 
  legitimate for a query to not find the object it was looking for.
  
  Also, it's not an error for the ResultSet to contain more than one row.  
  These handler implementations only handle the first row, extra rows 
  are ignored.  This makes the handlers friendlier and easier to use.
  
  Revision  Changes    Path
  1.6       +21 -11    jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/ScalarHandler.java
  
  Index: ScalarHandler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/ScalarHandler.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ScalarHandler.java	15 Oct 2003 04:54:45 -0000	1.5
  +++ ScalarHandler.java	16 Oct 2003 03:14:38 -0000	1.6
  @@ -65,20 +65,30 @@
   import java.sql.SQLException;
   
   /**
  - * Converts the first ResultSet column into an Object.
  - *
  + * <code>ResultSetHandler</code> implementation that converts the first 
  + * <code>ResultSet</code> column into an Object.
  + * 
  + * @see ResultSetHandler
    * @author Juozas Baliuka
  + * @author David Graham
    */
   public class ScalarHandler implements ResultSetHandler {
   
  +    /**
  +     * Returns the first <code>ResultSet</code> column as an object via the
  +     * <code>ResultSet.getObject()</code> method that performs type 
  +     * conversions.
  +     * 
  +     * @return The first column or <code>null</code> if there are no rows in
  +     * the <code>ResultSet</code>
  +     * 
  +     * @throws SQLException
  +     * 
  +     * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet, java.lang.Object[], java.lang.Object)
  +     */
       public Object handle(ResultSet rs, Object[] params, Object userObject)
           throws SQLException {
   
  -        if (rs.next()) {
  -            Object result = rs.getObject(1);
  -            return result;
  -        }
  -        
  -        throw new SQLException();
  +        return rs.next() ? rs.getObject(1) : null;
       }
   }
  
  
  
  1.4       +18 -15    jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/VectorHandler.java
  
  Index: VectorHandler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/VectorHandler.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- VectorHandler.java	15 Oct 2003 04:54:45 -0000	1.3
  +++ VectorHandler.java	16 Oct 2003 03:14:38 -0000	1.4
  @@ -65,25 +65,28 @@
   import java.sql.SQLException;
   
   /**
  - * Converts ResultSets into Object[]s.
  + * <code>ResultSetHandler</code> implementation that converts a 
  + * <code>ResultSet</code> into an <code>Object[]</code>.
  + * 
  + * @see ResultSetHandler
    * @author Juozas Baliuka
  + * @author David Graham
    */
   public class VectorHandler implements ResultSetHandler {
   
  +    /**
  +     * Places the column values from the first row in an <code>Object[]</code>.
  +     * 
  +     * @return An Object[] or <code>null</code> if there are no rows in the
  +     * <code>ResultSet</code>.
  +     * 
  +     * @throws SQLException
  +     * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet, java.lang.Object[], java.lang.Object)
  +     */
       public Object handle(ResultSet rs, Object[] params, Object userObject)
           throws SQLException {
   
  -        if (rs.next()) {
  -            Object result = DbUtils.resultSetToArray(rs);
  -            
  -            if (rs.next()) {
  -                throw new SQLException("too many results");
  -            }
  -            
  -            return result;
  -        }
  -        
  -        throw new SQLException("too many results");
  +        return rs.next() ? DbUtils.resultSetToArray(rs) : null;
       }
   
   }
  
  
  
  1.3       +86 -20    jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/MapHandler.java
  
  Index: MapHandler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/MapHandler.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- MapHandler.java	16 Mar 2003 16:23:47 -0000	1.2
  +++ MapHandler.java	16 Oct 2003 03:14:38 -0000	1.3
  @@ -1,28 +1,94 @@
  +/*
  + * $Header$
  + * $Revision$
  + * $Date$
  + * 
  + * ====================================================================
  + *
  + * The Apache Software License, Version 1.1
  + *
  + * Copyright (c) 2003 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution, if
  + *    any, must include the following acknowledgement:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgement may appear in the software itself,
  + *    if and wherever such third-party acknowledgements normally appear.
  + *
  + * 4. The names "The Jakarta Project", "Commons", and "Apache Software
  + *    Foundation" must not be used to endorse or promote products derived
  + *    from this software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache"
  + *    nor may "Apache" appear in their names without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + *
  + */
  +
   package org.apache.commons.dbutils;
   
  -import java.util.*;
  -import java.sql.*;
  +import java.sql.ResultSet;
  +import java.sql.SQLException;
  +
   /**
  - *
  - * @author  baliuka
  + * <code>ResultSetHandler</code> implementation that converts the first
  + * <code>ResultSet</code> row into a <code>Map</code>.
  + * 
  + * @see ResultSetHandler
  + * @author Juozas Baliuka
  + * @author David Graham
    */
   public class MapHandler implements ResultSetHandler {
  -    
  -    /** Creates a new instance of MapHandler */
  -    public MapHandler() {
  +
  +    /**
  +     * Converts the first row in the <code>ResultSet</code> into a 
  +     * <code>Map</code>.
  +     * 
  +     * @return A <code>Map</code> with the values from the first row or 
  +     * <code>null</code> if there are no rows in the <code>ResultSet</code>. 
  +     * 
  +     * @throws SQLException
  +     * 
  +     * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet, java.lang.Object[], java.lang.Object)
  +     */
  +    public Object handle(ResultSet rs, Object[] params, Object userObject)
  +        throws SQLException {
  +
  +        return rs.next() ? DbUtils.resultSetToMap(rs) : null;
       }
  -    
  -    public Object handle(java.sql.ResultSet rs, Object[] params, Object userObject) throws java.sql.SQLException{
  -               
  -                if (rs.next()) {
  -                    Map result = DbUtils.resultSetToMap(rs);
  -                    if(rs.next()){
  -                      throw new SQLException("too many results");
  -                    }
  -                    return result;
  -                }
  -                throw new SQLException("too many results");
  -            }
   
  -    
   }
  
  
  
  1.2       +93 -14    jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/CollectionHandler.java
  
  Index: CollectionHandler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/CollectionHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- CollectionHandler.java	16 Mar 2003 09:29:32 -0000	1.1
  +++ CollectionHandler.java	16 Oct 2003 03:14:38 -0000	1.2
  @@ -1,23 +1,102 @@
  +/*
  + * $Header$
  + * $Revision$
  + * $Date$
  + * 
  + * ====================================================================
  + *
  + * The Apache Software License, Version 1.1
  + *
  + * Copyright (c) 2003 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution, if
  + *    any, must include the following acknowledgement:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgement may appear in the software itself,
  + *    if and wherever such third-party acknowledgements normally appear.
  + *
  + * 4. The names "The Jakarta Project", "Commons", and "Apache Software
  + *    Foundation" must not be used to endorse or promote products derived
  + *    from this software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache"
  + *    nor may "Apache" appear in their names without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + *
  + */
  +
   package org.apache.commons.dbutils;
   
  -import java.util.*;
  +import java.sql.ResultSet;
  +import java.sql.SQLException;
  +import java.util.ArrayList;
  +import java.util.List;
   
   /**
  - *
  - * @author  baliuka
  + * <code>ResultSetHandler</code> implementation that converts the 
  + * <code>ResultSet</code> into a <code>List</code> of <code>Object[]</code>s.
  + * 
  + * @see ResultSetHandler
  + * @author Juozas Baliuka
  + * @author David Graham
    */
  -public class CollectionHandler implements ResultSetHandler{
  -    
  -    /** Creates a new instance of CollectionHandler */
  -    public CollectionHandler() {
  -    }
  -    
  -    public Object handle(java.sql.ResultSet rs, Object[] params, Object userObject) throws java.sql.SQLException {
  -        Collection result = new Vector();
  -        while(rs.next()){
  -           result.add( DbUtils.resultSetToArray(rs) ); 
  +public class CollectionHandler implements ResultSetHandler {
  +
  +    /**
  +     * Convert each row's columns into an <code>Object[]</code> and store them 
  +     * in a <code>List</code> in the same order they are returned from the
  +     * <code>ResultSet.next()</code> method. 
  +     * 
  +     * @return A <code>List</code> of <code>Object[]</code>s, never 
  +     * <code>null</code>.
  +     * 
  +     * @throws SQLException
  +     * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet, java.lang.Object[], java.lang.Object)
  +     */
  +    public Object handle(ResultSet rs, Object[] params, Object userObject)
  +        throws SQLException {
  +            
  +        List result = new ArrayList();
  +        
  +        while (rs.next()) {
  +            result.add(DbUtils.resultSetToArray(rs));
           }
  +        
           return result;
       }
  -    
  +
   }
  
  
  
  1.2       +99 -10    jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/BeanCollectionHandler.java
  
  Index: BeanCollectionHandler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/BeanCollectionHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BeanCollectionHandler.java	16 Mar 2003 16:23:47 -0000	1.1
  +++ BeanCollectionHandler.java	16 Oct 2003 03:14:38 -0000	1.2
  @@ -1,19 +1,108 @@
  +/*
  + * $Header$
  + * $Revision$
  + * $Date$
  + * 
  + * ====================================================================
  + *
  + * The Apache Software License, Version 1.1
  + *
  + * Copyright (c) 2003 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution, if
  + *    any, must include the following acknowledgement:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgement may appear in the software itself,
  + *    if and wherever such third-party acknowledgements normally appear.
  + *
  + * 4. The names "The Jakarta Project", "Commons", and "Apache Software
  + *    Foundation" must not be used to endorse or promote products derived
  + *    from this software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache"
  + *    nor may "Apache" appear in their names without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + *
  + */
   
   package org.apache.commons.dbutils;
   
  +import java.sql.ResultSet;
  +import java.sql.SQLException;
  +
   /**
  - *
  - * @author  baliuka
  + * <code>ResultSetHandler</code> implementation that converts the first 
  + * <code>ResultSet</code> column into an Object.
  + * 
  + * @see ResultSetHandler
  + * @author Juozas Baliuka
  + * @author David Graham
    */
  -public class BeanCollectionHandler implements ResultSetHandler{
  -   private Class type;    
  -    /** Creates a new instance of BeanCollectionHandler */
  +public class BeanCollectionHandler implements ResultSetHandler {
  +
  +    /**
  +     * The Class of beans produced by this handler.
  +     */
  +    private Class type = null;
  +
  +    /** 
  +     * Creates a new instance of BeanCollectionHandler.
  +     * 
  +     * @param type The Class that objects returned from <code>handle()</code>
  +     * are created from.
  +     */
       public BeanCollectionHandler(Class type) {
           this.type = type;
       }
  -    
  -  public Object handle(java.sql.ResultSet rs, Object[] params, Object userObject) throws java.sql.SQLException {
  -      return DbUtils.resultSetToBeanCollection(rs,type);
  -    }    
  -       
  +
  +    /**
  +     * Convert the <code>ResultSet</code> rows into a <code>List</code> of 
  +     * beans with the <code>Class</code> given in the constructor.
  +     * 
  +     * @return A <code>List</code> of beans (one for each row), never 
  +     * <code>null</code>.
  +     * 
  +     * @throws SQLException
  +     * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet, java.lang.Object[], java.lang.Object)
  +     */
  +    public Object handle(ResultSet rs, Object[] params, Object userObject)
  +        throws SQLException {
  +            
  +        return DbUtils.resultSetToBeanCollection(rs, type);
  +    }
  +
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org