diff gnv/src/main/java/de/intevation/gnv/action/NextArtifactStepAction.java @ 409:df78178e1180

Moved user interface creation to an own action. This makes avoids code duplication and makes it easier to write new action to handle special interactions, because there is no need for parsing the describe document and creating the user interface after this. gnv/trunk@599 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 22 Jan 2010 11:28:25 +0000
parents b5733f9f386b
children 27f25b9ae9af
line wrap: on
line diff
--- a/gnv/src/main/java/de/intevation/gnv/action/NextArtifactStepAction.java	Fri Jan 22 09:49:34 2010 +0000
+++ b/gnv/src/main/java/de/intevation/gnv/action/NextArtifactStepAction.java	Fri Jan 22 11:28:25 2010 +0000
@@ -2,6 +2,15 @@
  *
  */
 package de.intevation.gnv.action;
+import de.intevation.gnv.action.sessionmodel.SessionModel;
+import de.intevation.gnv.action.sessionmodel.SessionModelFactory;
+
+import de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClient;
+import de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClientFactory;
+
+import de.intevation.gnv.artifactdatabase.objects.ArtifactDescription;
+import de.intevation.gnv.artifactdatabase.objects.DefaultInputParameter;
+import de.intevation.gnv.artifactdatabase.objects.InputParameter;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -12,27 +21,18 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.log4j.Logger;
+
 import org.apache.struts.action.ActionForm;
 import org.apache.struts.action.ActionForward;
 import org.apache.struts.action.ActionMapping;
-import org.w3c.dom.Node;
 
-import de.intevation.gnv.action.sessionmodel.SessionModel;
-import de.intevation.gnv.action.sessionmodel.SessionModelFactory;
-import de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClient;
-import de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClientFactory;
-import de.intevation.gnv.artifactdatabase.objects.ArtifactDescription;
-import de.intevation.gnv.artifactdatabase.objects.ArtifactStatisticsSet;
-import de.intevation.gnv.artifactdatabase.objects.DefaultInputParameter;
-import de.intevation.gnv.artifactdatabase.objects.InputParameter;
-import de.intevation.gnv.util.XMLUtils;
-import de.intevation.gnv.util.XSLTransformer;
 
 /**
  * @author Tim Englich <tim.englich@intevation.de>
+ * @author Ingo Weinzierl (ingo.weinzierl@intevation.de)
  * 
  */
-public class NextArtifactStepAction extends ArtifactDatabaseActionBase {
+public class NextArtifactStepAction extends DescribeUIAction {
 
     /**
      * the logger, used to log exceptions and additonaly information
@@ -92,60 +92,28 @@
                         target = ad.getReachableStates().iterator().next();
                     }
     
-                    ArtifactDescription artifactDescription;
                     try {
-                        artifactDescription = adc.doNextStep(sm.getSelectedArtifactFactory(), 
-                                                             sm.getCurrentArtifact(),
-                                                             target, ips);
+                        adc.doNextStep(
+                            sm.getSelectedArtifactFactory(), 
+                            sm.getCurrentArtifact(),
+                            target,
+                            ips
+                        );
                     } catch (Exception e) {
                         log.error(e, e);
                         request.setAttribute(
                                 CommunicationKeys.REQUEST_EXCEPTION_MESSAGE_ID, e
                                         .getMessage());
-                        artifactDescription = sm.getArtifactDescription();
                     }
     
-                    Node currentUI = artifactDescription.getCurrentUI();
-                    if (currentUI != null){
-                        XSLTransformer transformer = new XSLTransformer();
-                        String url = response.encodeURL(
-                            mapping.findForward("back").getPath());
-                        transformer.addParameter("back-url", url);
-
-                        String fisUrl = response.encodeURL(
-                            mapping.findForward("selectfis").getPath());
-                        transformer.addParameter("selectfis", fisUrl);
-
-                        Node dynamicUINode =  new XMLUtils().getNodeXPath(currentUI,"art:dynamic");
-                        if (dynamicUINode != null){
-                            String ui = transformer.transform(
-                                dynamicUINode,
-                                "UTF-8",
-                                request.getRealPath(XSL_SHEET_DYNAMIC));
-            
-                            if (ui != null && ui.length() > 1)
-                                request.setAttribute("ui", ui);
-                        }
-                        
-                        Node staticUINode = new XMLUtils().getNodeXPath(currentUI, "art:static");
-                        if (staticUINode != null){
-                            String staticUI = transformer.transform(
-                                staticUINode,
-                                "UTF-8",
-                                request.getRealPath(XSL_SHEET_STATIC));
-                            request.setAttribute("staticui", staticUI);
-                        }
-                    }
                     Map tmpOuts = ad.getOutputModes();
                     request.setAttribute(
                         "furthertargets",
                         tmpOuts == null || tmpOuts.isEmpty()
                     );
                 } else {
-                    // statistic abholen und in das sessionmodell schreiben.
-                    ArtifactDescription artifactDescription;
                     try{
-                        artifactDescription = adc.getCurrentStepDescription(
+                        adc.getCurrentStepDescription(
                             sm.getSelectedArtifactFactory(),
                             sm.getCurrentArtifact(),
                             true
@@ -156,43 +124,10 @@
                     } catch (Exception e) {
                         log.error(e, e);
                         request.setAttribute(
-                                CommunicationKeys.REQUEST_EXCEPTION_MESSAGE_ID, e
-                                        .getMessage());
-                        artifactDescription = sm.getArtifactDescription();
+                            CommunicationKeys.REQUEST_EXCEPTION_MESSAGE_ID,
+                            e.getMessage());
                     }
     
-                    Node currentUI = artifactDescription.getCurrentUI();
-                    if (currentUI != null){
-                        XSLTransformer transformer = new XSLTransformer();
-                        String url = response.encodeURL(
-                            mapping.findForward("back").getPath());
-                        transformer.addParameter("back-url", url);
-
-                        String fisUrl = response.encodeURL(
-                            mapping.findForward("selectfis").getPath());
-                        transformer.addParameter("selectfis", fisUrl);
-                        
-                        Node dynamicUINode =  new XMLUtils().getNodeXPath(currentUI,"art:dynamic");
-                        if (dynamicUINode != null){
-                            String ui = transformer.transform(
-                                dynamicUINode,
-                                "UTF-8",
-                                request.getRealPath(XSL_SHEET_DYNAMIC));
-            
-                            if (ui != null && ui.length() > 1)
-                                request.setAttribute("ui", ui);
-                        }
-                        
-                        Node staticUINode = new XMLUtils().getNodeXPath(currentUI, "art:static");
-                        if (staticUINode != null){
-                            String staticUI = transformer.transform(
-                                staticUINode,
-                                "UTF-8",
-                                request.getRealPath(XSL_SHEET_STATIC));
-
-                            request.setAttribute("staticui", staticUI);
-                        }
-                    }
                     request.setAttribute("furthertargets", false);
                 }
             }else{
@@ -205,3 +140,4 @@
     }
 
 }
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org