view flys-artifacts/src/main/java/de/intevation/flys/artifacts/RiverAxisArtifact.java @ 5462:f2371f3aaf03

Show top level folder icons only if node has no factory If you have an empty folder the folder icon is still shown. This makes it possible to add functional "Top Level" entries in the Datacage
author Andre Heinecke <aheinecke@intevation.de>
date Tue, 26 Mar 2013 18:29:13 +0100
parents ffa5eaad3a7b
children ae60bb7b8085
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 USING SRID " + getSrid();
            }
            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