embulk-output-kintone 0.4.0 → 0.4.1

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.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +1 -0
  3. data/.gitignore +0 -1
  4. data/build.gradle +18 -19
  5. data/classpath/embulk-output-kintone-0.4.1.jar +0 -0
  6. data/classpath/shadow-kintone-java-client-0.4.1-all.jar +0 -0
  7. data/gradle/wrapper/gradle-wrapper.properties +1 -1
  8. data/settings.gradle +2 -0
  9. data/shadow-kintone-java-client/build.gradle +35 -0
  10. data/src/main/java/org/embulk/output/kintone/KintonePageOutput.java +166 -121
  11. data/src/main/java/org/embulk/output/kintone/KintoneRetryOption.java +19 -0
  12. data/src/main/java/org/embulk/output/kintone/PluginTask.java +3 -3
  13. data/src/test/java/com/kintone/client/Json.java +16 -0
  14. data/src/test/java/org/embulk/output/kintone/KintoneColumnOptionBuilder.java +63 -0
  15. data/src/test/java/org/embulk/output/kintone/KintoneColumnVisitorTest.java +297 -0
  16. data/src/test/java/org/embulk/output/kintone/KintoneColumnVisitorVerifier.java +52 -0
  17. data/src/test/java/org/embulk/output/kintone/KintonePageOutputVerifier.java +226 -0
  18. data/src/test/java/org/embulk/output/kintone/OutputPageBuilder.java +92 -0
  19. data/src/test/java/org/embulk/output/kintone/TestKintoneOutputPlugin.java +163 -1
  20. data/src/test/java/org/embulk/output/kintone/TestTask.java +40 -0
  21. data/src/test/java/org/embulk/output/kintone/TestTaskMode.java +31 -0
  22. data/src/test/resources/logback-test.xml +14 -0
  23. data/src/test/resources/org/embulk/output/kintone/config.yml +4 -0
  24. data/src/test/resources/org/embulk/output/kintone/task/config.yml +1 -0
  25. data/src/test/resources/org/embulk/output/kintone/task/mode/config.yml +54 -0
  26. data/src/test/resources/org/embulk/output/kintone/task/mode/input.csv +7 -0
  27. data/src/test/resources/org/embulk/output/kintone/task/mode/insert_add_records.jsonl +6 -0
  28. data/src/test/resources/org/embulk/output/kintone/task/mode/update_update_records.jsonl +3 -0
  29. data/src/test/resources/org/embulk/output/kintone/task/mode/upsert_add_records.jsonl +2 -0
  30. data/src/test/resources/org/embulk/output/kintone/task/mode/upsert_update_records.jsonl +4 -0
  31. data/src/test/resources/org/embulk/output/kintone/task/mode/values.json +1 -0
  32. metadata +25 -3
  33. data/classpath/embulk-output-kintone-0.4.0.jar +0 -0
@@ -1,3 +1,165 @@
1
1
  package org.embulk.output.kintone;
2
2
 
