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

org.sfm.jdbc.impl.StaticJdbcMapper Maven / Gradle / Ivy

package org.sfm.jdbc.impl;

import org.sfm.jdbc.JdbcMapper;
import org.sfm.map.*;
import org.sfm.utils.RowHandler;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Iterator;
//IFJAVA8_START
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
//IFJAVA8_END


public final class StaticJdbcMapper implements JdbcMapper {

	private final Mapper mapper;
	private final MappingContextFactory mappingContextFactory;
	private final RowHandlerErrorHandler errorHandler;

	public StaticJdbcMapper(final Mapper mapper,
							final RowHandlerErrorHandler errorHandler,
							final MappingContextFactory mappingContextFactory) {
		this.errorHandler = errorHandler;
		this.mapper = mapper;
		this.mappingContextFactory = mappingContextFactory;
	}

	public T map(ResultSet rs) throws MappingException {
		return mapper.map(rs);
	}

	@Override
	public T map(ResultSet rs, MappingContext context) throws MappingException {
		return mapper.map(rs, context);
	}

	@Override
	public void mapTo(ResultSet rs, T target, MappingContext context) throws Exception {
		mapper.mapTo(rs, target, context);
	}

	public > H forEach(final ResultSet rs, final H handler)
			throws SQLException, MappingException {
		MappingContext context = newMappingContext();
		Mapper lMapper = this.mapper;
		while(rs.next()) {
			T t = lMapper.map(rs, context);
			try {
				handler.handle(t);
			} catch(Throwable error) {
				errorHandler.handlerError(error, t);
			}
		}
		return handler;
	}

	public Iterator iterator(ResultSet rs) throws SQLException,
			MappingException {
		return new ResultSetIterator(rs, mapper, newMappingContext());
	}

	//IFJAVA8_START
	public Stream stream(ResultSet rs) throws SQLException, MappingException {
		ResultSetSpliterator spliterator = new ResultSetSpliterator(rs, mapper, newMappingContext());
		return StreamSupport.stream(spliterator, false);
	}
	//IFJAVA8_END

	@Override
	public MappingContext newMappingContext(ResultSet rs) {
		return newMappingContext();
	}

	private MappingContext newMappingContext() {
		return mappingContextFactory.newContext();
	}

	@Override
	public String toString() {
		return "StaticJdbcMapper{" + mapper + '}';
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy