前回の続きです。switch文の重複部分が気になったので書き直しました。こちらの方がメンテナンス性も優れており断然スマートです。
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");
// cmdリスト作成
ArrayList<String> cmds = new ArrayList<String>();
cmds.add("python HS_csv_agg.py ; echo 'コマンド完了'");
cmds.add("python HS_csv_ana.py ; echo 'コマンド完了'");
// index番号取得
int type_num = types.indexOf(type);
System.out.println("index番号 " + type_num);
// コマンド選択
String cmd = cmds.get(type_num);
ProcessBuilder p = new ProcessBuilder("sh", "-c", cmd);
p.redirectErrorStream(true);
// プロセス開始
Process process = p.start();
// プロセス終了まで待機
process.waitFor();
int result = process.exitValue();
System.out.printf("result = %d%n", result);
}
}