summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-08-21 20:26:09 +0200
committerSimon Rettberg2015-08-21 20:26:09 +0200
commit1f8d2edf172c35b2396e568383d9e461c058a1fa (patch)
tree90662568b358a6c06df5533fbf67a236ed85fda3 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java
parent[client] tried to fix teh broken (diff)
downloadtutor-module-1f8d2edf172c35b2396e568383d9e461c058a1fa.tar.gz
tutor-module-1f8d2edf172c35b2396e568383d9e461c058a1fa.tar.xz
tutor-module-1f8d2edf172c35b2396e568383d9e461c058a1fa.zip
[server] Implement missing lecture thrift calls, clean up transfer handling a bit
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.java64
1 files changed, 44 insertions, 20 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 b3e6208e..994466dd 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
@@ -12,6 +12,7 @@ import org.openslx.bwlp.sat.RuntimeConfig;
import org.openslx.bwlp.sat.database.mappers.DbImage;
import org.openslx.bwlp.sat.database.mappers.DbImagePermissions;
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.fileserv.ActiveDownload;
import org.openslx.bwlp.sat.fileserv.ActiveUpload;
@@ -28,6 +29,7 @@ import org.openslx.bwlp.thrift.iface.ImageDataError;
import org.openslx.bwlp.thrift.iface.ImageDetailsRead;
import org.openslx.bwlp.thrift.iface.ImagePermissions;
import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
+import org.openslx.bwlp.thrift.iface.ImageVersionDetails;
import org.openslx.bwlp.thrift.iface.ImageVersionWrite;
import org.openslx.bwlp.thrift.iface.LecturePermissions;
import org.openslx.bwlp.thrift.iface.LectureRead;
@@ -158,8 +160,9 @@ public class ServerHandler implements SatelliteServer.Iface {
@Override
public void cancelDownload(String downloadToken) {
- // TODO Auto-generated method stub
-
+ ActiveDownload download = fileServer.getDownloadByToken(downloadToken);
+ if (download != null)
+ download.cancel();
}
/*
@@ -310,15 +313,6 @@ public class ServerHandler implements SatelliteServer.Iface {
UserInfo user = SessionManager.getOrFail(userToken);
User.canDeleteImageVersionOrFail(user, imageVersionId);
try {
- // Do not allow deleting remote images if share mode is set to "auto download" and
- // the version to delete is the latest
- ImageSummaryRead imageSummary = DbImage.getImageSummary(user,
- DbImage.getBaseIdForVersionId(imageVersionId));
- if (imageSummary.shareMode == ShareMode.DOWNLOAD
- && imageSummary.latestVersionId.equals(imageVersionId)) {
- throw new TAuthorizationException(AuthorizationError.NO_PERMISSION,
- "Cannot delete latest version of image if auto-download is enabled");
- }
DbImage.markForDeletion(imageVersionId);
} catch (SQLException e) {
throw new TInternalServerError();
@@ -328,8 +322,21 @@ public class ServerHandler implements SatelliteServer.Iface {
@Override
public void deleteImageBase(String userToken, String imageBaseId) throws TAuthorizationException,
TNotFoundException, TInternalServerError {
- // TODO Auto-generated method stub
-
+ UserInfo user = SessionManager.getOrFail(userToken);
+ ImageDetailsRead imageDetails;
+ try {
+ imageDetails = DbImage.getImageDetails(user, imageBaseId);
+ } catch (SQLException e) {
+ throw new TInternalServerError();
+ }
+ User.canDeleteImageOrFail(imageDetails);
+ for (ImageVersionDetails version : imageDetails.versions) {
+ try {
+ DbImage.markForDeletion(version.versionId);
+ } catch (Exception e) {
+ LOGGER.warn("Could not delete version when trying to delete base image", e);
+ }
+ }
}
@Override
@@ -449,22 +456,39 @@ public class ServerHandler implements SatelliteServer.Iface {
@Override
public void writeLecturePermissions(String userToken, String lectureId,
- Map<String, LecturePermissions> permissions) throws TAuthorizationException, TNotFoundException {
- // TODO Auto-generated method stub
+ Map<String, LecturePermissions> permissions) throws TAuthorizationException, TNotFoundException,
+ TInternalServerError {
+ UserInfo user = SessionManager.getOrFail(userToken);
+ User.canEditLecturePermissionsOrFail(user, lectureId);
+ try {
+ DbLecturePermissions.writeForLecture(lectureId, permissions);
+ } catch (SQLException e) {
+ throw new TInternalServerError();
+ }
}
@Override
public Map<String, LecturePermissions> getLecturePermissions(String userToken, String lectureId)
- throws TAuthorizationException, TNotFoundException {
- // TODO Auto-generated method stub
- return null;
+ throws TAuthorizationException, TNotFoundException, TInternalServerError {
+ UserInfo user = SessionManager.getOrFail(userToken);
+ boolean adminOnly = !User.canEditLecturePermissions(user, lectureId);
+ try {
+ return DbLecturePermissions.getForLecture(lectureId, adminOnly);
+ } catch (SQLException e) {
+ throw new TInternalServerError();
+ }
}
@Override
public void setLectureOwner(String userToken, String lectureId, String newOwnerId)
throws TAuthorizationException, TNotFoundException, TInternalServerError, TException {
- // TODO Auto-generated method stub
-
+ UserInfo user = SessionManager.getOrFail(userToken);
+ User.canChangeLectureOwnerOrFail(user, lectureId);
+ try {
+ DbLecture.setOwner(user, newOwnerId, lectureId);
+ } catch (SQLException e) {
+ throw new TInternalServerError();
+ }
}
@Override