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 import org.apache.commons.dbutils.BasicRowProcessor; 23 import org.apache.commons.dbutils.ResultSetHandler; 24 import org.apache.commons.dbutils.RowProcessor; 25 26 /** 27 * <code>ResultSetHandler</code> implementation that converts a 28 * <code>ResultSet</code> into an <code>Object[]</code>. This class is 29 * thread safe. 30 * 31 * @see org.apache.commons.dbutils.ResultSetHandler 32 */ 33 public class ArrayHandler implements ResultSetHandler { 34 35 /** 36 * Singleton processor instance that handlers share to save memory. Notice 37 * the default scoping to allow only classes in this package to use this 38 * instance. 39 */ 40 static final RowProcessor ROW_PROCESSOR = new BasicRowProcessor(); 41 42 /** 43 * The RowProcessor implementation to use when converting rows 44 * into arrays. 45 */ 46 private final RowProcessor convert; 47 48 /** 49 * Creates a new instance of ArrayHandler using a 50 * <code>BasicRowProcessor</code> for conversion. 51 */ 52 public ArrayHandler() { 53 this(ROW_PROCESSOR); 54 } 55 56 /** 57 * Creates a new instance of ArrayHandler. 58 * 59 * @param convert The <code>RowProcessor</code> implementation 60 * to use when converting rows into arrays. 61 */ 62 public ArrayHandler(RowProcessor convert) { 63 super(); 64 this.convert = convert; 65 } 66 67 /** 68 * Places the column values from the first row in an <code>Object[]</code>. 69 * 70 * @return An Object[] or <code>null</code> if there are no rows in the 71 * <code>ResultSet</code>. 72 * 73 * @throws SQLException if a database access error occurs 74 * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet) 75 */ 76 public Object handle(ResultSet rs) throws SQLException { 77 return rs.next() ? this.convert.toArray(rs) : null; 78 } 79 80 }