summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2025-04-01 18:17:42 +0200
committerSimon Rettberg2025-04-01 18:17:42 +0200
commita6340ea21eeae1b2226a2b56fa32c0c674a33b60 (patch)
tree4dfac904ec4073e51eea2c64b49b2e8d625b8a44
parent[server] CoW: Don't repeatedly print the same log message (diff)
downloadtutor-module-master.tar.gz
tutor-module-master.tar.xz
tutor-module-master.zip
[server] Add filepath to ImageVersionDetailsHEADmaster
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java28
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;