embulk-output-kintone 0.3.6 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +1 -0
- data/.gitignore +0 -1
- data/build.gradle +18 -19
- data/classpath/embulk-output-kintone-0.4.1.jar +0 -0
- data/classpath/shadow-kintone-java-client-0.4.1-all.jar +0 -0
- data/gradle/wrapper/gradle-wrapper.properties +1 -1
- data/settings.gradle +2 -0
- data/shadow-kintone-java-client/build.gradle +35 -0
- data/src/main/java/org/embulk/output/kintone/KintonePageOutput.java +168 -105
- data/src/main/java/org/embulk/output/kintone/KintoneRetryOption.java +19 -0
- data/src/main/java/org/embulk/output/kintone/PluginTask.java +4 -0
- data/src/test/java/com/kintone/client/Json.java +16 -0
- data/src/test/java/org/embulk/output/kintone/KintoneColumnOptionBuilder.java +63 -0
- data/src/test/java/org/embulk/output/kintone/KintoneColumnVisitorTest.java +297 -0
- data/src/test/java/org/embulk/output/kintone/KintoneColumnVisitorVerifier.java +52 -0
- data/src/test/java/org/embulk/output/kintone/KintonePageOutputVerifier.java +226 -0
- data/src/test/java/org/embulk/output/kintone/OutputPageBuilder.java +92 -0
- data/src/test/java/org/embulk/output/kintone/TestKintoneOutputPlugin.java +163 -1
- data/src/test/java/org/embulk/output/kintone/TestTask.java +40 -0
- data/src/test/java/org/embulk/output/kintone/TestTaskMode.java +31 -0
- data/src/test/resources/logback-test.xml +14 -0
- data/src/test/resources/org/embulk/output/kintone/config.yml +4 -0
- data/src/test/resources/org/embulk/output/kintone/task/config.yml +1 -0
- data/src/test/resources/org/embulk/output/kintone/task/mode/config.yml +54 -0
- data/src/test/resources/org/embulk/output/kintone/task/mode/input.csv +7 -0
- data/src/test/resources/org/embulk/output/kintone/task/mode/insert_add_records.jsonl +6 -0
- data/src/test/resources/org/embulk/output/kintone/task/mode/update_update_records.jsonl +3 -0
- data/src/test/resources/org/embulk/output/kintone/task/mode/upsert_add_records.jsonl +2 -0
- data/src/test/resources/org/embulk/output/kintone/task/mode/upsert_update_records.jsonl +4 -0
- data/src/test/resources/org/embulk/output/kintone/task/mode/values.json +1 -0
- metadata +25 -3
- data/classpath/embulk-output-kintone-0.3.6.jar +0 -0
@@ -1,3 +1,165 @@
|
|
1
1
|
package org.embulk.output.kintone;
|
2
2
|
|
3
|
-
|
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 @@
|
|
1
|
+
{}
|
@@ -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
|
+
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:
|
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.
|
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
|
Binary file
|