diff artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java @ 79:f69e5b87f05f

Implementation to export artifacts as xml (applied patch from issue208 by SLT). artifacts/trunk@792 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 16 Mar 2010 16:03:06 +0000
parents 4ae4dc99127d
children 8447467cef86
line wrap: on
line diff
--- a/artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java	Thu Mar 11 10:53:59 2010 +0000
+++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java	Tue Mar 16 16:03:06 2010 +0000
@@ -1,7 +1,5 @@
 package de.intevation.artifactdatabase;
 
-import java.util.UUID;
-
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.PreparedStatement;
@@ -17,7 +15,7 @@
 import org.apache.log4j.Logger;
 
 /**
- *  @author Sascha L. Teichmann
+ * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a>
  */
 public class Backend
 implements   DatabaseCleaner.ArtifactReviver
@@ -104,9 +102,8 @@
     }
 
     public String newIdentifier() {
-        UUID uuid = UUID.randomUUID();
         // TODO: check database for collisions.
-        return uuid.toString();
+        return StringUtils.newUUID();
     }
 
     public PersistentArtifact storeInitially(
@@ -122,13 +119,40 @@
             insertDatabase(artifact, factory, ttl));
     }
 
+    public interface ArtifactLoader {
+
+        Object load(ArtifactFactory factory, byte [] bytes, int id);
+
+    } // interface ArtifactLoader
+
+
     public PersistentArtifact getArtifact(String identifer) {
 
-        try {
-            UUID.fromString(identifer);
-        }
-        catch (IllegalArgumentException iae) {
-            logger.warn(iae.getLocalizedMessage());
+        return (PersistentArtifact)loadArtifact(
+            identifer, 
+            new ArtifactLoader() {
+
+                public Object load(
+                    ArtifactFactory factory,
+                    byte []         bytes,
+                    int             id
+                ) {
+                    ArtifactSerializer serializer = factory.getSerializer();
+
+                    Artifact artifact = serializer.fromBytes(bytes);
+
+                    return artifact == null
+                        ? null
+                        : new PersistentArtifact(artifact, serializer, id);
+                }
+            });
+    }
+
+
+
+    public Object loadArtifact(String identifer, ArtifactLoader loader) {
+
+        if (!StringUtils.checkUUID(identifer)) {
             return null;
         }
 
@@ -174,16 +198,9 @@
                 return null;
             }
 
-            ArtifactSerializer serializer =
-                factory.getSerializer();
-
             byte [] bytes = load_result.getBytes(5);
 
-            Artifact artifact = serializer.fromBytes(bytes);
-
-            return artifact == null
-                ? null
-                : new PersistentArtifact(artifact, serializer, id);
+            return loader.load(factory, bytes, id);
         }
         catch (SQLException sqle) {
             logger.error(sqle.getLocalizedMessage(), sqle);
@@ -206,7 +223,9 @@
     }
 
     protected void artifactOutdated(int id) {
-        logger.info("artifactOutdated: id = " + id);
+        if (logger.isDebugEnabled()) {
+            logger.info("artifactOutdated: id = " + id);
+        }
         if (cleaner != null) {
             cleaner.wakeup();
         }
@@ -391,4 +410,4 @@
         }
     }
 }
-// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8:
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org