[ http://issues.apache.org/jira/browse/DBUTILS-16?page=all ]
Henri Yandell updated DBUTILS-16:
---------------------------------
Attachment: DBUTILS-16.patch
Version of the patch that does not remove the toBeanList methods.
I'm unsure if they should be deprecated - it feels that there is no reason to
do so.
> [dbutils] ResultSetRowProcessor abstract handler and some classes rework
> ------------------------------------------------------------------------
>
> Key: DBUTILS-16
> URL: http://issues.apache.org/jira/browse/DBUTILS-16
> Project: Commons DbUtils
> Issue Type: Improvement
> Environment: Operating System: All
> Platform: All
> Reporter: Mikhail Krivoshein
> Priority: Minor
> Fix For: 1.1
>
> Attachments: DBUTILS-16.patch, GenericListHandler.patch,
> GenericListHandler_2.patch
>
>
> Index: ArrayListHandler.java
> ===================================================================
> RCS file: /home/cvspublic/jakarta-
> commons/dbutils/src/java/org/apache/commons/dbutils/handlers/ArrayListHandler.ja
> va,v
> retrieving revision 1.4
> diff -u -r1.4 ArrayListHandler.java
> --- ArrayListHandler.java 28 Feb 2004 00:12:22 -0000 1.4
> +++ ArrayListHandler.java 4 Jun 2004 13:24:00 -0000
> @@ -1,82 +1,68 @@
> /*
> * 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
> - *
> + *
> + * 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.
> + * 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;
> import org.apache.commons.dbutils.RowProcessor;
>
> /**
> - * <code>ResultSetHandler</code> implementation that converts the
> - * <code>ResultSet</code> into a <code>List</code> of <code>Object[]</code>s.
> - * This class is thread safe.
> + * <code>ResultSetHandler</code> implementation that converts the
> <code>ResultSet</code>
> + * into a <code>List</code> of <code>Object[]</code>s. This class is
> + * thread safe.
> *
> * @see ResultSetHandler
> */
> -public class ArrayListHandler implements ResultSetHandler {
> -
> - /**
> - * The RowProcessor implementation to use when converting rows
> - * into Object[]s.
> - */
> - private RowProcessor convert = ArrayHandler.ROW_PROCESSOR;
> -
> - /**
> - * Creates a new instance of ArrayListHandler using a
> - * <code>BasicRowProcessor</code> for conversions.
> - */
> - public ArrayListHandler() {
> - super();
> - }
> -
> - /**
> - * Creates a new instance of ArrayListHandler.
> - *
> - * @param convert The <code>RowProcessor</code> implementation
> - * to use when converting rows into Object[]s.
> - */
> - public ArrayListHandler(RowProcessor convert) {
> - super();
> - this.convert = convert;
> - }
> -
> - /**
> - * 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)
> - */
> - public Object handle(ResultSet rs) throws SQLException {
> -
> - List result = new ArrayList();
> -
> - while (rs.next()) {
> - result.add(this.convert.toArray(rs));
> - }
> -
> - return result;
> - }
> +public class ArrayListHandler extends ResultSetRowProcessor {
>
> + /**
> + * The RowProcessor implementation to use when converting rows into
> + * Object[]s.
> + */
> + private RowProcessor convert = ArrayHandler.ROW_PROCESSOR;
> +
> + /**
> + * Creates a new instance of ArrayListHandler using a
> <code>BasicRowProcessor</code>
> + * for conversions.
> + */
> + public ArrayListHandler() {
> + super();
> + }
> +
> + /**
> + * Creates a new instance of ArrayListHandler.
> + *
> + * @param convert The <code>RowProcessor</code> implementation to use
> when
> + * converting rows into Object[]s.
> + */
> + public ArrayListHandler(RowProcessor convert) {
> + super();
> + this.convert = convert;
> + }
> +
> + /**
> + * Convert row's columns into an <code>Object[]</code>.
> + *
> + * @return <code>Object[]</code>, never <code>null</code>.
> + *
> + * @throws SQLException
> + * @see org.apache.commons.dbutils.handlers.ResultSetRowProcessor#handle
> (ResultSet)
> + */
> + protected Object handleRow(ResultSet rs) throws SQLException {
> + return this.convert.toArray(rs);
> + }
> }
> Index: ColumnListHandler.java
> ===================================================================
> RCS file: /home/cvspublic/jakarta-
> commons/dbutils/src/java/org/apache/commons/dbutils/handlers/ColumnListHandler.j
> ava,v
> retrieving revision 1.1
> diff -u -r1.1 ColumnListHandler.java
> --- ColumnListHandler.java 9 Mar 2004 03:05:51 -0000 1.1
> +++ ColumnListHandler.java 4 Jun 2004 13:24:01 -0000
> @@ -1,100 +1,85 @@
> /*
> * Copyright 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
> - *
> + *
> + * 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.
> + * 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.
> + * <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 ColumnListHandler implements ResultSetHandler {
> +public class ColumnListHandler extends ResultSetRowProcessor {
>
> - /**
> - * 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 ColumnListHandler. The first column of each
> - * row will be returned from <code>handle()</code>.
> - */
> - public ColumnListHandler() {
> - super();
> - }
> -
> - /**
> - * Creates a new instance of ColumnListHandler.
> - *
> - * @param columnIndex The index of the column to retrieve from the
> - * <code>ResultSet</code>.
> - */
> - public ColumnListHandler(int columnIndex) {
> - this.columnIndex = columnIndex;
> - }
> -
> - /**
> - * Creates a new instance of ColumnListHandler.
> - *
> - * @param columnName The name of the column to retrieve from the
> - * <code>ResultSet</code>.
> - */
> - public ColumnListHandler(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;
> - }
> + /**
> + * 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 ColumnListHandler. The first column of
> each row
> + * will be returned from <code>handle()</code>.
> + */
> + public ColumnListHandler() {
> + super();
> + }
> +
> + /**
> + * Creates a new instance of ColumnListHandler.
> + *
> + * @param columnIndex The index of the column to retrieve from the
> <code>ResultSet</code>.
> + */
> + public ColumnListHandler(int columnIndex) {
> + this.columnIndex = columnIndex;
> + }
> +
> + /**
> + * Creates a new instance of ColumnListHandler.
> + *
> + * @param columnName The name of the column to retrieve from the
> <code>ResultSet</code>.
> + */
> + public ColumnListHandler(String columnName) {
> + this.columnName = columnName;
> + }
> +
> + /**
> + * Returns one <code>ResultSet</code> column value as
> <code>Object</code>.
> + *
> + * @return <code>Object</code>, never <code>null</code>.
> + *
> + * @throws SQLException
> + *
> + * @see org.apache.commons.dbutils.handlers.ResultSetRowProcessor#handle
> (ResultSet)
> + */
> + protected Object handleRow(ResultSet rs) throws SQLException {
> + if (this.columnName == null) {
> + return rs.getObject(this.columnIndex);
> + } else {
> + return rs.getObject(this.columnName);
> + }
> + }
> }
> Index: MapListHandler.java
> ===================================================================
> RCS file: /home/cvspublic/jakarta-
> commons/dbutils/src/java/org/apache/commons/dbutils/handlers/MapListHandler.java
> ,v
> retrieving revision 1.4
> diff -u -r1.4 MapListHandler.java
> --- MapListHandler.java 28 Feb 2004 00:12:22 -0000 1.4
> +++ MapListHandler.java 4 Jun 2004 13:24:01 -0000
> @@ -17,10 +17,7 @@
>
> import java.sql.ResultSet;
> import java.sql.SQLException;
> -import java.util.ArrayList;
> -import java.util.List;
>
> -import org.apache.commons.dbutils.ResultSetHandler;
> import org.apache.commons.dbutils.RowProcessor;
>
> /**
> @@ -30,7 +27,7 @@
> *
> * @see ResultSetHandler
> */
> -public class MapListHandler implements ResultSetHandler {
> +public class MapListHandler extends ResultSetRowProcessor {
>
> /**
> * The RowProcessor implementation to use when converting rows
> @@ -58,24 +55,16 @@
> }
>
> /**
> - * Converts the <code>ResultSet</code> rows into a <code>List</code> of
> - * <code>Map</code> objects.
> + * Converts the <code>ResultSet</code> row into a <code>Map</code>
> object.
> *
> - * @return A <code>List</code> of <code>Map</code>s, never null.
> + * @return A <code>Map</code>, never null.
> *
> * @throws SQLException
> *
> - * @see org.apache.commons.dbutils.ResultSetHandler#handle
> (java.sql.ResultSet)
> + * @see org.apache.commons.dbutils.handlers.ResultSetRowProcessor#handle
> (ResultSet)
> */
> - public Object handle(ResultSet rs) throws SQLException {
> -
> - List results = new ArrayList();
> -
> - while (rs.next()) {
> - results.add(this.convert.toMap(rs));
> - }
> -
> - return results;
> - }
> + protected Object handleRow(ResultSet rs) throws SQLException {
> + return this.convert.toMap(rs);
> + }
>
> }
> Index: src/java/org/apache/commons/dbutils/handlers/ResultSetRowProcessor.java
> ===================================================================
> RCS file:
> src/java/org/apache/commons/dbutils/handlers/ResultSetRowProcessor.java
> diff -N
> src/java/org/apache/commons/dbutils/handlers/ResultSetRowProcessor.java
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ src/java/org/apache/commons/dbutils/handlers/ResultSetRowProcessor.java
> 1 Jan 1970 00:00:00 -0000
> @@ -0,0 +1,53 @@
> +/*
> + * 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;
> +
> +/**
> + * Abstract class that simplify development of <code>ResultSetHandler</code>
> + * classes that convert <code>ResultSet</code> into <code>List</code>.
> + */
> +public abstract class ResultSetRowProcessor implements ResultSetHandler {
> + /**
> + * Whole <code>ResultSet</code> handler. It produce <code>List</code> as
> + * result. To convert individual rows into Java objects it uses
> <code>handleRow(ResultSet)</code>
> + * method.
> + *
> + * @see #handleRow(ResultSet)
> + */
> + public Object handle(ResultSet rs) throws SQLException {
> + List rows = new ArrayList();
> + while (rs.next()) {
> + rows.add(this.handleRow(rs));
> + }
> + return rows;
> + }
> +
> + /**
> + * Row handler. Method converts current row into some Java object.
> + *
> + * @param rs <code>ResultSet</code> to process.
> + * @return row processing result
> + * @throws SQLException error occurs
> + */
> + protected abstract Object handleRow(ResultSet rs) throws SQLException;
> +}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]