diff options
author | Simon Rettberg | 2015-09-24 15:49:57 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-09-24 15:49:57 +0200 |
commit | eed57a93b7f1b1e1a6ea59eb28bf91d4c1159ec9 (patch) | |
tree | 8f98f9656f77e93d5fa519b23faf1e7dfe74ef02 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java | |
parent | [client] Update label for linked image when changing it. (diff) | |
download | tutor-module-eed57a93b7f1b1e1a6ea59eb28bf91d4c1159ec9.tar.gz tutor-module-eed57a93b7f1b1e1a6ea59eb28bf91d4c1159ec9.tar.xz tutor-module-eed57a93b7f1b1e1a6ea59eb28bf91d4c1159ec9.zip |
[server] Implemente setImageVersionExpiry
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java')
-rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java index 40a51c70..ee244eaa 100644 --- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java @@ -1,5 +1,6 @@ package org.openslx.bwlp.sat.thrift; +import java.io.File; import java.nio.ByteBuffer; import java.sql.SQLException; import java.util.List; @@ -15,6 +16,7 @@ import org.openslx.bwlp.sat.database.mappers.DbLecture; import org.openslx.bwlp.sat.database.mappers.DbLecturePermissions; import org.openslx.bwlp.sat.database.mappers.DbUser; import org.openslx.bwlp.sat.database.models.ImageVersionMeta; +import org.openslx.bwlp.sat.database.models.LocalImageVersion; import org.openslx.bwlp.sat.database.models.LocalUser; import org.openslx.bwlp.sat.fileserv.FileServer; import org.openslx.bwlp.sat.fileserv.IncomingDataTransfer; @@ -29,6 +31,7 @@ import org.openslx.bwlp.sat.util.FileSystem; import org.openslx.bwlp.sat.util.Sanitizer; import org.openslx.bwlp.sat.util.Util; import org.openslx.bwlp.thrift.iface.AuthorizationError; +import org.openslx.bwlp.thrift.iface.DateParamError; import org.openslx.bwlp.thrift.iface.ImageBaseWrite; import org.openslx.bwlp.thrift.iface.ImageDetailsRead; import org.openslx.bwlp.thrift.iface.ImagePermissions; @@ -436,12 +439,42 @@ public class ServerHandler implements SatelliteServer.Iface { } @Override - public void setImageVersionExpiry(String userToken, String imageBaseId, long expireTime) - throws TAuthorizationException, TNotFoundException, TInvocationException, TInvalidDateParam, - TException { + public void setImageVersionExpiry(String userToken, String imageVersionId, long expireTime) + throws TAuthorizationException, TNotFoundException, TInvocationException, TInvalidDateParam { + long now = Util.unixTime(); + if (expireTime > now + 3 * 365 * 86400) + throw new TInvalidDateParam(DateParamError.TOO_HIGH, "Expire date too far in the future"); + if (expireTime < now - 365 * 86400) + throw new TInvalidDateParam(DateParamError.TOO_LOW, "Expire date too far in the past"); UserInfo user = SessionManager.getOrFail(userToken); User.canChangeImageExpireDateOrFail(user); - // TODO Manually-generated method stub + LocalImageVersion localImageData; + try { + localImageData = DbImage.getLocalImageData(imageVersionId); + } catch (SQLException e) { + throw new TInvocationException(); + } + File srcFile = FileSystem.composeAbsoluteImagePath(localImageData); + String errorMessage = null; + if (srcFile == null) { + errorMessage = "File has invalid path on server"; + } else if (!srcFile.canRead()) { + errorMessage = "File missing on server"; + } + if (srcFile.length() != localImageData.fileSize) { + errorMessage = "File corrupted on server"; + } + try { + if (errorMessage == null) { + DbImage.markValid(true, false, localImageData); + DbImage.setExpireDate(localImageData.imageVersionId, expireTime); + } else { + DbImage.markValid(false, false, localImageData); + throw new TInvocationException(InvocationError.INTERNAL_SERVER_ERROR, errorMessage); + } + } catch (SQLException e) { + throw new TInvocationException(); + } } @Override @@ -476,7 +509,7 @@ public class ServerHandler implements SatelliteServer.Iface { public String createLecture(String userToken, LectureWrite lecture) throws TAuthorizationException, TInvocationException, TInvalidDateParam, TNotFoundException { if (lecture == null || lecture.defaultPermissions == null) - throw new TInvocationException(); // TODO Own exception for this + throw new TInvocationException(InvocationError.MISSING_DATA, "Lecture data missing or incomplete"); UserInfo user = SessionManager.getOrFail(userToken); User.canCreateLectureOrFail(user); User.canLinkToImageOrFail(user, lecture.imageVersionId); |