Mercurial > dive4elements > framework
diff artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java @ 41:5e4bc24ea438
Made serilization more flexible. DB update required!!!
Fixed problem with touching artifacts in database.
artifacts/trunk@119 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 23 Sep 2009 16:55:12 +0000 |
parents | c2d53bd30ab8 |
children | 4ae4dc99127d |
line wrap: on
line diff
--- a/artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java Wed Sep 23 08:27:35 2009 +0000 +++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java Wed Sep 23 16:55:12 2009 +0000 @@ -20,6 +20,12 @@ public class DatabaseCleaner extends Thread { + public interface ArtifactReviver { + + Artifact reviveArtifact(String factoryName, byte [] bytes); + + } // interface ArtifactReviver + private static Logger logger = Logger.getLogger(DatabaseCleaner.class); public static final int MAX_ROWS = 50; @@ -44,13 +50,16 @@ protected Id.Filter filter; + protected ArtifactReviver reviver; + public DatabaseCleaner() { } - public DatabaseCleaner(Object context) { + public DatabaseCleaner(Object context, ArtifactReviver reviver) { setDaemon(true); sleepTime = getSleepTime(); this.context = context; + this.reviver = reviver; } public void setFilter(Id.Filter filter) { @@ -83,10 +92,12 @@ extends Id { byte [] data; + String factoryName; - public IdData(int id, byte [] data) { + public IdData(int id, String factoryName, byte [] data) { super(id); - this.data = data; + this.factoryName = factoryName; + this.data = data; } } // class IdData @@ -128,7 +139,9 @@ while (result.next()) { ids.add(new IdData( - result.getInt(1), result.getBytes(2))); + result.getInt(1), + result.getString(2), + result.getBytes(3))); } result.close(); result = null; @@ -143,8 +156,8 @@ for (int i = ids.size()-1; i >= 0; --i) { IdData idData = (IdData)ids.get(i); - Artifact artifact = Backend.restoreArtifact( - idData.data); + Artifact artifact = reviver.reviveArtifact( + idData.factoryName, idData.data); idData.data = null; deleteId.setInt(1, idData.id);