teichmann@5831: package org.dive4elements.river.artifacts; aheinecke@5552: aheinecke@5552: import java.util.List; aheinecke@5552: aheinecke@5552: import org.w3c.dom.Document; aheinecke@5552: aheinecke@5552: import org.apache.log4j.Logger; aheinecke@5552: aheinecke@5552: import com.vividsolutions.jts.geom.Envelope; aheinecke@5552: teichmann@5831: import org.dive4elements.artifacts.ArtifactFactory; teichmann@5831: import org.dive4elements.artifacts.CallMeta; aheinecke@5552: teichmann@5831: import org.dive4elements.artifactdatabase.state.DefaultOutput; teichmann@5831: import org.dive4elements.artifactdatabase.state.Facet; teichmann@5831: import org.dive4elements.artifactdatabase.state.State; aheinecke@5552: teichmann@5831: import org.dive4elements.river.model.River; teichmann@5831: import org.dive4elements.river.model.Jetty; teichmann@5831: teichmann@5831: import org.dive4elements.river.artifacts.model.FacetTypes; teichmann@5831: import org.dive4elements.river.artifacts.model.RiverFactory; teichmann@5831: import org.dive4elements.river.utils.FLYSUtils; teichmann@5831: import org.dive4elements.river.utils.GeometryUtils; aheinecke@5552: aheinecke@5552: aheinecke@5552: public class WMSJettiesArtifact extends WMSDBArtifact { aheinecke@5552: aheinecke@5552: public static final String NAME = "jetties"; aheinecke@5552: aheinecke@5552: aheinecke@5552: private static final Logger logger = aheinecke@5552: Logger.getLogger(WMSJettiesArtifact.class); aheinecke@5552: aheinecke@5552: aheinecke@5552: @Override aheinecke@5552: public void setup( aheinecke@5552: String identifier, aheinecke@5552: ArtifactFactory factory, aheinecke@5552: Object context, aheinecke@5552: CallMeta callMeta, aheinecke@5552: Document data) aheinecke@5552: { aheinecke@5552: logger.debug("WMSJettiesArtifact.setup"); aheinecke@5552: aheinecke@5552: super.setup(identifier, factory, context, callMeta, data); aheinecke@5552: } aheinecke@5552: aheinecke@5552: aheinecke@5552: @Override aheinecke@5552: public String getName() { aheinecke@5552: return NAME; aheinecke@5552: } aheinecke@5552: aheinecke@5552: aheinecke@5552: @Override aheinecke@5552: public State getCurrentState(Object cc) { aheinecke@5552: State s = new JettiesState(this); aheinecke@5552: aheinecke@5552: List fs = getFacets(getCurrentStateId()); aheinecke@5552: aheinecke@5552: DefaultOutput o = new DefaultOutput( aheinecke@5552: "floodmap", aheinecke@5552: "floodmap", aheinecke@5552: "image/png", aheinecke@5552: fs, aheinecke@5552: "map"); aheinecke@5552: aheinecke@5552: s.getOutputs().add(o); aheinecke@5552: aheinecke@5552: return s; aheinecke@5552: } aheinecke@5552: aheinecke@5552: aheinecke@5552: public static class JettiesState extends WMSDBState implements FacetTypes aheinecke@5552: { aheinecke@5552: private static final Logger logger = aheinecke@5552: Logger.getLogger(JettiesState.class); aheinecke@5552: aheinecke@5552: protected int riverId; aheinecke@5552: aheinecke@5552: public JettiesState(WMSDBArtifact artifact) { aheinecke@5552: super(artifact); aheinecke@5552: riverId = 0; aheinecke@5552: } aheinecke@5552: aheinecke@5552: @Override aheinecke@5552: protected String getFacetType() { aheinecke@5552: return FLOODMAP_JETTIES; aheinecke@5552: } aheinecke@5552: aheinecke@5552: @Override aheinecke@5552: protected String getUrl() { aheinecke@5552: return FLYSUtils.getUserWMSUrl(artifact.identifier()); aheinecke@5552: } aheinecke@5552: aheinecke@5552: @Override aheinecke@5552: protected String getSrid() { aheinecke@5552: River river = RiverFactory.getRiver(getRiverId()); aheinecke@5552: return FLYSUtils.getRiverSrid(river.getName()); aheinecke@5552: } aheinecke@5552: aheinecke@5552: @Override aheinecke@5552: protected Envelope getExtent(boolean reproject) { aheinecke@5552: List jetties; aheinecke@5552: String kind = getIdPart(2); aheinecke@5552: aheinecke@5552: jetties = Jetty.getJetties(getRiverId(), Integer.parseInt(kind)); aheinecke@5552: aheinecke@5552: Envelope max = null; aheinecke@5552: aheinecke@5552: for (Jetty b: jetties) { aheinecke@5552: Envelope env = b.getGeom().getEnvelopeInternal(); aheinecke@5552: aheinecke@5552: if (max == null) { aheinecke@5552: max = env; aheinecke@5552: continue; aheinecke@5552: } aheinecke@5552: aheinecke@5552: max.expandToInclude(env); aheinecke@5552: } aheinecke@5552: aheinecke@5552: return max != null && reproject aheinecke@5552: ? GeometryUtils.transform(max, getSrid()) aheinecke@5552: : max; aheinecke@5552: } aheinecke@5552: aheinecke@5552: @Override aheinecke@5552: protected String getFilter() { aheinecke@5552: // The expected id string is: aheinecke@5552: // river_id;layer-name;kind aheinecke@5552: aheinecke@5552: String kind = getIdPart(2); aheinecke@5552: return "river_id=" + String.valueOf(getRiverId()) + aheinecke@5552: " AND kind_id=" + kind; aheinecke@5552: } aheinecke@5552: aheinecke@5552: @Override aheinecke@5552: protected String getDataString() { aheinecke@5552: String srid = getSrid(); aheinecke@5552: aheinecke@5552: if (FLYSUtils.isUsingOracle()) { aheinecke@5552: return "geom FROM jetties USING SRID " + srid; aheinecke@5552: } aheinecke@5552: else { aheinecke@5552: return "geom FROM jetties USING UNIQUE id USING SRID " + srid; aheinecke@5552: } aheinecke@5552: } aheinecke@5552: aheinecke@5552: @Override aheinecke@5552: protected String getGeometryType() { aheinecke@5552: return "POINT"; aheinecke@5552: } aheinecke@5552: } // end of WMSKmState aheinecke@5552: } aheinecke@5552: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :