Mercurial > dive4elements > framework
diff artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.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 | f7d2cd59a0d5 |
children | 4ae4dc99127d |
line wrap: on
line diff
--- a/artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java Wed Sep 23 08:27:35 2009 +0000 +++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java Wed Sep 23 16:55:12 2009 +0000 @@ -24,7 +24,7 @@ * @author Sascha L. Teichmann */ public class ArtifactDatabaseImpl -implements ArtifactDatabase, Id.Filter +implements ArtifactDatabase, Id.Filter, Backend.FactoryLookup { private static Logger logger = Logger.getLogger(ArtifactDatabaseImpl.class); @@ -139,6 +139,10 @@ public ArtifactDatabaseImpl() { } + public ArtifactDatabaseImpl(FactoryBootstrap bootstrap) { + this(bootstrap, null); + } + public ArtifactDatabaseImpl(FactoryBootstrap bootstrap, Backend backend) { backgroundIds = new HashSet(); @@ -162,7 +166,14 @@ context = bootstrap.getContext(); - this.backend = backend; + wireWithBackend(backend); + } + + public void wireWithBackend(Backend backend) { + if (backend != null) { + this.backend = backend; + backend.setFactoryLookup(this); + } } protected void fromBackground(PersistentArtifact artifact, int action) { @@ -212,11 +223,14 @@ return factoryNamesAndDescription; } + public ArtifactFactory getArtifactFactory(String factoryName) { + return (ArtifactFactory)name2factory.get(factoryName); + } + public Document createArtifactWithFactory(String factoryName) throws ArtifactDatabaseException { - ArtifactFactory factory = (ArtifactFactory)name2factory.get( - factoryName); + ArtifactFactory factory = getArtifactFactory(factoryName); if (factory == null) { throw new ArtifactDatabaseException(NO_SUCH_FACTORY); @@ -235,6 +249,7 @@ try { persistentArtifact = backend.storeInitially( artifact, + factory, factory.timeToLiveUntouched(artifact, context)); } catch (Exception e) {