View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.dbutils.handlers;
18  
19  import java.sql.ResultSet;
20  import java.sql.SQLException;
21  import java.util.ArrayList;
22  import java.util.List;
23  
24  import org.apache.commons.dbutils.ResultSetHandler;
25  
26  /**
27   * Abstract class that simplify development of {@code ResultSetHandler}
28   * classes that convert {@code ResultSet} into {@code List}.
29   *
30   * @param <T> the target List generic type
31   * @see org.apache.commons.dbutils.ResultSetHandler
32   */
33  public abstract class AbstractListHandler<T> implements ResultSetHandler<List<T>> {
34  
35      /**
36       * Whole {@code ResultSet} handler. It produce {@code List} as
37       * result. To convert individual rows into Java objects it uses
38       * {@code handleRow(ResultSet)} method.
39       *
40       * @see #handleRow(ResultSet)
41       * @param resultSet {@code ResultSet} to process.
42       * @return a list of all rows in the result set
43       * @throws SQLException error occurs
44       */
45      @Override
46      public List<T> handle(final ResultSet resultSet) throws SQLException {
47          final List<T> rows = new ArrayList<>();
48          while (resultSet.next()) {
49              rows.add(this.handleRow(resultSet));
50          }
51          return rows;
52      }
53  
54      /**
55       * Row handler. Method converts current row into some Java object.
56       *
57       * @param resultSet {@code ResultSet} to process.
58       * @return row processing result
59       * @throws SQLException error occurs
60       */
61      protected abstract T handleRow(ResultSet resultSet) throws SQLException;
62  }