org.sfm.poi.impl.SheetSpliterator Maven / Gradle / Ivy
package org.sfm.poi.impl;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.sfm.map.MappingContext;
import java.util.Spliterator;
import java.util.function.Consumer;
public class SheetSpliterator implements Spliterator {
private final StaticSheetMapper mapper;
private final Sheet sheet;
private final MappingContext super Row> mappingContext;
private int rowNum;
public SheetSpliterator(StaticSheetMapper mapper, int startRow, Sheet sheet, MappingContext super Row> mappingContext) {
this.mapper = mapper;
this.rowNum = startRow;
this.sheet = sheet;
this.mappingContext = mappingContext;
}
@Override
public void forEachRemaining(Consumer super T> action) {
Sheet lSheet = this.sheet;
StaticSheetMapper lMapper = this.mapper;
MappingContext super Row> lMappingContext = this.mappingContext;
for(int i = rowNum; i <= lSheet.getLastRowNum(); i++) {
action.accept(lMapper.map(lSheet.getRow(i), lMappingContext));
}
}
@Override
public boolean tryAdvance(Consumer super T> action) {
Sheet lSheet = this.sheet;
if (rowNum <= lSheet.getLastRowNum()) {
action.accept(mapper.map(lSheet.getRow(rowNum), mappingContext));
rowNum++;
return true;
}
return false;
}
@Override
public Spliterator trySplit() {
return null;
}
@Override
public long estimateSize() {
return sheet.getLastRowNum();
}
@Override
public int characteristics() {
return Spliterator.ORDERED | Spliterator.NONNULL;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy