package keel.Algorithms.UnsupervisedLearning.AssociationRules.FuzzyRuleLearning.Fingrams; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.List; public class SystemCommandExecutor { private List<String> commandInformation; private String adminPassword; private ThreadedStreamHandler inputStreamHandler; private ThreadedStreamHandler errorStreamHandler; public SystemCommandExecutor(final List<String> commandInformation) { if (commandInformation == null) throw new NullPointerException( "The commandInformation is required."); this.commandInformation = commandInformation; this.adminPassword = null; } public int executeCommand() throws IOException, InterruptedException { int exitValue = -99; try { ProcessBuilder pb = new ProcessBuilder(commandInformation); Process process = pb.start(); OutputStream stdOutput = process.getOutputStream(); InputStream inputStream = process.getInputStream(); InputStream errorStream = process.getErrorStream(); inputStreamHandler = new ThreadedStreamHandler(inputStream, stdOutput, adminPassword); errorStreamHandler = new ThreadedStreamHandler(errorStream); inputStreamHandler.start(); errorStreamHandler.start(); exitValue = process.waitFor(); //System.out.println("Finalizing executeCommand"); inputStreamHandler.interrupt(); errorStreamHandler.interrupt(); inputStreamHandler.join(); errorStreamHandler.join(); } catch (IOException e) { throw e; } catch (InterruptedException e) { throw e; } finally { return exitValue; } } public StringBuilder getStandardOutputFromCommand() { return inputStreamHandler.getOutputBuffer(); } public StringBuilder getStandardErrorFromCommand() { return errorStreamHandler.getOutputBuffer(); } }