package com.moparisthebest.jdbc; import com.moparisthebest.jdbc.util.ResultSetToObject; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Calendar; public class CleaningRowToObjectMapper implements RowMapper, ResultSetToObject { private final Cleaner cleaner; private final RowMapper delegate; private ResultSetToObject delegateRsto = null; public CleaningRowToObjectMapper(Cleaner cleaner, ResultSet resultSet, Class returnTypeClass, Calendar cal, Class mapValType, Class mapKeyType) { this(cleaner, new RowToObjectMapper(resultSet, returnTypeClass, cal, mapValType, mapKeyType)); } public CleaningRowToObjectMapper(final Cleaner cleaner, final RowMapper delegate) { this.cleaner = cleaner; this.delegate = delegate; } @Override public T mapRowToReturnType() throws SQLException { return cleaner.clean(delegate.mapRowToReturnType()); } @Override public K getMapKey() throws SQLException { return delegate.getMapKey(); } @Override public T toObject(final ResultSet rs, final Calendar cal) throws SQLException { return cleaner.clean(this.delegateRsto.toObject(rs, cal)); } @Override public ResultSetToObject getResultSetToObject() { if(this.delegateRsto == null) this.delegateRsto = delegate.getResultSetToObject(); return this; } }