/* * Geotoolkit - An Open Source Java GIS Toolkit * http://www.geotoolkit.org * * (C) 2008 - 2009, Geomatys * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.geotoolkit.ows.xml.v100; import java.util.Objects; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; import org.geotoolkit.ows.xml.AbstractCapabilitiesBase; /** * XML encoded GetCapabilities operation response. * This document provides clients with service metadata about a specific service instance, * usually including metadata about the tightly-coupled data served. * If the server does not implement the updateSequence parameter, * the server shall always return the complete Capabilities document, without the updateSequence parameter. * When the server implements the updateSequence parameter and the GetCapabilities operation request included the updateSequence parameter with the current value, * the server shall return this element with only the "version" and "updateSequence" attributes. * Otherwise, all optional elements shall be included or not depending on the actual value of the Contents parameter in the GetCapabilities operation request. * This base type shall be extended by each specific OWS to include the additional contents needed. * * <p>Java class for CapabilitiesBaseType complex type. * * <p>The following schema fragment specifies the expected content contained within this class. * * <pre> * <complexType name="CapabilitiesBaseType"> * <complexContent> * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> * <sequence> * <element ref="{http://www.opengis.net/ows}ServiceIdentification" minOccurs="0"/> * <element ref="{http://www.opengis.net/ows}ServiceProvider" minOccurs="0"/> * <element ref="{http://www.opengis.net/ows}OperationsMetadata" minOccurs="0"/> * </sequence> * <attribute name="version" use="required" type="{http://www.opengis.net/ows}VersionType" /> * <attribute name="updateSequence" type="{http://www.opengis.net/ows}UpdateSequenceType" /> * </restriction> * </complexContent> * </complexType> * </pre> * * * @module */ @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "CapabilitiesBaseType", propOrder = { "serviceIdentification", "serviceProvider", "operationsMetadata" }) public abstract class CapabilitiesBaseType implements AbstractCapabilitiesBase { @XmlElement(name = "ServiceIdentification") private ServiceIdentification serviceIdentification; @XmlElement(name = "ServiceProvider") private ServiceProvider serviceProvider; @XmlElement(name = "OperationsMetadata") private OperationsMetadata operationsMetadata; @XmlAttribute(required = true) private String version; @XmlAttribute private String updateSequence; /** * Build the base of a Capabilities document. */ public CapabilitiesBaseType(final String version, final String updateSequence) { this.version = version; this.updateSequence = updateSequence; } /** * Empty constructor used by JAXB. */ protected CapabilitiesBaseType() { } /** * Build the base of a Capabilities document. */ public CapabilitiesBaseType(final ServiceIdentification serviceIdentification, final ServiceProvider serviceProvider, final OperationsMetadata operationsMetadata, final String version, final String updateSequence) { this.operationsMetadata = operationsMetadata; this.serviceIdentification = serviceIdentification; this.serviceProvider = serviceProvider; this.updateSequence = updateSequence; this.version = version; } /** * Gets the value of the serviceIdentification property. * */ @Override public ServiceIdentification getServiceIdentification() { return serviceIdentification; } public void setServiceIdentification(final ServiceIdentification serviceIdentification) { this.serviceIdentification = serviceIdentification; } /** * Gets the value of the serviceProvider property. * */ @Override public ServiceProvider getServiceProvider() { return serviceProvider; } public void setServiceProvider(final ServiceProvider serviceProvider) { this.serviceProvider = serviceProvider; } /** * Gets the value of the operationsMetadata property. */ @Override public OperationsMetadata getOperationsMetadata() { return operationsMetadata; } public void setOperationsMetadata(final OperationsMetadata operationsMetadata) { this.operationsMetadata = operationsMetadata; } @Override public void updateURL(String url) { if (this.operationsMetadata != null) { this.operationsMetadata.updateURL(url); } } /** * Gets the value of the version property. * */ @Override public String getVersion() { return version; } /** * Gets the value of the updateSequence property. * */ @Override public String getUpdateSequence() { return updateSequence; } /** * Verify that this entry is identical to the specified object. */ @Override public boolean equals(final Object object) { if (object == this) { return true; } if (object instanceof CapabilitiesBaseType) { final CapabilitiesBaseType that = (CapabilitiesBaseType) object; return Objects.equals(this.operationsMetadata, that.operationsMetadata) && Objects.equals(this.serviceIdentification, that.serviceIdentification) && Objects.equals(this.serviceProvider, that.serviceProvider) && Objects.equals(this.updateSequence, that.updateSequence) && Objects.equals(this.version, that.version); } return false; } @Override public int hashCode() { int hash = 7; hash = 83 * hash + (this.serviceIdentification != null ? this.serviceIdentification.hashCode() : 0); hash = 83 * hash + (this.serviceProvider != null ? this.serviceProvider.hashCode() : 0); hash = 83 * hash + (this.operationsMetadata != null ? this.operationsMetadata.hashCode() : 0); hash = 83 * hash + (this.updateSequence != null ? this.updateSequence.hashCode() : 0); hash = 83 * hash + (this.version != null ? this.version.hashCode() : 0); return hash; } @Override public String toString() { final StringBuilder s = new StringBuilder("[").append(this.getClass().getSimpleName()).append(']'); if (operationsMetadata != null) { s.append("operations metadata:").append(operationsMetadata).append('\n'); } if (serviceIdentification != null) { s.append("service identification:").append(serviceIdentification).append('\n'); } if (serviceProvider != null) { s.append("service provider:").append(serviceProvider).append('\n'); } if (updateSequence != null) { s.append("updateSequence:").append(updateSequence).append('\n'); } if (version != null) { s.append("version:").append(version).append('\n'); } return s.toString(); } }