diff gnv/src/main/java/de/intevation/gnv/action/NextArtifactStepAction.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 0f4362d75e9e
children ad381cc47217
line wrap: on
line diff
--- a/gnv/src/main/java/de/intevation/gnv/action/NextArtifactStepAction.java	Mon Sep 28 10:36:08 2009 +0000
+++ b/gnv/src/main/java/de/intevation/gnv/action/NextArtifactStepAction.java	Fri Oct 02 08:38:57 2009 +0000
@@ -51,70 +51,75 @@
     public ActionForward execute(ActionMapping mapping, ActionForm form,
             HttpServletRequest request, HttpServletResponse response)
             throws Exception {
-        log.debug("NextArtifactStepAction.execute");
-        SessionModel sm = SessionModelFactory.getInstance().getSessionModel(request);
-        ArtifactDescription ad = sm.getArtifactDescription();
-        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);
-            }
-        }
-        ArtifactDatabaseClient adc = ArtifactDatabaseClientFactory.getInstance().getArtifactDatabaseClient();
-        if (ad.getReachableStates() != null && !ad.getReachableStates().isEmpty()){
-            // TODO: Woher kommt der zu erreichende Status;
-            String target = null;
-            if (ad.getReachableStates().size() > 1){
-               target = request.getParameter("product"); // TODO HACK for Propducts every other Step has currently only one reachable state.
-            }else{
-                target = ad.getReachableStates().iterator().next();
+        try {
+            log.debug("NextArtifactStepAction.execute");
+            SessionModel sm = SessionModelFactory.getInstance().getSessionModel(request);
+            ArtifactDescription ad = sm.getArtifactDescription();
+            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);
+                }
             }
-            
-            ArtifactDescription artifactDescription = adc.doNextStep(sm.getSelectedArtifactFactory(), sm.getCurrentArtifact(), target, ips);
-            
-            Node currentUI = artifactDescription.getCurrentUI();
-            XSLTransformer transformer = new XSLTransformer();
-            String ui = transformer.transform(new XMLUtils().getNodeXPath(currentUI, "dynamic"), "UTF-8", request.getRealPath("WEB-INF/config/templates/describe-ui.xsl"));
-            
-            request.setAttribute("ui", ui);
-            
-            String staticUI = transformer.transform(new XMLUtils().getNodeXPath(currentUI, "static"), "UTF-8", request.getRealPath("WEB-INF/config/templates/describe-ui-static.xsl"));
-            request.setAttribute("staticui", staticUI);
-            
-            request.setAttribute("furthertargets", (ad.getReachableStates() != null && !ad.getReachableStates().isEmpty()));
-            
-        }else{
-            
-            adc.doFeed(sm.getSelectedArtifactFactory(), sm.getCurrentArtifact(), ips);
-               
-            request.setAttribute("diagramm", true);
-            
-            // statistic abholen und in das sessionmodell schreiben.
-            
-            Collection<ArtifactStatisticValue> statistics = adc.calculateStatistics(sm.getSelectedArtifactFactory(), sm.getCurrentArtifact());
-            sm.setStatistics(statistics);
-            
-            ArtifactDescription artifactDescription = adc.getCurrentStepDescription(sm.getSelectedArtifactFactory(), sm.getCurrentArtifact());
-            
-            Node currentUI = artifactDescription.getCurrentUI();
-            XSLTransformer transformer = new XSLTransformer();
-            String ui = transformer.transform(new XMLUtils().getNodeXPath(currentUI, "dynamic"), "UTF-8", request.getRealPath("WEB-INF/config/templates/describe-ui.xsl"));
+            ArtifactDatabaseClient adc = ArtifactDatabaseClientFactory.getInstance().getArtifactDatabaseClient();
+            if (ad.getReachableStates() != null && !ad.getReachableStates().isEmpty()){
+                // TODO: Woher kommt der zu erreichende Status;
+                String target = null;
+                if (ad.getReachableStates().size() > 1){
+                   target = request.getParameter("product"); // TODO HACK for Propducts every other Step has currently only one reachable state.
+                }else{
+                    target = ad.getReachableStates().iterator().next();
+                }
                 
-            request.setAttribute("ui", ui);
-            
-            String staticUI = transformer.transform(new XMLUtils().getNodeXPath(currentUI, "static"), "UTF-8", request.getRealPath("WEB-INF/config/templates/describe-ui-static.xsl"));
-            request.setAttribute("staticui", staticUI);
-            
-            request.setAttribute("furthertargets",false);
+                ArtifactDescription artifactDescription = adc.doNextStep(sm.getSelectedArtifactFactory(), sm.getCurrentArtifact(), target, ips);
+                
+                Node currentUI = artifactDescription.getCurrentUI();
+                XSLTransformer transformer = new XSLTransformer();
+                String ui = transformer.transform(new XMLUtils().getNodeXPath(currentUI, "dynamic"), "UTF-8", request.getRealPath("WEB-INF/config/templates/describe-ui.xsl"));
+                
+                request.setAttribute("ui", ui);
+                
+                String staticUI = transformer.transform(new XMLUtils().getNodeXPath(currentUI, "static"), "UTF-8", request.getRealPath("WEB-INF/config/templates/describe-ui-static.xsl"));
+                request.setAttribute("staticui", staticUI);
+                
+                request.setAttribute("furthertargets", (ad.getReachableStates() != null && !ad.getReachableStates().isEmpty()));
+                
+            }else{
+                
+                adc.doFeed(sm.getSelectedArtifactFactory(), sm.getCurrentArtifact(), ips);
+                   
+                request.setAttribute("diagramm", true);
+                
+                // statistic abholen und in das sessionmodell schreiben.
+                
+                Collection<ArtifactStatisticValue> statistics = adc.calculateStatistics(sm.getSelectedArtifactFactory(), sm.getCurrentArtifact());
+                sm.setStatistics(statistics);
+                
+                ArtifactDescription artifactDescription = adc.getCurrentStepDescription(sm.getSelectedArtifactFactory(), sm.getCurrentArtifact());
+                
+                Node currentUI = artifactDescription.getCurrentUI();
+                XSLTransformer transformer = new XSLTransformer();
+                String ui = transformer.transform(new XMLUtils().getNodeXPath(currentUI, "dynamic"), "UTF-8", request.getRealPath("WEB-INF/config/templates/describe-ui.xsl"));
+                    
+                request.setAttribute("ui", ui);
+                
+                String staticUI = transformer.transform(new XMLUtils().getNodeXPath(currentUI, "static"), "UTF-8", request.getRealPath("WEB-INF/config/templates/describe-ui-static.xsl"));
+                request.setAttribute("staticui", staticUI);
+                
+                request.setAttribute("furthertargets",false);
+            }
+            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);
     }
     
 

http://dive4elements.wald.intevation.org