From 548c095f6ab3297f8b0fbb141f7599d6acb6c80a Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 3 Sep 2015 19:11:32 +0200 Subject: [client] Fix NPE when deleting images while there are lectures with no image --- .../org/openslx/dozmod/thrift/ThriftActions.java | 29 ++++++++---------- .../java/org/openslx/dozmod/util/VmWrapper.java | 35 ++++++++++++++++++++++ 2 files changed, 47 insertions(+), 17 deletions(-) (limited to 'dozentenmodul/src/main/java/org/openslx') diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java index 9022534c..29a977d4 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java @@ -742,7 +742,7 @@ public class ThriftActions { List lectureList = ThriftManager.getSatClient().getLectureList( Session.getSatelliteToken(), 100); for (LectureSummary lecture : lectureList) { - if (lecture.getImageBaseId().equals(imageBaseId)) { + if (imageBaseId.equals(lecture.getImageBaseId())) { if (lecturesToBeDeleted == null) lecturesToBeDeleted = new ArrayList(); lecturesToBeDeleted.add(lecture); @@ -761,28 +761,24 @@ public class ThriftActions { "Fehler beim Holen der Versionen/Veranstaltung zu folgendes Image: " + imageBaseId); return; } - String questionText = ""; - if (versionToBeDeleted != null) { + String questionText; + if (versionToBeDeleted != null && !versionToBeDeleted.isEmpty()) { questionText = "Dieses Image hat folgende gültige Versionen:\n"; for (ImageVersionDetails version : versionToBeDeleted) { questionText += version.getVersionId() + "\n"; } + questionText += "\n"; } else { - questionText = "Dieses Image hat keine gültige Version.\n"; + questionText = ""; } - if (lecturesToBeDeleted != null) { - if (!questionText.isEmpty()) - questionText += "\n"; - questionText += "Dieses Image ist zu folgende Veranstaltungen verknüpft:\n"; + if (lecturesToBeDeleted != null && !lecturesToBeDeleted.isEmpty()) { + questionText += "Dieses Image ist mit folgenden Veranstaltungen verknüpft:\n"; for (LectureSummary lecture : lecturesToBeDeleted) { questionText += lecture.getLectureName() + "\n"; } - } else { - if (!questionText.isEmpty()) - questionText += "\n"; - questionText += "Dieses Image ist zu keine Veranstaltungen verknüpft.\n"; + questionText += "\n"; } - questionText += "\nWollen Sie dieses Image wirklich löschen?\n"; + questionText += "Wollen Sie dieses Image wirklich löschen?"; if (!userConfirmed(frame, questionText)) return; try { @@ -827,7 +823,7 @@ public class ThriftActions { boolean matches = false; if (lectureList != null && !lectureList.isEmpty()) { for (LectureSummary lecture : lectureList) { - if (lecture.getImageVersionId().equals(imageVersionId)) { + if (imageVersionId.equals(lecture.getImageVersionId())) { if (!matches) questionText = "Diese Version ist zu folgende Veranstaltungen verknüpft:\n"; matches = true; @@ -838,8 +834,7 @@ public class ThriftActions { questionText += "\nWollen Sie diese Version samt Veranstaltungen löschen?\n"; } if (!matches) - questionText = "Diese Version ist zu keine Veranstaltungen verknüpft.\n" - + "Wollen Sie sie wirklich löschen?"; + questionText = "Wollen Sie diese Image-Version wirklich löschen?"; if (!userConfirmed(frame, questionText)) return; @@ -1096,7 +1091,7 @@ public class ThriftActions { * @return true if the user confirmed (clicked yes), false otherwise */ private static boolean userConfirmed(final Frame frame, final String message) { - return Gui.showMessageBox(frame, message, MessageType.QUESTION_YESNO, LOGGER, null); + return Gui.showMessageBox(frame, message, MessageType.QUESTION_YESNO, null, null); } /** diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java index 3663a0ad..fc1623fc 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java @@ -3,6 +3,15 @@ package org.openslx.dozmod.util; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; +import java.lang.management.ManagementFactory; + +import javax.management.AttributeNotFoundException; +import javax.management.InstanceNotFoundException; +import javax.management.MBeanException; +import javax.management.MBeanServer; +import javax.management.MalformedObjectNameException; +import javax.management.ObjectName; +import javax.management.ReflectionException; import org.apache.commons.io.FileUtils; import org.apache.log4j.Logger; @@ -43,6 +52,15 @@ public class VmWrapper { } } } + vmwareConfig.addDisplayName(imageName); + int mem = getMainMemoryMb() / 2; + if (mem < 1024) { + mem = 1024; + } else if (mem > 4096) { + mem = 4096; + } + vmwareConfig.addRam(mem); + // Output vmx File vmxFile = new File(diskFile.getAbsolutePath() + ".vmx"); vmxFile.delete(); FileUtils.writeByteArrayToFile(vmxFile, vmwareConfig.getFilteredDefinitionArray()); @@ -77,4 +95,21 @@ public class VmWrapper { private static final long serialVersionUID = -7842986428831219758L; } + private static int getMainMemoryMb() { + MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); + Object attribute; + try { + attribute = mBeanServer.getAttribute(new ObjectName("java.lang", "type", "OperatingSystem"), + "TotalPhysicalMemorySize"); + } catch (AttributeNotFoundException | InstanceNotFoundException | MalformedObjectNameException + | MBeanException | ReflectionException e) { + return -1; + } + try { + return (int) (Long.parseLong(attribute.toString()) / (1024 * 1024)); + } catch (Exception e) { + return -1; + } + } + } -- cgit v1.2.3-55-g7522