diff options
author | Simon Rettberg | 2015-08-21 20:26:09 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-08-21 20:26:09 +0200 |
commit | 1f8d2edf172c35b2396e568383d9e461c058a1fa (patch) | |
tree | 90662568b358a6c06df5533fbf67a236ed85fda3 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java | |
parent | [client] tried to fix teh broken (diff) | |
download | tutor-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.java | 64 |
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 |