Mercurial > dive4elements > river
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 ""; } }