ingo@942: package de.intevation.flys.artifacts; ingo@942: ingo@942: import java.util.List; ingo@942: ingo@1075: import org.w3c.dom.Document; ingo@1075: ingo@942: import org.apache.log4j.Logger; ingo@942: ingo@1832: import com.vividsolutions.jts.geom.Envelope; ingo@1832: import com.vividsolutions.jts.geom.Geometry; ingo@1832: ingo@1075: import de.intevation.artifacts.ArtifactFactory; ingo@952: import de.intevation.artifacts.CallMeta; ingo@942: ingo@1832: import de.intevation.artifactdatabase.state.DefaultOutput; ingo@942: import de.intevation.artifactdatabase.state.Facet; ingo@1832: import de.intevation.artifactdatabase.state.State; ingo@942: ingo@1075: import de.intevation.flys.model.River; ingo@1075: ingo@1832: import de.intevation.flys.artifacts.model.FacetTypes; ingo@1075: import de.intevation.flys.artifacts.model.RiverFactory; ingo@1832: import de.intevation.flys.utils.FLYSUtils; ingo@1832: import de.intevation.flys.utils.GeometryUtils; ingo@942: ingo@942: ingo@1832: public class RiverAxisArtifact extends WMSDBArtifact { ingo@942: ingo@942: public static final String NAME = "riveraxis"; ingo@942: ingo@942: ingo@942: private static final Logger logger = ingo@942: Logger.getLogger(RiverAxisArtifact.class); ingo@942: ingo@942: ingo@942: @Override ingo@1075: public void setup( ingo@1075: String identifier, ingo@1075: ArtifactFactory factory, ingo@1075: Object context, ingo@1075: CallMeta callMeta, ingo@1075: Document data) ingo@1075: { ingo@1075: logger.debug("RiverAxisArtifact.setup"); ingo@942: ingo@1075: super.setup(identifier, factory, context, callMeta, data); ingo@942: } ingo@1075: ingo@1075: ingo@1075: @Override ingo@1832: public String getName() { ingo@1832: return NAME; ingo@1832: } ingo@1832: ingo@1832: ingo@1832: @Override ingo@1832: public State getCurrentState(Object cc) { ingo@1832: State s = new RiverAxisState(this); ingo@1832: bjoern@4497: List fs = getFacets(getCurrentStateId()); ingo@1832: ingo@1832: DefaultOutput o = new DefaultOutput( ingo@1832: "floodmap", ingo@1832: "floodmap", ingo@1832: "image/png", ingo@1832: fs, ingo@1832: "map"); ingo@1832: ingo@1832: s.getOutputs().add(o); ingo@1832: ingo@1832: return s; ingo@1832: } ingo@1832: ingo@1832: ingo@1832: public static class RiverAxisState extends WMSDBState implements FacetTypes ingo@1075: { ingo@1832: private static final Logger logger = ingo@1832: Logger.getLogger(RiverAxisState.class); ingo@1832: ingo@1832: protected Geometry geom; ingo@1832: protected int riverId; ingo@1832: raimund@2082: public RiverAxisState(){} raimund@2082: raimund@2089: public RiverAxisState(FLYSArtifact artifact) { ingo@1832: super(artifact); ingo@1832: riverId = 0; ingo@1832: } ingo@1832: ingo@1832: public int getRiverId() { ingo@1832: if (riverId == 0) { ingo@1832: String ids = artifact.getDataAsString("ids"); ingo@1832: ingo@1832: try { sascha@3405: riverId = Integer.parseInt(ids); ingo@1832: } ingo@1832: catch (NumberFormatException nfe) { ingo@1832: logger.error("Cannot parse river id from '" + ids + "'"); ingo@1832: } ingo@1832: } ingo@1832: ingo@1832: return riverId; ingo@1832: } ingo@1832: ingo@1832: @Override ingo@1832: protected String getFacetType() { ingo@1832: return FLOODMAP_RIVERAXIS; ingo@1832: } ingo@1832: ingo@1832: @Override ingo@1832: protected String getUrl() { ingo@1832: return FLYSUtils.getUserWMSUrl(artifact.identifier()); ingo@1832: } ingo@1832: ingo@1832: @Override ingo@1832: protected String getSrid() { ingo@1832: River river = RiverFactory.getRiver(getRiverId()); ingo@1832: return FLYSUtils.getRiverSrid(river.getName()); ingo@1832: } ingo@1832: ingo@1832: @Override ingo@3918: protected Envelope getExtent(boolean reproject) { ingo@1832: River river = RiverFactory.getRiver(getRiverId()); sascha@3923: ingo@3918: if (reproject) { ingo@3918: logger.debug("Query extent for RiverAxis with Srid: " + getSrid()); ingo@3918: return GeometryUtils.transform( ingo@3918: GeometryUtils.getRiverBoundary(river.getName()), ingo@3918: getSrid()); ingo@3918: } ingo@3918: else { ingo@3918: return GeometryUtils.transform( ingo@3918: GeometryUtils.getRiverBoundary(river.getName()), ingo@3918: "31467"); ingo@3918: } ingo@1832: } ingo@1832: ingo@1832: @Override ingo@1832: protected String getFilter() { ingo@1832: return "river_id=" + String.valueOf(getRiverId()); ingo@1832: } ingo@1832: ingo@1832: @Override ingo@1832: protected String getDataString() { ingo@1845: if (FLYSUtils.isUsingOracle()) { ingo@3918: return "geom FROM river_axes"; ingo@1845: } ingo@1845: else { ingo@3918: return "geom FROM river_axes USING UNIQUE id"; ingo@1845: } ingo@1832: } ingo@1832: ingo@1832: @Override ingo@1832: protected String getGeometryType() { ingo@1832: return "LINE"; ingo@1832: } ingo@1832: } // end of WMSKmState ingo@942: } ingo@942: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :