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