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