# HG changeset patch # User Ingo Weinzierl # Date 1266861895 0 # Node ID cbd397712ecf09f63fb48b21a9df3d011170d268 # Parent 9a5e50e7afaa4a66131150992e0e572c4a81ac5d Render an OpenLayers map with the layer even published after triggering shapefile and mapfile creation. gnv/trunk@698 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 9a5e50e7afaa -r cbd397712ecf gnv/ChangeLog --- a/gnv/ChangeLog Mon Feb 15 11:42:29 2010 +0000 +++ b/gnv/ChangeLog Mon Feb 22 18:04:55 2010 +0000 @@ -1,3 +1,34 @@ +2010-02-22 Ingo Weinzierl + + * src/main/webapp/WEB-INF/config/struts-config.xml: New action 'WMSAction'. + It triggers the generation of shapefiles and mapfile and sets an internal + flag to intialize an OpenLayers map. + + * src/main/java/de/intevation/gnv/action/WMSAction.java: Action which + triggers the creation of shapefiles and mapfile. An internal flag is set + to initialize an OpenLayers map with the layer even published. + + * src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java, + src/main/java/de/intevation/gnv/artifactdatabase/client/ArtifactDatabaseClient.java: + Added a new method to send a request to the artifact server and start + shapefile and mapfile creation. + + * src/main/webapp/WEB-INF/jsp/mainlayout.jsp: Added javascript functions to + read url parameters and initialize OpenLayers. + + * src/main/webapp/WEB-INF/jsp/includes/display_export_inc.jsp: Call 'wms.do' + after clicking WMS button which triggers WMSAction. + + * src/main/webapp/WEB-INF/jsp/index.jsp: Added a div-container for rendering + an OpenLayers map. + + * src/main/webapp/styles/default.css: New class for styling map + div-container. + + * src/main/java/de/intevation/gnv/util/XMLUtils.java: Made method static to + be able to use it without creating an object of this class. + + 2010-02-15 Ingo Weinzierl * src/main/webapp/WEB-INF/config/struts-config.xml: Added an action diff -r 9a5e50e7afaa -r cbd397712ecf gnv/src/main/java/de/intevation/gnv/action/WMSAction.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv/src/main/java/de/intevation/gnv/action/WMSAction.java Mon Feb 22 18:04:55 2010 +0000 @@ -0,0 +1,66 @@ +package de.intevation.gnv.action; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.log4j.Logger; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; + +import de.intevation.gnv.action.sessionmodel.SessionModel; +import de.intevation.gnv.action.sessionmodel.SessionModelFactory; +import de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClient; +import de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClientFactory; +import de.intevation.gnv.artifactdatabase.objects.ArtifactObject; + +/** + * @author Ingo Weinzierl (ingo.weinzierl@intevation.de) + */ +public class WMSAction extends DescribeUIAction { + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger logger = Logger.getLogger(WMSAction.class); + + /** + * Constructor + */ + public WMSAction() { + super(); + } + + @Override + public ActionForward execute(ActionMapping mapping, ActionForm form, + HttpServletRequest request, + HttpServletResponse response) throws Exception { + logger.debug("WMSAction.execute"); + try { + SessionModel sm = SessionModelFactory.getInstance().getSessionModel( + request); + ArtifactObject artifact = sm.getCurrentArtifact(); + + ArtifactDatabaseClientFactory factory = + ArtifactDatabaseClientFactory.getInstance(); + ArtifactDatabaseClient adc = factory.getArtifactDatabaseClient( + getLocale(request)); + ArtifactObject artifactfactory = sm.getSelectedArtifactFactory(); + + // do wms publishing + String url = adc.publishWMS(artifactfactory, artifact); + request.setAttribute("layer", artifact.getId()); + + return super.execute(mapping, form, request, response); + } + catch (Exception e) { + logger.error(e, e); + request.setAttribute( + CommunicationKeys.REQUEST_EXCEPTION_MESSAGE_ID, + e.getMessage()); + + return super.getExceptionForward(mapping); + } + } + +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : diff -r 9a5e50e7afaa -r cbd397712ecf gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/ArtifactDatabaseClient.java --- a/gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/ArtifactDatabaseClient.java Mon Feb 15 11:42:29 2010 +0000 +++ b/gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/ArtifactDatabaseClient.java Mon Feb 22 18:04:55 2010 +0000 @@ -105,6 +105,14 @@ throws ArtifactDatabaseClientException; /** + * @param factory + * @param artifact + * @return URL to wms service as string + */ + public String publishWMS(ArtifactObject factory, ArtifactObject artifact); + + + /** * @param artifactFactory * @param currentArtifact * @return diff -r 9a5e50e7afaa -r cbd397712ecf gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java --- a/gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java Mon Feb 15 11:42:29 2010 +0000 +++ b/gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java Mon Feb 22 18:04:55 2010 +0000 @@ -751,10 +751,31 @@ } + public String publishWMS(ArtifactObject factory, ArtifactObject artifact) { + log.debug("Start wms publishing..."); + + String target = "wms"; + String requestURL = getArtifactUrl(factory, artifact) + "/" + target; + Document request = createOutRequestBody( + artifact, target, "text/xml", null); + try { + InputStream input = doPostRequest(requestURL, request); + Document result = XMLUtils.readDocument(input); + } + catch (IOException ioe) { + log.error(ioe, ioe); + return null; + } + + // TODO Return URL to WMS service + return null; + } + public Collection calculateStatistics( - ArtifactObject artifactFactory, - ArtifactObject currentArtifact) - throws ArtifactDatabaseClientException { + ArtifactObject artifactFactory, + ArtifactObject currentArtifact) + throws ArtifactDatabaseClientException + { log.debug("DefaultArtifactDatabaseClient.calculateStatistics"); Collection resultValues = null; diff -r 9a5e50e7afaa -r cbd397712ecf gnv/src/main/java/de/intevation/gnv/util/XMLUtils.java --- a/gnv/src/main/java/de/intevation/gnv/util/XMLUtils.java Mon Feb 15 11:42:29 2010 +0000 +++ b/gnv/src/main/java/de/intevation/gnv/util/XMLUtils.java Mon Feb 22 18:04:55 2010 +0000 @@ -147,7 +147,7 @@ return s == null || s.length() == 0 ? def : s; } - public Document readDocument(InputStream inputStream) { + public static Document readDocument(InputStream inputStream) { Document returnValue = null; try { DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory diff -r 9a5e50e7afaa -r cbd397712ecf gnv/src/main/webapp/WEB-INF/config/struts-config.xml --- a/gnv/src/main/webapp/WEB-INF/config/struts-config.xml Mon Feb 15 11:42:29 2010 +0000 +++ b/gnv/src/main/webapp/WEB-INF/config/struts-config.xml Mon Feb 22 18:04:55 2010 +0000 @@ -93,6 +93,20 @@ scope="request" validate="false"> + + + + + <%@page import="de.intevation.gnv.action.sessionmodel.DiagrammOptions"%> <%@page import="de.intevation.gnv.artifactdatabase.objects.OutputParameter"%> +<%@page import="de.intevation.gnv.artifactdatabase.objects.ArtifactObject"%> <%@page import="java.util.Collection"%> <%@page import="java.util.Iterator"%> <%@page import="java.net.URLEncoder"%> <% SessionModel sm = SessionModelFactory.getInstance().getSessionModel(request); + ArtifactObject artifact = sm.getCurrentArtifact(); String mimeType = null; String parameterString = ""; + String wmslayer = null; + String target = "chart"; String targetCSV = "csv"; @@ -72,6 +76,7 @@ String mimeTypeWMS = null; if (supportWMS) { mimeTypeWMS = sm.getOutputMode(targetWMS).getMimeType(); + wmslayer = artifact.getId(); } %> @@ -106,7 +111,7 @@ <%}%> <%if (supportWMS) { %> - "> + "> <%}%> diff -r 9a5e50e7afaa -r cbd397712ecf gnv/src/main/webapp/WEB-INF/jsp/index.jsp --- a/gnv/src/main/webapp/WEB-INF/jsp/index.jsp Mon Feb 15 11:42:29 2010 +0000 +++ b/gnv/src/main/webapp/WEB-INF/jsp/index.jsp Mon Feb 22 18:04:55 2010 +0000 @@ -8,6 +8,7 @@ Object staticui = request.getAttribute("staticui"); Object statistic = request.getAttribute("statistic"); Object histogram = request.getAttribute("histogram"); + Object wms = request.getAttribute("wms"); boolean furthertargets = true; Object furthertargetsObject = request.getAttribute("furthertargets"); @@ -43,6 +44,8 @@ <%}%> +
+ <%-- render chart options if existing for this state --%> diff -r 9a5e50e7afaa -r cbd397712ecf gnv/src/main/webapp/WEB-INF/jsp/mainlayout.jsp --- a/gnv/src/main/webapp/WEB-INF/jsp/mainlayout.jsp Mon Feb 15 11:42:29 2010 +0000 +++ b/gnv/src/main/webapp/WEB-INF/jsp/mainlayout.jsp Mon Feb 22 18:04:55 2010 +0000 @@ -43,9 +43,56 @@ "-1.5763 58.3616))"; } + + - +
diff -r 9a5e50e7afaa -r cbd397712ecf gnv/src/main/webapp/styles/default.css --- a/gnv/src/main/webapp/styles/default.css Mon Feb 15 11:42:29 2010 +0000 +++ b/gnv/src/main/webapp/styles/default.css Mon Feb 22 18:04:55 2010 +0000 @@ -261,6 +261,14 @@ left: 350px; } +div#map { + position: absolute; + top: 33px; + left: 350px; + width: 325px; + height: 325px; +} + div.histogram { position: absolute; top: 33px;