You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wayang.apache.org by rp...@apache.org on 2022/11/30 11:57:32 UTC
[incubator-wayang] 01/02: Iterator process to download and continue with the pipeline
This is an automated email from the ASF dual-hosted git repository.
rpardomeza pushed a commit to branch WAYANG-agoraeo
in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git
commit 46980ab85c81a141841e25d5d3b3c16509a83000
Author: Rodrigo Pardo Meza <ro...@gmail.com>
AuthorDate: Wed Nov 30 12:45:34 2022 +0100
Iterator process to download and continue with the pipeline
---
.../iterators/IteratorSentinelDownload.java | 63 ++++++++++++++++++++++
1 file changed, 63 insertions(+)
diff --git a/wayang-plugins/wayang-agoraeo/src/main/java/org/apache/wayang/agoraeo/iterators/IteratorSentinelDownload.java b/wayang-plugins/wayang-agoraeo/src/main/java/org/apache/wayang/agoraeo/iterators/IteratorSentinelDownload.java
new file mode 100644
index 00000000..33c769a8
--- /dev/null
+++ b/wayang-plugins/wayang-agoraeo/src/main/java/org/apache/wayang/agoraeo/iterators/IteratorSentinelDownload.java
@@ -0,0 +1,63 @@
+package org.apache.wayang.agoraeo.iterators;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Iterator;
+import java.util.stream.Stream;
+
+public abstract class IteratorSentinelDownload<Input> implements Iterator<Input> {
+
+ private String _name = "";
+ private String command = "";
+ private Process process = null;
+ private Iterator<Input> iteratorProcess = null;
+
+ public IteratorSentinelDownload(String name, String command) {
+ this.command = command;
+ this._name = name;
+ }
+
+ @Override
+ public boolean hasNext() {
+ if(this.process == null){
+ return startProcess();
+ }
+ if( !this.process.isAlive() ){
+ return this.iteratorProcess.hasNext();
+ }
+ return true;
+ }
+
+ @Override
+ public Input next() {
+ if( ! this.iteratorProcess.hasNext()){
+ return this.getDefaultValue();
+ }
+ return this.iteratorProcess.next();
+ }
+
+ private boolean startProcess(){
+ try {
+ final String name = this._name;
+ this.process = Runtime.getRuntime().exec(this.command);
+ this.iteratorProcess = getLogic(
+ new BufferedReader(
+ new InputStreamReader(
+ process.getInputStream()
+ )
+ ).lines()
+ ).iterator();
+ return true;
+ } catch (IOException e) {}
+ return false;
+ }
+
+ protected abstract Stream<Input> getLogic(Stream<String> baseline);
+
+ protected abstract Input getDefaultValue();
+
+ protected String getName(){
+ return this._name;
+ }
+}