3
- public class TestKintoneOutputPlugin {}
3
+ import com.google.common.io.Resources;
4
+ import com.kintone.client.Json;
5
+ import com.kintone.client.model.record.Record;
6
+ import com.kintone.client.model.record.RecordForUpdate;
7
+ import com.kintone.client.model.record.UpdateKey;
8
+ import java.io.File;
9
+ import java.net.URISyntaxException;
10
+ import java.net.URL;
11
+ import java.nio.file.Path;
12
+ import java.nio.file.Paths;
13
+ import java.util.Arrays;
14
+ import java.util.Collections;
15
+ import java.util.List;
16
+ import java.util.Objects;
17
+ import java.util.function.Function;
18
+ import java.util.stream.Collectors;
19
+ import org.embulk.config.ConfigSource;
20
+ import org.embulk.config.TaskSource;
21
+ import org.embulk.spi.OutputPlugin;
22
+ import org.embulk.spi.Schema;
23
+ import org.embulk.spi.TransactionalPageOutput;
24
+ import org.embulk.spi.json.JsonParser;
25
+ import org.embulk.test.EmbulkTests;
26
+ import org.embulk.test.TestingEmbulk;
27
+ import org.junit.Rule;
28
+ import org.msgpack.value.Value;
29
+
30
+ public class TestKintoneOutputPlugin extends KintoneOutputPlugin {
31
+ private static final JsonParser PARSER = new JsonParser();
32
+
33
+ @Rule
34
+ public final TestingEmbulk embulk =
35
+ TestingEmbulk.builder()
36
+ .registerPlugin(OutputPlugin.class, "kintone", TestKintoneOutputPlugin.class)
37
+ .build();
38
+
39
+ @Override
40
+ public TransactionalPageOutput open(TaskSource taskSource, Schema schema, int taskIndex) {
41
+ String test = taskSource.get(String.class, "Domain");
42
+ String mode = taskSource.get(String.class, "Mode");
43
+ String field = taskSource.get(String.class, "UpdateKeyName");
44
+ return new KintonePageOutputVerifier(
45
+ super.open(taskSource, schema, taskIndex),
46
+ test,
47
+ field,
48
+ getValues(test),
49
+ getAddRecords(test, mode),
50
+ getUpdateRecords(test, mode, field));
51
+ }
52
+
53
+ protected void runOutput(String configName, String inputName) throws Exception {
54
+ System.gc();
55
+ ConfigSource outConfig = loadConfigYaml(configName);
56
+ Path inputPath = getResourceFile(inputName).toPath();
57
+ embulk.runOutput(outConfig, inputPath);
58
+ }
59
+
60
+ protected String getConfigName() {
61
+ return getName("config.yml");
62
+ }
63
+
64
+ protected String getInputName() {
65
+ return getName("input.csv");
66
+ }
67
+
68
+ protected String getName(String name) {
69
+ return name;
70
+ }
71
+
72
+ protected ConfigSource config(String... strings) {
73
+ return Arrays.stream(strings)
74
+ .map(this::fromYamlString)
75
+ .reduce(ConfigSource::merge)
76
+ .orElseGet(() -> fromYamlString("{}"));
77
+ }
78
+
79
+ protected ConfigSource loadConfigYaml(String name) {
80
+ ConfigSource config = loadYamlResource("config.yml");
81
+ return config.merge(loadYamlResource(name));
82
+ }
83
+
84
+ protected ConfigSource loadYamlResource(String name) {
85
+ return embulk.loadYamlResource(getResourceName(name));
86
+ }
87
+
88
+ protected ConfigSource fromYamlString(String string) {
89
+ return embulk.configLoader().fromYamlString(string);
90
+ }
91
+
92
+ private static List<String> getValues(String test) {
93
+ String name = String.format("%s/values.json", test);
94
+ String json = existsResource(name) ? readResource(name) : null;
95
+ return json == null || json.isEmpty()
96
+ ? Collections.emptyList()
97
+ : PARSER.parse(json).asArrayValue().list().stream()
98
+ .map(Value::toJson)
99
+ .collect(Collectors.toList());
100
+ }
101
+
102
+ private static List<Record> getAddRecords(String test, String mode) {
103
+ String name = String.format("%s/%s_add_records.jsonl", test, mode);
104
+ String jsonl = existsResource(name) ? readResource(name) : null;
105
+ return jsonl == null || jsonl.isEmpty()
106
+ ? Collections.emptyList()
107
+ : Arrays.stream(jsonl.split("\\r?\\n|\\r"))
108
+ .map(s -> Json.parse(s, Record.class))
109
+ .collect(Collectors.toList());
110
+ }
111
+
112
+ private static List<RecordForUpdate> getUpdateRecords(String test, String mode, String field) {
113
+ Function<Record, UpdateKey> key = getKey(field);
114
+ String name = String.format("%s/%s_update_records.jsonl", test, mode);
115
+ String jsonl = existsResource(name) ? readResource(name) : null;
116
+ return jsonl == null || jsonl.isEmpty()
117
+ ? Collections.emptyList()
118
+ : Arrays.stream(jsonl.split("\\r?\\n|\\r"))
119
+ .map(s -> Json.parse(s, Record.class))
120
+ .map(record -> new RecordForUpdate(key.apply(record), record.removeField(field)))
121
+ .collect(Collectors.toList());
122
+ }
123
+
124
+ private static Function<Record, UpdateKey> getKey(String field) {
125
+ return field == null
126
+ ? record -> null
127
+ : record ->
128
+ field.matches("^.*_number$")
129
+ ? new UpdateKey(field, record.getNumberFieldValue(field))
130
+ : new UpdateKey(field, record.getSingleLineTextFieldValue(field));
131
+ }
132
+
133
+ private static File getResourceFile(String name) {
134
+ return toPath(Objects.requireNonNull(getResource(getResourceName(name)))).toFile();
135
+ }
136
+
137
+ private static String readResource(String name) {
138
+ return EmbulkTests.readResource(getResourceName(name));
139
+ }
140
+
141
+ private static boolean existsResource(String name) {
142
+ return getResource(getResourceName(name)) != null;
143
+ }
144
+
145
+ private static String getResourceName(String name) {
146
+ return String.format("org/embulk/output/kintone/%s", name);
147
+ }
148
+
149
+ private static Path toPath(URL url) {
150
+ try {
151
+ return Paths.get(url.toURI());
152
+ } catch (URISyntaxException e) {
153
+ throw new RuntimeException(e);
154
+ }
155
+ }
156
+
157
+ @SuppressWarnings("UnstableApiUsage")
158
+ private static URL getResource(String resourceName) {
159
+ try {
160
+ return Resources.getResource(resourceName);
161
+ } catch (IllegalArgumentException e) {
162
+ return null;
163
+ }
164
+ }
165
+ }
@@ -0,0 +1,40 @@
1
+ package org.embulk.output.kintone;
2
+
3
+ import org.embulk.config.ConfigSource;
4
+ import org.junit.Before;
5
+
6
+ public class TestTask extends TestKintoneOutputPlugin {
7
+ private ConfigSource config;
8
+
9
+ @Before
10
+ public void before() {
11
+ config = fromYamlString("{}");
12
+ }
13
+
14
+ @Override
15
+ protected ConfigSource loadConfigYaml(String name) {
16
+ ConfigSource config = super.loadConfigYaml("task/config.yml");
17
+ return config.merge(loadYamlResource(name)).merge(this.config);
18
+ }
19
+
20
+ protected void merge(ConfigSource config) {
21
+ this.config.merge(config);
22
+ }
23
+
24
+ protected void runOutput() throws Exception {
25
+ String test = config.get(String.class, "domain");
26
+ runOutput(getConfigName(test), getInputName(test));
27
+ }
28
+
29
+ private String getConfigName(String test) {
30
+ return getName(test, getConfigName());
31
+ }
32
+
33
+ private String getInputName(String test) {
34
+ return getName(test, getInputName());
35
+ }
36
+
37
+ private static String getName(String test, String name) {
38
+ return String.format("%s/%s", test, name);
39
+ }
40
+ }
@@ -0,0 +1,31 @@
1
+ package org.embulk.output.kintone;
2
+
3
+ import net.jcip.annotations.NotThreadSafe;
4
+ import org.junit.Test;
5
+
6
+ @NotThreadSafe
7
+ public class TestTaskMode extends TestTask {
8
+ @Override
9
+ public void before() {
10
+ super.before();
11
+ merge(config("domain: task/mode"));
12
+ }
13
+
14
+ @Test
15
+ public void testInsert() throws Exception {
16
+ merge(config("mode: insert"));
17
+ runOutput();
18
+ }
19
+
20
+ @Test
21
+ public void testUpdate() throws Exception {
22
+ merge(config("mode: update", "update_key: string_number"));
23
+ runOutput();
24
+ }
25
+
26
+ @Test
27
+ public void testUpsert() throws Exception {
28
+ merge(config("mode: upsert", "update_key: double_single_line_text"));
29
+ runOutput();
30
+ }
31
+ }
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!DOCTYPE configuration>
3
+ <configuration>
4
+ <import class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"/>
5
+ <import class="ch.qos.logback.core.ConsoleAppender"/>
6
+ <appender name="STDOUT" class="ConsoleAppender">
7
+ <encoder class="PatternLayoutEncoder">
8
+ <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n</pattern>
9
+ </encoder>
10
+ </appender>
11
+ <root level="debug">
12
+ <appender-ref ref="STDOUT"/>
13
+ </root>
14
+ </configuration>
@@ -0,0 +1,4 @@
1
+ type: kintone
2
+ domain: domain
3
+ app_id: 0
4
+ token: token
@@ -0,0 +1,54 @@
1
+ column_options:
2
+ boolean_single_line_text:
3
+ field_code: boolean_single_line_text
4
+ type: SINGLE_LINE_TEXT
5
+ long_single_line_text:
6
+ field_code: long_single_line_text
7
+ type: SINGLE_LINE_TEXT
8
+ long:
9
+ field_code: long
10
+ type: NUMBER
11
+ double_single_line_text:
12
+ field_code: double_single_line_text
13
+ type: SINGLE_LINE_TEXT
14
+ double:
15
+ field_code: double
16
+ type: NUMBER
17
+ string_single_line_text:
18
+ field_code: string_single_line_text
19
+ type: SINGLE_LINE_TEXT
20
+ string:
21
+ field_code: string
22
+ type: MULTI_LINE_TEXT
23
+ string_number:
24
+ field_code: string_number
25
+ type: NUMBER
26
+ string_check_box:
27
+ field_code: string_check_box
28
+ type: CHECK_BOX
29
+ string_drop_down:
30
+ field_code: string_drop_down
31
+ type: DROP_DOWN
32
+ string_link:
33
+ field_code: string_link
34
+ type: LINK
35
+ timestamp_date:
36
+ field_code: timestamp_date
37
+ type: DATE
38
+ timestamp_date_jst:
39
+ field_code: timestamp_date_jst
40
+ type: DATE
41
+ timezone: Asia/Tokyo
42
+ timestamp_date_pst:
43
+ field_code: timestamp_date_pst
44
+ type: DATE
45
+ timezone: US/Pacific
46
+ timestamp:
47
+ field_code: timestamp
48
+ type: DATETIME
49
+ json_single_line_text:
50
+ field_code: json_single_line_text
51
+ type: SINGLE_LINE_TEXT
52
+ json:
53
+ field_code: json
54
+ type: MULTI_LINE_TEXT
@@ -0,0 +1,7 @@
1
+ boolean_single_line_text:boolean,long_single_line_text:long,long:long,double_single_line_text:double,double:double,string_single_line_text:string,string:string,string_number:string,string_check_box:string,string_drop_down:string,string_link:string,timestamp_date:timestamp,timestamp_date_jst:timestamp,timestamp_date_pst:timestamp,timestamp:timestamp,json_single_line_text:json,json:json
2
+ ,,,,,,,,,,,,,,,,
3
+ ,,,1,,,,,,,,,,,,,
4
+ true,123,123,123,123,abc,abc,123,"123,abc",abc,abc,1999-12-31 23:59:59.000 +0000,1999-12-31 23:59:59.000 +0000,1999-12-31 23:59:59.000 +0000,1999-12-31 23:59:59.000 +0000,"""abc""","""abc"""
5
+ ,,,,,,,,,,,,,,,,
6
+ ,,,,,,,1,,,,,,,,,
7
+ false,456,456,456,456,def,def,456,"456,def",def,def,2000-01-01 00:00:00.000 +0000,2000-01-01 00:00:00.000 +0000,2000-01-01 00:00:00.000 +0000,2000-01-01 00:00:00.000 +0000,"""def""","""def"""
@@ -0,0 +1,6 @@
1
+ {"boolean_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"false"},"long_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"long":{"type":"NUMBER","value":null},"double_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"0.0"},"double":{"type":"NUMBER","value":"0.0"},"string_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"string":{"type":"MULTI_LINE_TEXT","value":""},"string_number":{"type":"NUMBER","value":null},"string_check_box":{"type":"CHECK_BOX","value":["null"]},"string_drop_down":{"type":"DROP_DOWN","value":""},"string_link":{"type":"LINK","value":""},"json_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"json":{"type":"MULTI_LINE_TEXT","value":""}}
2
+ {"boolean_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"false"},"long_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"long":{"type":"NUMBER","value":null},"double_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"1.0"},"double":{"type":"NUMBER","value":"0.0"},"string_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"string":{"type":"MULTI_LINE_TEXT","value":""},"string_number":{"type":"NUMBER","value":null},"string_check_box":{"type":"CHECK_BOX","value":["null"]},"string_drop_down":{"type":"DROP_DOWN","value":""},"string_link":{"type":"LINK","value":""},"json_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"json":{"type":"MULTI_LINE_TEXT","value":""}}
3
+ {"boolean_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"true"},"long_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"123"},"long":{"type":"NUMBER","value":"123"},"double_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"123.0"},"double":{"type":"NUMBER","value":"123.0"},"string_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"abc"},"string":{"type":"MULTI_LINE_TEXT","value":"abc"},"string_number":{"type":"NUMBER","value":"123"},"string_check_box":{"type":"CHECK_BOX","value":["123","abc"]},"string_drop_down":{"type":"DROP_DOWN","value":"abc"},"string_link":{"type":"LINK","value":"abc"},"timestamp_date":{"type":"DATE","value":"1999-12-31"},"timestamp_date_jst":{"type":"DATE","value":"2000-01-01"},"timestamp_date_pst":{"type":"DATE","value":"1999-12-31"},"timestamp":{"type":"DATETIME","value":"1999-12-31T23:59:59Z"},"json_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"abc"},"json":{"type":"MULTI_LINE_TEXT","value":"abc"}}
4
+ {"boolean_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"false"},"long_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"long":{"type":"NUMBER","value":null},"double_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"0.0"},"double":{"type":"NUMBER","value":"0.0"},"string_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"string":{"type":"MULTI_LINE_TEXT","value":""},"string_number":{"type":"NUMBER","value":null},"string_check_box":{"type":"CHECK_BOX","value":["null"]},"string_drop_down":{"type":"DROP_DOWN","value":""},"string_link":{"type":"LINK","value":""},"json_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"json":{"type":"MULTI_LINE_TEXT","value":""}}
5
+ {"boolean_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"false"},"long_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"long":{"type":"NUMBER","value":null},"double_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"0.0"},"double":{"type":"NUMBER","value":"0.0"},"string_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"string":{"type":"MULTI_LINE_TEXT","value":""},"string_number":{"type":"NUMBER","value":"1"},"string_check_box":{"type":"CHECK_BOX","value":["null"]},"string_drop_down":{"type":"DROP_DOWN","value":""},"string_link":{"type":"LINK","value":""},"json_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"json":{"type":"MULTI_LINE_TEXT","value":""}}
6
+ {"boolean_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"false"},"long_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"456"},"long":{"type":"NUMBER","value":"456"},"double_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"456.0"},"double":{"type":"NUMBER","value":"456.0"},"string_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"def"},"string":{"type":"MULTI_LINE_TEXT","value":"def"},"string_number":{"type":"NUMBER","value":"456"},"string_check_box":{"type":"CHECK_BOX","value":["456","def"]},"string_drop_down":{"type":"DROP_DOWN","value":"def"},"string_link":{"type":"LINK","value":"def"},"timestamp_date":{"type":"DATE","value":"2000-01-01"},"timestamp_date_jst":{"type":"DATE","value":"2000-01-01"},"timestamp_date_pst":{"type":"DATE","value":"1999-12-31"},"timestamp":{"type":"DATETIME","value":"2000-01-01T00:00:00Z"},"json_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"def"},"json":{"type":"MULTI_LINE_TEXT","value":"def"}}
@@ -0,0 +1,3 @@
1
+ {"boolean_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"true"},"long_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"123"},"long":{"type":"NUMBER","value":"123"},"double_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"123.0"},"double":{"type":"NUMBER","value":"123.0"},"string_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"abc"},"string":{"type":"MULTI_LINE_TEXT","value":"abc"},"string_number":{"type":"NUMBER","value":"123"},"string_check_box":{"type":"CHECK_BOX","value":["123","abc"]},"string_drop_down":{"type":"DROP_DOWN","value":"abc"},"string_link":{"type":"LINK","value":"abc"},"timestamp_date":{"type":"DATE","value":"1999-12-31"},"timestamp_date_jst":{"type":"DATE","value":"2000-01-01"},"timestamp_date_pst":{"type":"DATE","value":"1999-12-31"},"timestamp":{"type":"DATETIME","value":"1999-12-31T23:59:59Z"},"json_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"abc"},"json":{"type":"MULTI_LINE_TEXT","value":"abc"}}
2
+ {"boolean_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"false"},"long_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"long":{"type":"NUMBER","value":null},"double_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"0.0"},"double":{"type":"NUMBER","value":"0.0"},"string_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"string":{"type":"MULTI_LINE_TEXT","value":""},"string_number":{"type":"NUMBER","value":"1"},"string_check_box":{"type":"CHECK_BOX","value":["null"]},"string_drop_down":{"type":"DROP_DOWN","value":""},"string_link":{"type":"LINK","value":""},"json_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"json":{"type":"MULTI_LINE_TEXT","value":""}}
3
+ {"boolean_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"false"},"long_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"456"},"long":{"type":"NUMBER","value":"456"},"double_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"456.0"},"double":{"type":"NUMBER","value":"456.0"},"string_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"def"},"string":{"type":"MULTI_LINE_TEXT","value":"def"},"string_number":{"type":"NUMBER","value":"456"},"string_check_box":{"type":"CHECK_BOX","value":["456","def"]},"string_drop_down":{"type":"DROP_DOWN","value":"def"},"string_link":{"type":"LINK","value":"def"},"timestamp_date":{"type":"DATE","value":"2000-01-01"},"timestamp_date_jst":{"type":"DATE","value":"2000-01-01"},"timestamp_date_pst":{"type":"DATE","value":"1999-12-31"},"timestamp":{"type":"DATETIME","value":"2000-01-01T00:00:00Z"},"json_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"def"},"json":{"type":"MULTI_LINE_TEXT","value":"def"}}
@@ -0,0 +1,2 @@
1
+ {"boolean_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"false"},"long_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"long":{"type":"NUMBER","value":null},"double_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"1.0"},"double":{"type":"NUMBER","value":"0.0"},"string_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"string":{"type":"MULTI_LINE_TEXT","value":""},"string_number":{"type":"NUMBER","value":null},"string_check_box":{"type":"CHECK_BOX","value":["null"]},"string_drop_down":{"type":"DROP_DOWN","value":""},"string_link":{"type":"LINK","value":""},"json_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"json":{"type":"MULTI_LINE_TEXT","value":""}}
2
+ {"boolean_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"true"},"long_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"123"},"long":{"type":"NUMBER","value":"123"},"double_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"123.0"},"double":{"type":"NUMBER","value":"123.0"},"string_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"abc"},"string":{"type":"MULTI_LINE_TEXT","value":"abc"},"string_number":{"type":"NUMBER","value":"123"},"string_check_box":{"type":"CHECK_BOX","value":["123","abc"]},"string_drop_down":{"type":"DROP_DOWN","value":"abc"},"string_link":{"type":"LINK","value":"abc"},"timestamp_date":{"type":"DATE","value":"1999-12-31"},"timestamp_date_jst":{"type":"DATE","value":"2000-01-01"},"timestamp_date_pst":{"type":"DATE","value":"1999-12-31"},"timestamp":{"type":"DATETIME","value":"1999-12-31T23:59:59Z"},"json_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"abc"},"json":{"type":"MULTI_LINE_TEXT","value":"abc"}}
@@ -0,0 +1,4 @@
1
+ {"boolean_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"false"},"long_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"long":{"type":"NUMBER","value":null},"double_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"0.0"},"double":{"type":"NUMBER","value":"0.0"},"string_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"string":{"type":"MULTI_LINE_TEXT","value":""},"string_number":{"type":"NUMBER","value":null},"string_check_box":{"type":"CHECK_BOX","value":["null"]},"string_drop_down":{"type":"DROP_DOWN","value":""},"string_link":{"type":"LINK","value":""},"json_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"json":{"type":"MULTI_LINE_TEXT","value":""}}
2
+ {"boolean_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"false"},"long_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"long":{"type":"NUMBER","value":null},"double_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"0.0"},"double":{"type":"NUMBER","value":"0.0"},"string_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"string":{"type":"MULTI_LINE_TEXT","value":""},"string_number":{"type":"NUMBER","value":null},"string_check_box":{"type":"CHECK_BOX","value":["null"]},"string_drop_down":{"type":"DROP_DOWN","value":""},"string_link":{"type":"LINK","value":""},"json_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"json":{"type":"MULTI_LINE_TEXT","value":""}}
3
+ {"boolean_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"false"},"long_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"long":{"type":"NUMBER","value":null},"double_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"0.0"},"double":{"type":"NUMBER","value":"0.0"},"string_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"string":{"type":"MULTI_LINE_TEXT","value":""},"string_number":{"type":"NUMBER","value":"1"},"string_check_box":{"type":"CHECK_BOX","value":["null"]},"string_drop_down":{"type":"DROP_DOWN","value":""},"string_link":{"type":"LINK","value":""},"json_single_line_text":{"type":"SINGLE_LINE_TEXT","value":""},"json":{"type":"MULTI_LINE_TEXT","value":""}}
4
+ {"boolean_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"false"},"long_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"456"},"long":{"type":"NUMBER","value":"456"},"double_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"456.0"},"double":{"type":"NUMBER","value":"456.0"},"string_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"def"},"string":{"type":"MULTI_LINE_TEXT","value":"def"},"string_number":{"type":"NUMBER","value":"456"},"string_check_box":{"type":"CHECK_BOX","value":["456","def"]},"string_drop_down":{"type":"DROP_DOWN","value":"def"},"string_link":{"type":"LINK","value":"def"},"timestamp_date":{"type":"DATE","value":"2000-01-01"},"timestamp_date_jst":{"type":"DATE","value":"2000-01-01"},"timestamp_date_pst":{"type":"DATE","value":"1999-12-31"},"timestamp":{"type":"DATETIME","value":"2000-01-01T00:00:00Z"},"json_single_line_text":{"type":"SINGLE_LINE_TEXT","value":"def"},"json":{"type":"MULTI_LINE_TEXT","value":"def"}}
@@ -0,0 +1 @@
1
+ ["0.0","1.0","123.0","0.0","0.0","456.0"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-output-kintone
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - takeshi fujita
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-20 00:00:00.000000000 Z
11
+ date: 2024-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -52,7 +52,8 @@ files:
52
52
  - README.md
53
53
  - Rakefile
54
54
  - build.gradle
55
- - classpath/embulk-output-kintone-0.4.0.jar
55
+ - classpath/embulk-output-kintone-0.4.1.jar
56
+ - classpath/shadow-kintone-java-client-0.4.1-all.jar
56
57
  - config/checkstyle/checkstyle.xml
57
58
  - config/checkstyle/default.xml
58
59
  - gradle/wrapper/gradle-wrapper.jar
@@ -60,13 +61,34 @@ files:
60
61
  - gradlew
61
62
  - gradlew.bat
62
63
  - lib/embulk/output/kintone.rb
64
+ - settings.gradle
65
+ - shadow-kintone-java-client/build.gradle
63
66
  - src/main/java/org/embulk/output/kintone/KintoneColumnOption.java
64
67
  - src/main/java/org/embulk/output/kintone/KintoneColumnVisitor.java
65
68
  - src/main/java/org/embulk/output/kintone/KintoneMode.java
66
69
  - src/main/java/org/embulk/output/kintone/KintoneOutputPlugin.java
67
70
  - src/main/java/org/embulk/output/kintone/KintonePageOutput.java
71
+ - src/main/java/org/embulk/output/kintone/KintoneRetryOption.java
68
72
  - src/main/java/org/embulk/output/kintone/PluginTask.java
73
+ - src/test/java/com/kintone/client/Json.java
74
+ - src/test/java/org/embulk/output/kintone/KintoneColumnOptionBuilder.java
75
+ - src/test/java/org/embulk/output/kintone/KintoneColumnVisitorTest.java
76
+ - src/test/java/org/embulk/output/kintone/KintoneColumnVisitorVerifier.java
77
+ - src/test/java/org/embulk/output/kintone/KintonePageOutputVerifier.java
78
+ - src/test/java/org/embulk/output/kintone/OutputPageBuilder.java
69
79
  - src/test/java/org/embulk/output/kintone/TestKintoneOutputPlugin.java
80
+ - src/test/java/org/embulk/output/kintone/TestTask.java
81
+ - src/test/java/org/embulk/output/kintone/TestTaskMode.java
82
+ - src/test/resources/logback-test.xml
83
+ - src/test/resources/org/embulk/output/kintone/config.yml
84
+ - src/test/resources/org/embulk/output/kintone/task/config.yml
85
+ - src/test/resources/org/embulk/output/kintone/task/mode/config.yml
86
+ - src/test/resources/org/embulk/output/kintone/task/mode/input.csv
87
+ - src/test/resources/org/embulk/output/kintone/task/mode/insert_add_records.jsonl
88
+ - src/test/resources/org/embulk/output/kintone/task/mode/update_update_records.jsonl
89
+ - src/test/resources/org/embulk/output/kintone/task/mode/upsert_add_records.jsonl
90
+ - src/test/resources/org/embulk/output/kintone/task/mode/upsert_update_records.jsonl
91
+ - src/test/resources/org/embulk/output/kintone/task/mode/values.json
70
92
  homepage: https://github.com/trocco-io/embulk-output-kintone
71
93
  licenses:
72
94
  - MIT