view gnv/src/main/java/de/intevation/gnv/action/WMSAction.java @ 585:2e690cb2247c

Show information about MapServer path and layer name after publishing calculated shapefiles as wms. Use MapServer settings configured in conf.xml to feed OpenLayers client. gnv/trunk@736 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 05 Mar 2010 09:33:30 +0000
parents cbd397712ecf
children ccd47d9887ec
line wrap: on
line source
package de.intevation.gnv.action;

import javax.servlet.http.HttpServletRequest;
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.Document;

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.ArtifactObject;
import de.intevation.gnv.util.XMLUtils;

/**
 * @author Ingo Weinzierl (ingo.weinzierl@intevation.de)
 */
public class WMSAction extends DescribeUIAction {

    public static final String XPATH_MAPSERVER_PATH =
        "/art:meta/art:mapserver/art:server/text()";

    public static final String XPATH_MAPSERVER_MAPFILE =
        "/art:meta/art:mapserver/art:map/text()";

    /**
     * the logger, used to log exceptions and additonaly information
     */
    private static Logger logger = Logger.getLogger(WMSAction.class);

    /**
     * Constructor
     */
    public WMSAction() {
        super();
    }

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response) throws Exception {
        logger.debug("WMSAction.execute");
        try {
            SessionModel sm = SessionModelFactory.getInstance().getSessionModel(
                request);
            ArtifactObject artifact = sm.getCurrentArtifact();

            ArtifactDatabaseClientFactory factory =
                ArtifactDatabaseClientFactory.getInstance();
            ArtifactDatabaseClient adc = factory.getArtifactDatabaseClient(
                getLocale(request));
            ArtifactObject artifactfactory = sm.getSelectedArtifactFactory();

            // do wms publishing
            Document meta        = adc.publishWMS(artifactfactory, artifact);
            String mapserverPath = XMLUtils.getStringXPath(
                meta, XPATH_MAPSERVER_PATH);
            String mapfilePath   = XMLUtils.getStringXPath(
                meta, XPATH_MAPSERVER_MAPFILE);

            request.setAttribute("mapserver", mapserverPath);
            request.setAttribute("mapfile", mapfilePath);
            request.setAttribute("layer", artifact.getId());

            return super.execute(mapping, form, request, response);
        }
        catch (Exception e) {
            logger.error(e, e);
            request.setAttribute(
                CommunicationKeys.REQUEST_EXCEPTION_MESSAGE_ID,
                e.getMessage());

            return super.getExceptionForward(mapping);
        }
    }

}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org