Java-Swingアプリの集計、分析等はPythonで処理していますが、処理内容によってコードを使い分けるようにしました。
import java.util.ArrayList;
public class ProcessExecutor {
public static void exec(String type) throws Exception {
System.out.println("ProcessExecutor");
// 分類用リスト作成 集計:agg,分析:ana,血統:blo 以降随時追加
ArrayList<String> types = new ArrayList<String>();
types.add("agg");
types.add("ana");
types.add("blo");
// case番号を付番
int type_num = types.indexOf(type);
System.out.println("case番号 " + type_num);
switch(type_num) {
case 0: // 集計
String cmd0 = "python HS_csv_agg.py ; echo 'コマンド完了'";
ProcessBuilder p0 = new ProcessBuilder("sh", "-c", cmd0);
p0.redirectErrorStream(true);
// プロセス開始
Process process0 = p0.start();
// プロセス終了まで待機
process0.waitFor();
int result = process0.exitValue();
System.out.printf("result = %d%n", result);
break;
case 1: // 分析
String cmd1 = "python HS_csv_ana.py ; echo 'コマンド完了'";
ProcessBuilder p1 = new ProcessBuilder("sh", "-c", cmd1);
p1.redirectErrorStream(true);
// プロセス開始
Process process1 = p1.start();
// プロセス終了まで待機
process1.waitFor();
int result1 = process1.exitValue();
System.out.printf("result = %d%n", result1);
break;
}
}
}