comparison 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
comparison
equal deleted inserted replaced
415:9f4a0b990d27 558:8032da9e8b70
1 package de.intevation.gnv.action.mapviewer; 1 package de.intevation.gnv.action.mapviewer;
2 2
3 import java.io.ByteArrayInputStream;
3 import java.io.InputStream; 4 import java.io.InputStream;
5 import java.util.ArrayList;
4 import java.util.Collection; 6 import java.util.Collection;
7 import java.util.Iterator;
5 8
6 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletRequest;
7 import javax.servlet.http.HttpServletResponse; 10 import javax.servlet.http.HttpServletResponse;
8 11
9 import org.apache.log4j.Logger; 12 import org.apache.log4j.Logger;
12 import org.apache.struts.action.ActionMapping; 15 import org.apache.struts.action.ActionMapping;
13 16
14 import de.intevation.gnv.action.ArtifactDatabaseActionBase; 17 import de.intevation.gnv.action.ArtifactDatabaseActionBase;
15 import de.intevation.gnv.action.mapviewer.parser.ExternalCallParser; 18 import de.intevation.gnv.action.mapviewer.parser.ExternalCallParser;
16 import de.intevation.gnv.action.mapviewer.parser.XMLExternalCallParser; 19 import de.intevation.gnv.action.mapviewer.parser.XMLExternalCallParser;
20 import de.intevation.gnv.action.sessionmodel.SessionModel;
21 import de.intevation.gnv.action.sessionmodel.SessionModelFactory;
17 import de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClientFactory; 22 import de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClientFactory;
23 import de.intevation.gnv.artifactdatabase.objects.ArtifactObject;
18 import de.intevation.gnv.artifactdatabase.objects.map.MapService; 24 import de.intevation.gnv.artifactdatabase.objects.map.MapService;
19 25
20 /** 26 /**
21 * 27 *
22 * @author Tim Englich <tim.englich@intevation.de> 28 * @author Tim Englich <tim.englich@intevation.de>
42 @Override 48 @Override
43 public ActionForward execute(ActionMapping mapping, ActionForm form, 49 public ActionForward execute(ActionMapping mapping, ActionForm form,
44 HttpServletRequest request, 50 HttpServletRequest request,
45 HttpServletResponse response) throws Exception { 51 HttpServletResponse response) throws Exception {
46 log.debug("MapViewerCallAction.execute"); 52 log.debug("MapViewerCallAction.execute");
47 InputStream inputStream = request.getInputStream(); 53 InputStream inputStream = null;
54 String documentvalue = request.getParameter("document");
55 if (documentvalue != null){
56 inputStream = new ByteArrayInputStream(documentvalue.getBytes());
57 }else{
58 inputStream = request.getInputStream();
59 }
60
48 if (inputStream != null){ 61 if (inputStream != null){
49 try { 62 try {
50 ExternalCallParser ecp = new XMLExternalCallParser(inputStream); 63 ExternalCallParser ecp = new XMLExternalCallParser(inputStream);
51 ecp.parse(); 64 ecp.parse();
52 String geometry = ecp.getGeometry(); 65 String geometry = ecp.getGeometry();
53 String srs = ecp.getSRS(); 66 String srs = ecp.getSRS();
54 Collection<MapService> mapServices = ecp.getMapServices(); 67 Collection<MapService> mapServices = ecp.getMapServices();
55 68
56 ArtifactDatabaseClientFactory 69 Collection<ArtifactObject> availableFactories =
70 ArtifactDatabaseClientFactory
57 .getInstance() 71 .getInstance()
58 .getArtifactDatabaseClient(getLocale(request)) 72 .getArtifactDatabaseClient(getLocale(request))
59 .getArtifactFactoryMetaInformation(mapServices, 73 .getArtifactFactoryMetaInformation(mapServices,
60 geometry, 74 geometry,
61 srs); 75 srs);
62 76
63 // 2. Call Artifactfactories. 77 Collection<ArtifactObject> providedFactories =
64 // 3. Sort out which ArtifactFactories should not be used. 78 ArtifactDatabaseClientFactory
65 // 4. Store the retrieved Parameter to each ArtifactFactory 79 .getInstance()
80 .getArtifactDatabaseClient(getLocale(request))
81 .getArtifactFactories();
82
83 // Sort out which ArtifactFactories should not be used.
84 Collection<ArtifactObject> usedFactories =
85 new ArrayList<ArtifactObject>(availableFactories.size());
86
87 Iterator<ArtifactObject> it = availableFactories.iterator();
88 while (it.hasNext()){
89 ArtifactObject ao = it.next();
90 if (providedFactories.contains(ao)){
91 usedFactories.add(ao);
92 }
93 }
94
95 SessionModel sm = SessionModelFactory
96 .getInstance()
97 .getSessionModel(request);
98 sm.resetModel();
99 sm.setArtifacteFactories(usedFactories);
66 } catch (Exception e) { 100 } catch (Exception e) {
67 log.error(e,e); 101 log.error(e,e);
68 } 102 }
69 }else{ 103 }else{
70 log.error("Kein Anfragedokument übergeben."); 104 log.error("Kein Anfragedokument übergeben.");

http://dive4elements.wald.intevation.org