embulk-output-kintone 1.0.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +65 -1
- data/build.gradle +1 -0
- data/classpath/commons-csv-1.9.0.jar +0 -0
- data/classpath/embulk-output-kintone-1.2.0.jar +0 -0
- data/classpath/externalsortinginjava-0.6.2.jar +0 -0
- data/classpath/{shadow-kintone-java-client-1.0.0-all.jar → shadow-kintone-java-client-1.2.0-all.jar} +0 -0
- data/src/main/java/org/embulk/output/kintone/KintoneClient.java +117 -0
- data/src/main/java/org/embulk/output/kintone/KintoneColumnOption.java +5 -0
- data/src/main/java/org/embulk/output/kintone/KintoneColumnType.java +226 -5
- data/src/main/java/org/embulk/output/kintone/KintoneColumnVisitor.java +82 -13
- data/src/main/java/org/embulk/output/kintone/KintoneMode.java +52 -4
- data/src/main/java/org/embulk/output/kintone/KintoneOutputPlugin.java +12 -20
- data/src/main/java/org/embulk/output/kintone/KintonePageOutput.java +123 -127
- data/src/main/java/org/embulk/output/kintone/KintoneSortColumn.java +33 -0
- data/src/main/java/org/embulk/output/kintone/PluginTask.java +32 -0
- data/src/main/java/org/embulk/output/kintone/deserializer/DeserializeApplier.java +19 -0
- data/src/main/java/org/embulk/output/kintone/deserializer/DeserializeException.java +7 -0
- data/src/main/java/org/embulk/output/kintone/deserializer/Deserializer.java +279 -0
- data/src/main/java/org/embulk/output/kintone/record/Id.java +18 -0
- data/src/main/java/org/embulk/output/kintone/record/IdOrUpdateKey.java +45 -0
- data/src/main/java/org/embulk/output/kintone/record/Skip.java +14 -0
- data/src/main/java/org/embulk/output/kintone/reducer/CSVInputColumnVisitor.java +78 -0
- data/src/main/java/org/embulk/output/kintone/reducer/CSVOutputColumnVisitor.java +79 -0
- data/src/main/java/org/embulk/output/kintone/reducer/ReduceException.java +11 -0
- data/src/main/java/org/embulk/output/kintone/reducer/ReduceType.java +190 -0
- data/src/main/java/org/embulk/output/kintone/reducer/ReducedPageOutput.java +100 -0
- data/src/main/java/org/embulk/output/kintone/reducer/Reducer.java +355 -0
- data/src/main/java/org/embulk/output/kintone/util/Lazy.java +20 -0
- data/src/test/java/org/embulk/output/kintone/KintoneClientTest.java +139 -0
- data/src/test/java/org/embulk/output/kintone/KintoneColumnOptionBuilder.java +7 -0
- data/src/test/java/org/embulk/output/kintone/KintoneColumnTypeTest.java +194 -0
- data/src/test/java/org/embulk/output/kintone/KintoneColumnVisitorTest.java +183 -64
- data/src/test/java/org/embulk/output/kintone/KintoneColumnVisitorVerifier.java +19 -9
- data/src/test/java/org/embulk/output/kintone/KintonePageOutputVerifier.java +120 -51
- data/src/test/java/org/embulk/output/kintone/MockClient.java +112 -0
- data/src/test/java/org/embulk/output/kintone/TestKintoneOutputPlugin.java +147 -22
- data/src/test/java/org/embulk/output/kintone/TestTaskMode.java +1 -0
- data/src/test/java/org/embulk/output/kintone/TestTaskReduce.java +47 -0
- data/src/test/java/org/embulk/output/kintone/TestTaskReduceException.java +50 -0
- data/src/test/java/org/embulk/output/kintone/TestTaskReduceSubtable.java +47 -0
- data/src/test/java/org/embulk/output/kintone/TestTaskSkip.java +80 -0
- data/src/test/java/org/embulk/output/kintone/TestTaskSkipId.java +80 -0
- data/src/test/java/org/embulk/output/kintone/deserializer/DeserializerTest.java +165 -0
- data/src/test/java/org/embulk/output/kintone/reducer/ReduceTypeTest.java +154 -0
- data/src/test/resources/org/embulk/output/kintone/client/config.yml +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/config.yml +2 -1
- data/src/test/resources/org/embulk/output/kintone/task/mode/config.yml +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/mode/input.csv +7 -7
- data/src/test/resources/org/embulk/output/kintone/task/mode/insert_add_records.jsonl +6 -6
- data/src/test/resources/org/embulk/output/kintone/task/mode/{insert_add_ignore_nulls_records.jsonl → insert_ignore_nulls_add_records.jsonl} +2 -2
- data/src/test/resources/org/embulk/output/kintone/task/mode/{insert_add_prefer_nulls_records.jsonl → insert_prefer_nulls_add_records.jsonl} +6 -6
- data/src/test/resources/org/embulk/output/kintone/task/mode/{update_update_ignore_nulls_records.jsonl → update_ignore_nulls_update_records.jsonl} +2 -2
- data/src/test/resources/org/embulk/output/kintone/task/mode/{update_update_prefer_nulls_records.jsonl → update_prefer_nulls_update_records.jsonl} +3 -3
- data/src/test/resources/org/embulk/output/kintone/task/mode/update_update_records.jsonl +6 -6
- data/src/test/resources/org/embulk/output/kintone/task/mode/{upsert_add_records.jsonl → upsert_never_skip_add_records.jsonl} +2 -2
- data/src/test/resources/org/embulk/output/kintone/task/mode/upsert_never_skip_double_single_line_text_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/mode/{upsert_update_ignore_nulls_records.jsonl → upsert_never_skip_ignore_nulls_update_records.jsonl} +2 -2
- data/src/test/resources/org/embulk/output/kintone/task/mode/{upsert_add_prefer_nulls_records.jsonl → upsert_never_skip_prefer_nulls_add_records.jsonl} +3 -3
- data/src/test/resources/org/embulk/output/kintone/task/mode/{upsert_update_prefer_nulls_records.jsonl → upsert_never_skip_prefer_nulls_update_records.jsonl} +3 -3
- data/src/test/resources/org/embulk/output/kintone/task/mode/{upsert_update_records.jsonl → upsert_never_skip_update_records.jsonl} +4 -4
- data/src/test/resources/org/embulk/output/kintone/task/reduce/config.yml +171 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/input.csv +7 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/insert_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/insert_ignore_nulls_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/insert_prefer_nulls_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/update_ignore_nulls_update_records.jsonl +3 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/update_prefer_nulls_update_records.jsonl +3 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/update_update_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/upsert_never_skip_add_records.jsonl +2 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/upsert_never_skip_double_single_line_text_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/upsert_never_skip_double_single_line_text_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/upsert_never_skip_ignore_nulls_add_records.jsonl +3 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/upsert_never_skip_ignore_nulls_double_single_line_text_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/upsert_never_skip_ignore_nulls_update_records.jsonl +3 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/upsert_never_skip_prefer_nulls_add_records.jsonl +3 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/upsert_never_skip_prefer_nulls_double_single_line_text_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/upsert_never_skip_prefer_nulls_update_records.jsonl +3 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce/upsert_never_skip_update_records.jsonl +4 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_exception/config.yml +36 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_exception/derived_columns.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_exception/input.csv +13 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_exception/insert_add_records.jsonl +2 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_exception/update_update_records.jsonl +2 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/config.yml +343 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/derived_columns.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/input.csv +13 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/insert_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/insert_ignore_nulls_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/insert_prefer_nulls_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/update_ignore_nulls_update_records.jsonl +3 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/update_prefer_nulls_update_records.jsonl +3 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/update_update_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/upsert_never_skip_double_single_line_text_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/upsert_never_skip_ignore_nulls_add_records.jsonl +3 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/upsert_never_skip_ignore_nulls_double_single_line_text_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/upsert_never_skip_ignore_nulls_update_records.jsonl +3 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/upsert_never_skip_prefer_nulls_add_records.jsonl +3 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/upsert_never_skip_prefer_nulls_double_single_line_text_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/upsert_never_skip_prefer_nulls_update_records.jsonl +3 -0
- data/src/test/resources/org/embulk/output/kintone/task/reduce_subtable/upsert_never_skip_update_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/config.yml +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/input.csv +7 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/insert_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/insert_always_skip_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/insert_always_skip_prefer_nulls_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/insert_never_skip_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/insert_never_skip_prefer_nulls_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/insert_prefer_nulls_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/update_always_skip_long_number_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/update_always_skip_long_number_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/update_always_skip_prefer_nulls_long_number_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/update_always_skip_prefer_nulls_long_number_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/update_always_skip_prefer_nulls_update_records.jsonl +2 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/update_always_skip_update_records.jsonl +5 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/update_never_skip_update_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/update_prefer_nulls_update_records.jsonl +3 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/update_update_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_add_records.jsonl +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_always_skip_prefer_nulls_string_single_line_text_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_always_skip_prefer_nulls_string_single_line_text_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_always_skip_prefer_nulls_update_records.jsonl +2 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_always_skip_string_single_line_text_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_always_skip_string_single_line_text_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_always_skip_update_records.jsonl +2 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_never_skip_add_records.jsonl +4 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_never_skip_prefer_nulls_add_records.jsonl +4 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_never_skip_prefer_nulls_string_single_line_text_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_never_skip_prefer_nulls_string_single_line_text_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_never_skip_prefer_nulls_update_records.jsonl +2 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_never_skip_string_single_line_text_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_never_skip_string_single_line_text_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_never_skip_update_records.jsonl +2 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_prefer_nulls_add_records.jsonl +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_prefer_nulls_string_single_line_text_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_prefer_nulls_string_single_line_text_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_prefer_nulls_update_records.jsonl +2 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_string_single_line_text_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_string_single_line_text_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip/upsert_update_records.jsonl +2 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/config.yml +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/input.csv +7 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/insert_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/insert_always_skip_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/insert_always_skip_prefer_nulls_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/insert_never_skip_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/insert_never_skip_prefer_nulls_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/insert_prefer_nulls_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/update_always_skip__id_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/update_always_skip__id_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/update_always_skip_prefer_nulls__id_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/update_always_skip_prefer_nulls__id_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/update_always_skip_prefer_nulls_update_records.jsonl +2 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/update_always_skip_update_records.jsonl +5 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/update_never_skip_update_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/update_prefer_nulls_update_records.jsonl +3 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/update_update_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert__id_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert__id_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_always_skip__id_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_always_skip__id_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_always_skip_prefer_nulls__id_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_always_skip_prefer_nulls__id_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_always_skip_prefer_nulls_update_records.jsonl +2 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_always_skip_update_records.jsonl +5 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_never_skip__id_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_never_skip__id_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_never_skip_add_records.jsonl +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_never_skip_prefer_nulls__id_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_never_skip_prefer_nulls__id_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_never_skip_prefer_nulls_add_records.jsonl +4 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_never_skip_prefer_nulls_update_records.jsonl +2 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_never_skip_update_records.jsonl +5 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_prefer_nulls__id_add_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_prefer_nulls__id_values.json +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_prefer_nulls_add_records.jsonl +3 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_prefer_nulls_update_records.jsonl +2 -0
- data/src/test/resources/org/embulk/output/kintone/task/skip_id/upsert_update_records.jsonl +5 -0
- metadata +163 -17
- data/classpath/embulk-output-kintone-1.0.0.jar +0 -0
- /data/src/test/resources/org/embulk/output/kintone/task/mode/{values.json → upsert_never_skip_double_single_line_text_values.json} +0 -0
- /data/src/test/resources/org/embulk/output/kintone/task/mode/{upsert_add_ignore_nulls_records.jsonl → upsert_never_skip_ignore_nulls_add_records.jsonl} +0 -0
- /data/src/test/resources/org/embulk/output/kintone/task/mode/{values_ignore_nulls.json → upsert_never_skip_ignore_nulls_double_single_line_text_values.json} +0 -0
- /data/src/test/resources/org/embulk/output/kintone/task/mode/{values_prefer_nulls.json → upsert_never_skip_prefer_nulls_double_single_line_text_values.json} +0 -0
@@ -1,5 +1,12 @@
|
|
1
1
|
package org.embulk.output.kintone;
|
2
2
|
|
3
|
+
import static org.embulk.output.kintone.KintoneColumnTypeTest.date;
|
4
|
+
import static org.embulk.output.kintone.KintoneColumnTypeTest.dateTime;
|
5
|
+
import static org.embulk.output.kintone.KintoneColumnTypeTest.list;
|
6
|
+
import static org.embulk.output.kintone.KintoneColumnTypeTest.number;
|
7
|
+
import static org.embulk.output.kintone.KintoneColumnTypeTest.rows;
|
8
|
+
import static org.embulk.output.kintone.KintoneColumnTypeTest.time;
|
9
|
+
import static org.embulk.output.kintone.deserializer.DeserializerTest.assertTableRows;
|
3
10
|
import static org.hamcrest.MatcherAssert.assertThat;
|
4
11
|
import static org.hamcrest.Matchers.is;
|
5
12
|
import static org.hamcrest.Matchers.nullValue;
|
@@ -7,29 +14,37 @@ import static org.junit.Assert.assertThrows;
|
|
7
14
|
|
8
15
|
import com.google.common.collect.ImmutableMap;
|
9
16
|
import com.kintone.client.model.record.FieldType;
|
10
|
-
import java.math.BigDecimal;
|
11
17
|
import java.time.Instant;
|
12
|
-
import java.time.LocalDate;
|
13
|
-
import java.time.LocalTime;
|
14
|
-
import java.time.ZonedDateTime;
|
15
18
|
import java.util.AbstractMap;
|
16
|
-
import java.util.
|
17
|
-
import java.util.List;
|
19
|
+
import java.util.Collections;
|
18
20
|
import java.util.Map;
|
19
21
|
import java.util.function.Function;
|
22
|
+
import org.embulk.output.kintone.deserializer.DeserializerTest;
|
20
23
|
import org.embulk.spi.Page;
|
21
24
|
import org.embulk.spi.Schema;
|
25
|
+
import org.embulk.spi.json.JsonParser;
|
22
26
|
import org.embulk.spi.time.Timestamp;
|
23
27
|
import org.embulk.spi.type.Types;
|
24
28
|
import org.junit.Test;
|
29
|
+
import org.msgpack.value.Value;
|
25
30
|
import org.msgpack.value.ValueFactory;
|
26
31
|
|
27
32
|
public class KintoneColumnVisitorTest {
|
33
|
+
private static final JsonParser PARSER = new JsonParser();
|
34
|
+
private static final String[] ROWS = {
|
35
|
+
DeserializerTest.TABLE_ROW.apply(0L),
|
36
|
+
DeserializerTest.TABLE_ROW.apply(1L),
|
37
|
+
DeserializerTest.TABLE_ROW.apply(2L),
|
38
|
+
DeserializerTest.TABLE_ROW.apply(3L),
|
39
|
+
DeserializerTest.TABLE_ROW.apply(4L),
|
40
|
+
DeserializerTest.TABLE_ROW.apply(5L),
|
41
|
+
};
|
42
|
+
|
28
43
|
@Test
|
29
44
|
public void test() {
|
30
|
-
KintoneColumnVisitorVerifier verifier = verifier("STRING|SINGLE_LINE_TEXT");
|
45
|
+
KintoneColumnVisitorVerifier verifier = verifier(null, "STRING|SINGLE_LINE_TEXT");
|
31
46
|
verifier.verify(
|
32
|
-
(record,
|
47
|
+
(record, idOrUpdateKey) -> {
|
33
48
|
assertThat(record.getSingleLineTextFieldValue("BOOLEAN|SINGLE_LINE_TEXT"), is("false"));
|
34
49
|
assertThat(record.getNumberFieldValue("BOOLEAN"), is(number("0")));
|
35
50
|
assertThat(record.getSingleLineTextFieldValue("LONG|SINGLE_LINE_TEXT"), is("0"));
|
@@ -71,6 +86,7 @@ public class KintoneColumnVisitorTest {
|
|
71
86
|
record.getDateTimeFieldValue("STRING|DATETIME"),
|
72
87
|
is(dateTime("1970-01-01T00:00:00Z")));
|
73
88
|
assertThat(record.getLinkFieldValue("STRING|LINK"), is(""));
|
89
|
+
assertThat(record.getSubtableFieldValue("STRING|SUBTABLE"), is(list()));
|
74
90
|
assertThat(
|
75
91
|
record.getSingleLineTextFieldValue("TIMESTAMP|SINGLE_LINE_TEXT"),
|
76
92
|
is("1970-01-01T00:00:00Z"));
|
@@ -85,11 +101,14 @@ public class KintoneColumnVisitorTest {
|
|
85
101
|
record.getDateTimeFieldValue("TIMESTAMP"), is(dateTime("1970-01-01T00:00:00Z")));
|
86
102
|
assertThat(record.getSingleLineTextFieldValue("JSON|SINGLE_LINE_TEXT"), is("\"\""));
|
87
103
|
assertThat(record.getMultiLineTextFieldValue("JSON"), is("\"\""));
|
88
|
-
assertThat(
|
89
|
-
assertThat(
|
104
|
+
assertThat(record.getSubtableFieldValue("JSON|SUBTABLE"), is(list()));
|
105
|
+
assertThat(
|
106
|
+
record.getSingleLineTextFieldValue("JSON|SUBTABLE.SINGLE_LINE_TEXT"), is("\"\""));
|
107
|
+
assertThat(idOrUpdateKey.getField(), is("STRING|SINGLE_LINE_TEXT"));
|
108
|
+
assertThat(idOrUpdateKey.getValue(), is(""));
|
90
109
|
});
|
91
110
|
verifier.verify(
|
92
|
-
(record,
|
111
|
+
(record, idOrUpdateKey) -> {
|
93
112
|
assertThat(record.getSingleLineTextFieldValue("BOOLEAN|SINGLE_LINE_TEXT"), is("false"));
|
94
113
|
assertThat(record.getNumberFieldValue("BOOLEAN"), is(number("0")));
|
95
114
|
assertThat(record.getSingleLineTextFieldValue("LONG|SINGLE_LINE_TEXT"), is("0"));
|
@@ -131,6 +150,7 @@ public class KintoneColumnVisitorTest {
|
|
131
150
|
record.getDateTimeFieldValue("STRING|DATETIME"),
|
132
151
|
is(dateTime("1970-01-01T00:00:00Z")));
|
133
152
|
assertThat(record.getLinkFieldValue("STRING|LINK"), is(""));
|
153
|
+
assertThat(record.getSubtableFieldValue("STRING|SUBTABLE"), is(list()));
|
134
154
|
assertThat(
|
135
155
|
record.getSingleLineTextFieldValue("TIMESTAMP|SINGLE_LINE_TEXT"),
|
136
156
|
is("1970-01-01T00:00:00Z"));
|
@@ -145,11 +165,14 @@ public class KintoneColumnVisitorTest {
|
|
145
165
|
record.getDateTimeFieldValue("TIMESTAMP"), is(dateTime("1970-01-01T00:00:00Z")));
|
146
166
|
assertThat(record.getSingleLineTextFieldValue("JSON|SINGLE_LINE_TEXT"), is("\"\""));
|
147
167
|
assertThat(record.getMultiLineTextFieldValue("JSON"), is("\"\""));
|
148
|
-
assertThat(
|
149
|
-
assertThat(
|
168
|
+
assertThat(record.getSubtableFieldValue("JSON|SUBTABLE"), is(list()));
|
169
|
+
assertThat(
|
170
|
+
record.getSingleLineTextFieldValue("JSON|SUBTABLE.SINGLE_LINE_TEXT"), is("\"\""));
|
171
|
+
assertThat(idOrUpdateKey.getField(), is("STRING|SINGLE_LINE_TEXT"));
|
172
|
+
assertThat(idOrUpdateKey.getValue(), is(""));
|
150
173
|
});
|
151
174
|
verifier.verify(
|
152
|
-
(record,
|
175
|
+
(record, idOrUpdateKey) -> {
|
153
176
|
assertThat(record.getSingleLineTextFieldValue("BOOLEAN|SINGLE_LINE_TEXT"), is("true"));
|
154
177
|
assertThat(record.getNumberFieldValue("BOOLEAN"), is(number("1")));
|
155
178
|
assertThat(record.getSingleLineTextFieldValue("LONG|SINGLE_LINE_TEXT"), is("123"));
|
@@ -192,6 +215,7 @@ public class KintoneColumnVisitorTest {
|
|
192
215
|
record.getDateTimeFieldValue("STRING|DATETIME"),
|
193
216
|
is(dateTime("1999-12-31T23:59:59Z")));
|
194
217
|
assertThat(record.getLinkFieldValue("STRING|LINK"), is("abc"));
|
218
|
+
assertTableRows(record.getSubtableFieldValue("STRING|SUBTABLE"), rows(0L, 1L, 2L));
|
195
219
|
assertThat(
|
196
220
|
record.getSingleLineTextFieldValue("TIMESTAMP|SINGLE_LINE_TEXT"),
|
197
221
|
is("1999-12-31T23:59:59Z"));
|
@@ -206,11 +230,14 @@ public class KintoneColumnVisitorTest {
|
|
206
230
|
record.getDateTimeFieldValue("TIMESTAMP"), is(dateTime("1999-12-31T23:59:59Z")));
|
207
231
|
assertThat(record.getSingleLineTextFieldValue("JSON|SINGLE_LINE_TEXT"), is("\"abc\""));
|
208
232
|
assertThat(record.getMultiLineTextFieldValue("JSON"), is("\"abc\""));
|
209
|
-
|
210
|
-
assertThat(
|
233
|
+
assertTableRows(record.getSubtableFieldValue("JSON|SUBTABLE"), rows(0L, 1L, 2L));
|
234
|
+
assertThat(
|
235
|
+
record.getSingleLineTextFieldValue("JSON|SUBTABLE.SINGLE_LINE_TEXT"), is("\"abc\""));
|
236
|
+
assertThat(idOrUpdateKey.getField(), is("STRING|SINGLE_LINE_TEXT"));
|
237
|
+
assertThat(idOrUpdateKey.getValue(), is("abc"));
|
211
238
|
});
|
212
239
|
verifier.verify(
|
213
|
-
(record,
|
240
|
+
(record, idOrUpdateKey) -> {
|
214
241
|
assertThat(record.getSingleLineTextFieldValue("BOOLEAN|SINGLE_LINE_TEXT"), is("false"));
|
215
242
|
assertThat(record.getNumberFieldValue("BOOLEAN"), is(number("0")));
|
216
243
|
assertThat(record.getSingleLineTextFieldValue("LONG|SINGLE_LINE_TEXT"), is("456"));
|
@@ -253,6 +280,7 @@ public class KintoneColumnVisitorTest {
|
|
253
280
|
record.getDateTimeFieldValue("STRING|DATETIME"),
|
254
281
|
is(dateTime("2000-01-01T00:00:00Z")));
|
255
282
|
assertThat(record.getLinkFieldValue("STRING|LINK"), is("def"));
|
283
|
+
assertTableRows(record.getSubtableFieldValue("STRING|SUBTABLE"), rows(3L, 4L, 5L));
|
256
284
|
assertThat(
|
257
285
|
record.getSingleLineTextFieldValue("TIMESTAMP|SINGLE_LINE_TEXT"),
|
258
286
|
is("2000-01-01T00:00:00Z"));
|
@@ -267,16 +295,19 @@ public class KintoneColumnVisitorTest {
|
|
267
295
|
record.getDateTimeFieldValue("TIMESTAMP"), is(dateTime("2000-01-01T00:00:00Z")));
|
268
296
|
assertThat(record.getSingleLineTextFieldValue("JSON|SINGLE_LINE_TEXT"), is("\"def\""));
|
269
297
|
assertThat(record.getMultiLineTextFieldValue("JSON"), is("\"def\""));
|
270
|
-
|
271
|
-
assertThat(
|
298
|
+
assertTableRows(record.getSubtableFieldValue("JSON|SUBTABLE"), rows(3L, 4L, 5L));
|
299
|
+
assertThat(
|
300
|
+
record.getSingleLineTextFieldValue("JSON|SUBTABLE.SINGLE_LINE_TEXT"), is("\"def\""));
|
301
|
+
assertThat(idOrUpdateKey.getField(), is("STRING|SINGLE_LINE_TEXT"));
|
302
|
+
assertThat(idOrUpdateKey.getValue(), is("def"));
|
272
303
|
});
|
273
304
|
}
|
274
305
|
|
275
306
|
@Test
|
276
307
|
public void testPreferNulls() {
|
277
|
-
KintoneColumnVisitorVerifier verifier = verifier("LONG", true, false);
|
308
|
+
KintoneColumnVisitorVerifier verifier = verifier(null, "LONG", true, false);
|
278
309
|
verifier.verify(
|
279
|
-
(record,
|
310
|
+
(record, idOrUpdateKey) -> {
|
280
311
|
assertThat(
|
281
312
|
record.getFieldType("BOOLEAN|SINGLE_LINE_TEXT"), is(FieldType.SINGLE_LINE_TEXT));
|
282
313
|
assertThat(record.getFieldType("BOOLEAN"), is(FieldType.NUMBER));
|
@@ -316,6 +347,7 @@ public class KintoneColumnVisitorTest {
|
|
316
347
|
assertThat(record.getFieldType("STRING|TIME|PST"), is(FieldType.TIME));
|
317
348
|
assertThat(record.getFieldType("STRING|DATETIME"), is(FieldType.DATETIME));
|
318
349
|
assertThat(record.getFieldType("STRING|LINK"), is(FieldType.LINK));
|
350
|
+
assertThat(record.getFieldType("STRING|SUBTABLE"), is(FieldType.SUBTABLE));
|
319
351
|
assertThat(
|
320
352
|
record.getFieldType("TIMESTAMP|SINGLE_LINE_TEXT"), is(FieldType.SINGLE_LINE_TEXT));
|
321
353
|
assertThat(record.getFieldType("TIMESTAMP|NUMBER"), is(FieldType.NUMBER));
|
@@ -328,6 +360,10 @@ public class KintoneColumnVisitorTest {
|
|
328
360
|
assertThat(record.getFieldType("TIMESTAMP"), is(FieldType.DATETIME));
|
329
361
|
assertThat(record.getFieldType("JSON|SINGLE_LINE_TEXT"), is(FieldType.SINGLE_LINE_TEXT));
|
330
362
|
assertThat(record.getFieldType("JSON"), is(FieldType.MULTI_LINE_TEXT));
|
363
|
+
assertThat(record.getFieldType("JSON|SUBTABLE"), is(FieldType.SUBTABLE));
|
364
|
+
assertThat(
|
365
|
+
record.getFieldType("JSON|SUBTABLE.SINGLE_LINE_TEXT"),
|
366
|
+
is(FieldType.SINGLE_LINE_TEXT));
|
331
367
|
assertThat(record.getSingleLineTextFieldValue("BOOLEAN|SINGLE_LINE_TEXT"), nullValue());
|
332
368
|
assertThat(record.getNumberFieldValue("BOOLEAN"), nullValue());
|
333
369
|
assertThat(record.getSingleLineTextFieldValue("LONG|SINGLE_LINE_TEXT"), nullValue());
|
@@ -364,6 +400,7 @@ public class KintoneColumnVisitorTest {
|
|
364
400
|
assertThat(record.getTimeFieldValue("STRING|TIME|PST"), nullValue());
|
365
401
|
assertThat(record.getDateTimeFieldValue("STRING|DATETIME"), nullValue());
|
366
402
|
assertThat(record.getLinkFieldValue("STRING|LINK"), nullValue());
|
403
|
+
assertThat(record.getSubtableFieldValue("STRING|SUBTABLE"), is(list()));
|
367
404
|
assertThat(record.getSingleLineTextFieldValue("TIMESTAMP|SINGLE_LINE_TEXT"), nullValue());
|
368
405
|
assertThat(record.getNumberFieldValue("TIMESTAMP|NUMBER"), nullValue());
|
369
406
|
assertThat(record.getDateFieldValue("TIMESTAMP|DATE"), nullValue());
|
@@ -375,16 +412,19 @@ public class KintoneColumnVisitorTest {
|
|
375
412
|
assertThat(record.getDateTimeFieldValue("TIMESTAMP"), nullValue());
|
376
413
|
assertThat(record.getSingleLineTextFieldValue("JSON|SINGLE_LINE_TEXT"), nullValue());
|
377
414
|
assertThat(record.getMultiLineTextFieldValue("JSON"), nullValue());
|
378
|
-
assertThat(
|
379
|
-
assertThat(
|
415
|
+
assertThat(record.getSubtableFieldValue("JSON|SUBTABLE"), is(list()));
|
416
|
+
assertThat(
|
417
|
+
record.getSingleLineTextFieldValue("JSON|SUBTABLE.SINGLE_LINE_TEXT"), nullValue());
|
418
|
+
assertThat(idOrUpdateKey.getField(), is("LONG"));
|
419
|
+
assertThat(idOrUpdateKey.getValue(), nullValue());
|
380
420
|
});
|
381
421
|
}
|
382
422
|
|
383
423
|
@Test
|
384
424
|
public void testIgnoreNulls() {
|
385
|
-
KintoneColumnVisitorVerifier verifier = verifier("JSON", false, true);
|
425
|
+
KintoneColumnVisitorVerifier verifier = verifier("JSON", "JSON", false, true);
|
386
426
|
verifier.verify(
|
387
|
-
(record,
|
427
|
+
(record, idOrUpdateKey) -> {
|
388
428
|
assertThat(record.getFieldValue("BOOLEAN|SINGLE_LINE_TEXT"), nullValue());
|
389
429
|
assertThat(record.getFieldValue("BOOLEAN"), nullValue());
|
390
430
|
assertThat(record.getFieldValue("LONG|SINGLE_LINE_TEXT"), nullValue());
|
@@ -421,6 +461,7 @@ public class KintoneColumnVisitorTest {
|
|
421
461
|
assertThat(record.getFieldValue("STRING|TIME|PST"), nullValue());
|
422
462
|
assertThat(record.getFieldValue("STRING|DATETIME"), nullValue());
|
423
463
|
assertThat(record.getFieldValue("STRING|LINK"), nullValue());
|
464
|
+
assertThat(record.getFieldValue("STRING|SUBTABLE"), nullValue());
|
424
465
|
assertThat(record.getFieldValue("TIMESTAMP|SINGLE_LINE_TEXT"), nullValue());
|
425
466
|
assertThat(record.getFieldValue("TIMESTAMP|NUMBER"), nullValue());
|
426
467
|
assertThat(record.getFieldValue("TIMESTAMP|DATE"), nullValue());
|
@@ -432,55 +473,130 @@ public class KintoneColumnVisitorTest {
|
|
432
473
|
assertThat(record.getFieldValue("TIMESTAMP"), nullValue());
|
433
474
|
assertThat(record.getFieldValue("JSON|SINGLE_LINE_TEXT"), nullValue());
|
434
475
|
assertThat(record.getFieldValue("JSON"), nullValue());
|
435
|
-
assertThat(
|
436
|
-
assertThat(
|
476
|
+
assertThat(record.getFieldValue("JSON|SUBTABLE"), nullValue());
|
477
|
+
assertThat(record.getFieldValue("JSON|SUBTABLE.SINGLE_LINE_TEXT"), nullValue());
|
478
|
+
assertThat(idOrUpdateKey.getField(), nullValue());
|
479
|
+
assertThat(idOrUpdateKey.getValue(), nullValue());
|
480
|
+
},
|
481
|
+
true);
|
482
|
+
}
|
483
|
+
|
484
|
+
@Test
|
485
|
+
public void testReduceKey() {
|
486
|
+
KintoneColumnVisitorVerifier verifier = verifier("JSON|SUBTABLE", null);
|
487
|
+
verifier.verify(
|
488
|
+
(record, idOrUpdateKey) -> {
|
489
|
+
assertThat(record.getSingleLineTextFieldValue("BOOLEAN|SINGLE_LINE_TEXT"), is("false"));
|
490
|
+
assertThat(record.getNumberFieldValue("BOOLEAN"), is(number("0")));
|
491
|
+
assertThat(record.getSingleLineTextFieldValue("LONG|SINGLE_LINE_TEXT"), is("0"));
|
492
|
+
assertThat(record.getNumberFieldValue("LONG"), is(number("0")));
|
493
|
+
assertThat(record.getDateFieldValue("LONG|DATE"), is(date("1970-01-01")));
|
494
|
+
assertThat(record.getDateFieldValue("LONG|DATE|JST"), is(date("1970-01-01")));
|
495
|
+
assertThat(record.getDateFieldValue("LONG|DATE|PST"), is(date("1969-12-31")));
|
496
|
+
assertThat(record.getTimeFieldValue("LONG|TIME"), is(time("00:00:00")));
|
497
|
+
assertThat(record.getTimeFieldValue("LONG|TIME|JST"), is(time("09:00:00")));
|
498
|
+
assertThat(record.getTimeFieldValue("LONG|TIME|PST"), is(time("16:00:00")));
|
499
|
+
assertThat(
|
500
|
+
record.getDateTimeFieldValue("LONG|DATETIME"), is(dateTime("1970-01-01T00:00:00Z")));
|
501
|
+
assertThat(record.getSingleLineTextFieldValue("DOUBLE|SINGLE_LINE_TEXT"), is("0.0"));
|
502
|
+
assertThat(record.getNumberFieldValue("DOUBLE"), is(number("0.0")));
|
503
|
+
assertThat(record.getDateFieldValue("DOUBLE|DATE"), is(date("1970-01-01")));
|
504
|
+
assertThat(record.getDateFieldValue("DOUBLE|DATE|JST"), is(date("1970-01-01")));
|
505
|
+
assertThat(record.getDateFieldValue("DOUBLE|DATE|PST"), is(date("1969-12-31")));
|
506
|
+
assertThat(record.getTimeFieldValue("DOUBLE|TIME"), is(time("00:00:00")));
|
507
|
+
assertThat(record.getTimeFieldValue("DOUBLE|TIME|JST"), is(time("09:00:00")));
|
508
|
+
assertThat(record.getTimeFieldValue("DOUBLE|TIME|PST"), is(time("16:00:00")));
|
509
|
+
assertThat(
|
510
|
+
record.getDateTimeFieldValue("DOUBLE|DATETIME"),
|
511
|
+
is(dateTime("1970-01-01T00:00:00Z")));
|
512
|
+
assertThat(record.getSingleLineTextFieldValue("STRING|SINGLE_LINE_TEXT"), is(""));
|
513
|
+
assertThat(record.getMultiLineTextFieldValue("STRING"), is(""));
|
514
|
+
assertThat(record.getRichTextFieldValue("STRING|RICH_TEXT"), is(""));
|
515
|
+
assertThat(record.getNumberFieldValue("STRING|NUMBER"), is(number("0")));
|
516
|
+
assertThat(record.getCheckBoxFieldValue("STRING|CHECK_BOX"), is(list()));
|
517
|
+
assertThat(record.getRadioButtonFieldValue("STRING|RADIO_BUTTON"), is(""));
|
518
|
+
assertThat(record.getMultiSelectFieldValue("STRING|MULTI_SELECT"), is(list()));
|
519
|
+
assertThat(record.getDropDownFieldValue("STRING|DROP_DOWN"), is(""));
|
520
|
+
assertThat(record.getDateFieldValue("STRING|DATE"), is(date("1970-01-01")));
|
521
|
+
assertThat(record.getDateFieldValue("STRING|DATE|JST"), is(date("1970-01-01")));
|
522
|
+
assertThat(record.getDateFieldValue("STRING|DATE|PST"), is(date("1969-12-31")));
|
523
|
+
assertThat(record.getTimeFieldValue("STRING|TIME"), is(time("00:00:00")));
|
524
|
+
assertThat(record.getTimeFieldValue("STRING|TIME|JST"), is(time("09:00:00")));
|
525
|
+
assertThat(record.getTimeFieldValue("STRING|TIME|PST"), is(time("16:00:00")));
|
526
|
+
assertThat(
|
527
|
+
record.getDateTimeFieldValue("STRING|DATETIME"),
|
528
|
+
is(dateTime("1970-01-01T00:00:00Z")));
|
529
|
+
assertThat(record.getLinkFieldValue("STRING|LINK"), is(""));
|
530
|
+
assertThat(record.getSubtableFieldValue("STRING|SUBTABLE"), is(list()));
|
531
|
+
assertThat(
|
532
|
+
record.getSingleLineTextFieldValue("TIMESTAMP|SINGLE_LINE_TEXT"),
|
533
|
+
is("1970-01-01T00:00:00Z"));
|
534
|
+
assertThat(record.getNumberFieldValue("TIMESTAMP|NUMBER"), is(number("0")));
|
535
|
+
assertThat(record.getDateFieldValue("TIMESTAMP|DATE"), is(date("1970-01-01")));
|
536
|
+
assertThat(record.getDateFieldValue("TIMESTAMP|DATE|JST"), is(date("1970-01-01")));
|
537
|
+
assertThat(record.getDateFieldValue("TIMESTAMP|DATE|PST"), is(date("1969-12-31")));
|
538
|
+
assertThat(record.getTimeFieldValue("TIMESTAMP|TIME"), is(time("00:00:00")));
|
539
|
+
assertThat(record.getTimeFieldValue("TIMESTAMP|TIME|JST"), is(time("09:00:00")));
|
540
|
+
assertThat(record.getTimeFieldValue("TIMESTAMP|TIME|PST"), is(time("16:00:00")));
|
541
|
+
assertThat(
|
542
|
+
record.getDateTimeFieldValue("TIMESTAMP"), is(dateTime("1970-01-01T00:00:00Z")));
|
543
|
+
assertThat(record.getSingleLineTextFieldValue("JSON|SINGLE_LINE_TEXT"), is("\"\""));
|
544
|
+
assertThat(record.getMultiLineTextFieldValue("JSON"), is("\"\""));
|
545
|
+
assertThat(record.getSubtableFieldValue("JSON|SUBTABLE"), is(list()));
|
546
|
+
assertThat(record.getFieldValue("JSON|SUBTABLE.SINGLE_LINE_TEXT"), nullValue());
|
547
|
+
assertThat(idOrUpdateKey.getField(), nullValue());
|
548
|
+
assertThat(idOrUpdateKey.getValue(), nullValue());
|
437
549
|
},
|
438
550
|
true);
|
439
551
|
}
|
440
552
|
|
441
553
|
@Test
|
442
554
|
public void testUpdateKey() {
|
443
|
-
assertThrows(UnsupportedOperationException.class, () -> verifier("TIMESTAMP").verify());
|
444
|
-
KintoneColumnVisitorVerifier verifier = verifier("TIMESTAMP|NUMBER");
|
555
|
+
assertThrows(UnsupportedOperationException.class, () -> verifier(null, "TIMESTAMP").verify());
|
556
|
+
KintoneColumnVisitorVerifier verifier = verifier(null, "TIMESTAMP|NUMBER");
|
445
557
|
verifier.verify(
|
446
|
-
(record,
|
447
|
-
assertThat(
|
448
|
-
assertThat(
|
558
|
+
(record, idOrUpdateKey) -> {
|
559
|
+
assertThat(idOrUpdateKey.getField(), is("TIMESTAMP|NUMBER"));
|
560
|
+
assertThat(idOrUpdateKey.getValue(), is(number("0")));
|
449
561
|
});
|
450
562
|
verifier.verify(
|
451
|
-
(record,
|
452
|
-
assertThat(
|
453
|
-
assertThat(
|
563
|
+
(record, idOrUpdateKey) -> {
|
564
|
+
assertThat(idOrUpdateKey.getField(), is("TIMESTAMP|NUMBER"));
|
565
|
+
assertThat(idOrUpdateKey.getValue(), is(number("0")));
|
454
566
|
});
|
455
567
|
verifier.verify(
|
456
|
-
(record,
|
457
|
-
assertThat(
|
458
|
-
assertThat(
|
568
|
+
(record, idOrUpdateKey) -> {
|
569
|
+
assertThat(idOrUpdateKey.getField(), is("TIMESTAMP|NUMBER"));
|
570
|
+
assertThat(idOrUpdateKey.getValue(), is(number("946684799")));
|
459
571
|
});
|
460
572
|
verifier.verify(
|
461
|
-
(record,
|
462
|
-
assertThat(
|
463
|
-
assertThat(
|
573
|
+
(record, idOrUpdateKey) -> {
|
574
|
+
assertThat(idOrUpdateKey.getField(), is("TIMESTAMP|NUMBER"));
|
575
|
+
assertThat(idOrUpdateKey.getValue(), is(number("946684800")));
|
464
576
|
});
|
465
577
|
}
|
466
578
|
|
467
|
-
private static KintoneColumnVisitorVerifier verifier(String updateKeyName) {
|
579
|
+
private static KintoneColumnVisitorVerifier verifier(String reduceKeyName, String updateKeyName) {
|
468
580
|
Schema schema = build(Schema.builder());
|
469
581
|
return new KintoneColumnVisitorVerifier(
|
470
582
|
schema,
|
583
|
+
Collections.emptySet(),
|
471
584
|
build(ImmutableMap.builder()),
|
585
|
+
reduceKeyName,
|
472
586
|
updateKeyName,
|
473
587
|
OutputPageBuilder.build(schema, KintoneColumnVisitorTest::build));
|
474
588
|
}
|
475
589
|
|
476
590
|
private static KintoneColumnVisitorVerifier verifier(
|
477
|
-
String updateKeyName, boolean preferNulls, boolean ignoreNulls) {
|
591
|
+
String reduceKeyName, String updateKeyName, boolean preferNulls, boolean ignoreNulls) {
|
478
592
|
Schema schema = build(Schema.builder());
|
479
593
|
return new KintoneColumnVisitorVerifier(
|
480
594
|
schema,
|
595
|
+
Collections.emptySet(),
|
481
596
|
build(ImmutableMap.builder()),
|
482
597
|
preferNulls,
|
483
598
|
ignoreNulls,
|
599
|
+
reduceKeyName,
|
484
600
|
updateKeyName,
|
485
601
|
OutputPageBuilder.build(schema, KintoneColumnVisitorTest::build));
|
486
602
|
}
|
@@ -523,6 +639,7 @@ public class KintoneColumnVisitorTest {
|
|
523
639
|
.add("STRING|TIME|PST", Types.STRING)
|
524
640
|
.add("STRING|DATETIME", Types.STRING)
|
525
641
|
.add("STRING|LINK", Types.STRING)
|
642
|
+
.add("STRING|SUBTABLE", Types.STRING)
|
526
643
|
.add("TIMESTAMP|SINGLE_LINE_TEXT", Types.TIMESTAMP)
|
527
644
|
.add("TIMESTAMP|NUMBER", Types.TIMESTAMP)
|
528
645
|
.add("TIMESTAMP|DATE", Types.TIMESTAMP)
|
@@ -534,6 +651,8 @@ public class KintoneColumnVisitorTest {
|
|
534
651
|
.add("TIMESTAMP", Types.TIMESTAMP)
|
535
652
|
.add("JSON|SINGLE_LINE_TEXT", Types.JSON)
|
536
653
|
.add("JSON", Types.JSON)
|
654
|
+
.add("JSON|SUBTABLE", Types.JSON)
|
655
|
+
.add("JSON|SUBTABLE.SINGLE_LINE_TEXT", Types.JSON)
|
537
656
|
.build();
|
538
657
|
}
|
539
658
|
|
@@ -576,6 +695,7 @@ public class KintoneColumnVisitorTest {
|
|
576
695
|
.put(build("STRING|TIME|PST", it -> it.setType("TIME").setTimezone("US/Pacific")))
|
577
696
|
.put(build("STRING|DATETIME", it -> it.setType("DATETIME")))
|
578
697
|
.put(build("STRING|LINK", it -> it.setType("LINK")))
|
698
|
+
.put(build("STRING|SUBTABLE", it -> it.setType("SUBTABLE")))
|
579
699
|
.put(build("TIMESTAMP|SINGLE_LINE_TEXT", it -> it.setType("SINGLE_LINE_TEXT")))
|
580
700
|
.put(build("TIMESTAMP|NUMBER", it -> it.setType("NUMBER")))
|
581
701
|
.put(build("TIMESTAMP|DATE", it -> it.setType("DATE").setTimezone("UTC")))
|
@@ -587,6 +707,8 @@ public class KintoneColumnVisitorTest {
|
|
587
707
|
.put(build("TIMESTAMP", it -> it.setType("DATETIME")))
|
588
708
|
.put(build("JSON|SINGLE_LINE_TEXT", it -> it.setType("SINGLE_LINE_TEXT")))
|
589
709
|
.put(build("JSON", it -> it.setType("MULTI_LINE_TEXT")))
|
710
|
+
.put(build("JSON|SUBTABLE", it -> it.setType("SUBTABLE")))
|
711
|
+
.put(build("JSON|SUBTABLE.SINGLE_LINE_TEXT", it -> it.setType("SINGLE_LINE_TEXT")))
|
590
712
|
.build();
|
591
713
|
}
|
592
714
|
|
@@ -634,6 +756,7 @@ public class KintoneColumnVisitorTest {
|
|
634
756
|
.setNull("STRING|TIME|PST")
|
635
757
|
.setNull("STRING|DATETIME")
|
636
758
|
.setNull("STRING|LINK")
|
759
|
+
.setNull("STRING|SUBTABLE")
|
637
760
|
.setNull("TIMESTAMP|SINGLE_LINE_TEXT")
|
638
761
|
.setNull("TIMESTAMP|NUMBER")
|
639
762
|
.setNull("TIMESTAMP|DATE")
|
@@ -645,6 +768,8 @@ public class KintoneColumnVisitorTest {
|
|
645
768
|
.setNull("TIMESTAMP")
|
646
769
|
.setNull("JSON|SINGLE_LINE_TEXT")
|
647
770
|
.setNull("JSON")
|
771
|
+
.setNull("JSON|SUBTABLE")
|
772
|
+
.setNull("JSON|SUBTABLE.SINGLE_LINE_TEXT")
|
648
773
|
.addRecord()
|
649
774
|
.setBoolean("BOOLEAN|SINGLE_LINE_TEXT", false)
|
650
775
|
.setBoolean("BOOLEAN", false)
|
@@ -682,6 +807,7 @@ public class KintoneColumnVisitorTest {
|
|
682
807
|
.setString("STRING|TIME|PST", "")
|
683
808
|
.setString("STRING|DATETIME", "")
|
684
809
|
.setString("STRING|LINK", "")
|
810
|
+
.setString("STRING|SUBTABLE", "")
|
685
811
|
.setTimestamp("TIMESTAMP|SINGLE_LINE_TEXT", Timestamp.ofInstant(Instant.EPOCH))
|
686
812
|
.setTimestamp("TIMESTAMP|NUMBER", Timestamp.ofInstant(Instant.EPOCH))
|
687
813
|
.setTimestamp("TIMESTAMP|DATE", Timestamp.ofInstant(Instant.EPOCH))
|
@@ -693,6 +819,8 @@ public class KintoneColumnVisitorTest {
|
|
693
819
|
.setTimestamp("TIMESTAMP", Timestamp.ofInstant(Instant.EPOCH))
|
694
820
|
.setJson("JSON|SINGLE_LINE_TEXT", ValueFactory.newString(""))
|
695
821
|
.setJson("JSON", ValueFactory.newString(""))
|
822
|
+
.setJson("JSON|SUBTABLE", ValueFactory.newString(""))
|
823
|
+
.setJson("JSON|SUBTABLE.SINGLE_LINE_TEXT", ValueFactory.newString(""))
|
696
824
|
.addRecord()
|
697
825
|
.setBoolean("BOOLEAN|SINGLE_LINE_TEXT", true)
|
698
826
|
.setBoolean("BOOLEAN", true)
|
@@ -730,6 +858,7 @@ public class KintoneColumnVisitorTest {
|
|
730
858
|
.setString("STRING|TIME|PST", "23:59:59")
|
731
859
|
.setString("STRING|DATETIME", "1999-12-31T23:59:59Z")
|
732
860
|
.setString("STRING|LINK", "abc")
|
861
|
+
.setString("STRING|SUBTABLE", String.format("[%s,%s,%s]", ROWS[0], ROWS[1], ROWS[2]))
|
733
862
|
.setTimestamp("TIMESTAMP|SINGLE_LINE_TEXT", timestamp("1999-12-31T23:59:59Z"))
|
734
863
|
.setTimestamp("TIMESTAMP|NUMBER", timestamp("1999-12-31T23:59:59Z"))
|
735
864
|
.setTimestamp("TIMESTAMP|DATE", timestamp("1999-12-31T23:59:59Z"))
|
@@ -741,6 +870,9 @@ public class KintoneColumnVisitorTest {
|
|
741
870
|
.setTimestamp("TIMESTAMP", timestamp("1999-12-31T23:59:59Z"))
|
742
871
|
.setJson("JSON|SINGLE_LINE_TEXT", ValueFactory.newString("abc"))
|
743
872
|
.setJson("JSON", ValueFactory.newString("abc"))
|
873
|
+
.setJson(
|
874
|
+
"JSON|SUBTABLE", ValueFactory.newArray(value(ROWS[0]), value(ROWS[1]), value(ROWS[2])))
|
875
|
+
.setJson("JSON|SUBTABLE.SINGLE_LINE_TEXT", ValueFactory.newString("abc"))
|
744
876
|
.addRecord()
|
745
877
|
.setBoolean("BOOLEAN|SINGLE_LINE_TEXT", false)
|
746
878
|
.setBoolean("BOOLEAN", false)
|
@@ -778,6 +910,7 @@ public class KintoneColumnVisitorTest {
|
|
778
910
|
.setString("STRING|TIME|PST", "00:00:00")
|
779
911
|
.setString("STRING|DATETIME", "2000-01-01T00:00:00Z")
|
780
912
|
.setString("STRING|LINK", "def")
|
913
|
+
.setString("STRING|SUBTABLE", String.format("[%s,%s,%s]", ROWS[3], ROWS[4], ROWS[5]))
|
781
914
|
.setTimestamp("TIMESTAMP|SINGLE_LINE_TEXT", timestamp("2000-01-01T00:00:00Z"))
|
782
915
|
.setTimestamp("TIMESTAMP|NUMBER", timestamp("2000-01-01T00:00:00Z"))
|
783
916
|
.setTimestamp("TIMESTAMP|DATE", timestamp("2000-01-01T00:00:00Z"))
|
@@ -789,32 +922,18 @@ public class KintoneColumnVisitorTest {
|
|
789
922
|
.setTimestamp("TIMESTAMP", timestamp("2000-01-01T00:00:00Z"))
|
790
923
|
.setJson("JSON|SINGLE_LINE_TEXT", ValueFactory.newString("def"))
|
791
924
|
.setJson("JSON", ValueFactory.newString("def"))
|
925
|
+
.setJson(
|
926
|
+
"JSON|SUBTABLE", ValueFactory.newArray(value(ROWS[3]), value(ROWS[4]), value(ROWS[5])))
|
927
|
+
.setJson("JSON|SUBTABLE.SINGLE_LINE_TEXT", ValueFactory.newString("def"))
|
792
928
|
.addRecord()
|
793
929
|
.build();
|
794
930
|
}
|
795
931
|
|
796
|
-
private static BigDecimal number(String value) {
|
797
|
-
return new BigDecimal(value);
|
798
|
-
}
|
799
|
-
|
800
|
-
@SafeVarargs
|
801
|
-
private static <T> List<T> list(T... a) {
|
802
|
-
return Arrays.asList(a);
|
803
|
-
}
|
804
|
-
|
805
|
-
private static LocalDate date(CharSequence text) {
|
806
|
-
return LocalDate.parse(text);
|
807
|
-
}
|
808
|
-
|
809
|
-
private static LocalTime time(CharSequence text) {
|
810
|
-
return LocalTime.parse(text);
|
811
|
-
}
|
812
|
-
|
813
|
-
private static ZonedDateTime dateTime(CharSequence text) {
|
814
|
-
return ZonedDateTime.parse(text);
|
815
|
-
}
|
816
|
-
|
817
932
|
private static Timestamp timestamp(CharSequence text) {
|
818
933
|
return Timestamp.ofInstant(Instant.parse(text));
|
819
934
|
}
|
935
|
+
|
936
|
+
private static Value value(String json) {
|
937
|
+
return PARSER.parse(json);
|
938
|
+
}
|
820
939
|
}
|
@@ -2,10 +2,11 @@ package org.embulk.output.kintone;
|
|
2
2
|
|
3
3
|
import com.kintone.client.model.record.FieldType;
|
4
4
|
import com.kintone.client.model.record.Record;
|
5
|
-
import com.kintone.client.model.record.UpdateKey;
|
6
5
|
import java.util.Map;
|
6
|
+
import java.util.Set;
|
7
7
|
import java.util.function.BiConsumer;
|
8
8
|
import javax.validation.UnexpectedTypeException;
|
9
|
+
import org.embulk.output.kintone.record.IdOrUpdateKey;
|
9
10
|
import org.embulk.spi.Column;
|
10
11
|
import org.embulk.spi.Page;
|
11
12
|
import org.embulk.spi.PageReader;
|
@@ -18,43 +19,52 @@ public class KintoneColumnVisitorVerifier {
|
|
18
19
|
private final KintoneColumnVisitor visitor;
|
19
20
|
|
20
21
|
public KintoneColumnVisitorVerifier(
|
21
|
-
Schema schema,
|
22
|
-
|
22
|
+
Schema schema,
|
23
|
+
Set<Column> derived,
|
24
|
+
Map<String, KintoneColumnOption> options,
|
25
|
+
String reduceKeyName,
|
26
|
+
String updateKeyName,
|
27
|
+
Page page) {
|
28
|
+
this(schema, derived, options, false, false, reduceKeyName, updateKeyName, page);
|
23
29
|
}
|
24
30
|
|
25
31
|
public KintoneColumnVisitorVerifier(
|
26
32
|
Schema schema,
|
33
|
+
Set<Column> derived,
|
27
34
|
Map<String, KintoneColumnOption> options,
|
28
35
|
boolean preferNulls,
|
29
36
|
boolean ignoreNulls,
|
37
|
+
String reduceKeyName,
|
30
38
|
String updateKeyName,
|
31
39
|
Page page) {
|
32
40
|
this.schema = schema;
|
33
41
|
this.options = options;
|
34
42
|
reader = new PageReader(schema);
|
35
43
|
reader.setPage(page);
|
36
|
-
visitor =
|
44
|
+
visitor =
|
45
|
+
new KintoneColumnVisitor(
|
46
|
+
reader, derived, options, preferNulls, ignoreNulls, reduceKeyName, updateKeyName);
|
37
47
|
}
|
38
48
|
|
39
49
|
public void verify() {
|
40
50
|
verify((record, updateKey) -> {});
|
41
51
|
}
|
42
52
|
|
43
|
-
public void verify(BiConsumer<Record,
|
53
|
+
public void verify(BiConsumer<Record, IdOrUpdateKey> consumer) {
|
44
54
|
verify(consumer, false);
|
45
55
|
}
|
46
56
|
|
47
|
-
public void verify(BiConsumer<Record,
|
57
|
+
public void verify(BiConsumer<Record, IdOrUpdateKey> consumer, boolean nullable) {
|
48
58
|
if (!reader.nextRecord()) {
|
49
59
|
throw new IllegalStateException();
|
50
60
|
}
|
51
61
|
Record record = new Record();
|
52
62
|
visitor.setRecord(record);
|
53
|
-
|
54
|
-
visitor.
|
63
|
+
IdOrUpdateKey idOrUpdateKey = new IdOrUpdateKey();
|
64
|
+
visitor.setIdOrUpdateKey(idOrUpdateKey);
|
55
65
|
schema.visitColumns(visitor);
|
56
66
|
schema.getColumns().forEach(column -> verify(record, column, nullable));
|
57
|
-
consumer.accept(record,
|
67
|
+
consumer.accept(record, idOrUpdateKey);
|
58
68
|
}
|
59
69
|
|
60
70
|
private void verify(Record record, Column column, boolean nullable) {
|