Mercurial > dive4elements > framework
diff artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java @ 48:41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
artifacts/trunk@168 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 01 Oct 2009 16:03:12 +0000 |
parents | 4ae4dc99127d |
children | 9a29899b31e5 |
line wrap: on
line diff
--- a/artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java Thu Oct 01 09:04:17 2009 +0000 +++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java Thu Oct 01 16:03:12 2009 +0000 @@ -10,6 +10,7 @@ import de.intevation.artifacts.ArtifactFactory; import de.intevation.artifacts.Artifact; import de.intevation.artifacts.CallContext; +import de.intevation.artifacts.CallMeta; import de.intevation.artifactdatabase.Backend.PersistentArtifact; @@ -52,10 +53,16 @@ { protected PersistentArtifact artifact; protected int action; + protected CallMeta callMeta; - public CallContextImpl(PersistentArtifact artifact, int action) { + public CallContextImpl( + PersistentArtifact artifact, + int action, + CallMeta callMeta + ) { this.artifact = artifact; this.action = action; + this.callMeta = callMeta; } public void afterCall(int action) { @@ -76,6 +83,10 @@ return context; } + public CallMeta getMeta() { + return callMeta; + } + public void postCall() { switch (action) { case NOTHING: @@ -102,22 +113,25 @@ { protected PersistentArtifact artifact; protected Document format; + protected CallMeta callMeta; public DeferredOutputImpl() { } public DeferredOutputImpl( PersistentArtifact artifact, - Document format + Document format, + CallMeta callMeta ) { this.artifact = artifact; this.format = format; + this.callMeta = callMeta; } public void write(OutputStream output) throws IOException { CallContextImpl cc = new CallContextImpl( - artifact, CallContext.TOUCH); + artifact, CallContext.TOUCH, callMeta); try { artifact.getArtifact().out(format, output, cc); @@ -227,8 +241,11 @@ return (ArtifactFactory)name2factory.get(factoryName); } - public Document createArtifactWithFactory(String factoryName) - throws ArtifactDatabaseException + public Document createArtifactWithFactory( + String factoryName, + CallMeta callMeta + ) + throws ArtifactDatabaseException { ArtifactFactory factory = getArtifactFactory(factoryName); @@ -258,7 +275,7 @@ } CallContextImpl cc = new CallContextImpl( - persistentArtifact, CallContext.NOTHING); + persistentArtifact, CallContext.NOTHING, callMeta); try { return artifact.describe(cc); @@ -268,28 +285,7 @@ } } - public Document describe(String identifier) - throws ArtifactDatabaseException - { - // TODO: Handle background tasks - PersistentArtifact artifact = backend.getArtifact(identifier); - - if (artifact == null) { - throw new ArtifactDatabaseException(NO_SUCH_ARTIFACT); - } - - CallContextImpl cc = new CallContextImpl( - artifact, CallContext.TOUCH); - - try { - return artifact.getArtifact().describe(cc); - } - finally { - cc.postCall(); - } - } - - public Document advance(String identifier, Document target) + public Document describe(String identifier, CallMeta callMeta) throws ArtifactDatabaseException { // TODO: Handle background tasks @@ -300,17 +296,17 @@ } CallContextImpl cc = new CallContextImpl( - artifact, CallContext.STORE); + artifact, CallContext.TOUCH, callMeta); try { - return artifact.getArtifact().advance(target, cc); + return artifact.getArtifact().describe(cc); } finally { cc.postCall(); } } - public Document feed(String identifier, Document data) + public Document advance(String identifier, Document target, CallMeta callMeta) throws ArtifactDatabaseException { // TODO: Handle background tasks @@ -321,7 +317,28 @@ } CallContextImpl cc = new CallContextImpl( - artifact, CallContext.STORE); + artifact, CallContext.STORE, callMeta); + + try { + return artifact.getArtifact().advance(target, cc); + } + finally { + cc.postCall(); + } + } + + public Document feed(String identifier, Document data, CallMeta callMeta) + throws ArtifactDatabaseException + { + // TODO: Handle background tasks + PersistentArtifact artifact = backend.getArtifact(identifier); + + if (artifact == null) { + throw new ArtifactDatabaseException(NO_SUCH_ARTIFACT); + } + + CallContextImpl cc = new CallContextImpl( + artifact, CallContext.STORE, callMeta); try { return artifact.getArtifact().feed(data, cc); @@ -331,7 +348,7 @@ } } - public DeferredOutput out(String identifier, Document format) + public DeferredOutput out(String identifier, Document format, CallMeta callMeta) throws ArtifactDatabaseException { // TODO: Handle background tasks @@ -341,7 +358,7 @@ throw new ArtifactDatabaseException(NO_SUCH_ARTIFACT); } - return new DeferredOutputImpl(artifact, format); + return new DeferredOutputImpl(artifact, format, callMeta); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8: