diff artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java @ 32:c2d53bd30ab8

Re-factored artifact API for better integration of background processing. artifacts/trunk@78 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sun, 13 Sep 2009 14:50:53 +0000
parents 88972c6daa4f
children 5e4bc24ea438
line wrap: on
line diff
--- a/artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java	Sat Sep 12 10:45:28 2009 +0000
+++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java	Sun Sep 13 14:50:53 2009 +0000
@@ -12,6 +12,7 @@
 import org.apache.log4j.Logger;
 
 import java.util.ArrayList;
+import java.util.List;
 
 /**
  *  @author Sascha L. Teichmann
@@ -41,6 +42,8 @@
 
     protected Object context;
 
+    protected Id.Filter filter;
+
     public DatabaseCleaner() {
     }
 
@@ -50,6 +53,10 @@
         this.context = context;
     }
 
+    public void setFilter(Id.Filter filter) {
+        this.filter = filter;
+    }
+
     public void wakeup() {
         synchronized (sleepLock) {
             sleepLock.notify();
@@ -72,13 +79,13 @@
         return SLEEP_DEFAULT;
     }
 
-    private static final class IdData {
-
-        int     id;
+    private static final class IdData 
+    extends                    Id 
+    {
         byte [] data;
 
         public IdData(int id, byte [] data) {
-            this.id   = id;
+            super(id);
             this.data = data;
         }
     } // class IdData
@@ -115,7 +122,7 @@
             fetchIds.setMaxRows(MAX_ROWS);
 
             for (;;) {
-                ArrayList ids = new ArrayList();
+                List ids = new ArrayList();
 
                 result = fetchIds.executeQuery();
 
@@ -130,6 +137,10 @@
                     break;
                 }
 
+                if (filter != null) {
+                    ids = filter.filterIds(ids);
+                }
+
                 for (int i = ids.size()-1; i >= 0; --i) {
                     IdData idData = (IdData)ids.get(i);
                     Artifact artifact = Backend.restoreArtifact(

http://dive4elements.wald.intevation.org