X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fmeviz%2Fencoder%2FEncodingTask.java;h=ea142d3db69b67ffeb8bdef37b5c540629bd027d;hb=567410640f4e0428caf9de9fc83df4c73f0e5067;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..ea142d3 100755 --- a/src/main/java/eu/svjatoslav/meviz/encoder/EncodingTask.java +++ b/src/main/java/eu/svjatoslav/meviz/encoder/EncodingTask.java @@ -1,17 +1,17 @@ /* * Meviz - Various tools collection to work with multimedia. - * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu - * + * Copyright (C) 2012 -- 2019, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu + * * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public License - * as published by the Free Software Foundation. - */ + * modify it under the terms of version 3 of the GNU Lesser General Public License + * or later as published by the Free Software Foundation. +*/ package eu.svjatoslav.meviz.encoder; -import java.io.File; +import eu.svjatoslav.meviz.encoder.converters.AbstractConverter; -import eu.svjatoslav.meviz.encoder.converters.Converter; +import java.io.File; public class EncodingTask { @@ -25,33 +25,67 @@ public class EncodingTask { */ private final File target; - private final Converter converter; - + private final AbstractConverter converter; + private final String targetFormat; 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 target, final AbstractConverter converter, + final String targetFormat) { this.source = source; - target = destination; + this.target = target; this.converter = converter; - + this.targetFormat = targetFormat; } /** * @return the useTerminal */ - public boolean doUseTerminal() { + private boolean doUseTerminal() { return useTerminal; } - public String getCommand(final EncodingOptions encodingOptions) { - return converter.getCommand(source, target, encodingOptions); + private String encodeApostrophes(final String input) { + final StringBuilder result = new StringBuilder(); + + 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 runtime = Runtime.getRuntime(); + final Process process = runtime.exec(new String[]{"/bin/bash", "-c", command}); + + process.waitFor(); + + } catch (final Exception e) { + System.out.println(e.toString()); + e.printStackTrace(); + } + + } + + private String getCommand(final EncodingOptions encodingOptions) { + return converter.getCommand(source, target, encodingOptions, targetFormat); } /** - * @param useTerminal - * the useTerminal to set + * @param useTerminal the useTerminal to set */ public void setUseTerminal(final boolean useTerminal) { this.useTerminal = useTerminal;