Package org.geoserver.wcs2_0

Source Code of org.geoserver.wcs2_0.GetCapabilities

/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/

package org.geoserver.wcs2_0;

import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.logging.Logger;

import net.opengis.wcs20.GetCapabilitiesType;

import org.geoserver.platform.OWS20Exception;
import org.geoserver.wcs.WCSInfo;
import org.geoserver.wcs.response.WCSCapsTransformer;
import org.geoserver.wcs.responses.CoverageResponseDelegateFinder;
import org.geoserver.wcs2_0.exception.WCS20Exception;
import org.geoserver.wcs2_0.response.WCS20GetCapabilitiesTransformer;
import org.geoserver.wcs2_0.util.RequestUtils;
import org.geotools.util.logging.Logging;
import org.geotools.xml.transform.TransformerBase;

/**
*
* @author Emanuele Tajariol (etj) - GeoSolutions
*/
public class GetCapabilities {

    protected Logger LOGGER = Logging.getLogger(DefaultWebCoverageService20.class);
   
    private WCSInfo wcs;
    private CoverageResponseDelegateFinder responseFactory;

    public static final List<String> PROVIDED_VERSIONS =
            Collections.unmodifiableList(Arrays.asList(
                WCS20Const.V201,
                WCS20Const.V20,
                WCS20Const.V111,
                WCS20Const.V110));

    public GetCapabilities(WCSInfo wcs, CoverageResponseDelegateFinder responseFactory) {
        this.wcs = wcs;
        this.responseFactory = responseFactory;
    }

    TransformerBase run(GetCapabilitiesType request) throws WCS20Exception {
        List<String> acceptedVersions = request.getAcceptVersions() == null ? null : request.getAcceptVersions().getVersion();

        String negotiatedVersion = RequestUtils.getVersionOws20(PROVIDED_VERSIONS, acceptedVersions);

        if (WCS20Const.V110.equals(negotiatedVersion) || WCS20Const.V111.equals(negotiatedVersion)) {
            LOGGER.warning("GetCapa2.0 Dispatching to 1.1"); // next code should be tested a bit
            WCSCapsTransformer capsTransformer = new WCSCapsTransformer(wcs.getGeoServer());
            capsTransformer.setEncoding(Charset.forName((wcs.getGeoServer().getSettings().getCharset())));
            return capsTransformer;
        } else if (WCS20Const.V20.equals(negotiatedVersion) || WCS20Const.V201.equals(negotiatedVersion)) {
            WCS20GetCapabilitiesTransformer capsTransformer = new WCS20GetCapabilitiesTransformer(wcs.getGeoServer(), responseFactory);
            capsTransformer.setEncoding(Charset.forName((wcs.getGeoServer().getSettings().getCharset())));
            return capsTransformer;
        } else {
            throw new WCS20Exception("Internal error: Could not understand version:" + negotiatedVersion,
                    OWS20Exception.OWSExceptionCode.VersionNegotiationFailed, negotiatedVersion);
        }

    }

}
TOP

Related Classes of org.geoserver.wcs2_0.GetCapabilities

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.