diff options
-rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java index e1031bea..c901b7c5 100644 --- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java @@ -82,7 +82,8 @@ public class DbImage { MysqlStatement stmt = null; // Students should only be able to request a download of an image. Therefore not all information is needed for this task. if (user != null && user.role == Role.STUDENT) { - stmt = connection.prepareStatement("SELECT i.imagebaseid, i.latestversionid, i.virtid, i.osid" + stmt = connection.prepareStatement("SELECT i.imagebaseid, i.latestversionid, i.virtid, i.osid," + + " i.canlinkdefault, i.candownloaddefault, i.caneditdefault, i.canadmindefault" + " FROM imagebase i" + " LEFT JOIN imagepermission perm ON (i.imagebaseid = perm.imagebaseid AND perm.userid = :userid)" + " WHERE i.imagebaseid = :imagebaseid"); @@ -108,8 +109,14 @@ public class DbImage { ImageDetailsRead image; if (user != null && user.role == Role.STUDENT) { // Students should only have download permissions. - // todo evaluate if this is needed and if there is a nicer way to create ImageDetailsRead object - ImagePermissions defaultPermissions = new ImagePermissions(false, true, false, false); + ImagePermissions defaultPermissions = DbImagePermissions.fromResultSetDefault(rs); + for (ImageVersionDetails version : versions) { + defaultPermissions.admin = false; + defaultPermissions.edit = false; + if (version.isRestricted) { + defaultPermissions.download = false; + } + } image = new ImageDetailsRead(rs.getString("imagebaseid"), rs.getString("latestversionid"), versions, "DownloadedImage", null, tags, 0, rs.getString("virtid"), 0, 0, null, null, null, false, defaultPermissions); @@ -125,6 +132,11 @@ public class DbImage { image.setUserPermissions(DbImagePermissions.fromResultSetUser(rs)); } User.setCombinedUserPermissions(image, user); + if (!image.userPermissions.download) { + for (ImageVersionDetails version : versions) { + version.imagePath = null; + } + } return image; } catch (SQLException e) { LOGGER.error("Query failed in DbImage.getImageDetails()", e); @@ -263,13 +275,13 @@ public class DbImage { if (user != null && user.role == Role.STUDENT) { stmt = connection.prepareStatement("SELECT" + " imageversionid, createtime, expiretime, filesize," - + " isrestricted, isvalid, isprocessed" + + " isrestricted, isvalid, isprocessed, NULL AS filepath" + " FROM imageversion" + " WHERE imagebaseid = :imagebaseid AND isrestricted = 0"); } else { stmt = connection.prepareStatement("SELECT" + " imageversionid, createtime, expiretime, filesize, uploaderid," - + " isrestricted, isvalid, isprocessed" + + " isrestricted, isvalid, isprocessed, filepath" + " FROM imageversion" + " WHERE imagebaseid = :imagebaseid"); } @@ -283,11 +295,13 @@ public class DbImage { if (user == null || user.role != Role.STUDENT) { uploaderID = rs.getString("uploaderid"); } - versionList.add(new ImageVersionDetails(imageVersionId, rs.getLong("createtime"), + ImageVersionDetails v = new ImageVersionDetails(imageVersionId, rs.getLong("createtime"), rs.getLong("expiretime"), rs.getLong("filesize"), uploaderID, rs.getByte("isrestricted") != 0, rs.getByte("isvalid") != 0, rs.getByte("isprocessed") != 0, - DbSoftwareTag.getImageVersionSoftwareList(connection, imageVersionId))); + DbSoftwareTag.getImageVersionSoftwareList(connection, imageVersionId)); + v.setImagePath(rs.getString("filepath")); + versionList.add(v); } stmt.close(); return versionList; |