summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/permissions
diff options
context:
space:
mode:
authorJonathan Bauer2015-09-09 17:37:27 +0200
committerJonathan Bauer2015-09-09 17:37:27 +0200
commitf0ad55ae9078ef27e35e958538577243acd075f1 (patch)
tree84f0a8867a67c57fa8bd02d2117a5a9860b1811a /dozentenmodul/src/main/java/org/openslx/dozmod/permissions
parent[client] Allow setting master server address via command line (diff)
downloadtutor-module-f0ad55ae9078ef27e35e958538577243acd075f1.tar.gz
tutor-module-f0ad55ae9078ef27e35e958538577243acd075f1.tar.xz
tutor-module-f0ad55ae9078ef27e35e958538577243acd075f1.zip
[client] reworked def/custom permissions handling in ImageDetailsWindow
introduced PermsHelper.hasChanged(map1, map2) which returns whether two maps are equals (in their contents) CAVE: the whole CustomPermManager stuff currently works by giving the ImagePermissionWindow direct references to the members of ImageDetailsWindow. Therefore, we are currently ignoring the return value of ImageCustomPermissionWindow as the refs are updated when the user changes stuff. As a result we are back to the "clean" check within reactToInput() to determine whether change occured or not. Should be discussed if giving copies to ImageCustomPermissionWindow/Manager would be even cleaner...
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/permissions')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/permissions/DefaultCustomPerms.java2
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/permissions/PermsHelper.java39
2 files changed, 39 insertions, 2 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/DefaultCustomPerms.java b/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/DefaultCustomPerms.java
index bb05d182..e7b58a56 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/DefaultCustomPerms.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/DefaultCustomPerms.java
@@ -15,5 +15,3 @@ public class DefaultCustomPerms<T>{
this.defaultPermissions = defaultPermissions;
}
}
-
-
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/PermsHelper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/PermsHelper.java
new file mode 100644
index 00000000..d4a864dd
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/PermsHelper.java
@@ -0,0 +1,39 @@
+package org.openslx.dozmod.permissions;
+
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+import org.openslx.bwlp.thrift.iface.ImagePermissions;
+
+public class PermsHelper {
+
+ private static final Logger LOGGER = Logger.getLogger(PermsHelper.class);
+
+ private PermsHelper() {}
+
+ public static boolean hasChanged(final Map<String, ImagePermissions> oldMap, final Map<String, ImagePermissions> newMap) {
+ // build list of users that were added, if any return true
+ Set<String> addedUsers = new HashSet<String>(newMap.keySet());
+ addedUsers.removeAll(oldMap.keySet());
+ if (!addedUsers.isEmpty())
+ return true;
+ // build list of users that were removed, if any return true
+ Set<String> removedUsers = new HashSet<String>(oldMap.keySet());
+ removedUsers.removeAll(newMap.keySet());
+ if (!removedUsers.isEmpty())
+ return true;
+ // no changes in the users, lets check for changes in each users permissions
+ for (Entry<String, ImagePermissions> entry : oldMap.entrySet()) {
+ ImagePermissions current = entry.getValue();
+ ImagePermissions toCheck = newMap.get(entry.getKey());
+ if (!current.equals(toCheck))
+ return true;
+ }
+ // everything was the same if we are still here
+ return false;
+ }
+
+}