diff options
author | Simon Rettberg | 2015-08-24 18:33:53 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-08-24 18:33:53 +0200 |
commit | ff5cf4a6e6e7fd59e79ff097264644fc1605c464 (patch) | |
tree | 86feece32cea13507fbd20f904e6988ff4ab92d1 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance | |
parent | [client] Major layout fix (diff) | |
download | tutor-module-ff5cf4a6e6e7fd59e79ff097264644fc1605c464.tar.gz tutor-module-ff5cf4a6e6e7fd59e79ff097264644fc1605c464.tar.xz tutor-module-ff5cf4a6e6e7fd59e79ff097264644fc1605c464.zip |
[server] Handle image version deletion, interface for sending mails (no SMTP yet)
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance')
-rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java | 4 | ||||
-rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/Mailer.java | 161 |
2 files changed, 163 insertions, 2 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java index 9a308dcd..c3168253 100644 --- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java @@ -8,7 +8,7 @@ import org.apache.log4j.Logger; import org.joda.time.DateTime; import org.openslx.bwlp.sat.database.mappers.DbImage; import org.openslx.bwlp.sat.database.models.LocalImageVersion; -import org.openslx.bwlp.sat.fileserv.FileServer; +import org.openslx.bwlp.sat.util.FileSystem; import org.openslx.util.QuickTimer; import org.openslx.util.QuickTimer.Task; @@ -73,7 +73,7 @@ public class DeleteOldImages implements Runnable { for (LocalImageVersion version : versions) { if (version.expireTime < hardDelete) { hardDeleteCount++; - FileServer.composeAbsolutePath(version).delete(); + FileSystem.deleteImageRelatedFiles(version); try { DbImage.deletePermanently(version); } catch (SQLException e) { diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/Mailer.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/Mailer.java new file mode 100644 index 00000000..d2241e37 --- /dev/null +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/Mailer.java @@ -0,0 +1,161 @@ +package org.openslx.bwlp.sat.maintenance; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.apache.log4j.Logger; +import org.openslx.bwlp.sat.database.mappers.DbImage; +import org.openslx.bwlp.sat.database.mappers.DbImagePermissions; +import org.openslx.bwlp.sat.database.mappers.DbLecturePermissions; +import org.openslx.bwlp.sat.database.mappers.DbUser; +import org.openslx.bwlp.sat.database.models.LocalImageVersion; +import org.openslx.bwlp.sat.util.Formatter; +import org.openslx.bwlp.thrift.iface.ImageDetailsRead; +import org.openslx.bwlp.thrift.iface.ImagePermissions; +import org.openslx.bwlp.thrift.iface.ImageVersionDetails; +import org.openslx.bwlp.thrift.iface.LecturePermissions; +import org.openslx.bwlp.thrift.iface.LectureSummary; +import org.openslx.bwlp.thrift.iface.TNotFoundException; +import org.openslx.bwlp.thrift.iface.UserInfo; + +public class Mailer { + + private static final Logger LOGGER = Logger.getLogger(Mailer.class); + + public static void lectureAutoUpdate(List<LectureSummary> lectures, LocalImageVersion newVersion) { + for (LectureSummary lecture : lectures) { + LOGGER.debug("Auto-Update mail for " + lecture.lectureId + " " + lecture.lectureName); + List<UserInfo> relevantUsers = getUserToMail(lecture); + for (UserInfo user : relevantUsers) { + LOGGER.debug("Sending auto-update info to " + Formatter.userFullName(user)); + } + } + } + + public static void lectureForcedUpdate(List<LectureSummary> lectures, LocalImageVersion newVersion) { + for (LectureSummary lecture : lectures) { + LOGGER.debug("Forced-Update mail for " + lecture.lectureId + " " + lecture.lectureName); + List<UserInfo> relevantUsers = getUserToMail(lecture); + for (UserInfo user : relevantUsers) { + LOGGER.debug("Sending forced-update info to " + Formatter.userFullName(user)); + } + } + } + + public static void lectureDeactivated(List<LectureSummary> lectures) { + for (LectureSummary lecture : lectures) { + LOGGER.debug("Deactivated mail for " + lecture.lectureId + " " + lecture.lectureName); + List<UserInfo> relevantUsers = getUserToMail(lecture); + for (UserInfo user : relevantUsers) { + LOGGER.debug("Sending deactivated info to " + Formatter.userFullName(user)); + } + } + } + + private static List<UserInfo> getUserToMail(LectureSummary lecture) { + Map<String, LecturePermissions> users; + try { + users = DbLecturePermissions.getForLecture(lecture.lectureId, false); + } catch (SQLException e) { + users = new HashMap<>(); + } + users.put(lecture.ownerId, new LecturePermissions(true, true)); + List<UserInfo> list = new ArrayList<>(users.size()); + for (Entry<String, LecturePermissions> entry : users.entrySet()) { + LecturePermissions perms = entry.getValue(); + if (!perms.admin && !perms.edit) + continue; + UserInfo user; + try { + user = DbUser.getCached(entry.getKey()); + } catch (TNotFoundException e) { + LOGGER.warn("UserID " + entry.getKey() + " unknown"); + continue; + } catch (SQLException e) { + continue; // Logging happened in DbUser + } + list.add(user); + } + return list; + } + + private static List<UserInfo> getUserToMail(ImageDetailsRead image) { + Map<String, ImagePermissions> users; + try { + users = DbImagePermissions.getForImageBase(image.imageBaseId, false); + } catch (SQLException e) { + users = new HashMap<>(); + } + users.put(image.ownerId, new ImagePermissions(true, true, true, true)); + List<UserInfo> list = new ArrayList<>(users.size()); + for (Entry<String, ImagePermissions> entry : users.entrySet()) { + ImagePermissions perms = entry.getValue(); + if (!perms.admin && !perms.edit) + continue; + UserInfo user; + try { + user = DbUser.getCached(entry.getKey()); + } catch (TNotFoundException e) { + LOGGER.warn("UserID " + entry.getKey() + " unknown"); + continue; + } catch (SQLException e) { + continue; // Logging happened in DbUser + } + list.add(user); + } + return list; + } + + public static void versionDeleted(String imageBaseId, LocalImageVersion oldLocal, + LocalImageVersion newLocal) { + ImageDetailsRead image; + try { + image = DbImage.getImageDetails(null, imageBaseId); + } catch (TNotFoundException | SQLException e) { + LOGGER.warn("Version Deleted for image=" + imageBaseId + " failed", e); + return; + } + LOGGER.debug("Sending info mail about deleted image version " + + (oldLocal == null ? "-" : oldLocal.imageVersionId) + " (" + image.imageName + ")"); + ImageVersionDetails oldVersion = null; + ImageVersionDetails newVersion = null; + for (ImageVersionDetails version : image.versions) { + if (oldLocal != null && version.versionId.equals(oldLocal.imageVersionId)) { + oldVersion = version; + } + if (newLocal != null && version.versionId.equals(newLocal.imageVersionId)) { + newVersion = version; + } + } + String message; + if (newVersion == null) { + message = "Last version deleted; WARNING: No more valid image versions"; + } else { + String uploaderName; + try { + UserInfo uploader = DbUser.getCached(newVersion.uploaderId); + uploaderName = uploader.firstName + " " + uploader.lastName + " <" + uploader.eMail + ">"; + } catch (TNotFoundException | SQLException e) { + uploaderName = "an unknown person"; + ; + } + if (oldVersion == null) { + message = "Old version deleted;"; + } else { + message = "Old version (created " + Formatter.date(oldVersion.createTime) + ") deleted;"; + } + message += " new version now in use was uploaded on " + + Formatter.date(newVersion.createTime) + " by " + uploaderName; + } + LOGGER.debug("Mail: " + message); + List<UserInfo> relevantUsers = getUserToMail(image); + for (UserInfo user : relevantUsers) { + LOGGER.debug("Sending mail to " + Formatter.userFullName(user)); + } + } + +} |