diff options
author | Simon Rettberg | 2015-06-19 18:07:41 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-06-19 18:07:41 +0200 |
commit | 3fba1e1e9d046598683a790074ee183c0f1176e6 (patch) | |
tree | 073b1df936d4252e0bdefd7bd085f43ffe32fbad /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImagePermissions.java | |
parent | [server] Implemented getUsers call, more permission checking methods (diff) | |
download | tutor-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.java | 40 |
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; + } + } + } |