/** * * @author Christian Moll * */ package de.lazyzero.kkMulticopterFlashTool.utils.avra; import static lu.tudor.santec.i18n.Translatrix._; import java.io.BufferedInputStream; import java.io.File; import java.io.IOException; import java.util.Vector; import de.lazyzero.kkMulticopterFlashTool.KKMulticopterFlashTool; public class Avra { private KKMulticopterFlashTool parent; private AvraCommandLine commandLine; public Avra(KKMulticopterFlashTool parent, AvraCommandLine commandline) { this.parent = parent; this.commandLine = commandline; } public boolean compile() { boolean success = true; try { int exitValue = runCommand(); if (exitValue != 0) { success = false; } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); success = false; } return success; } public void clean() { try { this.commandLine.clean(); } catch (IOException e) { parent.print(_("compile.avra.unable2delete")); e.printStackTrace(); } } private int runCommand() throws Exception { parent.println("working dir: " + this.commandLine.getWorkingDir().getAbsolutePath()); Vector<String> cmd = this.commandLine.getCommandLine(); for (String s : cmd) { parent.print(s + " "); } parent.println(""); String [] cmdArray = new String [cmd.size()]; cmd.toArray(cmdArray); final Process p = Runtime.getRuntime().exec(cmdArray, null, this.commandLine.getWorkingDir()); new Thread() { public void run() { int line; BufferedInputStream bis = new BufferedInputStream(p.getErrorStream()); try { while ((line = bis.read()) != -1) { parent.print(((char)line)+""); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }.start(); new Thread() { public void run() { int line; BufferedInputStream bis = new BufferedInputStream(p.getInputStream()); try { while ((line = bis.read()) != -1) { parent.print(((char)line)+""); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }.start(); p.waitFor(); return p.exitValue(); } public File getHexFile() { try { return commandLine.getHexFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }