Package org.vfny.geoserver.crs

Source Code of org.vfny.geoserver.crs.GeoserverGridShiftLocator

/* (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.vfny.geoserver.crs;

import java.io.File;
import java.net.URL;

import org.geoserver.platform.GeoServerExtensions;
import org.geoserver.platform.GeoServerResourceLoader;
import org.geoserver.platform.resource.Resource;
import org.geoserver.platform.resource.Resource.Type;
import org.geotools.data.DataUtilities;
import org.geotools.factory.AbstractFactory;
import org.geotools.metadata.iso.citation.Citations;
import org.geotools.referencing.factory.gridshift.GridShiftLocator;
import org.opengis.metadata.citation.Citation;

/**
* Provides a hook to locate grid shift files, such as NTv1, NTv2 and NADCON ones.
*
* @author Andrea Aime - Geosolutions
* @author Oscar Fonts - geomati.co
*/
public class GeoserverGridShiftLocator extends AbstractFactory implements GridShiftLocator {

    public GeoserverGridShiftLocator() {
        // higher priority than the default locator
        super(NORMAL_PRIORITY + 10);
    }

    @Override
    public Citation getVendor() {
        // one day we could roll a GeoServer citation, but for just one use it's too much work
        return Citations.GEOTOOLS;
    }

    /**
     * Locate the specified grid file.
     *
     * It will look in GEOSERVER_DATA_DIR/user_projections
     *
     * @param grid the grid name/location
     * @return the fully resolved URL of the grid or null, if the resource cannot be located.
     */
    @Override
    public URL locateGrid(String grid) {
        if (grid == null)
            return null;
       
        GeoServerResourceLoader loader = GeoServerExtensions.bean(GeoServerResourceLoader.class);
        if( loader == null ){
            return null; // must be test case still loading
        }
        Resource gridfile = loader.get("user_projections/" + grid);

        if (gridfile.getType() == Type.RESOURCE ) {
            return DataUtilities.fileToURL(gridfile.file());
        } else {
            return null;
        }
    }
}
TOP

Related Classes of org.vfny.geoserver.crs.GeoserverGridShiftLocator

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.