diff options
author | Stephan Schwär | 2021-02-19 04:08:04 +0100 |
---|---|---|
committer | Stephan Schwär | 2021-02-19 04:08:04 +0100 |
commit | 7631383a56fc7dd5e5621ef0efa81e0c777f3218 (patch) | |
tree | 4b0e8ba2b510c86184d3342fadd9229b542d540e | |
parent | Merge remote-tracking branch 'origin/feature/qemu-integration' into feature-m... (diff) | |
parent | [client] Improve error handling for vmwarevm (diff) | |
download | tutor-module-7631383a56fc7dd5e5621ef0efa81e0c777f3218.tar.gz tutor-module-7631383a56fc7dd5e5621ef0efa81e0c777f3218.tar.xz tutor-module-7631383a56fc7dd5e5621ef0efa81e0c777f3218.zip |
Merge branch 'feature/vmwarevm-support' into feature-merge
3 files changed, 49 insertions, 2 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java index eb5e3d4e..c764bee3 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java @@ -6,6 +6,7 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; import java.io.FileNotFoundException; +import java.io.FilenameFilter; import java.io.IOException; import java.util.List; @@ -132,6 +133,42 @@ public class ImageUploadPage extends ImageUploadPageLayout { int action = fc.showOpenDialog(getDialog()); File file = fc.getSelectedFile(); + if (action == JFileChooser.APPROVE_OPTION) { + // If the vm was exported via vmware fusion on macos it might be + // a vmwarevm which is a directory containing the vm files within. + if (file != null && file.isDirectory()) { + try { + File[] vmxfiles = file.listFiles(new FilenameFilter() { + public boolean accept(File dir, String filename) { + return filename.endsWith(".vmx"); + } + }); + + // There should be only one vmx file in the directory + if (vmxfiles.length < 1) { + // TODO translate + Gui.showMessageBox(this, + I18n.PAGE.getString("ImageUpload.WizardPage.errorMessage.noVmxInDir"), + MessageType.ERROR, LOGGER, null); + return; + } else if (vmxfiles.length >= 2) { + Gui.showMessageBox(this, + I18n.PAGE.getString( + "ImageUpload.WizardPage.errorMessage.multipleVmxInDirFound"), + MessageType.ERROR, LOGGER, null); + } + if (vmxfiles[0] != null && vmxfiles[0].isFile()) + file = vmxfiles[0]; + } catch (Exception e) { + Gui.showMessageBox(this, + I18n.PAGE.getString( + "ImageUpload.WizardPage.errorMessage.errorWhileSearchingForVmx"), + MessageType.ERROR, LOGGER, e); + return; + } + } + } + if (action != JFileChooser.APPROVE_OPTION || file == null) return; vmSelected(file.getAbsoluteFile()); @@ -143,8 +180,6 @@ public class ImageUploadPage extends ImageUploadPageLayout { I18n.PAGE.getString("ImageUpload.WizardPage.dialog.OvfOvaDetected"), I18n.PAGE.getString("ImageUpload.WizardPage.dialog.title"), dialogButton); if (dialogResult == 0) { - // txtImageFile.setText(file.getAbsolutePath()); - // txtImageName.setText(state.meta.getDisplayName()); state.descriptionFile = file; setErrorMessage(null); setDescription("Bitte starten Sie die Konvertierung."); diff --git a/dozentenmodul/src/main/properties/i18n/page.properties b/dozentenmodul/src/main/properties/i18n/page.properties index 205480cc..39b984de 100644 --- a/dozentenmodul/src/main/properties/i18n/page.properties +++ b/dozentenmodul/src/main/properties/i18n/page.properties @@ -38,6 +38,12 @@ ImageUpload.WizardPage.dialog.OvfOvaDetected=The selected virtual machine is in Do you want to convert the virtual machine?\n\ (The original virtual machine will not be modified.) ImageUpload.WizardPage.dialog.title=Convert virtual machine? +ImageUpload.WizardPage.errorMessage.noVmxInDir=There was no vmx file found in the selected .vmwarevm directory.\n\ + Please make sure that a valid .vmwarevm directory has been selected. +ImageUpload.WizardPage.errorMessage.multipleVmxInDirFound=There appear to be multiple vmx files in the selected .vmwarevm directory,\n\ + of which the first one has been selected. If this does not seem correct\n\ + please make sure that only the correct .vmx file is bundled with the\n virtual machine that should be uploaded. +ImageUpload.WizardPage.errorMessage.errorWhileSearchingForVmx=An error occured while trying to search for .vmx files in the directory. # ImageOvfConversionPage ImageOvfConversion.MessageBox.notAVmwareOrVboxImage=The selected file does not appear to be a virtual machine\n\ diff --git a/dozentenmodul/src/main/properties/i18n/page_de_DE.properties b/dozentenmodul/src/main/properties/i18n/page_de_DE.properties index 5d6e7ce1..8d395a91 100644 --- a/dozentenmodul/src/main/properties/i18n/page_de_DE.properties +++ b/dozentenmodul/src/main/properties/i18n/page_de_DE.properties @@ -37,6 +37,12 @@ ImageUpload.WizardPage.dialog.OvfOvaDetected=Sie haben ein Image im ovf Format a des OVF Tool von VMware in ein kompatibles vmx Image umgewandelt werden können. \n\ Möchten sie das Image konvertieren? (Das original Image bleibt unverändert.) ImageUpload.WizardPage.dialog.title=Image konvertieren? +ImageUpload.WizardPage.errorMessage.noVmxInDir=Es wurde keine .vmx Datei im .vmwarevm Verzeichnis gefunden!\n\ + Bitte stellen Sie sicher, dass es sich um ein valides .vmwarevm Verzeichnis handelt. +ImageUpload.WizardPage.errorMessage.multipleVmxInDirFound=Im ausgewählten .vmwarevm Verzeichnis wurden mehrere .vmx Dateien gefunden.\n\ + Die erste .vmx Datei wurde ausgewählt. Bitte stellen Sie sicher, dass die Korrekte Datei ausgewählt wurde.\n\ + Falls dies nicht der Fall ist, stellen Sie bitte sicher, dass sich nur eine .vmx Datei im .vmwarevm Verzeichnis befindet. +ImageUpload.WizardPage.errorMessage.errorWhileSearchingForVmx=Beim Suchen nach einer .vmx Datei im (vmwarevm) Verzeichnis ist ein Fehler aufgetreten! # ImageOvfConversionPage ImageOvfConversion.MessageBox.notAVmwareOrVboxImage=Die ausgewählte Datei scheint kein mit VMware oder VirtualBox erstelltes Image zu sein. |