
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