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);
         }

http://dive4elements.wald.intevation.org