package org.openlca.io.xls.process.input; import java.util.Date; import org.apache.poi.ss.usermodel.Sheet; import org.openlca.core.database.ActorDao; import org.openlca.core.model.Actor; import org.openlca.core.model.ModelType; import org.openlca.core.model.Version; import org.slf4j.Logger; import org.slf4j.LoggerFactory; class ActorSheet { private Logger log = LoggerFactory.getLogger(getClass()); private final Config config; private final ActorDao dao; private final Sheet sheet; private ActorSheet(Config config) { this.config = config; this.dao = new ActorDao(config.database); sheet = config.workbook.getSheet("Actors"); } public static void read(Config config) { new ActorSheet(config).read(); } private void read() { if (sheet == null) { return; } try { log.trace("import actors"); int row = 1; while (true) { String uuid = config.getString(sheet, row, 0); if (uuid == null || uuid.trim().isEmpty()) { break; } readActor(uuid, row); row++; } } catch (Exception e) { log.error("failed to read actor sheet", e); } } private void readActor(String uuid, int row) { String name = config.getString(sheet, row, 1); String category = config.getString(sheet, row, 3); Actor actor = dao.getForRefId(uuid); if (actor != null) { config.refData.putActor(name, category, actor); return; } actor = new Actor(); actor.setRefId(uuid); actor.setName(name); actor.setDescription(config.getString(sheet, row, 2)); actor.setCategory(config.getCategory(category, ModelType.ACTOR)); setAttributes(row, actor); actor = dao.insert(actor); config.refData.putActor(name, category, actor); } private void setAttributes(int row, Actor actor) { String version = config.getString(sheet, row, 4); actor.setVersion(Version.fromString(version).getValue()); Date lastChange = config.getDate(sheet, row, 5); if (lastChange != null) { actor.setLastChange(lastChange.getTime()); } actor.setAddress(config.getString(sheet, row, 6)); actor.setCity(config.getString(sheet, row, 7)); actor.setZipCode(config.getString(sheet, row, 8)); actor.setCountry(config.getString(sheet, row, 9)); actor.setEmail(config.getString(sheet, row, 10)); actor.setTelefax(config.getString(sheet, row, 11)); actor.setTelephone(config.getString(sheet, row, 12)); actor.setWebsite(config.getString(sheet, row, 13)); } }