diff options
author | Simon Rettberg | 2015-09-10 18:51:20 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-09-10 18:51:20 +0200 |
commit | 80af9ff6befbbe4204eab259c72c40df5cd5e5a1 (patch) | |
tree | f1c731d05841a6d2457db68b412f297d72edae76 /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) | |
download | tutor-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.java | 53 |
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(); + } + }); + } + } |