package com.brightgenerous.poi.reader;
import java.util.Iterator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import com.brightgenerous.poi.reader.RowIterableSheetCollector.RowData;
public abstract class IterableSheetCollector<T> extends AbstractSheetCollector<Iterable<T>> {
private RowIterableSheetCollector<T> deleg = new DelegRowIterableSheetCollector();
@Override
public void bind(Workbook workbook, Sheet sheet) {
super.bind(workbook, sheet);
deleg.bind(workbook, sheet);
}
@Override
protected Iterable<T> getProcess() {
return new Iterable<T>() {
@Override
public Iterator<T> iterator() {
final Iterator<RowData<T>> iterator = deleg.get().iterator();
return new Iterator<T>() {
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public T next() {
return iterator.next().get();
}
@Override
public void remove() {
iterator.remove();
}
};
}
};
}
protected abstract T rowToData(int r, int index, Row row);
private class DelegRowIterableSheetCollector extends RowIterableSheetCollector<T> {
@Override
protected T rowToData(int r, int index, Row row) {
return IterableSheetCollector.this.rowToData(r, index, row);
}
}
}