summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-09-10 18:51:20 +0200
committerSimon Rettberg2015-09-10 18:51:20 +0200
commit80af9ff6befbbe4204eab259c72c40df5cd5e5a1 (patch)
treef1c731d05841a6d2457db68b412f297d72edae76 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java
parent[client] LectureDetails: moved fields around to keep the same order as in Ima... (diff)
downloadtutor-module-80af9ff6befbbe4204eab259c72c40df5cd5e5a1.tar.gz
tutor-module-80af9ff6befbbe4204eab259c72c40df5cd5e5a1.tar.xz
tutor-module-80af9ff6befbbe4204eab259c72c40df5cd5e5a1.zip
[server] Schema changes, distinct delete flag for images
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java')
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java53
1 files changed, 48 insertions, 5 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 531f169a..56e7d1d0 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
@@ -9,10 +9,13 @@ import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
import org.joda.time.DateTime;
import org.openslx.bwlp.sat.database.mappers.DbImage;
+import org.openslx.bwlp.sat.database.mappers.DbImage.DeleteState;
+import org.openslx.bwlp.sat.database.mappers.DbLecture;
import org.openslx.bwlp.sat.database.models.LocalImageVersion;
import org.openslx.bwlp.sat.util.FileSystem;
import org.openslx.util.QuickTimer;
import org.openslx.util.QuickTimer.Task;
+import org.openslx.util.Util;
/**
* Delete old image versions (images that reached their expire time).
@@ -46,7 +49,7 @@ public class DeleteOldImages implements Runnable {
}
}, TimeUnit.MINUTES.toMillis(5), TimeUnit.MINUTES.toMillis(5));
}
-
+
public synchronized static void start() {
if (blockedUntil > System.currentTimeMillis())
return;
@@ -89,15 +92,13 @@ public class DeleteOldImages implements Runnable {
}
// Delete them permanently only if they expired (at least) one day ago
int hardDeleteCount = 0;
- final long hardDelete = (System.currentTimeMillis() / 1000) - 86400;
+ final long hardDelete = Util.unixTime() - 86400;
for (LocalImageVersion version : versions) {
if (version.expireTime < hardDelete) {
hardDeleteCount++;
- FileSystem.deleteImageRelatedFiles(version);
try {
- DbImage.deletePermanently(version);
+ DbImage.setDeletion(DeleteState.SHOULD_DELETE, version.imageVersionId);
} catch (SQLException e) {
- // Logging done in method
}
}
}
@@ -112,4 +113,46 @@ public class DeleteOldImages implements Runnable {
+ hardDeleteCount + ", base: " + baseDeleteCount);
}
+ public static StringBuilder hardDeleteImages() {
+ StringBuilder sb = new StringBuilder();
+ List<LocalImageVersion> deletables;
+ try {
+ deletables = DbImage.getLocalWithState(DeleteState.DO_DELETE);
+ } catch (SQLException e2) {
+ return null;
+ }
+ for (LocalImageVersion version : deletables) {
+ FileSystem.deleteImageRelatedFiles(version);
+ try {
+ DbLecture.unlinkFromImageVersion(version.imageVersionId);
+ DbImage.deleteVersionPermanently(version);
+ } catch (SQLException e) {
+ writeln(sb, version.imageVersionId, ": Cannot delete image: ", e.getMessage());
+ }
+ writeln(sb, version.imageVersionId, ": OK");
+ }
+ writeln(sb, "Done");
+ return sb;
+ }
+
+ private static void writeln(StringBuilder sb, String... parts) {
+ for (String s : parts) {
+ if (s == null) {
+ sb.append("(null)");
+ } else {
+ sb.append(s);
+ }
+ }
+ sb.append('\n');
+ }
+
+ public static void hardDeleteImagesAsync() {
+ Maintenance.trySubmit(new Runnable() {
+ @Override
+ public void run() {
+ hardDeleteImages();
+ }
+ });
+ }
+
}