Package org.geoserver.catalog.impl

Source Code of org.geoserver.catalog.impl.CoverageInfoImpl

/* Copyright (c) 2001 - 2008 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.catalog.impl;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.geoserver.catalog.Catalog;
import org.geoserver.catalog.CatalogVisitor;
import org.geoserver.catalog.CoverageDimensionInfo;
import org.geoserver.catalog.CoverageInfo;
import org.geoserver.catalog.CoverageStoreInfo;
import org.geoserver.catalog.ProjectionPolicy;
import org.geotools.coverage.grid.io.AbstractGridCoverage2DReader;
import org.geotools.factory.Hints;
import org.geotools.geometry.jts.ReferencedEnvelope;
import org.opengis.coverage.grid.GridCoverage;
import org.opengis.coverage.grid.GridCoverageReader;
import org.opengis.coverage.grid.GridGeometry;
import org.opengis.util.ProgressListener;
/**
* Default Implementation of the {@link CoverageInfo} bean to capture information about a coverage.
*
* @author Simone Giannecchini, GeoSolutions SAS
*
*/
@SuppressWarnings("deprecation")
public class CoverageInfoImpl extends ResourceInfoImpl implements CoverageInfo {

    /**
   *
   */
  private static final long serialVersionUID = 659498790758954330L;

  protected String nativeFormat;

    protected GridGeometry grid;
   
    protected List<String> supportedFormats = new ArrayList<String>();

    protected List<String> interpolationMethods = new ArrayList<String>();

    protected String defaultInterpolationMethod;

    protected List<CoverageDimensionInfo> dimensions = new ArrayList<CoverageDimensionInfo>();

    protected List<String> requestSRS = new ArrayList<String>();

    protected List<String> responseSRS = new ArrayList<String>();
   
    protected Map parameters = new HashMap();

    protected CoverageInfoImpl() {
    }

    public CoverageInfoImpl(Catalog catalog) {
        super( catalog );
    }

    public CoverageInfoImpl(Catalog catalog, String id) {
        super(catalog, id);
    }

    public CoverageStoreInfo getStore() {
        return (CoverageStoreInfo) super.getStore();
    }

    public GridGeometry getGrid() {
        return grid;
    }
   
    public void setGrid(GridGeometry grid) {
        this.grid = grid;
    }
   
    public String getNativeFormat() {
        return nativeFormat;
    }

    public void setNativeFormat(String nativeFormat) {
        this.nativeFormat = nativeFormat;
    }

    public List<String> getSupportedFormats() {
        return supportedFormats;
    }

    public List<String> getInterpolationMethods() {
        return interpolationMethods;
    }

    public String getDefaultInterpolationMethod() {
        return defaultInterpolationMethod;
    }

    public void setDefaultInterpolationMethod(String defaultInterpolationMethod) {
        this.defaultInterpolationMethod = defaultInterpolationMethod;
    }

    public List<CoverageDimensionInfo> getDimensions() {
        return dimensions;
    }

    public List<String> getRequestSRS() {
        return requestSRS;
    }

    public List<String> getResponseSRS() {
        return responseSRS;
    }

    public Map getParameters() {
        return parameters;
    }

    public void setParameters(Map parameters) {
        this.parameters = parameters;
    }

    public GridCoverage getGridCoverage(ProgressListener listener, Hints hints)
            throws IOException {
       
        // manage projection policy
        if (this.projectionPolicy== ProjectionPolicy.FORCE_DECLARED){
            final Hints crsHints= new Hints(Hints.DEFAULT_COORDINATE_REFERENCE_SYSTEM, this.getCRS());
            if(hints!=null)
                hints.putAll(crsHints);
            else
                hints=crsHints;
        }       
        return catalog.getResourcePool().getGridCoverage(this, null, hints);
    }
   
    public GridCoverage getGridCoverage(ProgressListener listener,
            ReferencedEnvelope envelope, Hints hints) throws IOException {
        // manage projection policy
        if (this.projectionPolicy== ProjectionPolicy.FORCE_DECLARED){
            final Hints crsHints= new Hints(Hints.DEFAULT_COORDINATE_REFERENCE_SYSTEM, this.getCRS());
            if(hints!=null)
                hints.putAll(crsHints);
            else
                hints=crsHints;
        }          
        return catalog.getResourcePool().getGridCoverage(this, envelope, hints);
    }
   
