diff gnv/src/main/java/de/intevation/gnv/action/mapviewer/MapViewerCallAction.java @ 558:8032da9e8b70

Added further business logic for the MapViewer-Interface gnv/trunk@654 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Mon, 01 Feb 2010 15:08:39 +0000
parents b88e881e8e94
children 4df3347d6d1d
line wrap: on
line diff
--- a/gnv/src/main/java/de/intevation/gnv/action/mapviewer/MapViewerCallAction.java	Wed Jan 27 14:26:30 2010 +0000
+++ b/gnv/src/main/java/de/intevation/gnv/action/mapviewer/MapViewerCallAction.java	Mon Feb 01 15:08:39 2010 +0000
@@ -1,7 +1,10 @@
 package de.intevation.gnv.action.mapviewer;
 
+import java.io.ByteArrayInputStream;
 import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Iterator;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -14,7 +17,10 @@
 import de.intevation.gnv.action.ArtifactDatabaseActionBase;
 import de.intevation.gnv.action.mapviewer.parser.ExternalCallParser;
 import de.intevation.gnv.action.mapviewer.parser.XMLExternalCallParser;
+import de.intevation.gnv.action.sessionmodel.SessionModel;
+import de.intevation.gnv.action.sessionmodel.SessionModelFactory;
 import de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClientFactory;
+import de.intevation.gnv.artifactdatabase.objects.ArtifactObject;
 import de.intevation.gnv.artifactdatabase.objects.map.MapService;
 
 /**
@@ -44,7 +50,14 @@
                                  HttpServletRequest request,
                                  HttpServletResponse response) throws Exception {
         log.debug("MapViewerCallAction.execute");
-        InputStream inputStream = request.getInputStream();
+        InputStream inputStream = null;
+        String documentvalue = request.getParameter("document");
+        if (documentvalue != null){
+            inputStream = new ByteArrayInputStream(documentvalue.getBytes());
+        }else{
+            inputStream = request.getInputStream();
+        }
+        
         if (inputStream != null){
             try {
                 ExternalCallParser ecp = new XMLExternalCallParser(inputStream);
@@ -53,16 +66,37 @@
                 String srs = ecp.getSRS();
                 Collection<MapService> mapServices = ecp.getMapServices();
                  
-                ArtifactDatabaseClientFactory
+                Collection<ArtifactObject> availableFactories = 
+                       ArtifactDatabaseClientFactory
                           .getInstance()
                           .getArtifactDatabaseClient(getLocale(request))
                           .getArtifactFactoryMetaInformation(mapServices,
                                                              geometry,
                                                              srs);
                 
-                // 2. Call Artifactfactories.
-                // 3. Sort out which ArtifactFactories should not be used.
-                // 4. Store the retrieved Parameter to each ArtifactFactory
+                Collection<ArtifactObject> providedFactories = 
+                        ArtifactDatabaseClientFactory
+                           .getInstance()
+                           .getArtifactDatabaseClient(getLocale(request))
+                           .getArtifactFactories();
+                
+                // Sort out which ArtifactFactories should not be used.
+                Collection<ArtifactObject> usedFactories = 
+                       new ArrayList<ArtifactObject>(availableFactories.size());
+                
+                Iterator<ArtifactObject> it = availableFactories.iterator();
+                while (it.hasNext()){
+                    ArtifactObject ao = it.next();
+                    if (providedFactories.contains(ao)){
+                        usedFactories.add(ao);
+                    }
+                }
+                    
+                SessionModel sm = SessionModelFactory
+                                     .getInstance()
+                                     .getSessionModel(request);
+                sm.resetModel();
+                sm.setArtifacteFactories(usedFactories);
             } catch (Exception e) {
                 log.error(e,e);
             }

http://dive4elements.wald.intevation.org