package org.openlca.io.xls.process.input;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.openlca.core.database.IDatabase;
import org.openlca.core.database.ProcessDao;
import org.openlca.core.model.Process;
import org.openlca.core.model.ProcessDocumentation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileInputStream;
public class ExcelImport implements Runnable {
private Logger log = LoggerFactory.getLogger(getClass());
private final IDatabase database;
private final File xlsFile;
public ExcelImport(File xlsFile, IDatabase database) {
this.xlsFile = xlsFile;
this.database = database;
}
@Override
public void run() {
log.trace("import file {}", xlsFile);
try (FileInputStream fis = new FileInputStream(xlsFile)) {
Workbook workbook = WorkbookFactory.create(fis);
Process process = new Process();
ProcessDocumentation doc = new ProcessDocumentation();
process.setDocumentation(doc);
Config config = new Config(workbook, database, process);
readSheets(config);
ProcessDao dao = new ProcessDao(database);
dao.insert(process);
} catch (Exception e) {
log.error("failed to import file " + xlsFile, e);
}
}
private void readSheets(Config config) {
// reference data
LocationSheet.read(config);
ActorSheet.read(config);
SourceSheet.read(config);
UnitSheets.read(config);
FlowSheets.read(config);
// process sheets
IOSheet.readInputs(config);
IOSheet.readOutputs(config);
InfoSheet.read(config); // after exchanges! find qRef
AdminInfoSheet.read(config);
ModelingSheet.read(config);
ParameterSheet.read(config);
AllocationSheet.read(config);
}
}