/* (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.importer.transform;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.geoserver.importer.FileData;
import org.geoserver.importer.ImportData;
/**
* Runs gdal_translate on a input raster file
*
* @author Andrea Aime - GeoSolutions
*/
public class GdalTranslateTransform extends AbstractCommandLineTransform implements RasterTransform {
private static final long serialVersionUID = -6241844409161277128L;
/**
* Checks if gdal_translate is available
*
*
* @throws IOException
*/
public static boolean isAvailable() throws IOException {
return new GdalTranslateTransform(new ArrayList<String>()).checkAvailable();
}
public GdalTranslateTransform(List<String> options) {
super(options);
}
@Override
protected List<String> getReplacementTargetNames(ImportData data) throws IOException {
File input = getInputFile(data);
return Collections.singletonList(input.getName());
}
@Override
protected File getInputFile(ImportData data) throws IOException {
if (data instanceof FileData) {
FileData fd = (FileData) data;
return fd.getFile();
} else {
throw new IOException("Can run gdal_translate only against file data");
}
}
@Override
protected File getExecutable() throws IOException {
return getExecutableFromPath("gdal_translate");
}
protected List<String> getAvailabilityTestOptions() {
return Collections.singletonList("--version");
}
}