diff gnv/src/main/java/de/intevation/gnv/action/PreviousArtifactStepAction.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 8330c1dbab34
children 377da78ed36b
line wrap: on
line diff
--- a/gnv/src/main/java/de/intevation/gnv/action/PreviousArtifactStepAction.java	Fri Jan 22 09:49:34 2010 +0000
+++ b/gnv/src/main/java/de/intevation/gnv/action/PreviousArtifactStepAction.java	Fri Jan 22 11:28:25 2010 +0000
@@ -6,33 +6,24 @@
 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.ArtifactObject;
 
-import de.intevation.gnv.util.ArtifactNamespaceContext;
-import de.intevation.gnv.util.XMLUtils;
-import de.intevation.gnv.util.XSLTransformer;
-
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import javax.xml.xpath.XPathConstants;
-
 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;
+
 /**
  * @author Ingo Weinzierl <ingo.weinzierl@intevation.de>
  *
  */
-public class PreviousArtifactStepAction extends ArtifactDatabaseActionBase {
+public class PreviousArtifactStepAction extends DescribeUIAction {
 
-    public static final String XPATH_DYNAMIC_UI = "art:dynamic";
-    public static final String XPATH_STATIC_UI  = "art:static";
 
     public static final String URL_STATE_KEY = "target";
 
@@ -55,68 +46,29 @@
 
         String id = request.getSession().getId();
 
-        SessionModel session =
-            SessionModelFactory.getInstance().getSessionModel(request);
-
-            // TODO check if target is reachable
-
-            ArtifactDatabaseClientFactory f =
-                ArtifactDatabaseClientFactory.getInstance();
-            ArtifactDatabaseClient client   =
-                f.getArtifactDatabaseClient(getLocale(request));
-
-            ArtifactObject artifactFactory = session.getSelectedArtifactFactory();
-            ArtifactObject currentArtifact = session.getCurrentArtifact();
-
-            String target = (String) request.getParameter(URL_STATE_KEY);
-            logger.debug("Step back to previous state: " + target);
-
-            client.doAdvance(
-                artifactFactory,
-                currentArtifact,
-                target
-            );
-
-            ArtifactDescription description = client.getCurrentStepDescription(
-                artifactFactory,
-                currentArtifact,
-                true
-            );
+        SessionModel session = SessionModelFactory.getInstance().getSessionModel(
+            request);
 
-            Node currentUI = description.getCurrentUI();
-            if (currentUI != null) {
-                XSLTransformer transformer = new XSLTransformer();
-                Node dynamicNode = (Node) XMLUtils.xpath(
-                    currentUI,
-                    XPATH_DYNAMIC_UI,
-                    XPathConstants.NODE,
-                    ArtifactNamespaceContext.INSTANCE
-                );
+        // TODO check if target is reachable
 
-                if (dynamicNode != null) {
-                    String dynamicUI = transformer.transform(
-                        dynamicNode, "UTF-8", request.getRealPath(
-                            "WEB-INF/config/templates/describe-ui.xsl")
-                    );
-                    request.setAttribute("ui", dynamicUI);
-                }
+        ArtifactDatabaseClientFactory f =
+            ArtifactDatabaseClientFactory.getInstance();
+        ArtifactDatabaseClient client   =
+            f.getArtifactDatabaseClient(getLocale(request));
 
-                Node staticNode = (Node) XMLUtils.xpath(
-                    currentUI,
-                    XPATH_STATIC_UI,
-                    XPathConstants.NODE,
-                    ArtifactNamespaceContext.INSTANCE
-                );
+        ArtifactObject artifactFactory = session.getSelectedArtifactFactory();
+        ArtifactObject currentArtifact = session.getCurrentArtifact();
 
-                if (staticNode != null){
-                    String staticUI = transformer.transform(
-                        staticNode, "UTF-8", request.getRealPath(
-                            "WEB-INF/config/templates/describe-ui-static.xsl")
-                    );
-                    request.setAttribute("staticui", staticUI);
-                }
-            }
+        String target = (String) request.getParameter(URL_STATE_KEY);
+        logger.debug("Step back to previous state: " + target);
+
+        client.doAdvance(
+            artifactFactory,
+            currentArtifact,
+            target
+        );
 
         return super.execute(mapping, form, request, response);
     }
 }
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org