diff flys-client/src/main/java/de/intevation/flys/client/server/FixingsOverviewServiceImpl.java @ 2493:f905c936ffff

Added the XSL transformation to generate the fixings overview. flys-client/trunk@4286 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 20 Apr 2012 15:23:27 +0000
parents 2a504b6d9a1b
children 87ac5c532523
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/server/FixingsOverviewServiceImpl.java	Fri Apr 20 11:02:26 2012 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/server/FixingsOverviewServiceImpl.java	Fri Apr 20 15:23:27 2012 +0000
@@ -2,23 +2,83 @@
 
 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
 
+import de.intevation.artifacts.common.utils.XMLUtils;
+import de.intevation.artifacts.common.utils.XSLTransformer;
+
+import de.intevation.artifacts.httpclient.exceptions.ConnectionException;
+
+import de.intevation.artifacts.httpclient.http.HttpClient;
+import de.intevation.artifacts.httpclient.http.HttpClientImpl;
+
 import de.intevation.flys.client.client.services.FixingsOverviewService;
 
 import de.intevation.flys.client.shared.exceptions.ServerException;
 
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.log4j.Logger;
+
+import org.w3c.dom.Document;
+
 public class FixingsOverviewServiceImpl
 extends      RemoteServiceServlet
 implements   FixingsOverviewService
 {
+    private static final Logger log =
+        Logger.getLogger(FixingsOverviewServiceImpl.class);
+
+    public static final String SERVICE_NAME = "fixings-overview";
+
+    public static final String XSL_TRANSFORM =
+        "/WEB-INF/stylesheets/fixoverview2html.xsl";
+
     @Override
     public String generateOverview(
+        String locale,
         String  uuid,
         boolean checkboxes,
         String  filter
     ) 
     throws ServerException
     {
-        // TODO: Implement me!
+        log.info("FixingsOverviewServiceImpl.doGet");
+
+        if (filter == null || filter.length() == 0) {
+            log.warn("Missing 'filter' parameter.");
+            return "";
+        }
+
+        Document filterDoc = XMLUtils.jsonToXML(filter);
+
+        if (filterDoc == null) {
+            log.warn("Creating filter document failed.");
+            return "";
+        }
+
+        InputStream transform =
+            getServletContext().getResourceAsStream(XSL_TRANSFORM);
+
+        try {
+            String url = getServletContext().getInitParameter("server-url");
+            HttpClient client = new HttpClientImpl(url, locale);
+            Document resultDoc =
+                client.callService(url, SERVICE_NAME, filterDoc);
+            XSLTransformer xformer = new XSLTransformer();
+            xformer.addParameter("project-uuid", uuid);
+            xformer.addParameter(
+                "render-checkboxes", checkboxes ? "true()" : "false()");
+            String result = xformer.transform(resultDoc, transform);
+            return result != null ? result : "";
+        }
+        catch (ConnectionException ce) {
+            log.error(ce);
+        }
+        finally {
+            try { transform.close(); }
+            catch (IOException ioe) {}
+        }
+
         return "";
     }
 }

http://dive4elements.wald.intevation.org