All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.commons.dbutils.ResultSetIterator Maven / Gradle / Ivy

There is a newer version: 5.0.15.jre8
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.commons.dbutils;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Iterator;

/**
 * 

* Wraps a ResultSet in an Iterator<Object[]>. This is useful * when you want to present a non-database application layer with domain * neutral data. *

* *

* This implementation requires the ResultSet.isLast() method * to be implemented. *

*/ public class ResultSetIterator implements Iterator { /** * The wrapped ResultSet. */ private final ResultSet rs; /** * The processor to use when converting a row into an Object[]. */ private final RowProcessor convert; /** * Constructor for ResultSetIterator. * @param rs Wrap this ResultSet in an Iterator. */ public ResultSetIterator(ResultSet rs) { this(rs, new BasicRowProcessor()); } /** * Constructor for ResultSetIterator. * @param rs Wrap this ResultSet in an Iterator. * @param convert The processor to use when converting a row into an * Object[]. Defaults to a * BasicRowProcessor. */ public ResultSetIterator(ResultSet rs, RowProcessor convert) { this.rs = rs; this.convert = convert; } /** * Returns true if there are more rows in the ResultSet. * @return boolean true if there are more rows * @throws RuntimeException if an SQLException occurs. */ @Override public boolean hasNext() { try { return !rs.isLast(); } catch (SQLException e) { rethrow(e); return false; } } /** * Returns the next row as an Object[]. * @return An Object[] with the same number of elements as * columns in the ResultSet. * @see java.util.Iterator#next() * @throws RuntimeException if an SQLException occurs. */ @Override public Object[] next() { try { rs.next(); return this.convert.toArray(rs); } catch (SQLException e) { rethrow(e); return null; } } /** * Deletes the current row from the ResultSet. * @see java.util.Iterator#remove() * @throws RuntimeException if an SQLException occurs. */ @Override public void remove() { try { this.rs.deleteRow(); } catch (SQLException e) { rethrow(e); } } /** * Rethrow the SQLException as a RuntimeException. This implementation * creates a new RuntimeException with the SQLException's error message. * @param e SQLException to rethrow * @since DbUtils 1.1 */ protected void rethrow(SQLException e) { throw new RuntimeException(e.getMessage()); } /** * Generates an Iterable, suitable for use in for-each loops. * * @param rs Wrap this ResultSet in an Iterator. * @return an Iterable, suitable for use in for-each loops. */ public static Iterable iterable(final ResultSet rs) { return new Iterable() { @Override public Iterator iterator() { return new ResultSetIterator(rs); } }; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy