Mercurial > dive4elements > framework
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(