    public GridCoverageReader getGridCoverageReader(ProgressListener listener,
            Hints hints) throws IOException {
        // manage projection policy
        if (this.projectionPolicy== ProjectionPolicy.FORCE_DECLARED){
            final Hints crsHints= new Hints(Hints.DEFAULT_COORDINATE_REFERENCE_SYSTEM, this.getCRS());
            if(hints!=null)
                hints.putAll(crsHints);
            else
                hints=crsHints;
        }          
        return catalog.getResourcePool().getGridCoverageReader(getStore(), hints);
    }
   
    public void setSupportedFormats(List<String> supportedFormats) {
        this.supportedFormats = supportedFormats;
    }

    public void setInterpolationMethods(List<String> interpolationMethods) {
        this.interpolationMethods = interpolationMethods;
    }

    public void setDimensions(List<CoverageDimensionInfo> dimensions) {
        this.dimensions = dimensions;
    }

    public void setRequestSRS(List<String> requestSRS) {
        this.requestSRS = requestSRS;
    }

    public void setResponseSRS(List<String> responseSRS) {
        this.responseSRS = responseSRS;
    }
   
    public void accept(CatalogVisitor visitor) {
        visitor.visit(this);
    }

    public int hashCode() {
        final int prime = 31;
        int result = super.hashCode();
        result = prime
                * result
                + ((defaultInterpolationMethod == null) ? 0
                        : defaultInterpolationMethod.hashCode());
        result = prime * result
                + ((dimensions == null) ? 0 : dimensions.hashCode());
        result = prime * result + ((grid == null) ? 0 : grid.hashCode());
        result = prime
                * result
                + ((interpolationMethods == null) ? 0 : interpolationMethods
                        .hashCode());
        result = prime * result
                + ((nativeFormat == null) ? 0 : nativeFormat.hashCode());
        result = prime * result
                + ((parameters == null) ? 0 : parameters.hashCode());
        result = prime * result
                + ((requestSRS == null) ? 0 : requestSRS.hashCode());
        result = prime * result
                + ((responseSRS == null) ? 0 : responseSRS.hashCode());
        result = prime
                * result
                + ((supportedFormats == null) ? 0 : supportedFormats.hashCode());
        return result;
    }

    public boolean equals(Object obj) {
        if ( !( obj instanceof CoverageInfo ) ) {
            return false;
        }
        if ( !super.equals( obj ) ) {
            return false;
        }
       
        final CoverageInfo other = (CoverageInfo) obj;
        if (defaultInterpolationMethod == null) {
            if (other.getDefaultInterpolationMethod() != null)
                return false;
        } else if (!defaultInterpolationMethod
                .equals(other.getDefaultInterpolationMethod()))
            return false;
        if (dimensions == null) {
            if (other.getDimensions() != null)
                return false;
        } else if (!dimensions.equals(other.getDimensions()))
            return false;
        if (grid == null) {
            if (other.getGrid() != null)
                return false;
        } else if (!grid.equals(other.getGrid()))
            return false;
        if (interpolationMethods == null) {
            if (other.getInterpolationMethods() != null)
                return false;
        } else if (!interpolationMethods.equals(other.getInterpolationMethods()))
            return false;
        if (nativeFormat == null) {
            if (other.getNativeFormat() != null)
                return false;
        } else if (!nativeFormat.equals(other.getNativeFormat()))
            return false;
        if (parameters == null) {
            if (other.getParameters() != null)
                return false;
        } else if (!parameters.equals(other.getParameters()))
            return false;
        if (requestSRS == null) {
            if (other.getRequestSRS() != null)
                return false;
        } else if (!requestSRS.equals(other.getRequestSRS()))
            return false;
        if (responseSRS == null) {
            if (other.getResponseSRS() != null)
                return false;
        } else if (!responseSRS.equals(other.getResponseSRS()))
            return false;
        if (supportedFormats == null) {
            if (other.getSupportedFormats() != null)
                return false;
        } else if (!supportedFormats.equals(other.getSupportedFormats()))
            return false;
        return true;
    }
}
TOP

Related Classes of org.geoserver.catalog.impl.CoverageInfoImpl

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.