Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/WMSHydrBoundaryPolyArtifact.java @ 5642:b5bf8a2da8d8
Doc.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Wed, 10 Apr 2013 09:30:09 +0200 |
parents | 87dab419b924 |
children |
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.River; import de.intevation.flys.model.HydrBoundaryPoly; import de.intevation.flys.artifacts.model.FacetTypes; import de.intevation.flys.artifacts.model.RiverFactory; import de.intevation.flys.utils.FLYSUtils; import de.intevation.flys.utils.GeometryUtils; public class WMSHydrBoundaryPolyArtifact extends WMSDBArtifact { public static final String NAME = "hydr_boundary_poly"; private static final Logger logger = Logger.getLogger(WMSHydrBoundaryPolyArtifact.class); @Override public void setup( String identifier, ArtifactFactory factory, Object context, CallMeta callMeta, Document data) { logger.debug("WMSHydrBoundaryArtifact.setup"); super.setup(identifier, factory, context, callMeta, data); } @Override public String getName() { return NAME; } @Override public State getCurrentState(Object cc) { State s = new HydrBoundaryPolyState(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 HydrBoundaryPolyState extends WMSDBState implements FacetTypes { private static final Logger logger = Logger.getLogger(HydrBoundaryPolyState.class); protected int riverId; public HydrBoundaryPolyState(WMSDBArtifact artifact) { super(artifact); riverId = 0; } @Override protected String getFacetType() { return FLOODMAP_HYDR_BOUNDARY_POLY; } @Override protected String getUrl() { return FLYSUtils.getUserWMSUrl(artifact.identifier()); } @Override protected String getSrid() { River river = RiverFactory.getRiver(getRiverId()); return FLYSUtils.getRiverSrid(river.getName()); } @Override protected Envelope getExtent(boolean reproject) { String kind = getIdPart(2); String sectie = getIdPart(3); String sobek = getIdPart(4); int kindId = -1; int sectieId = -1; int sobekId = -1; if (kind != null) { kindId = Integer.parseInt(kind); } if (sectie != null && !sectie.equals("-1")) { sectieId = Integer.parseInt(sectie); } if (sobek != null && !sobek.equals("-1")) { sobekId = Integer.parseInt(sobek); } List<HydrBoundaryPoly> boundaries; if (kindId == -1 && sobekId == -1 && sectieId == -1) { boundaries = HydrBoundaryPoly.getHydrBoundaries( getRiverId(), getName()); } else { boundaries = HydrBoundaryPoly.getHydrBoundaries( getRiverId(), kindId, sectieId, sobekId); } Envelope max = null; for (HydrBoundaryPoly b: boundaries) { Envelope env = b.getGeom().getEnvelopeInternal(); if (max == null) { max = env; continue; } max.expandToInclude(env); } return max != null && reproject ? GeometryUtils.transform(max, getSrid()) : max; } @Override protected String getFilter() { // Expected id string: // river_id;layer_name;kind;sectie;sobek String kind = getIdPart(2); String sectie = getIdPart(3); String sobek = getIdPart(4); String filter = ""; if (kind != null && !kind.equals("-1")) { filter += " AND kind = " + kind; } if (sectie != null && !sectie.equals("-1")) { filter += " AND sectie = " + sectie; } if (sobek != null && !sobek.equals("-1")) { filter += " AND sobek = " + sobek; } if (filter.isEmpty()) { filter = " AND name='" + getName() + "'"; } return "river_id=" + String.valueOf(getRiverId()) + filter; } @Override protected String getDataString() { String srid = getSrid(); if (FLYSUtils.isUsingOracle()) { return "geom FROM hydr_boundaries_poly USING SRID " + srid; } else { return "geom FROM hydr_boundaries_poly USING UNIQUE id USING SRID " + srid; } } @Override protected String getGeometryType() { return "POLYGON"; } } // end of HydrBoundaryState } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :