package org.openlca.io.simapro.csv.input;
import com.google.common.eventbus.EventBus;
import org.openlca.core.database.IDatabase;
import org.openlca.io.FileImport;
import org.openlca.simapro.csv.SimaProCSV;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
public class SimaProCsvImport implements FileImport {
private Logger log = LoggerFactory.getLogger(getClass());
private boolean canceled = false;
private final IDatabase database;
private final File file;
private EventBus eventBus;
public SimaProCsvImport(IDatabase database, File file) {
this.database = database;
this.file = file;
}
public IDatabase getDatabase() {
return database;
}
public EventBus getEventBus() {
return eventBus;
}
public boolean isCanceled() {
return canceled;
}
@Override
public void cancel() {
this.canceled = true;
}
@Override
public void setEventBus(EventBus eventBus) {
this.eventBus = eventBus;
}
@Override
public void run() {
log.trace("import SimaPro CSV file {}", file);
try {
log.trace("extract reference data");
SpRefIndexHandler refDataHandler = new SpRefIndexHandler();
SimaProCSV.parse(file, refDataHandler);
SpRefDataIndex index = refDataHandler.getIndex();
log.trace("sync. reference data");
RefDataSync sync = new RefDataSync(index, database);
RefData refData = sync.run();
log.trace("import processes");
ProcessHandler processHandler = new ProcessHandler(database,
refData);
SimaProCSV.parse(file, processHandler);
} catch (Exception e) {
log.error("SimaPro CSV import failed");
}
}
}