Mercurial > dive4elements > gnv-client
view gnv/src/main/java/de/intevation/gnv/action/PreviousArtifactStepAction.java @ 394:14eecfde4607
Render links to step back to previous states into gui. Added controller to advance back to these states.
gnv/trunk@538 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 13 Jan 2010 22:17:02 +0000 |
parents | |
children | 8330c1dbab34 |
line wrap: on
line source
package de.intevation.gnv.action; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.Enumeration; 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; 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.ArtifactObject; 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.ArtifactNamespaceContext; import de.intevation.gnv.util.XMLUtils; import de.intevation.gnv.util.XSLTransformer; /** * @author Ingo Weinzierl <ingo.weinzierl@intevation.de> * */ public class PreviousArtifactStepAction extends ArtifactDatabaseActionBase { 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"; private static Logger logger = Logger.getLogger(PreviousArtifactStepAction.class); public PreviousArtifactStepAction() { super(); } @Override public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response ) throws Exception { 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 ); Node currentUI = description.getCurrentUI(); if (currentUI != null) { XSLTransformer transformer = new XSLTransformer(); Node dynamicNode = (Node) XMLUtils.xpath( currentUI, XPATH_DYNAMIC_UI, XPathConstants.NODE, ArtifactNamespaceContext.INSTANCE ); if (dynamicNode != null) { String dynamicUI = transformer.transform( dynamicNode, "UTF-8", request.getRealPath( "WEB-INF/config/templates/describe-ui.xsl") ); request.setAttribute("ui", dynamicUI); } Node staticNode = (Node) XMLUtils.xpath( currentUI, XPATH_STATIC_UI, XPathConstants.NODE, ArtifactNamespaceContext.INSTANCE ); if (staticNode != null){ String staticUI = transformer.transform( staticNode, "UTF-8", request.getRealPath( "WEB-INF/config/templates/describe-ui-static.xsl") ); request.setAttribute("staticui", staticUI); } } return super.execute(mapping, form, request, response); } }