diff gnv/src/main/java/de/intevation/gnv/action/DoOutputAction.java @ 34:25fdec8b4c69

Added Global Errorhandling to the GNV-Client gnv/trunk@170 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Fri, 02 Oct 2009 08:38:57 +0000
parents 07e9c137a2f1
children 4405f31bbc30
line wrap: on
line diff
--- a/gnv/src/main/java/de/intevation/gnv/action/DoOutputAction.java	Mon Sep 28 10:36:08 2009 +0000
+++ b/gnv/src/main/java/de/intevation/gnv/action/DoOutputAction.java	Fri Oct 02 08:38:57 2009 +0000
@@ -52,48 +52,54 @@
             HttpServletRequest request, HttpServletResponse response)
             throws Exception {
         log.debug("DoOutputAction.execute");
-        String target = request.getParameter("target");
-        String mimeType = request.getParameter("mimetype");
-        
-        log.debug("Target: "+target);
-        log.debug("MimeType: "+mimeType);
-        
-        // TODO Check if is propper;
-        
-        SessionModel sm = SessionModelFactory.getInstance().getSessionModel(request);
-        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);
+        try {
+            String target = request.getParameter("target");
+            String mimeType = request.getParameter("mimetype");
+            
+            log.debug("Target: "+target);
+            log.debug("MimeType: "+mimeType);
+            
+            // TODO Check if is propper;
+            
+            SessionModel sm = SessionModelFactory.getInstance().getSessionModel(request);
+            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();
-        }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
+            return super.execute(mapping, form, request, response);
+        } catch (Exception e) {
+            log.error(e,e);
+            request.setAttribute(CommunicationKeys.REQUEST_EXCEPTION_MESSAGE_ID, e.getMessage());
+            return super.getExceptionForward(mapping);
         }
-        return super.execute(mapping, form, request, response);
     }
     
     protected void setHeaders(String target, String mimeType, HttpServletResponse response, HttpServletRequest request){

http://dive4elements.wald.intevation.org