package com.brightgenerous.poi.reader;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import com.brightgenerous.lang.Args;
import com.brightgenerous.poi.PoiMethods;
public class WorkbookReader implements IWorkbookReader {
private final IWorkbookReaderStrategy workbookStrategy;
public WorkbookReader(IWorkbookReaderStrategy workbookStrategy) {
Args.notNull(workbookStrategy, "workbookStrategy");
this.workbookStrategy = workbookStrategy;
}
protected IWorkbookReaderStrategy getWorkbookStrategy() {
return workbookStrategy;
}
@Override
public void read(InputStream is) throws IOException, InvalidFormatException {
Workbook workbook;
try (InputStream stream = is) {
workbook = PoiMethods.readIfWrap(is);
}
IWorkbookReaderStrategy strategy = getWorkbookStrategy();
Iterator<ISheetReaderStrategy> itr = strategy.getSheetStrategys();
while (itr.hasNext()) {
ISheetReaderStrategy sheetStrategy = itr.next();
readSheet(workbook, sheetStrategy);
}
}
protected void readSheet(Workbook workbook, ISheetReaderStrategy sheetStrategy) {
Sheet sheet = sheetStrategy.getSheet(workbook);
sheetStrategy.getReader().read(workbook, sheet);
}
}