001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.commons.dbutils; 018 019import java.sql.ResultSet; 020import java.sql.SQLException; 021import java.util.List; 022import java.util.Map; 023 024/** 025 * {@code RowProcessor} implementations convert 026 * {@code ResultSet} rows into various other objects. Implementations 027 * can extend {@code BasicRowProcessor} to protect themselves 028 * from changes to this interface. 029 * 030 * @see BasicRowProcessor 031 */ 032public interface RowProcessor { 033 034 /** 035 * Create an {@code Object[]} from the column values in one 036 * {@code ResultSet} row. The {@code ResultSet} should be 037 * positioned on a valid row before passing it to this method. 038 * Implementations of this method must not alter the row position of 039 * the {@code ResultSet}. 040 * 041 * @param resultSet ResultSet that supplies the array data 042 * @throws SQLException if a database access error occurs 043 * @return the newly created array 044 */ 045 Object[] toArray(ResultSet resultSet) throws SQLException; 046 047 /** 048 * Create a JavaBean from the column values in one {@code ResultSet} 049 * row. The {@code ResultSet} should be positioned on a valid row before 050 * passing it to this method. Implementations of this method must not 051 * alter the row position of the {@code ResultSet}. 052 * @param <T> The type of bean to create 053 * @param resultSet ResultSet that supplies the bean data 054 * @param type Class from which to create the bean instance 055 * @throws SQLException if a database access error occurs 056 * @return the newly created bean 057 */ 058 <T> T toBean(ResultSet resultSet, Class<? extends T> type) throws SQLException; 059 060 /** 061 * Create a {@code List} of JavaBeans from the column values in all 062 * {@code ResultSet} rows. {@code ResultSet.next()} should 063 * <strong>not</strong> be called before passing it to this method. 064 * @param <T> The type of bean to create 065 * @param resultSet ResultSet that supplies the bean data 066 * @param type Class from which to create the bean instance 067 * @throws SQLException if a database access error occurs 068 * @return A {@code List} of beans with the given type in the order 069 * they were returned by the {@code ResultSet}. 070 */ 071 <T> List<T> toBeanList(ResultSet resultSet, Class<? extends T> type) throws SQLException; 072 073 /** 074 * Create a {@code Map} from the column values in one 075 * {@code ResultSet} row. The {@code ResultSet} should be 076 * positioned on a valid row before 077 * passing it to this method. Implementations of this method must not 078 * alter the row position of the {@code ResultSet}. 079 * 080 * @param resultSet ResultSet that supplies the map data 081 * @throws SQLException if a database access error occurs 082 * @return the newly created Map 083 */ 084 Map<String, Object> toMap(ResultSet resultSet) throws SQLException; 085 086}