embulk-output-kintone 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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