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]