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