summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
diff options
context:
space:
mode:
authorJonathan Bauer2018-06-25 14:05:18 +0200
committerJonathan Bauer2018-06-25 14:05:18 +0200
commite0fe4136cd5d93aad92363ec7dd06069a09d36d1 (patch)
tree4cbadcc15ba12bf39513d7b422eefb35c65d7adb /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
parent[client] more optimization on ImageDetailWindow (diff)
downloadtutor-module-e0fe4136cd5d93aad92363ec7dd06069a09d36d1.tar.gz
tutor-module-e0fe4136cd5d93aad92363ec7dd06069a09d36d1.tar.xz
tutor-module-e0fe4136cd5d93aad92363ec7dd06069a09d36d1.zip
[client] special default admin permissions case handling
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java44
1 files changed, 35 insertions, 9 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
index c2c1f1d9..544dcc69 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
@@ -94,6 +94,11 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
*/
private Map<String, LecturePermissions> customPermissions;
+ /**
+ * Did the user have admin rights due to default permissions?
+ */
+ private boolean adminRightsFromDefaultPermissions;
+
private final DialogChangeMonitor changeMonitor;
private final AbstractControlWrapper<?> changeListenerPermissions;
@@ -313,6 +318,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
lblImageNameInfo.setText(image.getImageName());
}
// init permission info
+ adminRightsFromDefaultPermissions = lecture.defaultPermissions.admin;
ctlPermissionManager.initPanel(customPermissions, lecture.defaultPermissions, lecture.ownerId);
chkCustomPermAdmin.setSelected(lecture.defaultPermissions.admin);
chkCustomPermEdit.setSelected(lecture.defaultPermissions.edit);
@@ -494,6 +500,14 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
: cboVersions.getItemAt(cboVersions.getSelectedIndex()).versionId;
}
+ // Special case similar to ImageDetailsWindow:if the user had admin rights
+ // through default permissions, first save custom permissions.
+ if (adminRightsFromDefaultPermissions && changeListenerPermissions.isCurrentlyChanged()) {
+ if (!saveCustomPermissions()) {
+ return false;
+ }
+ changeListenerPermissions.reset();
+ }
// first build the LectureWrite from the GUI fields
final LectureWrite metadata = new LectureWrite(txtTitle.getText(), txtDescription.getText(),
lecture.getImageVersionId(), chkAutoUpdate.isSelected(), chkIsActive.isSelected(),
@@ -503,7 +517,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
chkHasInternetAccess.isSelected(),
lecture.getDefaultPermissions(), ctlLocationSelector.getSelectedLocationsAsIds(),
ctlLocationSelector.getOnlyInSelection(),
- // TODO: coming "false" is Location related
+ // TODO limitOnlyToAllowedUsers, default to false for now
false, chkHasUsbAccess.isSelected());
metadata.setNetworkExceptions(ctlNetrulesConfigurator.getState(false));
metadata.setNetworkShares(ctlNetshareConfigurator.getState());
@@ -513,7 +527,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
try {
ThriftManager.getSatClient().updateLecture(Session.getSatelliteToken(),
lecture.getLectureId(), metadata);
- LOGGER.info("Successfully save new metadata");
+ LOGGER.info("Successfully saved new metadata");
} catch (TException e) {
ThriftError.showMessage(JOptionPane.getFrameForComponent(this), LOGGER, e,
"Fehler beim Speichern der Veranstaltung!");
@@ -521,13 +535,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
}
if (changeListenerPermissions.isCurrentlyChanged()) {
- try {
- ThriftManager.getSatClient().writeLecturePermissions(Session.getSatelliteToken(),
- lecture.lectureId, ctlPermissionManager.getPermissions());
- LOGGER.info("Successfully save new permissions");
- } catch (TException e) {
- ThriftError.showMessage(JOptionPane.getFrameForComponent(this), LOGGER, e,
- "Fehler beim Übertragen der Berechtigungen!");
+ if (!saveCustomPermissions()) {
return false;
}
}
@@ -536,6 +544,24 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
}
/**
+ * Helper to save custom user permissions.
+ *
+ * @return true if successfully saved, false otherwise.
+ */
+ private boolean saveCustomPermissions() {
+ try {
+ ThriftManager.getSatClient().writeLecturePermissions(Session.getSatelliteToken(),
+ lecture.lectureId, ctlPermissionManager.getPermissions());
+ LOGGER.info("Successfully saved custom permissions");
+ return true;
+ } catch (TException e) {
+ ThriftError.showMessage(JOptionPane.getFrameForComponent(this), LOGGER, e,
+ "Fehler beim Übertragen der Berechtigungen!");
+ }
+ return false;
+ }
+
+ /**
* Checks if the given start and end date represent a valid time period.
* This is the case, if start < end and if current time < end
*