/* * Constellation - An open source and standard compliant SDI * http://www.constellation-sdi.org * * Copyright 2014 Geomatys. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.constellation.wmts.ws; import org.constellation.dto.AccessConstraint; import org.constellation.dto.Contact; import org.constellation.dto.Details; import org.geotoolkit.ows.xml.AbstractContact; import org.geotoolkit.ows.xml.AbstractDCP; import org.geotoolkit.ows.xml.AbstractDomain; import org.geotoolkit.ows.xml.AbstractHTTP; import org.geotoolkit.ows.xml.AbstractOnlineResourceType; import org.geotoolkit.ows.xml.AbstractOperation; import org.geotoolkit.ows.xml.AbstractOperationsMetadata; import org.geotoolkit.ows.xml.AbstractRequestMethod; import org.geotoolkit.ows.xml.AbstractResponsiblePartySubset; import org.geotoolkit.ows.xml.AbstractServiceIdentification; import org.geotoolkit.ows.xml.AbstractServiceProvider; import org.geotoolkit.ows.xml.OWSXmlFactory; import org.geotoolkit.ows.xml.v110.CodeType; import org.geotoolkit.wmts.xml.WMTSResponse; import org.geotoolkit.wmts.xml.WMTSXmlFactory; import org.geotoolkit.wmts.xml.v100.Style; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import static org.apache.sis.util.ArgumentChecks.ensureNonNull; /** * WMTS Constants * * @author Guilhem Legal (Geomatys) */ public final class WMTSConstant { private WMTSConstant() {} public static final AbstractOperationsMetadata OPERATIONS_METADATA; static { final AbstractDomain restFullConstraint = OWSXmlFactory.buildDomain("1.1.0", "GetEncoding", Arrays.asList("RESTful")); final AbstractDomain kvpConstraint = OWSXmlFactory.buildDomain("1.1.0", "GetEncoding", Arrays.asList("KVP")); final AbstractRequestMethod getKVP = OWSXmlFactory.buildRrequestMethod("1.1.0", "someURL", Arrays.asList(kvpConstraint)); final AbstractRequestMethod getRSF = OWSXmlFactory.buildRrequestMethod("1.1.0", "someURL", Arrays.asList(restFullConstraint)); final AbstractRequestMethod post = OWSXmlFactory.buildRrequestMethod("1.1.0", "someURL", null); final AbstractHTTP httpFull = OWSXmlFactory.buildHttp("1.1.0", Arrays.asList(getKVP, getRSF), Arrays.asList(post)); final AbstractHTTP httpGFI = OWSXmlFactory.buildHttp("1.1.0", Arrays.asList(getKVP), Arrays.asList(post)); final List<AbstractDCP> getAndPostKR = new ArrayList<>(); getAndPostKR.add(OWSXmlFactory.buildDCP("1.1.0",httpFull)); final List<AbstractDCP> getAndPost = new ArrayList<>(); getAndPost.add(OWSXmlFactory.buildDCP("1.1.0", httpGFI)); final List<AbstractOperation> operations = new ArrayList<>(); final AbstractOperation getCapabilities = OWSXmlFactory.buildOperation("1.1.0", getAndPostKR, null, null, "GetCapabilities"); operations.add(getCapabilities); final AbstractOperation getTile = OWSXmlFactory.buildOperation("1.1.0", getAndPostKR, null, null, "GetTile"); operations.add(getTile); final AbstractOperation getFeatureInfo = OWSXmlFactory.buildOperation("1.1.0", getAndPost, null, null, "GetFeatureInfo"); operations.add(getFeatureInfo); final List<AbstractDomain> constraints = new ArrayList<>(); constraints.add(OWSXmlFactory.buildDomain("1.1.0", "PostEncoding", Arrays.asList("XML"))); OPERATIONS_METADATA = OWSXmlFactory.buildOperationsMetadata("1.1.0", operations, null, constraints, null); } /** * Generates the base capabilities for a WMS from the service metadata. * * @param metadata the service metadata * @return the service base capabilities */ public static WMTSResponse createCapabilities(final String version, final Details metadata) { ensureNonNull("metadata", metadata); ensureNonNull("version", version); final Contact currentContact = metadata.getServiceContact(); final AccessConstraint constraint = metadata.getServiceConstraints(); final AbstractServiceIdentification servIdent; if (constraint != null) { servIdent = OWSXmlFactory.buildServiceIdentification("1.1.0", metadata.getName(), metadata.getDescription(), metadata.getKeywords(), "WMTS", metadata.getVersions(), constraint.getFees(), Arrays.asList(constraint.getAccessConstraint())); } else { servIdent = OWSXmlFactory.buildServiceIdentification("1.1.0", metadata.getName(), metadata.getDescription(), metadata.getKeywords(), "WMTS", metadata.getVersions(), null, new ArrayList<String>()); } // Create provider part. final AbstractServiceProvider servProv; if (currentContact != null) { final AbstractContact contact = OWSXmlFactory.buildContact("1.1.0", currentContact.getPhone(), currentContact.getFax(), currentContact.getEmail(), currentContact.getAddress(), currentContact.getCity(), currentContact.getState(), currentContact.getZipCode(), currentContact.getCountry(), currentContact.getHoursOfService(), currentContact.getContactInstructions()); final AbstractResponsiblePartySubset responsible = OWSXmlFactory.buildResponsiblePartySubset("1.1.0", currentContact.getFullname(), currentContact.getPosition(), contact, null); AbstractOnlineResourceType orgUrl = null; if (currentContact.getUrl() != null) { orgUrl = OWSXmlFactory.buildOnlineResource("1.1.0", currentContact.getUrl()); } servProv = OWSXmlFactory.buildServiceProvider("1.1.0", currentContact.getOrganisation(), orgUrl, responsible); } else { servProv = OWSXmlFactory.buildServiceProvider("1.1.0", "", null, null); } // Create capabilities base. return WMTSXmlFactory.buildCapabilities(version, servIdent, servProv, null, null, null, null); } public static List<Style> DEFAULT_STYLES = new ArrayList<>(); static { final Style defaultStyle = new Style(); defaultStyle.setIsDefault(Boolean.TRUE); defaultStyle.setTitle("default"); defaultStyle.setIdentifier(new CodeType("default")); DEFAULT_STYLES.add(defaultStyle); } }