com.actelion.research.util.Pipeline2FileWriter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of openchemlib Show documentation
Show all versions of openchemlib Show documentation
Open Source Chemistry Library
package com.actelion.research.util;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* Modest v. Korff
* Idorsia Pharmaceuticals Ltd.
* 17.06.2021 Start implementation
**/
public class Pipeline2FileWriter {
private FileWriter fw;
public Pipeline2FileWriter(Pipeline pipe, File fiOut) throws IOException {
fw = new FileWriter(fiOut);
Runnable runWrite = new Runnable() {
@Override
public void run() {
try {
boolean started=false;
while(!pipe.wereAllDataFetched()){
T t = pipe.pollData();
if(t == null) {
try {
Thread.sleep(250);
} catch (InterruptedException e) {
e.printStackTrace();
}
continue;
}
try {
if(started)
fw.write("\n");
fw.write(t.toString());
started=true;
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fw.close();
System.out.println("Pipeline2FileWriter finished writing " + fiOut.getAbsolutePath() + ".");
} catch (IOException e) {
e.printStackTrace();
}
}
}
};
ExecutorService executorServiceReadApprovedSymbols = Executors.newSingleThreadExecutor();
executorServiceReadApprovedSymbols.submit(runWrite);
executorServiceReadApprovedSymbols.shutdown();
}
}