/* (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.wcs.responses; import java.io.IOException; import java.io.OutputStream; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.zip.ZipOutputStream; import org.geoserver.config.GeoServer; import org.geoserver.platform.ServiceException; import org.geotools.coverage.grid.GridCoverage2D; import org.geotools.gce.gtopo30.GTopo30Writer; import org.opengis.coverage.grid.GridCoverageWriter; /** * Encoder for gtopo format * @author Simone Giannecchini, GeoSolutions SAS * */ public class GTopo30CoverageResponseDelegate extends BaseCoverageResponseDelegate implements CoverageResponseDelegate { @SuppressWarnings("serial") public GTopo30CoverageResponseDelegate(GeoServer geoserver) { super( geoserver, Arrays.asList("GTopo30"), //output formats new HashMap<String, String>(){ // file extensions { put("GTopo30", "zip"); put("application/gtopo30", "zip"); } }, new HashMap<String, String>(){ //mime types { put("GTopo30", "application/gtopo30"); } }); } /* * (non-Javadoc) * * @see org.vfny.geoserver.wcs.responses.CoverageResponseDelegate#encode(java.io.OutputStream) */ public void encode(GridCoverage2D sourceCoverage, String outputFormat, Map<String,String> econdingParameters, OutputStream output) throws ServiceException, IOException { // creating a zip outputstream final ZipOutputStream outZ = new ZipOutputStream(output); output = outZ; // creating a writer final GridCoverageWriter writer = new GTopo30Writer(outZ); try { // writing writer.write(sourceCoverage, null); } finally { try { // freeing everything writer.dispose(); } catch (Throwable e) { // TODO: handle exception } sourceCoverage.dispose(false); } } }