embulk-output-kintone 0.3.6 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4db580dd68dc408de335d4c115a01394b794e0b1
4
- data.tar.gz: 420c0efc922b96404adce1f13e68611e12c7d6fa
3
+ metadata.gz: d405f264473164aaf9581956d1a5343fe993a4a1
4
+ data.tar.gz: 85988a65971c21fbc058401a9af1e600b8029f1d
5
5
  SHA512:
6
- metadata.gz: 03b503cff07e5b80f4fd0c1d57f81e74df997d5a07d710081e6058fcb3811492f1ba9e1e9b9ba1a3396727591445a6a1bc4f3684283c4d7bfaca099ad709f4a8
7
- data.tar.gz: 6b0e6f9d6d0753b559fdffa57b53a24884fb68d1b6e8daa0e6cd5c1a0e62f3124a2e2e1008a873f2768216bd1b99f2e5f0af9f60bc0a38c168fe70ffbaca01ec
6
+ metadata.gz: bc2eb92ad6fb1a200f4567aeb4e57baebbdf636a94ab40834c4864d48dc83891fa2fc23152e86e283fe28d7fa9248c1bd08497fd7f0ab4887def5ca3c6f5dafb
7
+ data.tar.gz: 9a8295b11401e64357a67ffb733e51f45e8321b68377e21e3d66cd50ea3c20f62bbf7c9d28e58d44b9fb805eb483b35af96e72868ecae383fb81d53935c0c6e5
@@ -12,6 +12,7 @@ import java.util.ArrayList;
12
12
  import java.util.Arrays;
13
13
  import java.util.Collections;
14
14
  import java.util.List;
15
+ import java.util.concurrent.TimeUnit;
15
16
  import java.util.stream.Collectors;
16
17
  import org.embulk.config.ConfigException;
17
18
  import org.embulk.config.TaskReport;
@@ -21,10 +22,13 @@ import org.embulk.spi.Page;
21
22
  import org.embulk.spi.PageReader;
22
23
  import org.embulk.spi.Schema;
23
24
  import org.embulk.spi.TransactionalPageOutput;
25
+ import org.slf4j.Logger;
26
+ import org.slf4j.LoggerFactory;
24
27
 
25
28
  public class KintonePageOutput implements TransactionalPageOutput {
26
29
  public static final int UPSERT_BATCH_SIZE = 10000;
27
30
  public static final int CHUNK_SIZE = 100;
31
+ private static final Logger LOGGER = LoggerFactory.getLogger(KintonePageOutput.class);
28
32
  private final PageReader pageReader;
29
33
  private final PluginTask task;
30
34
  private KintoneClient client;
@@ -128,6 +132,7 @@ public class KintonePageOutput implements TransactionalPageOutput {
128
132
  if (records.size() == CHUNK_SIZE) {
129
133
  client.record().addRecords(task.getAppId(), records);
130
134
  records.clear();
135
+ sleep();
131
136
  }
132
137
  }
133
138
  if (records.size() > 0) {
@@ -171,6 +176,7 @@ public class KintonePageOutput implements TransactionalPageOutput {
171
176
  if (updateRecords.size() == CHUNK_SIZE) {
172
177
  client.record().updateRecords(task.getAppId(), updateRecords);
173
178
  updateRecords.clear();
179
+ sleep();
174
180
  }
175
181
  }
176
182
  if (updateRecords.size() > 0) {
@@ -223,7 +229,8 @@ public class KintonePageOutput implements TransactionalPageOutput {
223
229
  });
224
230
  }
225
231
 
226
- private void upsert(ArrayList<Record> records, ArrayList<UpdateKey> updateKeys) {
232
+ private void upsert(ArrayList<Record> records, ArrayList<UpdateKey> updateKeys)
233
+ throws InterruptedException {
227
234
  if (records.size() != updateKeys.size()) {
228
235
  throw new RuntimeException("records.size() != updateKeys.size()");
229
236
  }
@@ -269,9 +276,11 @@ public class KintonePageOutput implements TransactionalPageOutput {
269
276
  if (insertRecords.size() == CHUNK_SIZE) {
270
277
  client.record().addRecords(task.getAppId(), insertRecords);
271
278
  insertRecords.clear();
279
+ sleep();
272
280
  } else if (updateRecords.size() == CHUNK_SIZE) {
273
281
  client.record().updateRecords(task.getAppId(), updateRecords);
274
282
  updateRecords.clear();
283
+ sleep();
275
284
  }
276
285
  }
277
286
  if (insertRecords.size() > 0) {
@@ -316,4 +325,13 @@ public class KintonePageOutput implements TransactionalPageOutput {
316
325
  private boolean existsRecord(List<String> distValues, UpdateKey updateKey) {
317
326
  return distValues.stream().anyMatch(v -> v.equals(updateKey.getValue().toString()));
318
327
  }
328
+
329
+ private void sleep() throws InterruptedException {
330
+ if (!task.getIntervalSeconds().isPresent()) {
331
+ return;
332
+ }
333
+ Integer interval = task.getIntervalSeconds().get();
334
+ LOGGER.info(String.format("sleep %d seconds.", interval));
335
+ TimeUnit.SECONDS.sleep(interval);
336
+ }
319
337
  }
@@ -48,4 +48,8 @@ public interface PluginTask extends Task {
48
48
  @Config("update_key")
49
49
  @ConfigDefault("null")
50
50
  Optional<String> getUpdateKeyName();
51
+
52
+ @Config("interval_seconds")
53
+ @ConfigDefault("null")
54
+ Optional<Integer> getIntervalSeconds();
51
55
  }
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.3.6
4
+ version: 0.4.0
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-11-22 00:00:00.000000000 Z
11
+ date: 2023-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -52,7 +52,7 @@ files:
52
52
  - README.md
53
53
  - Rakefile
54
54
  - build.gradle
55
- - classpath/embulk-output-kintone-0.3.6.jar
55
+ - classpath/embulk-output-kintone-0.4.0.jar
56
56
  - config/checkstyle/checkstyle.xml
57
57
  - config/checkstyle/default.xml
58
58
  - gradle/wrapper/gradle-wrapper.jar