Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/WMSFloodplainArtifact.java @ 2571:63f44b8b41a3
Partial Dontcrash on flys/issue647 (NaNs from WstValueTable interpolation).
flys-artifacts/trunk@4099 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Thu, 01 Mar 2012 12:17:38 +0000 |
parents | 7fc87a67e6f7 |
children | f5af3adb3b95 |
line wrap: on
line source
package de.intevation.flys.artifacts; import java.util.List; import org.w3c.dom.Document; import org.apache.log4j.Logger; import com.vividsolutions.jts.geom.Envelope; import de.intevation.artifacts.ArtifactFactory; import de.intevation.artifacts.CallMeta; import de.intevation.artifactdatabase.state.DefaultOutput; import de.intevation.artifactdatabase.state.Facet; import de.intevation.artifactdatabase.state.State; import de.intevation.flys.model.Floodplain; import de.intevation.flys.model.River; import de.intevation.flys.artifacts.model.FacetTypes; import de.intevation.flys.artifacts.model.RiverFactory; import de.intevation.flys.artifacts.resources.Resources; import de.intevation.flys.utils.FLYSUtils; public class WMSFloodplainArtifact extends WMSDBArtifact { public static final String NAME = "floodplain"; private static final Logger logger = Logger.getLogger(WMSFloodplainArtifact.class); @Override public void setup( String identifier, ArtifactFactory factory, Object context, CallMeta callMeta, Document data) { logger.debug("WMSFloodplainArtifact.setup"); super.setup(identifier, factory, context, callMeta, data); } @Override public String getName() { return NAME; } @Override public State getCurrentState(Object cc) { State s = new FloodplainState(this); List<Facet> fs = facets.get(getCurrentStateId()); DefaultOutput o = new DefaultOutput( "floodmap", "floodmap", "image/png", fs, "map"); s.getOutputs().add(o); return s; } public static class FloodplainState extends WMSDBState implements FacetTypes { private static final Logger logger = Logger.getLogger(FloodplainState.class); protected int riverId; public FloodplainState(WMSDBArtifact artifact) { super(artifact); riverId = 0; } public int getRiverId() { if (riverId == 0) { String ids = artifact.getDataAsString("ids"); try { riverId = Integer.valueOf(ids); } catch (NumberFormatException nfe) { logger.error("Cannot parse river id from '" + ids + "'"); } } return riverId; } protected River getRiver() { return RiverFactory.getRiver(getRiverId()); } @Override protected String getFacetType() { return FLOODMAP_FLOODPLAIN; } @Override protected String getTitle(CallMeta meta) { return Resources.getMsg( meta, FLOODMAP_FLOODPLAIN, FLOODMAP_FLOODPLAIN); } @Override protected String getUrl() { return FLYSUtils.getUserWMSUrl(artifact.identifier()); } @Override protected String getSrid() { River river = getRiver(); return FLYSUtils.getRiverSrid(river.getName()); } @Override protected Envelope getExtent() { River river = getRiver(); Floodplain plain = Floodplain.getFloodplain(river.getName()); return plain.getGeom().getEnvelopeInternal(); } @Override protected String getFilter() { return "river_id=" + String.valueOf(getRiverId()); } @Override protected String getDataString() { String srid = getSrid(); if (FLYSUtils.isUsingOracle()) { return "geom FROM floodplain USING SRID " + srid; } else { return "geom FROM floodplain USING UNIQUE id USING SRID " +srid; } } @Override protected String getGeometryType() { return "POLYGON"; } } // end of WMSKmState } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :