summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance
diff options
context:
space:
mode:
authorSimon Rettberg2015-08-24 18:33:53 +0200
committerSimon Rettberg2015-08-24 18:33:53 +0200
commitff5cf4a6e6e7fd59e79ff097264644fc1605c464 (patch)
tree86feece32cea13507fbd20f904e6988ff4ab92d1 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance
parent[client] Major layout fix (diff)
downloadtutor-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.java4
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/Mailer.java161
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));
+ }
+ }
+
+}