Mercurial > dive4elements > gnv-client
diff gnv/src/main/java/de/intevation/gnv/action/WMSAction.java @ 668:ccd47d9887ec
Added an options panel for wms customization (issue198).
gnv/trunk@775 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Mon, 15 Mar 2010 13:46:05 +0000 |
parents | 2e690cb2247c |
children | 707e142e7d44 |
line wrap: on
line diff
--- a/gnv/src/main/java/de/intevation/gnv/action/WMSAction.java Fri Mar 12 11:56:07 2010 +0000 +++ b/gnv/src/main/java/de/intevation/gnv/action/WMSAction.java Mon Mar 15 13:46:05 2010 +0000 @@ -1,5 +1,9 @@ package de.intevation.gnv.action; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -10,11 +14,16 @@ import org.w3c.dom.Document; +import de.intevation.gnv.action.sessionmodel.DiagrammOptions; 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; +import de.intevation.gnv.artifactdatabase.objects.DefaultInputParameter; +import de.intevation.gnv.artifactdatabase.objects.InputParameter; +import de.intevation.gnv.artifactdatabase.objects.OutputMode; +import de.intevation.gnv.artifactdatabase.objects.OutputParameter; import de.intevation.gnv.util.XMLUtils; /** @@ -28,6 +37,9 @@ public static final String XPATH_MAPSERVER_MAPFILE = "/art:meta/art:mapserver/art:map/text()"; + public static final String XPATH_LAYER_TITLE = + "/art:meta/art:layer/art:title/text()"; + /** * the logger, used to log exceptions and additonaly information */ @@ -48,6 +60,39 @@ try { SessionModel sm = SessionModelFactory.getInstance().getSessionModel( request); + + OutputMode outputMode = sm.getOutputMode("wms"); + Collection<InputParameter> ips = null; + if (outputMode != null) { + Collection<OutputParameter> inputParameter = + outputMode.getOutputParameters(); + + if (inputParameter != null) { + ips = new ArrayList<InputParameter>(inputParameter.size()); + Iterator<OutputParameter> it = inputParameter.iterator(); + DiagrammOptions diagrammOptions = new DiagrammOptions(); + + int params = 0; + while (it.hasNext()) { + String name = it.next().getName(); + String[] values = request.getParameterValues(name); + String value = request.getParameter(name); + InputParameter ip = new DefaultInputParameter(name, + values); + ips.add(ip); + + if (value != null) { + ++params; + diagrammOptions.setValue(name, value); + } + } + + if (params > 0) { + sm.setDiagrammOptions(diagrammOptions); + } + } + } + ArtifactObject artifact = sm.getCurrentArtifact(); ArtifactDatabaseClientFactory factory = @@ -57,15 +102,25 @@ ArtifactObject artifactfactory = sm.getSelectedArtifactFactory(); // do wms publishing - Document meta = adc.publishWMS(artifactfactory, artifact); + Document meta = adc.publishWMS(artifactfactory,artifact,ips); String mapserverPath = XMLUtils.getStringXPath( meta, XPATH_MAPSERVER_PATH); String mapfilePath = XMLUtils.getStringXPath( meta, XPATH_MAPSERVER_MAPFILE); + String layer = XMLUtils.getStringXPath( + meta, XPATH_LAYER_TITLE); + layer = layer != null ? layer : artifact.getId(); + if (logger.isDebugEnabled()) { + logger.debug("Mapserver path: " + mapserverPath); + logger.debug("Mapfile path: " + mapfilePath); + logger.debug("Layer title: " + layer); + } + + request.setAttribute("wms", true); request.setAttribute("mapserver", mapserverPath); request.setAttribute("mapfile", mapfilePath); - request.setAttribute("layer", artifact.getId()); + request.setAttribute("layer", layer); return super.execute(mapping, form, request, response); }