view flys-artifacts/src/main/java/de/intevation/flys/artifacts/RiverAxisArtifact.java @ 5200:42bb6ff78d1b 2.9.11

Directly set the connectionInitSqls on the datasource Somehow the factory fails to set the connectionInitSqls if we add it to the dbcpProperties. So we now set it directly
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 08 Mar 2013 11:48:33 +0100
parents dc0d37715e16
children ffa5eaad3a7b
line wrap: on
line source
package de.intevation.flys.artifacts;

import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.geom.Geometry;

import de.intevation.artifactdatabase.state.DefaultOutput;
import de.intevation.artifactdatabase.state.Facet;
import de.intevation.artifactdatabase.state.State;
import de.intevation.artifacts.ArtifactFactory;
import de.intevation.artifacts.CallMeta;
import de.intevation.flys.artifacts.model.FacetTypes;
import de.intevation.flys.artifacts.model.RiverFactory;
import de.intevation.flys.model.River;
import de.intevation.flys.utils.FLYSUtils;
import de.intevation.flys.utils.GeometryUtils;

import java.util.List;

import org.apache.log4j.Logger;
import org.w3c.dom.Document;

@Deprecated
public class RiverAxisArtifact extends WMSDBArtifact {

    public static final String NAME = "riveraxis";


    private static final Logger logger =
        Logger.getLogger(RiverAxisArtifact.class);


    @Override
    public void setup(
        String          identifier,
        ArtifactFactory factory,
        Object          context,
        CallMeta        callMeta,
        Document        data)
    {
        logger.debug("RiverAxisArtifact.setup");

        super.setup(identifier, factory, context, callMeta, data);
    }


    @Override
    public String getName() {
        return NAME;
    }


    @Override
    public State getCurrentState(Object cc) {
        State s = new RiverAxisState(this);

        List<Facet> fs = getFacets(getCurrentStateId());

        DefaultOutput o = new DefaultOutput(
            "floodmap",
            "floodmap",
            "image/png",
            fs,
            "map");

        s.getOutputs().add(o);

        return s;
    }


    public static class RiverAxisState extends WMSDBState implements FacetTypes
    {
        private static final Logger logger =
            Logger.getLogger(RiverAxisState.class);

        protected Geometry geom;
        protected int      riverId;

        public RiverAxisState(){}

        public RiverAxisState(FLYSArtifact artifact) {
            super(artifact);
            riverId = 0;
        }

        @Override
        public int getRiverId() {
            if (riverId == 0) {
                String ids = artifact.getDataAsString("ids");

                try {
                    riverId = Integer.parseInt(ids);
                }
                catch (NumberFormatException nfe) {
                    logger.error("Cannot parse river id from '" + ids + "'");
                }
            }

            return riverId;
        }

        @Override
        protected String getFacetType() {
            return FLOODMAP_RIVERAXIS;
        }

        @Override
        protected String getLayer() {
            return RiverFactory.getRiver(getRiverId()).getName();
        }

        @Override
        protected String getUrl() {
            return FLYSUtils.getRiverWMSUrl();
        }

        @Override
        protected String getSrid() {
            River river = RiverFactory.getRiver(getRiverId());
            return FLYSUtils.getRiverSrid(river.getName());
        }

        @Override
        protected Envelope getExtent(boolean reproject) {
            River river = RiverFactory.getRiver(getRiverId());

            if (reproject) {
                logger.debug("Query extent for RiverAxis with Srid: " + getSrid());
                return GeometryUtils.transform(
                    GeometryUtils.getRiverBoundary(river.getName()),
                    getSrid());
            }
            else {
                return GeometryUtils.transform(
                    GeometryUtils.getRiverBoundary(river.getName()),
                    "31467");
            }
        }

        @Override
        protected String getFilter() {
            return "river_id=" + String.valueOf(getRiverId());
        }

        @Override
        protected String getDataString() {
            if (FLYSUtils.isUsingOracle()) {
                return "geom FROM river_axes";
            }
            else {
                return "geom FROM river_axes USING UNIQUE id";
            }
        }

        @Override
        protected String getGeometryType() {
            return "LINE";
        }
    } // end of WMSKmState
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org