comparison 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
comparison
equal deleted inserted replaced
29:bba8fd97e549 30:07e9c137a2f1
21 import de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClient; 21 import de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClient;
22 import de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClientFactory; 22 import de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClientFactory;
23 import de.intevation.gnv.artifactdatabase.objects.ArtifactDescription; 23 import de.intevation.gnv.artifactdatabase.objects.ArtifactDescription;
24 import de.intevation.gnv.artifactdatabase.objects.DefaultInputParameter; 24 import de.intevation.gnv.artifactdatabase.objects.DefaultInputParameter;
25 import de.intevation.gnv.artifactdatabase.objects.InputParameter; 25 import de.intevation.gnv.artifactdatabase.objects.InputParameter;
26 import de.intevation.gnv.artifactdatabase.objects.OutputMode;
27 import de.intevation.gnv.artifactdatabase.objects.OutputParameter;
26 28
27 /** 29 /**
28 * @author Tim Englich <tim.englich@intevation.de> 30 * @author Tim Englich <tim.englich@intevation.de>
29 * 31 *
30 */ 32 */
57 log.debug("MimeType: "+mimeType); 59 log.debug("MimeType: "+mimeType);
58 60
59 // TODO Check if is propper; 61 // TODO Check if is propper;
60 62
61 SessionModel sm = SessionModelFactory.getInstance().getSessionModel(request); 63 SessionModel sm = SessionModelFactory.getInstance().getSessionModel(request);
62 ArtifactDescription ad = (ArtifactDescription)sm.getCurrentArtifact(); 64 OutputMode outputMode = sm.getOutputMode(target);
63 Collection<String> inputParameter = ad.getInputParameter(); 65 if (outputMode != null && outputMode.getMimeType().equals(mimeType)){
64 Collection<InputParameter> ips = null; 66 Collection<OutputParameter> inputParameter =outputMode.getOutputParameters();
65 if (inputParameter != null){ 67 Collection<InputParameter> ips = null;
66 ips = new ArrayList<InputParameter>(inputParameter.size()); 68 if (inputParameter != null){
67 Iterator<String> it = inputParameter.iterator(); 69 ips = new ArrayList<InputParameter>(inputParameter.size());
68 while (it.hasNext()){ 70 Iterator<OutputParameter> it = inputParameter.iterator();
69 String name = it.next(); 71 while (it.hasNext()){
70 String[] values = request.getParameterValues(name); 72 String name = it.next().getName();
71 InputParameter ip = new DefaultInputParameter(name, values); 73 String[] values = request.getParameterValues(name);
72 ips.add(ip); 74 InputParameter ip = new DefaultInputParameter(name, values);
75 ips.add(ip);
76 }
73 } 77 }
78
79 ArtifactDatabaseClient adc = ArtifactDatabaseClientFactory.getInstance().getArtifactDatabaseClient();
80
81 this.setHeaders(target, mimeType, response, request);
82
83 OutputStream outputStream = response.getOutputStream();
84 adc.doOutput(sm.getSelectedArtifactFactory(), sm.getCurrentArtifact(), outputStream, target, mimeType, ips);
85
86 outputStream.flush();
87 outputStream.close();
88 }else{
89 if (outputMode == null){
90 log.error("Outputmode wird nicht unterstützt.");
91 }else if (!outputMode.getMimeType().equals(mimeType)){
92 log.error("MimeType "+mimeType+" wird nicht unterstützt.");
93 }
94 // TODO FIXME: Fehlerbehandlung
74 } 95 }
75
76 ArtifactDatabaseClient adc = ArtifactDatabaseClientFactory.getInstance().getArtifactDatabaseClient();
77
78 this.setHeaders(target, mimeType, response, request);
79
80 OutputStream outputStream = response.getOutputStream();
81 adc.doOutput(sm.getSelectedArtifactFactory(), sm.getCurrentArtifact(), outputStream, target, mimeType, ips);
82
83 outputStream.flush();
84 outputStream.close();
85
86 return super.execute(mapping, form, request, response); 96 return super.execute(mapping, form, request, response);
87 } 97 }
88 98
89 protected void setHeaders(String target, String mimeType, HttpServletResponse response, HttpServletRequest request){ 99 protected void setHeaders(String target, String mimeType, HttpServletResponse response, HttpServletRequest request){
90 response.setHeader("Content-Type", mimeType); 100 response.setHeader("Content-Type", mimeType);

http://dive4elements.wald.intevation.org