/* (c) 2015 Open Source Geospatial Foundation - all rights reserved * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.wps.gdal; import java.util.ArrayList; import java.util.List; import org.geoserver.ogr.core.Format; import org.geoserver.wcs.response.GdalCoverageResponseDelegate; import org.geoserver.wps.ppio.PPIOFactory; import org.geoserver.wps.ppio.ProcessParameterIO; /** * Factory to create an output PPIO for each GDAL format managed by gdal_translate command. */ public class GdalPPIOFactory implements PPIOFactory { private GdalCoverageResponseDelegate delegate; public GdalPPIOFactory(GdalCoverageResponseDelegate delegate) { this.delegate = delegate; } @Override public List<ProcessParameterIO> getProcessParameterIO() { List<ProcessParameterIO> gdalParams = new ArrayList<ProcessParameterIO>(); for (Format of : this.delegate.getFormats()) { ProcessParameterIO ppio = null; String computedMimeType = delegate.getMimeType(of.getGeoserverFormat()); if (of.getGeoserverFormat() != null && !of.getGeoserverFormat().isEmpty()) { computedMimeType = computedMimeType + "; subtype=" + of.getGeoserverFormat(); } if (of.getType() == null) { // binary is the default type ppio = new GdalBinaryPPIO(of.getGeoserverFormat(), delegate, computedMimeType); } else { switch (of.getType()) { case BINARY: ppio = new GdalBinaryPPIO(of.getGeoserverFormat(), delegate, computedMimeType); break; case TEXT: ppio = new GdalCDataPPIO(of.getGeoserverFormat(), delegate, computedMimeType); break; case XML: ppio = new GdalXMLPPIO(of.getGeoserverFormat(), delegate); break; default: break; } } if (ppio != null) { gdalParams.add(ppio); } } return gdalParams; } }