From 553645f7beebbdc057e94bdaea9096d7e59a9729 Mon Sep 17 00:00:00 2001 From: Stephan Schwär Date: Mon, 19 Oct 2020 14:24:33 +0900 Subject: [client] Better handling of ovfTool not found exception + Code cleanup --- .../openslx/dozmod/util/ConversionTaskWorker.java | 42 +++++++++++++--------- 1 file changed, 26 insertions(+), 16 deletions(-) (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/util') diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/util/ConversionTaskWorker.java b/dozentenmodul/src/main/java/org/openslx/dozmod/util/ConversionTaskWorker.java index 3e305e5f..e80e541c 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/util/ConversionTaskWorker.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/util/ConversionTaskWorker.java @@ -11,6 +11,8 @@ import java.util.concurrent.ExecutionException; import javax.swing.SwingWorker; import org.apache.log4j.Logger; +import org.openslx.dozmod.gui.Gui; +import org.openslx.dozmod.gui.helper.MessageType; import org.openslx.dozmod.gui.wizard.page.ImageOvfConversionPage; public class ConversionTaskWorker extends SwingWorker { @@ -21,33 +23,38 @@ public class ConversionTaskWorker extends SwingWorker { private ImageOvfConversionPage page; private Process process = null; private String conversionCancelledText = "Konvertierung abgebrochen!"; + private String ovfToolPath = "ovftool"; - public ConversionTaskWorker(File srcFile, File destFile, ImageOvfConversionPage page) { + /** + * Converts a given ovf and associated vmdk into an vmx and associated vmdk file + * via the vmWare ovftool Ovf images created with virtualBox are not supported. + * + * @param srcFile: Ovf source file + * @param destFile: Desired destination file + * @param page: Page that creates and starts the worker + * @param ovfToolPath: Path to the ovftool on the system + */ + public ConversionTaskWorker(File srcFile, File destFile, ImageOvfConversionPage page, String ovfToolPath) { this.srcFile = srcFile; this.destFile = destFile; this.page = page; + if (ovfToolPath != null) { + this.ovfToolPath = ovfToolPath; + } } @Override protected Boolean doInBackground() throws Exception { - try { - process = new ProcessBuilder("ovftool", srcFile.getAbsolutePath(), destFile.getAbsolutePath()).start(); - } catch (IOException e) { - return false; - } + process = new ProcessBuilder(ovfToolPath, srcFile.getAbsolutePath(), destFile.getAbsolutePath()).start(); + InputStream is = process.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line; LOGGER.info("Running OVFTool"); - try { - while ((line = br.readLine()) != null) { - LOGGER.debug(line); - publish(line); - } - } catch (IOException e) { - LOGGER.error(e); - + while ((line = br.readLine()) != null) { + LOGGER.debug(line); + publish(line); } return true; } @@ -55,8 +62,7 @@ public class ConversionTaskWorker extends SwingWorker { @Override protected void process(List chunks) { // Don't update the gui progress bar and text if cancelled as this thread my run - // longer - // and override our cancelled notifications. + // longer and override our cancelled notifications. if (isCancelled()) return; String progressText = chunks.get(chunks.size() - 1); @@ -68,6 +74,7 @@ public class ConversionTaskWorker extends SwingWorker { page.updateConversionProgressbar(progressInt); } catch (NumberFormatException e) { // We are only interested in integers for the progressbar + // should therefore be OK to discard the exceptions here. } } @@ -79,13 +86,16 @@ public class ConversionTaskWorker extends SwingWorker { page.danglingConversion = false; page.updateConversionProgressbar(100); } catch (InterruptedException e) { + LOGGER.debug("Conversion execution interrupted", e); process.destroy(); page.updateConversionProgressbarText(conversionCancelledText); } catch (CancellationException e) { + LOGGER.debug("Conversion execution Cancelled", e); process.destroy(); page.updateConversionProgressbarText(conversionCancelledText); } catch (ExecutionException e) { e.printStackTrace(); + Gui.showMessageBox(page, "Beim konvertieren ist ein Fehler aufgetreten.", MessageType.ERROR, LOGGER, e); } super.done(); } -- cgit v1.2.3-55-g7522