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);

http://dive4elements.wald.intevation.org