/* (c) 2016 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.gdal; import java.util.Optional; import org.gdal.gdal.gdal; import org.geoserver.platform.ModuleStatus; import org.geotools.factory.GeoTools; import org.geotools.util.Version; import it.geosolutions.imageio.gdalframework.GDALUtilities; /** * Status page checking availability and binary details */ public class GDALStatus implements ModuleStatus { @Override public String getModule() { return "gs-gdal"; } @Override public Optional<String> getComponent() { return Optional.ofNullable("GridCoverage2DReader"); } @Override public String getName() { return "ImageI/O-Ext GDAL Coverage Extension"; } @Override public Optional<String> getVersion() { Version v = GeoTools.getVersion(GDALUtilities.class); if (v == null) { return Optional.empty(); } return Optional.ofNullable(v.toString()); } @Override public boolean isAvailable() { return GDALUtilities.isGDALAvailable(); } @Override public boolean isEnabled() { return true; } @Override public Optional<String> getMessage() { String message = "JNI GDAL Wrapper Version: " + getGDALWrapperJarVersion().orElse("null"); if (!isAvailable()) { message += "\njava.library.path: " + System.getProperty("java.library.path", ""); } else { message += metaData(); } return Optional.ofNullable(message); } @Override public Optional<String> getDocumentation() { return Optional.ofNullable(""); } public Optional<String> getGDALWrapperJarVersion() { if (isAvailable()) { Version v = GeoTools.getVersion(gdal.class); if (v == null) { return Optional.empty(); } return Optional.ofNullable(v.toString()); } else { return Optional.ofNullable("unavailable"); } } String metaData() { StringBuffer msg = new StringBuffer(); msg.append("\nGDAL Version: " + gdal.VersionInfo("RELEASE_NAME")); msg.append("\nGDAL Release Date: " + gdal.VersionInfo("RELEASE_DATE")); msg.append("\nGDAL Build Info: " + gdal.VersionInfo("BUILD_INFO")); return msg.toString(); } }