Plugin Extensibility & netcdfIOProvider API

Capella Datascience provides modular extension points allowing third-party plugins to contribute custom protocols, I/O providers, data adapters, and visualization engines.

Extension Point: org.polarsys.capella.datascience.netcdf.model.netcdfIOProvider

This extension point enables contributing custom NetCDF file providers for non-standard URI schemes (e.g. AWS S3, Google Cloud Storage, specialized HTTP streams, or encrypted archives).

Schema Specification

<extension-point id="netcdfIOProvider" name="Netcdf IO Provider" schema="schema/netcdfIOProvider.exsd"/>

Contributing a Custom Provider in plugin.xml

<extension point="org.polarsys.capella.datascience.netcdf.model.netcdfIOProvider">
    <netcdfIOProvider
        class="com.example.custom.CustomNetcdfIOProvider"
        id="com.example.custom.provider">
    </netcdfIOProvider>
</extension>

Implementing INetcdfFileProvider

Your provider class must implement org.polarsys.capella.datascience.netcdf.ncml.extension.INetcdfFileProvider:

package com.example.custom;

import java.util.List;
import org.polarsys.capella.datascience.netcdf.ncml.extension.INetcdfFileProvider;
import ucar.nc2.NetcdfFile;

public class CustomNetcdfIOProvider implements INetcdfFileProvider {

    @Override
    public List<String> getSources() {
        // Return URI prefixes/schemes handled by this provider
        return List.of("s3://", "cdms3://", "mycustom://");
    }

    @Override
    public NetcdfFile getNetcdfFile(String location) {
        // Resolve and return a UCAR NetcdfFile instance for the location
        return CustomStorageClient.openNetcdf(location);
    }
}

Core Utility APIs

Class Key Methods Purpose
NcmlUtils.instance getNetCDF(EObject)
getVariableExt(NetcdfType, String)
resolveDimensionsExt(VariableType)
getAttributeExt(VariableType, String)
Fast navigation, query, and dimension resolution on EMF NetCDF/NcML models.
NetcdfNativeRegistry.instance get(String location)
register(String location, NetcdfFile)
unregister(String location)
Thread-safe caching of native UCAR NetcdfFile instances with automatic workspace resource change tracking.
NCConfigResourceUtils loadConfigBook(File)
saveConfigBook(NCVisualizationConfigBook, File)
saveConfigToFile(NCVisualizationConfig, File)
Loading, saving, and resolving proxies for .ncconfig books without dangling external references.
ImageUtils.instance computeImageFromDimsAndPaletteIfAnyWithExtraInfo(...)
getInterpolatedColorPaletteIfNecessary(depth, pInfo)
getPalette(paletteId)
Color palette lookup, gradient interpolation, missing value masking, and SWT ImageData generation.