summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/FileServer.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-08-18 15:04:17 +0200
committerSimon Rettberg2015-08-18 15:04:17 +0200
commitc87ec3599fb22bd4b97d7ffbb7542fdbb22f3ca9 (patch)
treef7fe4d94708729459ae136fe2d981a0d8f6417d4 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/FileServer.java
parent[client] Handle TTransferRejectedException in ThriftError.showMessage (diff)
downloadtutor-module-c87ec3599fb22bd4b97d7ffbb7542fdbb22f3ca9.tar.gz
tutor-module-c87ec3599fb22bd4b97d7ffbb7542fdbb22f3ca9.tar.xz
tutor-module-c87ec3599fb22bd4b97d7ffbb7542fdbb22f3ca9.zip
[server] Update lectures and images when image versions change or get deleted
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/FileServer.java')
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/FileServer.java17
1 files changed, 16 insertions, 1 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/FileServer.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/FileServer.java
index 3232374e..cc54ba94 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/FileServer.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/FileServer.java
@@ -4,6 +4,7 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.ByteBuffer;
+import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -16,6 +17,7 @@ import java.util.concurrent.TimeUnit;
import javax.net.ssl.SSLContext;
import org.apache.log4j.Logger;
+import org.openslx.bwlp.sat.database.mappers.DbImage;
import org.openslx.bwlp.sat.database.models.LocalImageVersion;
import org.openslx.bwlp.sat.util.Configuration;
import org.openslx.bwlp.sat.util.Constants;
@@ -181,9 +183,22 @@ public class FileServer implements IncomingEvent {
if (!srcFile.canRead()) {
LOGGER.warn("Rejecting download of VID " + localImageData.imageVersionId + ": Missing "
+ srcFile.getPath());
- // TODO: Mark as invalid in DB
+ try {
+ DbImage.markValid(localImageData, false);
+ } catch (SQLException e) {
+ }
throw new TTransferRejectedException("File missing on server");
}
+ if (srcFile.length() != localImageData.fileSize) {
+ LOGGER.warn("Rejecting download of VID " + localImageData.imageVersionId + ": Size mismatch for "
+ + srcFile.getPath() + " (expected " + localImageData.fileSize + ", is "
+ + srcFile.length() + ")");
+ try {
+ DbImage.markValid(localImageData, false);
+ } catch (SQLException e) {
+ }
+ throw new TTransferRejectedException("File corrupted on server");
+ }
String key = UUID.randomUUID().toString();
ActiveDownload transfer = new ActiveDownload(key, srcFile);
downloads.put(key, transfer);