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 { 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 // Helper 72 private ColumnListHandler(int columnIndex, String columnName) { 73 super(); 74 this.columnIndex = columnIndex; 75 this.columnName = columnName; 76 } 77 78 /** 79 * Returns one <code>ResultSet</code> column value as <code>Object</code>. 80 * 81 * @return <code>Object</code>, never <code>null</code>. 82 * 83 * @throws SQLException if a database access error occurs 84 * 85 * @see org.apache.commons.dbutils.handlers.AbstractListHandler#handle(ResultSet) 86 */ 87 protected Object handleRow(ResultSet rs) throws SQLException { 88 if (this.columnName == null) { 89 return rs.getObject(this.columnIndex); 90 } else { 91 return rs.getObject(this.columnName); 92 } 93 } 94 95 }