// This software is released into the Public Domain. See copying.txt for details.
package org.openstreetmap.osmosis.pgsnapshot.common;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.openstreetmap.osmosis.core.database.RowMapperListener;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.jdbc.core.RowMapper;
/**
* Combines the functionality of Spring RowMapper and RowCallbackHandler allowing a single RowMapper
* implementation to be used for streaming operations.
*
* @author Brett Henderson
*
* @param <T>
* The entity type to be supported.
*/
public class RowMapperRowCallbackListener<T> implements RowCallbackHandler {
private RowMapper<T> rowMapper;
private RowMapperListener<T> listener;
/**
* Creates a new instance.
*
* @param rowMapper
* The row mapper used to convert rows into objects.
* @param listener
* The receiver of created records.
*/
public RowMapperRowCallbackListener(RowMapper<T> rowMapper, RowMapperListener<T> listener) {
this.rowMapper = rowMapper;
this.listener = listener;
}
/**
* {@inheritDoc}
*/
@Override
public void processRow(ResultSet rs) throws SQLException {
listener.process(rowMapper.mapRow(rs, 0), rs);
}
}