diff artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java @ 30:88972c6daa4f

Added a cleanup thread which periodically removes outdated artifacts from database and calls there endOfLife() method. artifacts/trunk@70 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 10 Sep 2009 23:16:18 +0000
parents 75bdaf900473
children c4d85a8532d1
line wrap: on
line diff
--- a/artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java	Thu Sep 10 15:49:17 2009 +0000
+++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java	Thu Sep 10 23:16:18 2009 +0000
@@ -48,6 +48,8 @@
     public static final String SQL_LOAD_BY_GID =
         SQL.get("artifacts.select.gid");
 
+    protected DatabaseCleaner cleaner;
+
     /**
      * Used to wrap the calls to invole database actions.
      */
@@ -153,6 +155,10 @@
     public Backend() {
     }
 
+    public Backend(DatabaseCleaner cleaner) {
+        this.cleaner = cleaner;
+    }
+
     public Artifact getArtifact(String idenitfier) {
         UUID uuid;
 
@@ -251,6 +257,10 @@
 
     public static Artifact restoreArtifact(byte [] bytes) {
 
+        if (bytes == null) {
+            return null;
+        }
+
         ObjectInputStream ois = null;
 
         try {
@@ -281,6 +291,9 @@
 
     protected void artifactOutdated(int id) {
         logger.info("artifactOutdated: id = " + id);
+        if (cleaner != null) {
+            cleaner.wakeup();
+        }
     }
 
     protected int insertDatabase(UUID uuid, Long ttl) {

http://dive4elements.wald.intevation.org