summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-09-24 15:49:57 +0200
committerSimon Rettberg2015-09-24 15:49:57 +0200
commiteed57a93b7f1b1e1a6ea59eb28bf91d4c1159ec9 (patch)
tree8f98f9656f77e93d5fa519b23faf1e7dfe74ef02 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java
parent[client] Update label for linked image when changing it. (diff)
downloadtutor-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.java43
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);