X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fmeviz%2Fencoder%2FEncodingTask.java;h=535f8f7c897e4222a2af8705fe0b4b139d4cb59f;hb=76af31ee2b5fe6e26e897019fdb0bad9fbcaa93d;hp=9db5d927c1affb8f361ae4f7129bf213737287a3;hpb=50cb7085d553fdd82cd06806cd27b1675299f719;p=meviz.git diff --git a/src/main/java/eu/svjatoslav/meviz/encoder/EncodingTask.java b/src/main/java/eu/svjatoslav/meviz/encoder/EncodingTask.java index 9db5d92..535f8f7 100755 --- a/src/main/java/eu/svjatoslav/meviz/encoder/EncodingTask.java +++ b/src/main/java/eu/svjatoslav/meviz/encoder/EncodingTask.java @@ -11,49 +11,85 @@ package eu.svjatoslav.meviz.encoder; import java.io.File; -import eu.svjatoslav.meviz.encoder.converters.Converter; +import eu.svjatoslav.meviz.encoder.converters.AbstractConverter; public class EncodingTask { - /** - * Source file to encode - */ - private final File source; + /** + * Source file to encode + */ + private final File source; - /** - * Target file. - */ - private final File target; + /** + * Target file. + */ + private final File target; - private final Converter converter; + private final AbstractConverter converter; - private boolean useTerminal; + private boolean useTerminal; - public EncodingTask(final File source, final File destination, - final eu.svjatoslav.meviz.encoder.converters.Converter converter) { + public EncodingTask(final File source, final File destination, + final eu.svjatoslav.meviz.encoder.converters.AbstractConverter converter) { - this.source = source; - target = destination; - this.converter = converter; + this.source = source; + target = destination; + this.converter = converter; - } + } - /** - * @return the useTerminal - */ - public boolean doUseTerminal() { - return useTerminal; - } + /** + * @return the useTerminal + */ + public boolean doUseTerminal() { + return useTerminal; + } - public String getCommand(final EncodingOptions encodingOptions) { - return converter.getCommand(source, target, encodingOptions); - } + public String encodeApostrophes(final String input) { + final StringBuffer result = new StringBuffer(); - /** - * @param useTerminal - * the useTerminal to set - */ - public void setUseTerminal(final boolean useTerminal) { - this.useTerminal = useTerminal; - } + for (final char c : input.toCharArray()) { + if (c == '\'') { + result.append("'\\''"); + continue; + } + result.append(c); + } + + return result.toString(); + } + + public void execute(final EncodingOptions encodingOptions) { + try { + String command = getCommand(encodingOptions); + + if (doUseTerminal()) + command = "xterm -e '" + encodeApostrophes(command) + "'"; + + System.out.println("Executing command: " + command); + + final Runtime run = Runtime.getRuntime(); + Process pr; + pr = run.exec(new String[] { "/bin/bash", "-c", command }); + + pr.waitFor(); + + } catch (final Exception e) { + System.out.println(e.toString()); + e.printStackTrace(); + } + + } + + public String getCommand(final EncodingOptions encodingOptions) { + return converter.getCommand(source, target, encodingOptions); + } + + /** + * @param useTerminal + * the useTerminal to set + */ + public void setUseTerminal(final boolean useTerminal) { + this.useTerminal = useTerminal; + } }