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:

http://dive4elements.wald.intevation.org