diff gnv/src/main/java/de/intevation/gnv/action/DoOutputAction.java @ 30:07e9c137a2f1

Added dynamic Outputparameter Support and Outputparameter-manipulation gnv/trunk@134 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Fri, 25 Sep 2009 14:24:08 +0000
parents bba8fd97e549
children 25fdec8b4c69
line wrap: on
line diff
--- a/gnv/src/main/java/de/intevation/gnv/action/DoOutputAction.java	Fri Sep 25 07:28:49 2009 +0000
+++ b/gnv/src/main/java/de/intevation/gnv/action/DoOutputAction.java	Fri Sep 25 14:24:08 2009 +0000
@@ -23,6 +23,8 @@
 import de.intevation.gnv.artifactdatabase.objects.ArtifactDescription;
 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;
 
 /**
  * @author Tim Englich <tim.englich@intevation.de>
@@ -59,30 +61,38 @@
         // TODO Check if is propper;
         
         SessionModel sm = SessionModelFactory.getInstance().getSessionModel(request);
-        ArtifactDescription ad = (ArtifactDescription)sm.getCurrentArtifact();
-        Collection<String> inputParameter = ad.getInputParameter();
-        Collection<InputParameter> ips = null;
-        if (inputParameter != null){
-            ips = new ArrayList<InputParameter>(inputParameter.size());
-            Iterator<String> it = inputParameter.iterator();
-            while (it.hasNext()){
-                String name = it.next();
-                String[] values = request.getParameterValues(name);
-                InputParameter ip = new DefaultInputParameter(name, values);
-                ips.add(ip);
+        OutputMode outputMode =  sm.getOutputMode(target);
+        if (outputMode != null && outputMode.getMimeType().equals(mimeType)){
+            Collection<OutputParameter> inputParameter =outputMode.getOutputParameters();
+            Collection<InputParameter> ips = null;
+            if (inputParameter != null){
+                ips = new ArrayList<InputParameter>(inputParameter.size());
+                Iterator<OutputParameter> it = inputParameter.iterator();
+                while (it.hasNext()){
+                    String name = it.next().getName();
+                    String[] values = request.getParameterValues(name);
+                    InputParameter ip = new DefaultInputParameter(name, values);
+                    ips.add(ip);
+                }
             }
+            
+            ArtifactDatabaseClient adc = ArtifactDatabaseClientFactory.getInstance().getArtifactDatabaseClient();
+            
+            this.setHeaders(target, mimeType, response, request);
+            
+            OutputStream outputStream = response.getOutputStream();
+            adc.doOutput(sm.getSelectedArtifactFactory(), sm.getCurrentArtifact(), outputStream, target, mimeType, ips);
+            
+            outputStream.flush();
+            outputStream.close();
+        }else{
+            if (outputMode == null){
+                log.error("Outputmode wird nicht unterstützt.");
+            }else if (!outputMode.getMimeType().equals(mimeType)){
+                log.error("MimeType "+mimeType+" wird nicht unterstützt.");
+            }
+            // TODO FIXME: Fehlerbehandlung
         }
-        
-        ArtifactDatabaseClient adc = ArtifactDatabaseClientFactory.getInstance().getArtifactDatabaseClient();
-        
-        this.setHeaders(target, mimeType, response, request);
-        
-        OutputStream outputStream = response.getOutputStream();
-        adc.doOutput(sm.getSelectedArtifactFactory(), sm.getCurrentArtifact(), outputStream, target, mimeType, ips);
-        
-        outputStream.flush();
-        outputStream.close();
-        
         return super.execute(mapping, form, request, response);
     }
     

http://dive4elements.wald.intevation.org