diff gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java @ 40:23a4f196d7d6

Adding Languagetransfer to the ArtifactDatabase to the GNV-Client gnv/trunk@180 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Fri, 02 Oct 2009 14:55:18 +0000
parents fccf90761825
children f35b7d7a04d6
line wrap: on
line diff
--- a/gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java	Fri Oct 02 14:29:08 2009 +0000
+++ b/gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java	Fri Oct 02 14:55:18 2009 +0000
@@ -11,13 +11,21 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.List;
+import java.util.Locale;
 
 import org.apache.log4j.Logger;
+
 import org.restlet.Client;
+
 import org.restlet.data.Method;
 import org.restlet.data.Protocol;
 import org.restlet.data.Request;
 import org.restlet.data.Response;
+import org.restlet.data.Preference;
+import org.restlet.data.Language;
+import org.restlet.data.ClientInfo;
+
 import org.restlet.representation.Representation;
 import org.restlet.representation.StringRepresentation;
 import org.w3c.dom.Document;
@@ -73,10 +81,16 @@
     private static boolean initialized = false;
 
     /**
+     * Request locale
+     */
+    private Locale locale;
+
+
+    /**
      * Constructor
      */
     public DefaultArtifactDatabaseClient() {
-        super();
+        
     }
 
     /**
@@ -151,6 +165,24 @@
         return document;
     }
 
+    protected Request initialize(Request request) {
+        return initialize(request, locale);
+    }
+
+    protected Request initialize(Request request, Locale locale) {
+        if (locale != null) {
+            ClientInfo clientInfo = request.getClientInfo();
+            String lang = locale.getLanguage();
+            Language language = new Language(lang);
+            List<Preference<Language>> acceptedLanguages =
+                new ArrayList<Preference<Language>>(2);
+            acceptedLanguages.add(new Preference(language,     1.0f));
+            acceptedLanguages.add(new Preference(Language.ALL, 0.5f));
+            clientInfo.setAcceptedLanguages(acceptedLanguages);
+        }
+        return request;
+    }
+
     /**
      * @param requestUrl
      * @param requestBody
@@ -159,7 +191,7 @@
     private Representation doGetRequestInternal(String requestUrl,
                                                 Document requestBody) {
         Client client = new Client(Protocol.HTTP);
-        Request request = new Request(Method.GET, requestUrl);
+        Request request = initialize(new Request(Method.GET, requestUrl));
         if (requestBody != null) {
             String documentBody = new XMLUtils()
                     .writeDocument2String(requestBody);
@@ -182,7 +214,7 @@
         log.debug(new XMLUtils().writeDocument2String(requestBody));
         log.debug("##################################################");
         Client client = new Client(Protocol.HTTP);
-        Request request = new Request(Method.POST, requestUrl);
+        Request request = initialize(new Request(Method.POST, requestUrl));
         String documentBody = new XMLUtils().writeDocument2String(requestBody);
         Representation representation = new StringRepresentation(documentBody);
         request.setEntity(representation);
@@ -655,4 +687,8 @@
 
         return result;
     }
+
+    public void setLocale(Locale locale) {
+        this.locale = locale;
+    }
 }

http://dive4elements.wald.intevation.org