summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
diff options
context:
space:
mode:
authorStephan Schwaer2015-10-12 17:27:06 +0200
committerStephan Schwaer2015-10-12 17:27:06 +0200
commiteca98bc96585144a39a7d8e8adf29382d0d3fb71 (patch)
tree5bade1d5a10db9c92ec965a2e08e7b5909e8cf55 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
parent[client] Show date of version to be deleted and fix to correctly check permis... (diff)
downloadtutor-module-eca98bc96585144a39a7d8e8adf29382d0d3fb71.tar.gz
tutor-module-eca98bc96585144a39a7d8e8adf29382d0d3fb71.tar.xz
tutor-module-eca98bc96585144a39a7d8e8adf29382d0d3fb71.zip
[client] Now possible for default admin to remove default admin permissions without exception.
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java46
1 files changed, 31 insertions, 15 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
index d42e9095..52fe9279 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
@@ -27,8 +27,6 @@ import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
import org.apache.log4j.Logger;
import org.apache.thrift.TException;
@@ -420,15 +418,25 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
* @return false if any try to save changes failed, true otherwise
*/
private boolean saveChangesInternal() {
- // first build the ImageBaseWrite from the GUI fields
- final ImageBaseWrite ibw = new ImageBaseWrite(txtTitle.getText(), txtDescription.getText(),
- cboOperatingSystem.getItemAt(cboOperatingSystem.getSelectedIndex()).osId, image.virtId,
- chkIsTemplate.isSelected(), new ImagePermissions(image.defaultPermissions.link,
- image.defaultPermissions.download, image.defaultPermissions.edit,
- image.defaultPermissions.admin),
- cboShareMode.getItemAt(cboShareMode.getSelectedIndex()));
+
+ // We might only have admin perms because of the default permissions,
+ // so we first write the permission map because we might remove our own default admin permissions.
+ if (originalDefaultPermissions.admin && permissionsChanged) {
+ if (!writeImagePermMap())
+ return false;
+ LOGGER.info("Successfully saved new permissions");
+ permissionsChanged = false;
+ }
+
// now trigger the actual action
if (metadataChanged) {
+ // first build the ImageBaseWrite from the GUI fields
+ final ImageBaseWrite ibw = new ImageBaseWrite(txtTitle.getText(), txtDescription.getText(),
+ cboOperatingSystem.getItemAt(cboOperatingSystem.getSelectedIndex()).osId, image.virtId,
+ chkIsTemplate.isSelected(), new ImagePermissions(image.defaultPermissions.link,
+ image.defaultPermissions.download, image.defaultPermissions.edit,
+ image.defaultPermissions.admin),
+ cboShareMode.getItemAt(cboShareMode.getSelectedIndex()));
try {
ThriftActions.updateImageBase(image.getImageBaseId(), ibw);
} catch (TException e) {
@@ -439,20 +447,28 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
LOGGER.info("Successfully saved new metadata");
metadataChanged = false;
}
+
+ // if we haven't written the permission map yet and the permissions have changed
if (permissionsChanged) {
- try {
- ThriftActions.writeImagePermissions(image.getImageBaseId(), customPermissions);
- } catch (TException e) {
- ThriftError.showMessage(me, LOGGER, e,
- "Konnte geänderte Berechtigungen nicht an den Server übermitteln");
+ if (!writeImagePermMap())
return false;
- }
LOGGER.info("Successfully saved new permissions");
permissionsChanged = false;
}
return true;
}
+ private boolean writeImagePermMap() {
+ try {
+ ThriftActions.writeImagePermissions(image.getImageBaseId(), customPermissions);
+ } catch (TException e) {
+ ThriftError.showMessage(me, LOGGER, e,
+ "Konnte geänderte Berechtigungen nicht an den Server übermitteln");
+ return false;
+ }
+ return true;
+ }
+
/**
* Triggers the download of the given image version
*