Mercurial > dive4elements > gnv-client
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); }