package mil.nga.giat.geowave.core.ingest.operations; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.Map; import java.util.Map.Entry; import mil.nga.giat.geowave.core.cli.annotations.GeowaveOperation; import mil.nga.giat.geowave.core.cli.api.Command; import mil.nga.giat.geowave.core.cli.api.DefaultOperation; import mil.nga.giat.geowave.core.cli.api.OperationParams; import mil.nga.giat.geowave.core.index.StringUtils; import mil.nga.giat.geowave.core.ingest.spi.IngestFormatPluginProviderSpi; import mil.nga.giat.geowave.core.ingest.spi.IngestFormatPluginRegistry; import mil.nga.giat.geowave.core.store.GeoWaveStoreFinder; import mil.nga.giat.geowave.core.store.StoreFactoryFamilySpi; import mil.nga.giat.geowave.core.store.spi.DimensionalityTypeProviderSpi; import mil.nga.giat.geowave.core.store.spi.DimensionalityTypeRegistry; import com.beust.jcommander.Parameters; @GeowaveOperation(name = "listplugins", parentOperation = IngestSection.class) @Parameters(commandDescription = "List supported data store types, index types, and ingest formats") public class ListPluginsCommand extends DefaultOperation implements Command { @Override public void execute( OperationParams params ) { final PrintWriter pw = new PrintWriter( new OutputStreamWriter( System.out, StringUtils.GEOWAVE_CHAR_SET)); pw.println("Available index types currently registered as plugins:\n"); for (final Entry<String, DimensionalityTypeProviderSpi> pluginProviderEntry : DimensionalityTypeRegistry .getRegisteredDimensionalityTypes() .entrySet()) { final DimensionalityTypeProviderSpi pluginProvider = pluginProviderEntry.getValue(); final String desc = pluginProvider.getDimensionalityTypeDescription() == null ? "no description" : pluginProvider.getDimensionalityTypeDescription(); final String text = " " + pluginProviderEntry.getKey() + ":\n " + desc; pw.println(text); pw.println(); } pw.println("Available ingest formats currently registered as plugins:\n"); for (final Entry<String, IngestFormatPluginProviderSpi<?, ?>> pluginProviderEntry : IngestFormatPluginRegistry .getPluginProviderRegistry() .entrySet()) { final IngestFormatPluginProviderSpi<?, ?> pluginProvider = pluginProviderEntry.getValue(); final String desc = pluginProvider.getIngestFormatDescription() == null ? "no description" : pluginProvider .getIngestFormatDescription(); final String text = " " + pluginProviderEntry.getKey() + ":\n " + desc; pw.println(text); pw.println(); } pw.println("Available datastores currently registered:\n"); final Map<String, StoreFactoryFamilySpi> dataStoreFactories = GeoWaveStoreFinder .getRegisteredStoreFactoryFamilies(); for (final Entry<String, StoreFactoryFamilySpi> dataStoreFactoryEntry : dataStoreFactories.entrySet()) { final StoreFactoryFamilySpi dataStoreFactory = dataStoreFactoryEntry.getValue(); final String desc = dataStoreFactory.getDescription() == null ? "no description" : dataStoreFactory .getDescription(); final String text = " " + dataStoreFactory.getType() + ":\n " + desc; pw.println(text); pw.println(); } pw.flush(); } }