Hi, I'd like to suggest a new ResultHandler implementation that converts one ResultSet 
column into a List of Objects.

(Attached)

With that it's easy to load a whole column into a List.

-- 
petike
http://petike1.uw.hu=
Index: BaseTestCase.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-commons/dbutils/src/test/org/apache/commons/dbutils/BaseTestCase.java,v
retrieving revision 1.6
diff -u -r1.6 BaseTestCase.java
--- BaseTestCase.java   28 Feb 2004 00:12:22 -0000      1.6
+++ BaseTestCase.java   2 Mar 2004 10:11:49 -0000
@@ -31,6 +31,7 @@
 import org.apache.commons.dbutils.handlers.MapHandlerTest;
 import org.apache.commons.dbutils.handlers.MapListHandlerTest;
 import org.apache.commons.dbutils.handlers.ScalarHandlerTest;
+import org.apache.commons.dbutils.handlers.ScalarListHandlerTest;
 import org.apache.commons.dbutils.wrappers.SqlNullCheckedResultSetTest;
 import org.apache.commons.dbutils.wrappers.StringTrimmedResultSetTest;
 
@@ -150,6 +151,7 @@
         suite.addTestSuite(MapHandlerTest.class);
         suite.addTestSuite(MapListHandlerTest.class);
         suite.addTestSuite(ScalarHandlerTest.class);
+        suite.addTestSuite(ScalarListHandlerTest.class);
 
         suite.addTestSuite(StringTrimmedResultSetTest.class);
         suite.addTestSuite(SqlNullCheckedResultSetTest.class);
/*
 * Copyright 2003-2004 The Apache Software Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.commons.dbutils.handlers;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.dbutils.ResultSetHandler;

/**
 * <code>ResultSetHandler</code> implementation that converts one
 * <code>ResultSet</code> column into a <code>List</code> of
 * <code>Object</code>s. This class is thread safe.
 * 
 * @see ResultSetHandler
 * @since DbUtils 1.1
 */
public class ScalarListHandler implements ResultSetHandler {

    /**
     * The column number to retrieve.
     */
    private int columnIndex = 1;

    /**
     * The column name to retrieve.  Either columnName or columnIndex
     * will be used but never both.
     */
    private String columnName = null;

    /** 
     * Creates a new instance of ScalarListHandler.  The first column will
     * be returned from <code>handle()</code>.
     */
    public ScalarListHandler() {
        super();
    }

    /** 
     * Creates a new instance of ScalarListHandler.
     * 
     * @param columnIndex The index of the column to retrieve from the 
     * <code>ResultSet</code>.
     */
    public ScalarListHandler(int columnIndex) {
        this.columnIndex = columnIndex;
    }

    /** 
     * Creates a new instance of ScalarListHandler.
     * 
     * @param columnName The name of the column to retrieve from the 
     * <code>ResultSet</code>.
     */
    public ScalarListHandler(String columnName) {
        this.columnName = columnName;
    }

    /**
     * Returns one <code>ResultSet</code> column as a <code>List</code> of
     * <code>Object</code>s. The elements are added to the <code>List</code> via
     * the <code>ResultSet.getObject()</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)
     */
    public Object handle(ResultSet rs) throws SQLException {

        List result = new ArrayList();

        while (rs.next()) {
            if (this.columnName == null) {
                result.add(rs.getObject(this.columnIndex));
            } else {
                result.add(rs.getObject(this.columnName));
            }
        }
        return result;
    }
}
/*
 * Copyright 2003-2004 The Apache Software Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.commons.dbutils.handlers;

import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.BaseTestCase;
import org.apache.commons.dbutils.ResultSetHandler;

/**
 * ScalarListHandlerTest
 */
public class ScalarListHandlerTest extends BaseTestCase {

        /**
         * Constructor for ScalarListHandlerTest.
         */
        public ScalarListHandlerTest(String name) {
                super(name);
        }

        public void testHandle() throws SQLException {
        ResultSetHandler h = new ScalarListHandler();
        
        List results = (List) h.handle(this.rs);

        assertNotNull(results);
        assertEquals(ROWS, results.size());

        assertEquals("1", results.get(0));
        assertEquals("4", results.get(1));
        }

        public void testColumnIndexHandle() throws SQLException {
                ResultSetHandler h = new ScalarListHandler(2);
        List results = (List) h.handle(this.rs);

        assertNotNull(results);
        assertEquals(ROWS, results.size());

        assertEquals("2", results.get(0));
        assertEquals("5", results.get(1));
        }

        public void testColumnNameHandle() throws SQLException {
        ResultSetHandler h = new ScalarListHandler("Three");
        List results = (List) h.handle(this.rs);

        assertNotNull(results);
        assertEquals(ROWS, results.size());

        assertEquals("3", results.get(0));
        assertEquals("6", results.get(1));              
        }

        public void testEmptyResultSetHandle() throws SQLException {
                ResultSetHandler h = new ScalarListHandler();
                List results = (List) h.handle(this.emptyResultSet);

                assertNotNull(results);
        assertTrue(results.isEmpty());
        }

}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to