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