ingo@3300: package de.intevation.flys.artifacts.model.map; ingo@3300: christian@3306: import com.vividsolutions.jts.geom.Envelope; christian@3306: christian@3306: import de.intevation.artifactdatabase.state.DefaultFacet; christian@3306: import de.intevation.artifactdatabase.state.Facet; christian@3306: import de.intevation.artifacts.Artifact; christian@3306: import de.intevation.artifacts.ArtifactNamespaceContext; christian@3306: import de.intevation.artifacts.CallContext; christian@3306: import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; christian@3306: import de.intevation.flys.artifacts.states.DefaultState.ComputeType; christian@3306: import de.intevation.flys.utils.GeometryUtils; christian@3306: ingo@3300: import java.util.ArrayList; ingo@3300: import java.util.List; ingo@3300: ingo@3300: import org.apache.log4j.Logger; ingo@3300: import org.w3c.dom.Document; ingo@3300: import org.w3c.dom.Element; ingo@3300: import org.w3c.dom.Node; ingo@3300: ingo@3300: ingo@3300: public class WMSLayerFacet ingo@3300: extends DefaultFacet ingo@3300: { ingo@3300: protected ComputeType type; ingo@3300: protected List layers; ingo@3300: protected String stateId; ingo@3300: protected String hash; ingo@3300: protected String url; ingo@3300: protected Envelope extent; ingo@3300: protected String srid; ingo@3300: ingo@3300: ingo@3300: private static final Logger logger = Logger.getLogger(WMSLayerFacet.class); ingo@3300: ingo@3300: public WMSLayerFacet() { ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public WMSLayerFacet(int index, String name, String description) { ingo@3300: this(index, name, description, ComputeType.FEED, null, null); ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public WMSLayerFacet( ingo@3300: int index, ingo@3300: String name, ingo@3300: String description, ingo@3300: ComputeType type, ingo@3300: String stateId, ingo@3300: String hash ingo@3300: ingo@3300: ) { ingo@3300: super(index, name, description); ingo@3300: this.layers = new ArrayList(); ingo@3300: this.type = type; ingo@3300: this.stateId = stateId; ingo@3300: this.hash = hash; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public WMSLayerFacet( ingo@3300: int index, ingo@3300: String name, ingo@3300: String description, ingo@3300: ComputeType type, ingo@3300: String stateId, ingo@3300: String hash, ingo@3300: String url ingo@3300: ) { ingo@3300: this(index, name, description, type, stateId, hash); ingo@3300: this.url = url; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void addLayer(String name) { ingo@3300: if (name != null && name.length() > 0) { ingo@3300: layers.add(name); ingo@3300: } ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public List getLayers() { ingo@3300: return layers; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void removeLayer(String layer) { ingo@3300: if (layers != null) { ingo@3300: layers.remove(layer); ingo@3300: } ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setExtent(Envelope extent) { ingo@3300: if (extent != null) { ingo@3300: this.extent = extent; ingo@3300: } christian@3306: else { christian@3306: logger.debug("setExtent(): extent is null"); christian@3306: } ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public Envelope getExtent() { ingo@3300: return extent; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public void setSrid(String srid) { ingo@3300: if (srid != null) { ingo@3300: this.srid = srid; ingo@3300: } ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public String getSrid() { ingo@3300: return srid; ingo@3300: } ingo@3300: ingo@3300: christian@3306: @Override ingo@3300: public Object getData(Artifact artifact, CallContext context) { ingo@3300: return null; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: @Override ingo@3300: public Node toXML(Document doc) { ingo@3300: ElementCreator ec = new ElementCreator( ingo@3300: doc, ingo@3300: ArtifactNamespaceContext.NAMESPACE_URI, ingo@3300: ArtifactNamespaceContext.NAMESPACE_PREFIX); ingo@3300: ingo@3300: Element facet = ec.create("facet"); ingo@3300: ec.addAttr(facet, "description", description, true); ingo@3300: ec.addAttr(facet, "index", String.valueOf(index), true); ingo@3300: ec.addAttr(facet, "name", name, true); ingo@3300: ec.addAttr(facet, "url", url, true); ingo@3300: ec.addAttr(facet, "layers", layers.get(0), true); ingo@3300: ec.addAttr(facet, "srid", srid != null ? srid : "", true); ingo@3300: ec.addAttr(facet, "extent", extent != null ingo@3300: ? GeometryUtils.jtsBoundsToOLBounds(extent) ingo@3300: : "", true); ingo@3300: ec.addAttr(facet, "queryable", String.valueOf(isQueryable()), true); ingo@3300: ingo@3300: return facet; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: public boolean isQueryable() { ingo@3300: return false; ingo@3300: } ingo@3300: ingo@3300: ingo@3300: @Override ingo@3300: public Facet deepCopy() { ingo@3300: WMSLayerFacet copy = new WMSLayerFacet(); ingo@3300: copy.set(this); ingo@3300: ingo@3300: copy.type = type; ingo@3300: copy.layers = new ArrayList(layers); ingo@3300: copy.stateId = stateId; ingo@3300: copy.hash = hash; ingo@3300: copy.url = url; ingo@3300: copy.extent = extent; ingo@3300: copy.srid = srid; ingo@3300: ingo@3300: return copy; ingo@3300: } ingo@3300: } ingo@3300: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :