package com.brightgenerous.poi.reader;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
public abstract class AbstractSheetCollector<T> implements ISheetCollector<T> {
private volatile Workbook workbook;
private volatile Sheet sheet;
private volatile boolean binded;
@Override
public void bind(Workbook workbook, Sheet sheet) {
synchronized (this) {
if (binded) {
throw new IllegalStateException("bind already has been called.");
}
this.workbook = workbook;
this.sheet = sheet;
binded = true;
}
}
protected boolean binded() {
return binded;
}
@Override
public Workbook getWorkbook() {
return workbook;
}
@Override
public Sheet getSheet() {
return sheet;
}
@Override
public T get() {
if (!binded()) {
throw new IllegalStateException("bind yet has not been called.");
}
return getProcess();
}
protected abstract T getProcess();
}