summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImagePermissions.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-06-19 18:07:41 +0200
committerSimon Rettberg2015-06-19 18:07:41 +0200
commit3fba1e1e9d046598683a790074ee183c0f1176e6 (patch)
tree073b1df936d4252e0bdefd7bd085f43ffe32fbad /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImagePermissions.java
parent[server] Implemented getUsers call, more permission checking methods (diff)
downloadtutor-module-3fba1e1e9d046598683a790074ee183c0f1176e6.tar.gz
tutor-module-3fba1e1e9d046598683a790074ee183c0f1176e6.tar.xz
tutor-module-3fba1e1e9d046598683a790074ee183c0f1176e6.zip
Add flag to lecture that decides whether the lecture will automatically link to a new image version when one is uploaded; implement some more functionality
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImagePermissions.java')
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImagePermissions.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImagePermissions.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImagePermissions.java
index e254b085..9f089b42 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImagePermissions.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImagePermissions.java
@@ -2,11 +2,19 @@ package org.openslx.bwlp.sat.database.mappers;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.log4j.Logger;
+import org.openslx.bwlp.sat.database.Database;
+import org.openslx.bwlp.sat.database.MysqlConnection;
+import org.openslx.bwlp.sat.database.MysqlStatement;
import org.openslx.bwlp.thrift.iface.ImagePermissions;
public class DbImagePermissions {
+ private static final Logger LOGGER = Logger.getLogger(DbImagePermissions.class);
+
/**
* Build an instance of {@link ImagePermissions} by reading the given
* columns from the given {@link ResultSet}. If there are no permissions
@@ -61,4 +69,36 @@ public class DbImagePermissions {
return fromResultSet(rs, "canlinkdefault", "candownloaddefault", "caneditdefault", "canadmindefault");
}
+ /**
+ * Get permissions for the given image. IF <code>adminOnly</code> is true,
+ * only users with admin permissions will be returned.
+ *
+ * @param imageBaseId UUID of image
+ * @param adminOnly Only return users with admin permission
+ * @return
+ * @throws SQLException
+ */
+ public static Map<String, ImagePermissions> getForImageBase(String imageBaseId, boolean adminOnly)
+ throws SQLException {
+ try (MysqlConnection connection = Database.getConnection()) {
+ MysqlStatement stmt = connection.prepareStatement("SELECT userid, canlink, candownload, canedit, canadmin"
+ + " FROM imagepermission WHERE imagebaseid = :imagebaseid");
+ stmt.setString("imagebaseid", imageBaseId);
+ ResultSet rs = stmt.executeQuery();
+ Map<String, ImagePermissions> list = new HashMap<>();
+ while (rs.next()) {
+ boolean admin = rs.getBoolean("canadmin");
+ if (adminOnly && !admin)
+ continue;
+ ImagePermissions perm = new ImagePermissions(rs.getBoolean("canlink"),
+ rs.getBoolean("candownload"), rs.getBoolean("canedit"), admin);
+ list.put(rs.getString("userid"), perm);
+ }
+ return list;
+ } catch (SQLException e) {
+ LOGGER.error("Query failed in DbImagePermissions.getForImageBase()", e);
+ throw e;
+ }
+ }
+
}