src/main/java/org/embulk/parser/poi_excel/visitor/AbstractPoiExcelCellAttributeVisitor.java in embulk-parser-poi_excel-0.1.1 vs src/main/java/org/embulk/parser/poi_excel/visitor/AbstractPoiExcelCellAttributeVisitor.java in embulk-parser-poi_excel-0.1.2

- old
+ new

@@ -8,19 +8,18 @@ import java.util.TreeMap; import java.util.TreeSet; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Color; -import org.embulk.parser.poi_excel.PoiExcelParserPlugin.ColumnOptionTask; +import org.embulk.parser.poi_excel.bean.PoiExcelColumnBean; import org.embulk.parser.poi_excel.visitor.embulk.CellVisitor; import org.embulk.spi.Column; import org.embulk.spi.PageBuilder; import org.embulk.spi.type.StringType; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Optional; public abstract class AbstractPoiExcelCellAttributeVisitor<A> { protected final PoiExcelVisitorValue visitorValue; protected final PageBuilder pageBuilder; @@ -28,28 +27,30 @@ public AbstractPoiExcelCellAttributeVisitor(PoiExcelVisitorValue visitorValue) { this.visitorValue = visitorValue; this.pageBuilder = visitorValue.getPageBuilder(); } - public void visit(Column column, ColumnOptionTask option, Cell cell, CellVisitor visitor) { - A source = getAttributeSource(column, option, cell); + public void visit(PoiExcelColumnBean bean, Cell cell, CellVisitor visitor) { + A source = getAttributeSource(bean, cell); if (source == null) { + Column column = bean.getColumn(); pageBuilder.setNull(column); return; } - String suffix = option.getValueTypeSuffix(); + String suffix = bean.getValueTypeSuffix(); if (suffix != null) { - visitKey(column, option, suffix, cell, source, visitor); + visitKey(bean, suffix, cell, source, visitor); } else { - visitJson(column, option, cell, source, visitor); + visitJson(bean, cell, source, visitor); } } - protected abstract A getAttributeSource(Column column, ColumnOptionTask option, Cell cell); + protected abstract A getAttributeSource(PoiExcelColumnBean bean, Cell cell); - private void visitKey(Column column, ColumnOptionTask option, String key, Cell cell, A source, CellVisitor visitor) { + private void visitKey(PoiExcelColumnBean bean, String key, Cell cell, A source, CellVisitor visitor) { + Column column = bean.getColumn(); Object value = getAttributeValue(column, cell, source, key); if (value == null) { pageBuilder.setNull(column); } else if (value instanceof String) { visitor.visitCellValueString(column, source, (String) value); @@ -65,15 +66,16 @@ throw new IllegalStateException(MessageFormat.format("unsupported conversion. type={0}, value={1}", value .getClass().getName(), value)); } } - private void visitJson(Column column, ColumnOptionTask option, Cell cell, A source, CellVisitor visitor) { + private void visitJson(PoiExcelColumnBean bean, Cell cell, A source, CellVisitor visitor) { + Column column = bean.getColumn(); + Map<String, Object> result; - Optional<List<String>> nameOption = option.getAttributeName(); - if (nameOption.isPresent()) { - List<String> list = nameOption.get(); + List<String> list = bean.getAttributeName(); + if (!list.isEmpty()) { result = getSpecifiedValues(column, cell, source, list); } else { result = getAllValues(column, cell, source); }