diff options
author | Stephan Schwär | 2020-10-19 07:24:33 +0200 |
---|---|---|
committer | Stephan Schwär | 2020-10-19 07:24:33 +0200 |
commit | 553645f7beebbdc057e94bdaea9096d7e59a9729 (patch) | |
tree | c2b7d9938a63bd177d4d0f11116ff7ffc17e244d /dozentenmodul/src/main/java/org/openslx/dozmod/util | |
parent | [client] Improve cancel handling and feedback to user (diff) | |
download | tutor-module-553645f7beebbdc057e94bdaea9096d7e59a9729.tar.gz tutor-module-553645f7beebbdc057e94bdaea9096d7e59a9729.tar.xz tutor-module-553645f7beebbdc057e94bdaea9096d7e59a9729.zip |
[client] Better handling of ovfTool not found exception
+ Code cleanup
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/util')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/util/ConversionTaskWorker.java | 42 |
1 files changed, 26 insertions, 16 deletions
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<Boolean, String> { @@ -21,33 +23,38 @@ public class ConversionTaskWorker extends SwingWorker<Boolean, String> { 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<Boolean, String> { @Override protected void process(List<String> 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<Boolean, String> { 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<Boolean, String> { 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(); } |