Mercurial > dive4elements > gnv-client
diff 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 |
line wrap: on
line diff
--- a/gnv/src/main/java/de/intevation/gnv/action/DoOutputAction.java Fri Sep 25 07:28:49 2009 +0000 +++ b/gnv/src/main/java/de/intevation/gnv/action/DoOutputAction.java Fri Sep 25 14:24:08 2009 +0000 @@ -23,6 +23,8 @@ import de.intevation.gnv.artifactdatabase.objects.ArtifactDescription; import de.intevation.gnv.artifactdatabase.objects.DefaultInputParameter; import de.intevation.gnv.artifactdatabase.objects.InputParameter; +import de.intevation.gnv.artifactdatabase.objects.OutputMode; +import de.intevation.gnv.artifactdatabase.objects.OutputParameter; /** * @author Tim Englich <tim.englich@intevation.de> @@ -59,30 +61,38 @@ // TODO Check if is propper; SessionModel sm = SessionModelFactory.getInstance().getSessionModel(request); - ArtifactDescription ad = (ArtifactDescription)sm.getCurrentArtifact(); - Collection<String> inputParameter = ad.getInputParameter(); - Collection<InputParameter> ips = null; - if (inputParameter != null){ - ips = new ArrayList<InputParameter>(inputParameter.size()); - Iterator<String> it = inputParameter.iterator(); - while (it.hasNext()){ - String name = it.next(); - String[] values = request.getParameterValues(name); - InputParameter ip = new DefaultInputParameter(name, values); - ips.add(ip); + OutputMode outputMode = sm.getOutputMode(target); + if (outputMode != null && outputMode.getMimeType().equals(mimeType)){ + Collection<OutputParameter> inputParameter =outputMode.getOutputParameters(); + Collection<InputParameter> ips = null; + if (inputParameter != null){ + ips = new ArrayList<InputParameter>(inputParameter.size()); + Iterator<OutputParameter> it = inputParameter.iterator(); + while (it.hasNext()){ + String name = it.next().getName(); + String[] values = request.getParameterValues(name); + InputParameter ip = new DefaultInputParameter(name, values); + ips.add(ip); + } } + + ArtifactDatabaseClient adc = ArtifactDatabaseClientFactory.getInstance().getArtifactDatabaseClient(); + + this.setHeaders(target, mimeType, response, request); + + OutputStream outputStream = response.getOutputStream(); + adc.doOutput(sm.getSelectedArtifactFactory(), sm.getCurrentArtifact(), outputStream, target, mimeType, ips); + + outputStream.flush(); + outputStream.close(); + }else{ + if (outputMode == null){ + log.error("Outputmode wird nicht unterstützt."); + }else if (!outputMode.getMimeType().equals(mimeType)){ + log.error("MimeType "+mimeType+" wird nicht unterstützt."); + } + // TODO FIXME: Fehlerbehandlung } - - ArtifactDatabaseClient adc = ArtifactDatabaseClientFactory.getInstance().getArtifactDatabaseClient(); - - this.setHeaders(target, mimeType, response, request); - - OutputStream outputStream = response.getOutputStream(); - adc.doOutput(sm.getSelectedArtifactFactory(), sm.getCurrentArtifact(), outputStream, target, mimeType, ips); - - outputStream.flush(); - outputStream.close(); - return super.execute(mapping, form, request, response); }