diff options
author | Stephan Schwaer | 2015-10-12 17:27:06 +0200 |
---|---|---|
committer | Stephan Schwaer | 2015-10-12 17:27:06 +0200 |
commit | eca98bc96585144a39a7d8e8adf29382d0d3fb71 (patch) | |
tree | 5bade1d5a10db9c92ec965a2e08e7b5909e8cf55 /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) | |
download | tutor-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.java | 46 |
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 * |