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
22 /**
23 * <code>ResultSetHandler</code> implementation that converts one
24 * <code>ResultSet</code> column into a <code>List</code> of
25 * <code>Object</code>s. This class is thread safe.
26 *
27 * @see org.apache.commons.dbutils.ResultSetHandler
28 * @since DbUtils 1.1
29 */
30 public class ColumnListHandler extends AbstractListHandler<Object> {
31
32 /**
33 * The column number to retrieve.
34 */
35 private final int columnIndex;
36
37 /**
38 * The column name to retrieve. Either columnName or columnIndex
39 * will be used but never both.
40 */
41 private final String columnName;
42
43 /**
44 * Creates a new instance of ColumnListHandler. The first column of each
45 * row will be returned from <code>handle()</code>.
46 */
47 public ColumnListHandler() {
48 this(1, null);
49 }
50
51 /**
52 * Creates a new instance of ColumnListHandler.
53 *
54 * @param columnIndex The index of the column to retrieve from the
55 * <code>ResultSet</code>.
56 */
57 public ColumnListHandler(int columnIndex) {
58 this(columnIndex, null);
59 }
60
61 /**
62 * Creates a new instance of ColumnListHandler.
63 *
64 * @param columnName The name of the column to retrieve from the
65 * <code>ResultSet</code>.
66 */
67 public ColumnListHandler(String columnName) {
68 this(1, columnName);
69 }
70
71 /** Private Helper
72 * @param columnIndex The index of the column to retrieve from the
73 * <code>ResultSet</code>.
74 * @param columnName The name of the column to retrieve from the
75 * <code>ResultSet</code>.
76 */
77 private ColumnListHandler(int columnIndex, String columnName) {
78 super();
79 this.columnIndex = columnIndex;
80 this.columnName = columnName;
81 }
82
83 /**
84 * Returns one <code>ResultSet</code> column value as <code>Object</code>.
85 * @param rs <code>ResultSet</code> to process.
86 * @return <code>Object</code>, never <code>null</code>.
87 *
88 * @throws SQLException if a database access error occurs
89 *
90 * @see org.apache.commons.dbutils.handlers.AbstractListHandler#handle(ResultSet)
91 */
92 protected Object handleRow(ResultSet rs) throws SQLException {
93 if (this.columnName == null) {
94 return rs.getObject(this.columnIndex);
95 } else {
96 return rs.getObject(this.columnName);
97 }
98 }
99
100 }