
org.sfm.jdbc.impl.ResultSetSpliterator Maven / Gradle / Ivy
package org.sfm.jdbc.impl;
import org.sfm.map.Mapper;
import org.sfm.map.MappingContext;
import org.sfm.utils.ErrorHelper;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Spliterator;
import java.util.function.Consumer;
public class ResultSetSpliterator implements Spliterator {
private final ResultSet resultSet;
private final Mapper mapper;
private final MappingContext mappingContext;
public ResultSetSpliterator(ResultSet resultSet, Mapper mapper, MappingContext mappingContext) {
this.resultSet = resultSet;
this.mapper = mapper;
this.mappingContext = mappingContext;
}
@Override
public boolean tryAdvance(Consumer super T> action) {
ResultSet lResultSet = this.resultSet;
try {
if (lResultSet.next()) {
action.accept(mapper.map(lResultSet, mappingContext));
return true;
}
} catch (SQLException e) {
ErrorHelper.rethrow(e);
}
return false;
}
@Override
public void forEachRemaining(Consumer super T> action) {
ResultSet lResultSet = this.resultSet;
Mapper lMapper = this.mapper;
MappingContext lMappingContext = this.mappingContext;
try {
while(lResultSet.next()) {
action.accept(lMapper.map(lResultSet, lMappingContext));
}
} catch (SQLException e) {
ErrorHelper.rethrow(e);
}
}
@Override
public Spliterator trySplit() {
return null;
}
@Override
public long estimateSize() {
return Long.MAX_VALUE;
}
@Override
public int characteristics() {
return Spliterator.ORDERED | Spliterator.NONNULL;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy