embulk-parser-poi_excel 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +12 -0
- data/LICENSE.txt +21 -0
- data/README.md +120 -0
- data/build.gradle +77 -0
- data/classpath/commons-codec-1.9.jar +0 -0
- data/classpath/embulk-parser-poi_excel-0.1.0.jar +0 -0
- data/classpath/embulk-standards-0.7.5.jar +0 -0
- data/classpath/poi-3.13.jar +0 -0
- data/classpath/poi-ooxml-3.13.jar +0 -0
- data/classpath/poi-ooxml-schemas-3.13.jar +0 -0
- data/classpath/stax-api-1.0.1.jar +0 -0
- data/classpath/xmlbeans-2.6.0.jar +0 -0
- data/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/gradle/wrapper/gradle-wrapper.properties +6 -0
- data/gradlew +164 -0
- data/gradlew.bat +90 -0
- data/lib/embulk/guess/poi_excel.rb +61 -0
- data/lib/embulk/parser/poi_excel.rb +3 -0
- data/src/main/java/org/embulk/parser/poi_excel/PoiExcelColumnValueType.java +39 -0
- data/src/main/java/org/embulk/parser/poi_excel/PoiExcelParserPlugin.java +199 -0
- data/src/main/java/org/embulk/parser/poi_excel/visitor/AbstractPoiExcelCellAttributeVisitor.java +133 -0
- data/src/main/java/org/embulk/parser/poi_excel/visitor/PoiExcelCellCommentVisitor.java +68 -0
- data/src/main/java/org/embulk/parser/poi_excel/visitor/PoiExcelCellFontVisitor.java +117 -0
- data/src/main/java/org/embulk/parser/poi_excel/visitor/PoiExcelCellStyleVisitor.java +205 -0
- data/src/main/java/org/embulk/parser/poi_excel/visitor/PoiExcelCellVisitor.java +194 -0
- data/src/main/java/org/embulk/parser/poi_excel/visitor/PoiExcelColorVisitor.java +81 -0
- data/src/main/java/org/embulk/parser/poi_excel/visitor/PoiExcelColumnIndex.java +174 -0
- data/src/main/java/org/embulk/parser/poi_excel/visitor/PoiExcelColumnVisitor.java +146 -0
- data/src/main/java/org/embulk/parser/poi_excel/visitor/PoiExcelVisitorFactory.java +171 -0
- data/src/main/java/org/embulk/parser/poi_excel/visitor/PoiExcelVisitorValue.java +63 -0
- data/src/main/java/org/embulk/parser/poi_excel/visitor/embulk/BooleanCellVisitor.java +54 -0
- data/src/main/java/org/embulk/parser/poi_excel/visitor/embulk/CellVisitor.java +41 -0
- data/src/main/java/org/embulk/parser/poi_excel/visitor/embulk/DoubleCellVisitor.java +54 -0
- data/src/main/java/org/embulk/parser/poi_excel/visitor/embulk/LongCellVisitor.java +54 -0
- data/src/main/java/org/embulk/parser/poi_excel/visitor/embulk/StringCellVisitor.java +63 -0
- data/src/main/java/org/embulk/parser/poi_excel/visitor/embulk/TimestampCellVisitor.java +73 -0
- data/src/test/java/org/embulk/parser/EmbulkPluginTester.java +176 -0
- data/src/test/java/org/embulk/parser/EmbulkTestFileInputPlugin.java +83 -0
- data/src/test/java/org/embulk/parser/EmbulkTestOutputPlugin.java +193 -0
- data/src/test/java/org/embulk/parser/EmbulkTestParserConfig.java +51 -0
- data/src/test/java/org/embulk/parser/poi_excel/TestPoiExcelParserPlugin.java +187 -0
- data/src/test/java/org/embulk/parser/poi_excel/TestPoiExcelParserPlugin_cellComment.java +42 -0
- data/src/test/java/org/embulk/parser/poi_excel/TestPoiExcelParserPlugin_cellFont.java +125 -0
- data/src/test/java/org/embulk/parser/poi_excel/TestPoiExcelParserPlugin_cellStyle.java +132 -0
- data/src/test/java/org/embulk/parser/poi_excel/TestPoiExcelParserPlugin_columnNumber.java +188 -0
- data/src/test/resources/org/embulk/parser/poi_excel/test1.xls +0 -0
- metadata +118 -0
@@ -0,0 +1,146 @@
|
|
1
|
+
package org.embulk.parser.poi_excel.visitor;
|
2
|
+
|
3
|
+
import java.text.MessageFormat;
|
4
|
+
import java.util.List;
|
5
|
+
|
6
|
+
import org.apache.poi.ss.usermodel.Cell;
|
7
|
+
import org.apache.poi.ss.usermodel.Row;
|
8
|
+
import org.apache.poi.ss.util.CellReference;
|
9
|
+
import org.embulk.parser.poi_excel.PoiExcelColumnValueType;
|
10
|
+
import org.embulk.parser.poi_excel.PoiExcelParserPlugin.ColumnOptionTask;
|
11
|
+
import org.embulk.parser.poi_excel.PoiExcelParserPlugin.PluginTask;
|
12
|
+
import org.embulk.parser.poi_excel.visitor.embulk.CellVisitor;
|
13
|
+
import org.embulk.spi.Column;
|
14
|
+
import org.embulk.spi.ColumnVisitor;
|
15
|
+
import org.embulk.spi.PageBuilder;
|
16
|
+
|
17
|
+
public class PoiExcelColumnVisitor implements ColumnVisitor {
|
18
|
+
|
19
|
+
protected final PoiExcelVisitorValue visitorValue;
|
20
|
+
protected final PageBuilder pageBuilder;
|
21
|
+
protected final PoiExcelVisitorFactory factory;
|
22
|
+
|
23
|
+
protected Row currentRow;
|
24
|
+
|
25
|
+
public PoiExcelColumnVisitor(PoiExcelVisitorValue visitorValue) {
|
26
|
+
this.visitorValue = visitorValue;
|
27
|
+
this.pageBuilder = visitorValue.getPageBuilder();
|
28
|
+
this.factory = visitorValue.getVisitorFactory();
|
29
|
+
|
30
|
+
initializeColumnOptions();
|
31
|
+
}
|
32
|
+
|
33
|
+
protected void initializeColumnOptions() {
|
34
|
+
PluginTask task = visitorValue.getPluginTask();
|
35
|
+
List<ColumnOptionTask> options = visitorValue.getColumnOptions();
|
36
|
+
new PoiExcelColumnIndex().initializeColumnIndex(task, options);
|
37
|
+
}
|
38
|
+
|
39
|
+
public void setRow(Row row) {
|
40
|
+
this.currentRow = row;
|
41
|
+
}
|
42
|
+
|
43
|
+
@Override
|
44
|
+
public final void booleanColumn(Column column) {
|
45
|
+
visitCell0(column, factory.getBooleanCellVisitor());
|
46
|
+
}
|
47
|
+
|
48
|
+
@Override
|
49
|
+
public final void longColumn(Column column) {
|
50
|
+
visitCell0(column, factory.getLongCellVisitor());
|
51
|
+
}
|
52
|
+
|
53
|
+
@Override
|
54
|
+
public final void doubleColumn(Column column) {
|
55
|
+
visitCell0(column, factory.getDoubleCellVisitor());
|
56
|
+
}
|
57
|
+
|
58
|
+
@Override
|
59
|
+
public final void stringColumn(Column column) {
|
60
|
+
visitCell0(column, factory.getStringCellVisitor());
|
61
|
+
}
|
62
|
+
|
63
|
+
@Override
|
64
|
+
public final void timestampColumn(Column column) {
|
65
|
+
visitCell0(column, factory.getTimestampCellVisitor());
|
66
|
+
}
|
67
|
+
|
68
|
+
protected final void visitCell0(Column column, CellVisitor visitor) {
|
69
|
+
try {
|
70
|
+
visitCell(column, visitor);
|
71
|
+
} catch (Exception e) {
|
72
|
+
String sheetName = visitorValue.getSheet().getSheetName();
|
73
|
+
String ref = new CellReference(currentRow.getRowNum(), visitorValue.getColumnOption(column)
|
74
|
+
.getColumnIndex()).formatAsString();
|
75
|
+
throw new RuntimeException(MessageFormat.format("error at {0} cell={1}!{2}. {3}", column, sheetName, ref,
|
76
|
+
e.getMessage()), e);
|
77
|
+
}
|
78
|
+
}
|
79
|
+
|
80
|
+
protected void visitCell(Column column, CellVisitor visitor) {
|
81
|
+
ColumnOptionTask option = visitorValue.getColumnOption(column);
|
82
|
+
PoiExcelColumnValueType valueType = option.getValueTypeEnum();
|
83
|
+
|
84
|
+
switch (valueType) {
|
85
|
+
case SHEET_NAME:
|
86
|
+
visitor.visitSheetName(column);
|
87
|
+
return;
|
88
|
+
case ROW_NUMBER:
|
89
|
+
visitor.visitRowNumber(column, currentRow.getRowNum() + 1);
|
90
|
+
return;
|
91
|
+
case COLUMN_NUMBER:
|
92
|
+
visitor.visitColumnNumber(column, option.getColumnIndex() + 1);
|
93
|
+
return;
|
94
|
+
default:
|
95
|
+
break;
|
96
|
+
}
|
97
|
+
|
98
|
+
assert valueType.useCell();
|
99
|
+
Cell cell = currentRow.getCell(option.getColumnIndex());
|
100
|
+
if (cell == null) {
|
101
|
+
visitCellNull(column);
|
102
|
+
return;
|
103
|
+
}
|
104
|
+
switch (valueType) {
|
105
|
+
case CELL_VALUE:
|
106
|
+
case CELL_FORMULA:
|
107
|
+
visitCellValue(column, option, cell, visitor);
|
108
|
+
return;
|
109
|
+
case CELL_STYLE:
|
110
|
+
visitCellStyle(column, option, cell, visitor);
|
111
|
+
return;
|
112
|
+
case CELL_FONT:
|
113
|
+
visitCellFont(column, option, cell, visitor);
|
114
|
+
return;
|
115
|
+
case CELL_COMMENT:
|
116
|
+
visitCellComment(column, option, cell, visitor);
|
117
|
+
return;
|
118
|
+
default:
|
119
|
+
throw new UnsupportedOperationException(MessageFormat.format("unsupported value_type={0}", valueType));
|
120
|
+
}
|
121
|
+
}
|
122
|
+
|
123
|
+
protected void visitCellNull(Column column) {
|
124
|
+
pageBuilder.setNull(column);
|
125
|
+
}
|
126
|
+
|
127
|
+
private void visitCellValue(Column column, ColumnOptionTask option, Cell cell, CellVisitor visitor) {
|
128
|
+
PoiExcelCellVisitor delegator = factory.getPoiExcelCellVisitor();
|
129
|
+
delegator.visitCellValue(column, option, cell, visitor);
|
130
|
+
}
|
131
|
+
|
132
|
+
private void visitCellStyle(Column column, ColumnOptionTask option, Cell cell, CellVisitor visitor) {
|
133
|
+
PoiExcelCellStyleVisitor delegator = factory.getPoiExcelCellStyleVisitor();
|
134
|
+
delegator.visit(column, option, cell, visitor);
|
135
|
+
}
|
136
|
+
|
137
|
+
private void visitCellFont(Column column, ColumnOptionTask option, Cell cell, CellVisitor visitor) {
|
138
|
+
PoiExcelCellFontVisitor delegator = factory.getPoiExcelCellFontVisitor();
|
139
|
+
delegator.visit(column, option, cell, visitor);
|
140
|
+
}
|
141
|
+
|
142
|
+
private void visitCellComment(Column column, ColumnOptionTask option, Cell cell, CellVisitor visitor) {
|
143
|
+
PoiExcelCellCommentVisitor delegator = factory.getPoiExcelCellCommentVisitor();
|
144
|
+
delegator.visit(column, option, cell, visitor);
|
145
|
+
}
|
146
|
+
}
|
@@ -0,0 +1,171 @@
|
|
1
|
+
package org.embulk.parser.poi_excel.visitor;
|
2
|
+
|
3
|
+
import org.embulk.parser.poi_excel.visitor.embulk.BooleanCellVisitor;
|
4
|
+
import org.embulk.parser.poi_excel.visitor.embulk.DoubleCellVisitor;
|
5
|
+
import org.embulk.parser.poi_excel.visitor.embulk.LongCellVisitor;
|
6
|
+
import org.embulk.parser.poi_excel.visitor.embulk.StringCellVisitor;
|
7
|
+
import org.embulk.parser.poi_excel.visitor.embulk.TimestampCellVisitor;
|
8
|
+
|
9
|
+
public class PoiExcelVisitorFactory {
|
10
|
+
|
11
|
+
protected final PoiExcelVisitorValue visitorValue;
|
12
|
+
|
13
|
+
public PoiExcelVisitorFactory(PoiExcelVisitorValue visitorValue) {
|
14
|
+
this.visitorValue = visitorValue;
|
15
|
+
visitorValue.setVisitorFactory(this);
|
16
|
+
}
|
17
|
+
|
18
|
+
// visitor root (Embulk ColumnVisitor)
|
19
|
+
private PoiExcelColumnVisitor poiExcelColumnVisitor;
|
20
|
+
|
21
|
+
public final PoiExcelColumnVisitor getPoiExcelColumnVisitor() {
|
22
|
+
if (poiExcelColumnVisitor == null) {
|
23
|
+
poiExcelColumnVisitor = newPoiExcelColumnVisitor();
|
24
|
+
}
|
25
|
+
return poiExcelColumnVisitor;
|
26
|
+
}
|
27
|
+
|
28
|
+
protected PoiExcelColumnVisitor newPoiExcelColumnVisitor() {
|
29
|
+
return new PoiExcelColumnVisitor(visitorValue);
|
30
|
+
}
|
31
|
+
|
32
|
+
// Embulk boolean
|
33
|
+
private BooleanCellVisitor booleanCellVisitor;
|
34
|
+
|
35
|
+
public final BooleanCellVisitor getBooleanCellVisitor() {
|
36
|
+
if (booleanCellVisitor == null) {
|
37
|
+
booleanCellVisitor = newBooleanCellVisitor();
|
38
|
+
}
|
39
|
+
return booleanCellVisitor;
|
40
|
+
}
|
41
|
+
|
42
|
+
protected BooleanCellVisitor newBooleanCellVisitor() {
|
43
|
+
return new BooleanCellVisitor(visitorValue);
|
44
|
+
}
|
45
|
+
|
46
|
+
// Embulk long
|
47
|
+
private LongCellVisitor longCellVisitor;
|
48
|
+
|
49
|
+
public final LongCellVisitor getLongCellVisitor() {
|
50
|
+
if (longCellVisitor == null) {
|
51
|
+
longCellVisitor = newLongCellVisitor();
|
52
|
+
}
|
53
|
+
return longCellVisitor;
|
54
|
+
}
|
55
|
+
|
56
|
+
protected LongCellVisitor newLongCellVisitor() {
|
57
|
+
return new LongCellVisitor(visitorValue);
|
58
|
+
}
|
59
|
+
|
60
|
+
// Embulk double
|
61
|
+
private DoubleCellVisitor doubleCellVisitor;
|
62
|
+
|
63
|
+
public final DoubleCellVisitor getDoubleCellVisitor() {
|
64
|
+
if (doubleCellVisitor == null) {
|
65
|
+
doubleCellVisitor = newDoubleCellVisitor();
|
66
|
+
}
|
67
|
+
return doubleCellVisitor;
|
68
|
+
}
|
69
|
+
|
70
|
+
protected DoubleCellVisitor newDoubleCellVisitor() {
|
71
|
+
return new DoubleCellVisitor(visitorValue);
|
72
|
+
}
|
73
|
+
|
74
|
+
// Embulk string
|
75
|
+
private StringCellVisitor stringCellVisitor;
|
76
|
+
|
77
|
+
public final StringCellVisitor getStringCellVisitor() {
|
78
|
+
if (stringCellVisitor == null) {
|
79
|
+
stringCellVisitor = newStringCellVisitor();
|
80
|
+
}
|
81
|
+
return stringCellVisitor;
|
82
|
+
}
|
83
|
+
|
84
|
+
protected StringCellVisitor newStringCellVisitor() {
|
85
|
+
return new StringCellVisitor(visitorValue);
|
86
|
+
}
|
87
|
+
|
88
|
+
// Embulk timestamp
|
89
|
+
private TimestampCellVisitor timestampCellVisitor;
|
90
|
+
|
91
|
+
public final TimestampCellVisitor getTimestampCellVisitor() {
|
92
|
+
if (timestampCellVisitor == null) {
|
93
|
+
timestampCellVisitor = newTimestampCellVisitor();
|
94
|
+
}
|
95
|
+
return timestampCellVisitor;
|
96
|
+
}
|
97
|
+
|
98
|
+
protected TimestampCellVisitor newTimestampCellVisitor() {
|
99
|
+
return new TimestampCellVisitor(visitorValue);
|
100
|
+
}
|
101
|
+
|
102
|
+
// cell value/formula
|
103
|
+
private PoiExcelCellVisitor poiExcelCellVisitor;
|
104
|
+
|
105
|
+
public final PoiExcelCellVisitor getPoiExcelCellVisitor() {
|
106
|
+
if (poiExcelCellVisitor == null) {
|
107
|
+
poiExcelCellVisitor = newPoiExcelCellVisitor();
|
108
|
+
}
|
109
|
+
return poiExcelCellVisitor;
|
110
|
+
}
|
111
|
+
|
112
|
+
protected PoiExcelCellVisitor newPoiExcelCellVisitor() {
|
113
|
+
return new PoiExcelCellVisitor(visitorValue);
|
114
|
+
}
|
115
|
+
|
116
|
+
// cell style
|
117
|
+
private PoiExcelCellStyleVisitor poiExcelCellStyleVisitor;
|
118
|
+
|
119
|
+
public final PoiExcelCellStyleVisitor getPoiExcelCellStyleVisitor() {
|
120
|
+
if (poiExcelCellStyleVisitor == null) {
|
121
|
+
poiExcelCellStyleVisitor = newPoiExcelCellStyleVisitor();
|
122
|
+
}
|
123
|
+
return poiExcelCellStyleVisitor;
|
124
|
+
}
|
125
|
+
|
126
|
+
protected PoiExcelCellStyleVisitor newPoiExcelCellStyleVisitor() {
|
127
|
+
return new PoiExcelCellStyleVisitor(visitorValue);
|
128
|
+
}
|
129
|
+
|
130
|
+
// cell font
|
131
|
+
private PoiExcelCellFontVisitor poiExcelCellFontVisitor;
|
132
|
+
|
133
|
+
public final PoiExcelCellFontVisitor getPoiExcelCellFontVisitor() {
|
134
|
+
if (poiExcelCellFontVisitor == null) {
|
135
|
+
poiExcelCellFontVisitor = newPoiExcelCellFontVisitor();
|
136
|
+
}
|
137
|
+
return poiExcelCellFontVisitor;
|
138
|
+
}
|
139
|
+
|
140
|
+
protected PoiExcelCellFontVisitor newPoiExcelCellFontVisitor() {
|
141
|
+
return new PoiExcelCellFontVisitor(visitorValue);
|
142
|
+
}
|
143
|
+
|
144
|
+
// cell comment
|
145
|
+
private PoiExcelCellCommentVisitor PoiExcelCellCommentVisitor;
|
146
|
+
|
147
|
+
public final PoiExcelCellCommentVisitor getPoiExcelCellCommentVisitor() {
|
148
|
+
if (PoiExcelCellCommentVisitor == null) {
|
149
|
+
PoiExcelCellCommentVisitor = newPoiExcelCellCommentVisitor();
|
150
|
+
}
|
151
|
+
return PoiExcelCellCommentVisitor;
|
152
|
+
}
|
153
|
+
|
154
|
+
protected PoiExcelCellCommentVisitor newPoiExcelCellCommentVisitor() {
|
155
|
+
return new PoiExcelCellCommentVisitor(visitorValue);
|
156
|
+
}
|
157
|
+
|
158
|
+
// color
|
159
|
+
private PoiExcelColorVisitor poiExcelColorVisitor;
|
160
|
+
|
161
|
+
public final PoiExcelColorVisitor getPoiExcelColorVisitor() {
|
162
|
+
if (poiExcelColorVisitor == null) {
|
163
|
+
poiExcelColorVisitor = newPoiExcelColorVisitor();
|
164
|
+
}
|
165
|
+
return poiExcelColorVisitor;
|
166
|
+
}
|
167
|
+
|
168
|
+
protected PoiExcelColorVisitor newPoiExcelColorVisitor() {
|
169
|
+
return new PoiExcelColorVisitor(visitorValue);
|
170
|
+
}
|
171
|
+
}
|
@@ -0,0 +1,63 @@
|
|
1
|
+
package org.embulk.parser.poi_excel.visitor;
|
2
|
+
|
3
|
+
import java.util.ArrayList;
|
4
|
+
import java.util.List;
|
5
|
+
|
6
|
+
import org.apache.poi.ss.usermodel.Sheet;
|
7
|
+
import org.embulk.parser.poi_excel.PoiExcelParserPlugin.ColumnOptionTask;
|
8
|
+
import org.embulk.parser.poi_excel.PoiExcelParserPlugin.PluginTask;
|
9
|
+
import org.embulk.spi.Column;
|
10
|
+
import org.embulk.spi.ColumnConfig;
|
11
|
+
import org.embulk.spi.PageBuilder;
|
12
|
+
import org.embulk.spi.SchemaConfig;
|
13
|
+
|
14
|
+
public class PoiExcelVisitorValue {
|
15
|
+
private final PluginTask task;
|
16
|
+
private final Sheet sheet;
|
17
|
+
private final PageBuilder pageBuilder;
|
18
|
+
private PoiExcelVisitorFactory factory;
|
19
|
+
|
20
|
+
private List<ColumnOptionTask> columnOptions;
|
21
|
+
|
22
|
+
public PoiExcelVisitorValue(PluginTask task, Sheet sheet, PageBuilder pageBuilder) {
|
23
|
+
this.task = task;
|
24
|
+
this.sheet = sheet;
|
25
|
+
this.pageBuilder = pageBuilder;
|
26
|
+
}
|
27
|
+
|
28
|
+
public PluginTask getPluginTask() {
|
29
|
+
return task;
|
30
|
+
}
|
31
|
+
|
32
|
+
public Sheet getSheet() {
|
33
|
+
return sheet;
|
34
|
+
}
|
35
|
+
|
36
|
+
public PageBuilder getPageBuilder() {
|
37
|
+
return pageBuilder;
|
38
|
+
}
|
39
|
+
|
40
|
+
public void setVisitorFactory(PoiExcelVisitorFactory factory) {
|
41
|
+
this.factory = factory;
|
42
|
+
}
|
43
|
+
|
44
|
+
public PoiExcelVisitorFactory getVisitorFactory() {
|
45
|
+
return factory;
|
46
|
+
}
|
47
|
+
|
48
|
+
public ColumnOptionTask getColumnOption(Column column) {
|
49
|
+
return getColumnOptions().get(column.getIndex());
|
50
|
+
}
|
51
|
+
|
52
|
+
public List<ColumnOptionTask> getColumnOptions() {
|
53
|
+
if (columnOptions == null) {
|
54
|
+
SchemaConfig schemaConfig = task.getColumns();
|
55
|
+
columnOptions = new ArrayList<>(schemaConfig.getColumnCount());
|
56
|
+
for (ColumnConfig c : schemaConfig.getColumns()) {
|
57
|
+
ColumnOptionTask option = c.getOption().loadConfig(ColumnOptionTask.class);
|
58
|
+
columnOptions.add(option);
|
59
|
+
}
|
60
|
+
}
|
61
|
+
return columnOptions;
|
62
|
+
}
|
63
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
package org.embulk.parser.poi_excel.visitor.embulk;
|
2
|
+
|
3
|
+
import org.apache.poi.ss.usermodel.Sheet;
|
4
|
+
import org.embulk.parser.poi_excel.visitor.PoiExcelVisitorValue;
|
5
|
+
import org.embulk.spi.Column;
|
6
|
+
|
7
|
+
public class BooleanCellVisitor extends CellVisitor {
|
8
|
+
|
9
|
+
public BooleanCellVisitor(PoiExcelVisitorValue visitorValue) {
|
10
|
+
super(visitorValue);
|
11
|
+
}
|
12
|
+
|
13
|
+
@Override
|
14
|
+
public void visitCellValueNumeric(Column column, Object source, double value) {
|
15
|
+
pageBuilder.setBoolean(column, value != 0d);
|
16
|
+
}
|
17
|
+
|
18
|
+
@Override
|
19
|
+
public void visitCellValueString(Column column, Object source, String value) {
|
20
|
+
pageBuilder.setBoolean(column, Boolean.parseBoolean(value));
|
21
|
+
}
|
22
|
+
|
23
|
+
@Override
|
24
|
+
public void visitCellValueBoolean(Column column, Object source, boolean value) {
|
25
|
+
pageBuilder.setBoolean(column, value);
|
26
|
+
}
|
27
|
+
|
28
|
+
@Override
|
29
|
+
public void visitCellValueError(Column column, Object source, int code) {
|
30
|
+
pageBuilder.setNull(column);
|
31
|
+
}
|
32
|
+
|
33
|
+
@Override
|
34
|
+
public void visitValueLong(Column column, Object source, long value) {
|
35
|
+
pageBuilder.setBoolean(column, value != 0);
|
36
|
+
}
|
37
|
+
|
38
|
+
@Override
|
39
|
+
public void visitSheetName(Column column) {
|
40
|
+
Sheet sheet = visitorValue.getSheet();
|
41
|
+
int index = sheet.getWorkbook().getSheetIndex(sheet);
|
42
|
+
pageBuilder.setBoolean(column, index != 0);
|
43
|
+
}
|
44
|
+
|
45
|
+
@Override
|
46
|
+
public void visitRowNumber(Column column, int index1) {
|
47
|
+
pageBuilder.setBoolean(column, index1 != 0);
|
48
|
+
}
|
49
|
+
|
50
|
+
@Override
|
51
|
+
public void visitColumnNumber(Column column, int index1) {
|
52
|
+
pageBuilder.setBoolean(column, index1 != 0);
|
53
|
+
}
|
54
|
+
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
package org.embulk.parser.poi_excel.visitor.embulk;
|
2
|
+
|
3
|
+
import org.apache.poi.ss.usermodel.Cell;
|
4
|
+
import org.embulk.parser.poi_excel.visitor.PoiExcelVisitorValue;
|
5
|
+
import org.embulk.spi.Column;
|
6
|
+
import org.embulk.spi.PageBuilder;
|
7
|
+
|
8
|
+
public abstract class CellVisitor {
|
9
|
+
|
10
|
+
protected final PoiExcelVisitorValue visitorValue;
|
11
|
+
protected final PageBuilder pageBuilder;
|
12
|
+
|
13
|
+
public CellVisitor(PoiExcelVisitorValue visitorValue) {
|
14
|
+
this.visitorValue = visitorValue;
|
15
|
+
this.pageBuilder = visitorValue.getPageBuilder();
|
16
|
+
}
|
17
|
+
|
18
|
+
public abstract void visitCellValueNumeric(Column column, Object source, double value);
|
19
|
+
|
20
|
+
public abstract void visitCellValueString(Column column, Object source, String value);
|
21
|
+
|
22
|
+
public void visitCellValueBlank(Column column, Object source) {
|
23
|
+
pageBuilder.setNull(column);
|
24
|
+
}
|
25
|
+
|
26
|
+
public abstract void visitCellValueBoolean(Column column, Object source, boolean value);
|
27
|
+
|
28
|
+
public abstract void visitCellValueError(Column column, Object source, int code);
|
29
|
+
|
30
|
+
public void visitCellFormula(Column column, Cell cell) {
|
31
|
+
pageBuilder.setString(column, cell.getCellFormula());
|
32
|
+
}
|
33
|
+
|
34
|
+
public abstract void visitValueLong(Column column, Object source, long value);
|
35
|
+
|
36
|
+
public abstract void visitSheetName(Column column);
|
37
|
+
|
38
|
+
public abstract void visitRowNumber(Column column, int index1);
|
39
|
+
|
40
|
+
public abstract void visitColumnNumber(Column column, int index1);
|
41
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
package org.embulk.parser.poi_excel.visitor.embulk;
|
2
|
+
|
3
|
+
import org.apache.poi.ss.usermodel.Sheet;
|
4
|
+
import org.embulk.parser.poi_excel.visitor.PoiExcelVisitorValue;
|
5
|
+
import org.embulk.spi.Column;
|
6
|
+
|
7
|
+
public class DoubleCellVisitor extends CellVisitor {
|
8
|
+
|
9
|
+
public DoubleCellVisitor(PoiExcelVisitorValue visitorValue) {
|
10
|
+
super(visitorValue);
|
11
|
+
}
|
12
|
+
|
13
|
+
@Override
|
14
|
+
public void visitCellValueNumeric(Column column, Object source, double value) {
|
15
|
+
pageBuilder.setDouble(column, value);
|
16
|
+
}
|
17
|
+
|
18
|
+
@Override
|
19
|
+
public void visitCellValueString(Column column, Object source, String value) {
|
20
|
+
pageBuilder.setDouble(column, Double.parseDouble(value));
|
21
|
+
}
|
22
|
+
|
23
|
+
@Override
|
24
|
+
public void visitCellValueBoolean(Column column, Object source, boolean value) {
|
25
|
+
pageBuilder.setDouble(column, value ? 1 : 0);
|
26
|
+
}
|
27
|
+
|
28
|
+
@Override
|
29
|
+
public void visitCellValueError(Column column, Object source, int code) {
|
30
|
+
pageBuilder.setDouble(column, code);
|
31
|
+
}
|
32
|
+
|
33
|
+
@Override
|
34
|
+
public void visitValueLong(Column column, Object source, long value) {
|
35
|
+
pageBuilder.setDouble(column, value);
|
36
|
+
}
|
37
|
+
|
38
|
+
@Override
|
39
|
+
public void visitSheetName(Column column) {
|
40
|
+
Sheet sheet = visitorValue.getSheet();
|
41
|
+
int index = sheet.getWorkbook().getSheetIndex(sheet);
|
42
|
+
pageBuilder.setDouble(column, index);
|
43
|
+
}
|
44
|
+
|
45
|
+
@Override
|
46
|
+
public void visitRowNumber(Column column, int index1) {
|
47
|
+
pageBuilder.setDouble(column, index1);
|
48
|
+
}
|
49
|
+
|
50
|
+
@Override
|
51
|
+
public void visitColumnNumber(Column column, int index1) {
|
52
|
+
pageBuilder.setDouble(column, index1);
|
53
|
+
}
|
54
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
package org.embulk.parser.poi_excel.visitor.embulk;
|
2
|
+
|
3
|
+
import org.apache.poi.ss.usermodel.Sheet;
|
4
|
+
import org.embulk.parser.poi_excel.visitor.PoiExcelVisitorValue;
|
5
|
+
import org.embulk.spi.Column;
|
6
|
+
|
7
|
+
public class LongCellVisitor extends CellVisitor {
|
8
|
+
|
9
|
+
public LongCellVisitor(PoiExcelVisitorValue visitorValue) {
|
10
|
+
super(visitorValue);
|
11
|
+
}
|
12
|
+
|
13
|
+
@Override
|
14
|
+
public void visitCellValueNumeric(Column column, Object source, double value) {
|
15
|
+
pageBuilder.setLong(column, (long) value);
|
16
|
+
}
|
17
|
+
|
18
|
+
@Override
|
19
|
+
public void visitCellValueString(Column column, Object source, String value) {
|
20
|
+
pageBuilder.setLong(column, Long.parseLong(value));
|
21
|
+
}
|
22
|
+
|
23
|
+
@Override
|
24
|
+
public void visitCellValueBoolean(Column column, Object source, boolean value) {
|
25
|
+
pageBuilder.setLong(column, value ? 1 : 0);
|
26
|
+
}
|
27
|
+
|
28
|
+
@Override
|
29
|
+
public void visitCellValueError(Column column, Object source, int code) {
|
30
|
+
pageBuilder.setLong(column, code);
|
31
|
+
}
|
32
|
+
|
33
|
+
@Override
|
34
|
+
public void visitValueLong(Column column, Object source, long value) {
|
35
|
+
pageBuilder.setLong(column, value);
|
36
|
+
}
|
37
|
+
|
38
|
+
@Override
|
39
|
+
public void visitSheetName(Column column) {
|
40
|
+
Sheet sheet = visitorValue.getSheet();
|
41
|
+
int index = sheet.getWorkbook().getSheetIndex(sheet);
|
42
|
+
pageBuilder.setLong(column, index);
|
43
|
+
}
|
44
|
+
|
45
|
+
@Override
|
46
|
+
public void visitRowNumber(Column column, int index1) {
|
47
|
+
pageBuilder.setLong(column, index1);
|
48
|
+
}
|
49
|
+
|
50
|
+
@Override
|
51
|
+
public void visitColumnNumber(Column column, int index1) {
|
52
|
+
pageBuilder.setLong(column, index1);
|
53
|
+
}
|
54
|
+
}
|
@@ -0,0 +1,63 @@
|
|
1
|
+
package org.embulk.parser.poi_excel.visitor.embulk;
|
2
|
+
|
3
|
+
import org.apache.poi.ss.usermodel.FormulaError;
|
4
|
+
import org.apache.poi.ss.usermodel.Sheet;
|
5
|
+
import org.apache.poi.ss.util.CellReference;
|
6
|
+
import org.embulk.parser.poi_excel.visitor.PoiExcelVisitorValue;
|
7
|
+
import org.embulk.spi.Column;
|
8
|
+
|
9
|
+
public class StringCellVisitor extends CellVisitor {
|
10
|
+
|
11
|
+
public StringCellVisitor(PoiExcelVisitorValue visitorValue) {
|
12
|
+
super(visitorValue);
|
13
|
+
}
|
14
|
+
|
15
|
+
@Override
|
16
|
+
public void visitCellValueNumeric(Column column, Object source, double value) {
|
17
|
+
String s = Double.toString(value);
|
18
|
+
if (s.endsWith(".0")) {
|
19
|
+
s = s.substring(0, s.length() - 2);
|
20
|
+
}
|
21
|
+
pageBuilder.setString(column, s);
|
22
|
+
}
|
23
|
+
|
24
|
+
@Override
|
25
|
+
public void visitCellValueString(Column column, Object source, String value) {
|
26
|
+
pageBuilder.setString(column, value);
|
27
|
+
}
|
28
|
+
|
29
|
+
@Override
|
30
|
+
public void visitCellValueBoolean(Column column, Object source, boolean value) {
|
31
|
+
pageBuilder.setString(column, Boolean.toString(value));
|
32
|
+
}
|
33
|
+
|
34
|
+
@Override
|
35
|
+
public void visitCellValueError(Column column, Object source, int code) {
|
36
|
+
FormulaError error = FormulaError.forInt((byte) code);
|
37
|
+
String value = error.getString();
|
38
|
+
pageBuilder.setString(column, value);
|
39
|
+
}
|
40
|
+
|
41
|
+
@Override
|
42
|
+
public void visitValueLong(Column column, Object source, long value) {
|
43
|
+
String s = Long.toString(value);
|
44
|
+
pageBuilder.setString(column, s);
|
45
|
+
}
|
46
|
+
|
47
|
+
@Override
|
48
|
+
public void visitSheetName(Column column) {
|
49
|
+
Sheet sheet = visitorValue.getSheet();
|
50
|
+
pageBuilder.setString(column, sheet.getSheetName());
|
51
|
+
}
|
52
|
+
|
53
|
+
@Override
|
54
|
+
public void visitRowNumber(Column column, int index1) {
|
55
|
+
pageBuilder.setString(column, Integer.toString(index1));
|
56
|
+
}
|
57
|
+
|
58
|
+
@Override
|
59
|
+
public void visitColumnNumber(Column column, int index1) {
|
60
|
+
String value = CellReference.convertNumToColString(index1 - 1);
|
61
|
+
pageBuilder.setString(column, value);
|
62
|
+
}
|
63
|
+
}
|