summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Schwär2021-02-19 04:08:04 +0100
committerStephan Schwär2021-02-19 04:08:04 +0100
commit7631383a56fc7dd5e5621ef0efa81e0c777f3218 (patch)
tree4b0e8ba2b510c86184d3342fadd9229b542d540e
parentMerge remote-tracking branch 'origin/feature/qemu-integration' into feature-m... (diff)
parent[client] Improve error handling for vmwarevm (diff)
downloadtutor-module-7631383.tar.gz
tutor-module-7631383.tar.xz
tutor-module-7631383.zip
Merge branch 'feature/vmwarevm-support' into feature-merge
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java39
-rw-r--r--dozentenmodul/src/main/properties/i18n/page.properties6
-rw-r--r--dozentenmodul/src/main/properties/i18n/page_de_DE.properties6
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.