Full Code of locationtech/geowave for AI

master 998f3e4af31a cached
3163 files
13.7 MB
3.8M tokens
21915 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (15,322K chars total). Download the full file to get everything.
Repository: locationtech/geowave
Branch: master
Commit: 998f3e4af31a
Files: 3163
Total size: 13.7 MB

Directory structure:
gitextract_mqqhxs54/

├── .gitattributes
├── .github/
│   └── workflows/
│       ├── publish.yml
│       └── test.yml
├── .gitignore
├── .utility/
│   ├── .maven.xml
│   ├── build-dev-resources.sh
│   ├── build-python-docs.sh
│   ├── publish-artifacts.sh
│   ├── publish-docs.sh
│   ├── retry
│   ├── run-python-tests.sh
│   └── run-tests.sh
├── CONTRIBUTING.md
├── LICENSE
├── NOTICE
├── README.md
├── analytics/
│   ├── api/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── locationtech/
│   │       │   │           └── geowave/
│   │       │   │               └── analytic/
│   │       │   │                   ├── AdapterWithObjectWritable.java
│   │       │   │                   ├── AnalyticFeature.java
│   │       │   │                   ├── AnalyticItemWrapper.java
│   │       │   │                   ├── AnalyticItemWrapperFactory.java
│   │       │   │                   ├── AnalyticPersistableRegistry.java
│   │       │   │                   ├── GeoObjectDimensionValues.java
│   │       │   │                   ├── GeometryCalculations.java
│   │       │   │                   ├── GeometryDataSetGenerator.java
│   │       │   │                   ├── GeometryHullTool.java
│   │       │   │                   ├── IndependentJobRunner.java
│   │       │   │                   ├── Projection.java
│   │       │   │                   ├── PropertyManagement.java
│   │       │   │                   ├── ScopedJobConfiguration.java
│   │       │   │                   ├── SerializableAdapterStore.java
│   │       │   │                   ├── ShapefileTool.java
│   │       │   │                   ├── SimpleFeatureItemWrapperFactory.java
│   │       │   │                   ├── SimpleFeatureProjection.java
│   │       │   │                   ├── clustering/
│   │       │   │                   │   ├── CentroidItemWrapperFactory.java
│   │       │   │                   │   ├── CentroidManager.java
│   │       │   │                   │   ├── CentroidManagerGeoWave.java
│   │       │   │                   │   ├── CentroidPairing.java
│   │       │   │                   │   ├── ClusteringUtils.java
│   │       │   │                   │   ├── DistortionGroupManagement.java
│   │       │   │                   │   ├── LongCentroid.java
│   │       │   │                   │   ├── NeighborData.java
│   │       │   │                   │   ├── NestedGroupCentroidAssignment.java
│   │       │   │                   │   └── exception/
│   │       │   │                   │       └── MatchingCentroidNotFoundException.java
│   │       │   │                   ├── distance/
│   │       │   │                   │   ├── CoordinateCircleDistanceFn.java
│   │       │   │                   │   ├── CoordinateCosineDistanceFn.java
│   │       │   │                   │   ├── CoordinateEuclideanDistanceFn.java
│   │       │   │                   │   ├── DistanceFn.java
│   │       │   │                   │   ├── FeatureCentroidDistanceFn.java
│   │       │   │                   │   ├── FeatureCentroidOrthodromicDistanceFn.java
│   │       │   │                   │   ├── FeatureDistanceFn.java
│   │       │   │                   │   ├── FeatureGeometryDistanceFn.java
│   │       │   │                   │   └── GeometryCentroidDistanceFn.java
│   │       │   │                   ├── extract/
│   │       │   │                   │   ├── CentroidExtractor.java
│   │       │   │                   │   ├── DimensionExtractor.java
│   │       │   │                   │   ├── EmptyDimensionExtractor.java
│   │       │   │                   │   ├── SimpleFeatureCentroidExtractor.java
│   │       │   │                   │   ├── SimpleFeatureGeometryExtractor.java
│   │       │   │                   │   ├── SimpleFeatureInteriorPointExtractor.java
│   │       │   │                   │   └── TimeDimensionExtractor.java
│   │       │   │                   ├── kmeans/
│   │       │   │                   │   ├── AssociationNotification.java
│   │       │   │                   │   ├── CentroidAssociationFn.java
│   │       │   │                   │   └── serial/
│   │       │   │                   │       ├── AnalyticStats.java
│   │       │   │                   │       ├── KMeansParallelInitialize.java
│   │       │   │                   │       └── StatsMap.java
│   │       │   │                   ├── kryo/
│   │       │   │                   │   ├── FeatureSerializer.java
│   │       │   │                   │   ├── GridCoverageWritableSerializer.java
│   │       │   │                   │   └── PersistableSerializer.java
│   │       │   │                   ├── model/
│   │       │   │                   │   ├── IndexModelBuilder.java
│   │       │   │                   │   └── SpatialIndexModelBuilder.java
│   │       │   │                   ├── nn/
│   │       │   │                   │   ├── DefaultNeighborList.java
│   │       │   │                   │   ├── DistanceProfile.java
│   │       │   │                   │   ├── DistanceProfileGenerateFn.java
│   │       │   │                   │   ├── NNProcessor.java
│   │       │   │                   │   ├── NeighborIndex.java
│   │       │   │                   │   ├── NeighborList.java
│   │       │   │                   │   ├── NeighborListFactory.java
│   │       │   │                   │   ├── NullList.java
│   │       │   │                   │   └── TypeConverter.java
│   │       │   │                   ├── param/
│   │       │   │                   │   ├── BasicParameterHelper.java
│   │       │   │                   │   ├── CentroidParameters.java
│   │       │   │                   │   ├── ClusteringParameters.java
│   │       │   │                   │   ├── CommonParameters.java
│   │       │   │                   │   ├── ExtractParameters.java
│   │       │   │                   │   ├── FormatConfiguration.java
│   │       │   │                   │   ├── GlobalParameters.java
│   │       │   │                   │   ├── GroupParameterEnum.java
│   │       │   │                   │   ├── HullParameters.java
│   │       │   │                   │   ├── InputParameters.java
│   │       │   │                   │   ├── InputStoreParameterHelper.java
│   │       │   │                   │   ├── JumpParameters.java
│   │       │   │                   │   ├── MapReduceParameters.java
│   │       │   │                   │   ├── OutputParameters.java
│   │       │   │                   │   ├── OutputStoreParameterHelper.java
│   │       │   │                   │   ├── ParameterEnum.java
│   │       │   │                   │   ├── ParameterHelper.java
│   │       │   │                   │   ├── PartitionParameters.java
│   │       │   │                   │   ├── SampleParameters.java
│   │       │   │                   │   ├── StoreParameters.java
│   │       │   │                   │   └── annotations/
│   │       │   │                   │       ├── CentroidParameter.java
│   │       │   │                   │       ├── ClusteringParameter.java
│   │       │   │                   │       ├── CommonParameter.java
│   │       │   │                   │       ├── ExtractParameter.java
│   │       │   │                   │       ├── GlobalParameter.java
│   │       │   │                   │       ├── HullParameter.java
│   │       │   │                   │       ├── InputParameter.java
│   │       │   │                   │       ├── JumpParameter.java
│   │       │   │                   │       ├── MapReduceParameter.java
│   │       │   │                   │       ├── OutputParameter.java
│   │       │   │                   │       ├── PartitionParameter.java
│   │       │   │                   │       └── SampleParameter.java
│   │       │   │                   ├── partitioner/
│   │       │   │                   │   ├── AbstractPartitioner.java
│   │       │   │                   │   ├── BoundaryPartitioner.java
│   │       │   │                   │   ├── OrthodromicDistancePartitioner.java
│   │       │   │                   │   └── Partitioner.java
│   │       │   │                   ├── sample/
│   │       │   │                   │   ├── BahmanEtAlSampleProbabilityFn.java
│   │       │   │                   │   ├── RandomProbabilitySampleFn.java
│   │       │   │                   │   ├── SampleNotification.java
│   │       │   │                   │   ├── SampleProbabilityFn.java
│   │       │   │                   │   ├── Sampler.java
│   │       │   │                   │   └── function/
│   │       │   │                   │       ├── CentroidDistanceBasedSamplingRankFunction.java
│   │       │   │                   │       ├── RandomSamplingRankFunction.java
│   │       │   │                   │       └── SamplingRankFunction.java
│   │       │   │                   └── store/
│   │       │   │                       └── PersistableStore.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── locationtech/
│   │                       └── geowave/
│   │                           └── analytic/
│   │                               ├── AnalyticFeatureTest.java
│   │                               ├── GeometryCalculationsTest.java
│   │                               ├── GeometryDataSetGeneratorTest.java
│   │                               ├── GeometryGenerator.java
│   │                               ├── GeometryHullToolTest.java
│   │                               ├── PropertyManagementTest.java
│   │                               ├── SerializableAdapterStoreTest.java
│   │                               ├── SimpleFeatureCentroidExractorTest.java
│   │                               ├── clustering/
│   │                               │   ├── CentroidManagerTest.java
│   │                               │   ├── DistortionGroupManagementTest.java
│   │                               │   └── NestedGroupCentroidAssignmentTest.java
│   │                               ├── distance/
│   │                               │   ├── CoordinateCircleDistanceFnTest.java
│   │                               │   └── FeatureDistanceFnTest.java
│   │                               ├── kmeans/
│   │                               │   ├── CentroidAssociationFnTest.java
│   │                               │   └── KMeansParallelInitializeTest.java
│   │                               ├── kryo/
│   │                               │   └── FeatureSerializationTest.java
│   │                               ├── nn/
│   │                               │   └── NNProcessorTest.java
│   │                               └── partitioner/
│   │                                   ├── BoundaryDistancePartitionerTest.java
│   │                                   └── OrthodromicDistancePartitionerTest.java
│   ├── mapreduce/
│   │   ├── .gitignore
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── locationtech/
│   │       │   │           └── geowave/
│   │       │   │               └── analytic/
│   │       │   │                   └── mapreduce/
│   │       │   │                       ├── CountofDoubleWritable.java
│   │       │   │                       ├── DoubleOutputFormat.java
│   │       │   │                       ├── GeoWaveAnalyticJobRunner.java
│   │       │   │                       ├── GeoWaveInputFormatConfiguration.java
│   │       │   │                       ├── GeoWaveOutputFormatConfiguration.java
│   │       │   │                       ├── GroupIDText.java
│   │       │   │                       ├── HadoopOptions.java
│   │       │   │                       ├── MapReduceIntegration.java
│   │       │   │                       ├── MapReduceJobController.java
│   │       │   │                       ├── MapReduceJobRunner.java
│   │       │   │                       ├── SequenceFileInputFormatConfiguration.java
│   │       │   │                       ├── SequenceFileOutputFormatConfiguration.java
│   │       │   │                       ├── ToolRunnerMapReduceIntegration.java
│   │       │   │                       ├── clustering/
│   │       │   │                       │   ├── ConvexHullMapReduce.java
│   │       │   │                       │   ├── GroupAssignmentMapReduce.java
│   │       │   │                       │   ├── InputToOutputKeyReducer.java
│   │       │   │                       │   ├── SimpleFeatureOutputReducer.java
│   │       │   │                       │   └── runner/
│   │       │   │                       │       ├── AnalyticJobRunner.java
│   │       │   │                       │       ├── ClusteringRunner.java
│   │       │   │                       │       ├── ConvexHullJobRunner.java
│   │       │   │                       │       ├── GeoWaveAnalyticExtractJobRunner.java
│   │       │   │                       │       ├── GeoWaveInputLoadJobRunner.java
│   │       │   │                       │       ├── GroupAssigmentJobRunner.java
│   │       │   │                       │       ├── MultiLevelClusteringJobRunner.java
│   │       │   │                       │       ├── MultiLevelJumpKMeansClusteringJobRunner.java
│   │       │   │                       │       └── MultiLevelKMeansClusteringJobRunner.java
│   │       │   │                       ├── dbscan/
│   │       │   │                       │   ├── Cluster.java
│   │       │   │                       │   ├── ClusterItem.java
│   │       │   │                       │   ├── ClusterItemDistanceFn.java
│   │       │   │                       │   ├── ClusterNeighborList.java
│   │       │   │                       │   ├── ClusterUnionList.java
│   │       │   │                       │   ├── DBScanClusterList.java
│   │       │   │                       │   ├── DBScanIterationsJobRunner.java
│   │       │   │                       │   ├── DBScanJobRunner.java
│   │       │   │                       │   ├── DBScanMapReduce.java
│   │       │   │                       │   ├── PreProcessSingleItemClusterList.java
│   │       │   │                       │   └── SingleItemClusterList.java
│   │       │   │                       ├── kde/
│   │       │   │                       │   ├── CellCounter.java
│   │       │   │                       │   ├── CellSummationCombiner.java
│   │       │   │                       │   ├── CellSummationReducer.java
│   │       │   │                       │   ├── DoubleLevelPartitioner.java
│   │       │   │                       │   ├── GaussianCellMapper.java
│   │       │   │                       │   ├── GaussianFilter.java
│   │       │   │                       │   ├── IdentityMapper.java
│   │       │   │                       │   ├── KDECommandLineOptions.java
│   │       │   │                       │   ├── KDEJobRunner.java
│   │       │   │                       │   ├── KDEReducer.java
│   │       │   │                       │   ├── LevelPartitioner.java
│   │       │   │                       │   ├── MapContextCellCounter.java
│   │       │   │                       │   └── compare/
│   │       │   │                       │       ├── ComparisonAccumuloStatsReducer.java
│   │       │   │                       │       ├── ComparisonCellData.java
│   │       │   │                       │       ├── ComparisonCellDataReducer.java
│   │       │   │                       │       ├── ComparisonCellLevelPartitioner.java
│   │       │   │                       │       ├── ComparisonCellSummationReducer.java
│   │       │   │                       │       ├── ComparisonCombinedLevelPartitioner.java
│   │       │   │                       │       ├── ComparisonCombiningStatsMapper.java
│   │       │   │                       │       ├── ComparisonCombiningStatsReducer.java
│   │       │   │                       │       ├── ComparisonCommandLineOptions.java
│   │       │   │                       │       ├── ComparisonDoubleLevelPartitioner.java
│   │       │   │                       │       ├── ComparisonGaussianCellMapper.java
│   │       │   │                       │       ├── ComparisonIdentityMapper.java
│   │       │   │                       │       ├── ComparisonLevelPartitioner.java
│   │       │   │                       │       ├── ComparisonStatsJobRunner.java
│   │       │   │                       │       └── NegativeCellIdCounter.java
│   │       │   │                       ├── kmeans/
│   │       │   │                       │   ├── KMeansDistortionMapReduce.java
│   │       │   │                       │   ├── KMeansMapReduce.java
│   │       │   │                       │   ├── KSamplerMapReduce.java
│   │       │   │                       │   ├── UpdateCentroidCostMapReduce.java
│   │       │   │                       │   └── runner/
│   │       │   │                       │       ├── IterationCountCalculateRunner.java
│   │       │   │                       │       ├── KMeansDistortionJobRunner.java
│   │       │   │                       │       ├── KMeansIterationsJobRunner.java
│   │       │   │                       │       ├── KMeansJobRunner.java
│   │       │   │                       │       ├── KMeansJumpJobRunner.java
│   │       │   │                       │       ├── KMeansParallelJobRunner.java
│   │       │   │                       │       ├── KMeansSingleSampleJobRunner.java
│   │       │   │                       │       ├── KSamplerJobRunner.java
│   │       │   │                       │       ├── RankSamplerJobRunner.java
│   │       │   │                       │       ├── SampleMultipleSetsJobRunner.java
│   │       │   │                       │       ├── StripWeakCentroidsRunner.java
│   │       │   │                       │       └── UpdateCentroidCostJobRunner.java
│   │       │   │                       ├── nn/
│   │       │   │                       │   ├── GeoWaveExtractNNJobRunner.java
│   │       │   │                       │   ├── NNData.java
│   │       │   │                       │   ├── NNJobRunner.java
│   │       │   │                       │   └── NNMapReduce.java
│   │       │   │                       └── operations/
│   │       │   │                           ├── AnalyticOperationCLIProvider.java
│   │       │   │                           ├── AnalyticSection.java
│   │       │   │                           ├── DBScanCommand.java
│   │       │   │                           ├── KdeCommand.java
│   │       │   │                           ├── KmeansJumpCommand.java
│   │       │   │                           ├── KmeansParallelCommand.java
│   │       │   │                           ├── NearestNeighborCommand.java
│   │       │   │                           └── options/
│   │       │   │                               ├── CommonOptions.java
│   │       │   │                               ├── DBScanOptions.java
│   │       │   │                               ├── KMeansCommonOptions.java
│   │       │   │                               ├── KMeansJumpOptions.java
│   │       │   │                               ├── KMeansParallelOptions.java
│   │       │   │                               ├── NearestNeighborOptions.java
│   │       │   │                               ├── PropertyManagementConverter.java
│   │       │   │                               └── QueryOptionsCommand.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── locationtech/
│   │           │           └── geowave/
│   │           │               └── analytic/
│   │           │                   └── mapreduce/
│   │           │                       ├── TestMapReducePersistableRegistry.java
│   │           │                       ├── clustering/
│   │           │                       │   └── runner/
│   │           │                       │       ├── ConvexHullJobRunnerTest.java
│   │           │                       │       └── GroupAssigmentJobRunnerTest.java
│   │           │                       ├── dbscan/
│   │           │                       │   └── DBScanMapReduceTest.java
│   │           │                       ├── kmeans/
│   │           │                       │   ├── KMeansDistortionMapReduceTest.java
│   │           │                       │   ├── KSamplerMapReduceTest.java
│   │           │                       │   ├── SimpleFeatureImplSerialization.java
│   │           │                       │   ├── TestObject.java
│   │           │                       │   ├── TestObjectDataAdapter.java
│   │           │                       │   ├── TestObjectDimExtractor.java
│   │           │                       │   ├── TestObjectDistanceFn.java
│   │           │                       │   ├── TestObjectExtractor.java
│   │           │                       │   ├── TestObjectItemWrapperFactory.java
│   │           │                       │   ├── TestObjectSerialization.java
│   │           │                       │   ├── TestObjectWritable.java
│   │           │                       │   └── runner/
│   │           │                       │       ├── KMeansIterationsJobRunnerTest.java
│   │           │                       │       └── StripWeakCentroidsRunnerTest.java
│   │           │                       ├── nn/
│   │           │                       │   ├── NNJobRunnerTest.java
│   │           │                       │   └── NNMapReduceTest.java
│   │           │                       └── operations/
│   │           │                           └── options/
│   │           │                               └── PropertyManagementConverterTest.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── services/
│   │               │       └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   │               └── log4j.properties
│   ├── pom.xml
│   ├── pyspark/
│   │   ├── .gitignore
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── python/
│   │               ├── geowave_pyspark/
│   │               │   ├── __init__.py
│   │               │   └── types.py
│   │               └── setup.py
│   └── spark/
│       ├── pom.xml
│       └── src/
│           └── main/
│               ├── java/
│               │   └── org/
│               │       └── locationtech/
│               │           └── geowave/
│               │               └── analytic/
│               │                   └── spark/
│               │                       ├── AnalyticOperationCLIProvider.java
│               │                       ├── GeoWaveIndexedRDD.java
│               │                       ├── GeoWaveRDD.java
│               │                       ├── GeoWaveRDDLoader.java
│               │                       ├── GeoWaveRasterRDD.java
│               │                       ├── GeoWaveRegistrator.java
│               │                       ├── GeoWaveSparkConf.java
│               │                       ├── RDDOptions.java
│               │                       ├── RDDUtils.java
│               │                       ├── kde/
│               │                       │   ├── KDERunner.java
│               │                       │   └── operations/
│               │                       │       ├── KDESparkCommand.java
│               │                       │       └── KDESparkOptions.java
│               │                       ├── kmeans/
│               │                       │   ├── KMeansHullGenerator.java
│               │                       │   ├── KMeansRunner.java
│               │                       │   ├── KMeansUtils.java
│               │                       │   └── operations/
│               │                       │       ├── KMeansSparkOptions.java
│               │                       │       └── KmeansSparkCommand.java
│               │                       ├── resize/
│               │                       │   ├── RasterTileResizeSparkRunner.java
│               │                       │   └── ResizeSparkCommand.java
│               │                       ├── sparksql/
│               │                       │   ├── GeoWaveSpatialEncoders.java
│               │                       │   ├── SimpleFeatureDataFrame.java
│               │                       │   ├── SimpleFeatureDataType.java
│               │                       │   ├── SimpleFeatureMapper.java
│               │                       │   ├── SqlQueryRunner.java
│               │                       │   ├── SqlResultsWriter.java
│               │                       │   ├── operations/
│               │                       │   │   ├── SparkSqlCommand.java
│               │                       │   │   └── SparkSqlOptions.java
│               │                       │   ├── udf/
│               │                       │   │   ├── BufferOperation.java
│               │                       │   │   ├── GeomContains.java
│               │                       │   │   ├── GeomCovers.java
│               │                       │   │   ├── GeomCrosses.java
│               │                       │   │   ├── GeomDisjoint.java
│               │                       │   │   ├── GeomDistance.java
│               │                       │   │   ├── GeomEquals.java
│               │                       │   │   ├── GeomFromWKT.java
│               │                       │   │   ├── GeomFunction.java
│               │                       │   │   ├── GeomFunctionRegistry.java
│               │                       │   │   ├── GeomIntersects.java
│               │                       │   │   ├── GeomOverlaps.java
│               │                       │   │   ├── GeomTouches.java
│               │                       │   │   ├── GeomWithin.java
│               │                       │   │   ├── GeomWithinDistance.java
│               │                       │   │   └── UDFRegistrySPI.java
│               │                       │   ├── udt/
│               │                       │   │   ├── AbstractGeometryUDT.java
│               │                       │   │   ├── GeometryUDT.java
│               │                       │   │   ├── LineStringUDT.java
│               │                       │   │   ├── MultiLineStringUDT.java
│               │                       │   │   ├── MultiPointUDT.java
│               │                       │   │   ├── MultiPolygonUDT.java
│               │                       │   │   ├── PointUDT.java
│               │                       │   │   └── PolygonUDT.java
│               │                       │   └── util/
│               │                       │       ├── GeomReader.java
│               │                       │       ├── GeomWriter.java
│               │                       │       └── SchemaConverter.java
│               │                       └── spatial/
│               │                           ├── JoinOptions.java
│               │                           ├── JoinStrategy.java
│               │                           ├── SpatialJoin.java
│               │                           ├── SpatialJoinRunner.java
│               │                           ├── TieredSpatialJoin.java
│               │                           └── operations/
│               │                               ├── SpatialJoinCmdOptions.java
│               │                               └── SpatialJoinCommand.java
│               └── resources/
│                   └── META-INF/
│                       └── services/
│                           └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
├── core/
│   ├── cli/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── locationtech/
│   │       │   │           └── geowave/
│   │       │   │               └── core/
│   │       │   │                   └── cli/
│   │       │   │                       ├── Constants.java
│   │       │   │                       ├── GeoWaveMain.java
│   │       │   │                       ├── VersionUtils.java
│   │       │   │                       ├── annotations/
│   │       │   │                       │   ├── GeowaveOperation.java
│   │       │   │                       │   └── PrefixParameter.java
│   │       │   │                       ├── api/
│   │       │   │                       │   ├── Command.java
│   │       │   │                       │   ├── DefaultOperation.java
│   │       │   │                       │   ├── DefaultPluginOptions.java
│   │       │   │                       │   ├── Operation.java
│   │       │   │                       │   ├── OperationParams.java
│   │       │   │                       │   ├── PluginOptions.java
│   │       │   │                       │   ├── ServiceEnabledCommand.java
│   │       │   │                       │   └── ServiceStatus.java
│   │       │   │                       ├── converters/
│   │       │   │                       │   ├── GeoWaveBaseConverter.java
│   │       │   │                       │   ├── OptionalPasswordConverter.java
│   │       │   │                       │   ├── PasswordConverter.java
│   │       │   │                       │   └── RequiredFieldConverter.java
│   │       │   │                       ├── exceptions/
│   │       │   │                       │   ├── DuplicateEntryException.java
│   │       │   │                       │   └── TargetNotFoundException.java
│   │       │   │                       ├── operations/
│   │       │   │                       │   ├── ExplainCommand.java
│   │       │   │                       │   ├── GeoWaveTopLevelSection.java
│   │       │   │                       │   ├── HelpCommand.java
│   │       │   │                       │   ├── TopLevelOperationProvider.java
│   │       │   │                       │   ├── config/
│   │       │   │                       │   │   ├── ConfigOperationProvider.java
│   │       │   │                       │   │   ├── ConfigSection.java
│   │       │   │                       │   │   ├── ListCommand.java
│   │       │   │                       │   │   ├── SetCommand.java
│   │       │   │                       │   │   ├── options/
│   │       │   │                       │   │   │   └── ConfigOptions.java
│   │       │   │                       │   │   └── security/
│   │       │   │                       │   │       ├── NewTokenCommand.java
│   │       │   │                       │   │       ├── crypto/
│   │       │   │                       │   │       │   ├── BaseEncryption.java
│   │       │   │                       │   │       │   └── GeoWaveEncryption.java
│   │       │   │                       │   │       └── utils/
│   │       │   │                       │   │           └── SecurityUtils.java
│   │       │   │                       │   └── util/
│   │       │   │                       │       ├── UtilOperationProvider.java
│   │       │   │                       │       └── UtilSection.java
│   │       │   │                       ├── parser/
│   │       │   │                       │   ├── CommandLineOperationParams.java
│   │       │   │                       │   ├── ManualOperationParams.java
│   │       │   │                       │   └── OperationParser.java
│   │       │   │                       ├── prefix/
│   │       │   │                       │   ├── JCommanderPrefixTranslator.java
│   │       │   │                       │   ├── JCommanderPropertiesTransformer.java
│   │       │   │                       │   ├── JCommanderTranslationMap.java
│   │       │   │                       │   ├── JavassistUtils.java
│   │       │   │                       │   ├── PrefixedJCommander.java
│   │       │   │                       │   └── TranslationEntry.java
│   │       │   │                       ├── spi/
│   │       │   │                       │   ├── CLIOperationProviderSpi.java
│   │       │   │                       │   ├── DefaultConfigProviderSpi.java
│   │       │   │                       │   ├── OperationEntry.java
│   │       │   │                       │   └── OperationRegistry.java
│   │       │   │                       └── utils/
│   │       │   │                           ├── ConsoleTablePrinter.java
│   │       │   │                           ├── FileUtils.java
│   │       │   │                           ├── FirstElementListComparator.java
│   │       │   │                           ├── JCommanderParameterUtils.java
│   │       │   │                           ├── PropertiesUtils.java
│   │       │   │                           ├── URLUtils.java
│   │       │   │                           └── ValueConverter.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── locationtech/
│   │                       └── geowave/
│   │                           └── core/
│   │                               └── cli/
│   │                                   ├── VersionUtilsTest.java
│   │                                   ├── api/
│   │                                   │   └── ServiceEnableCommandTest.java
│   │                                   ├── operations/
│   │                                   │   ├── ExplainCommandTest.java
│   │                                   │   ├── HelpCommandTest.java
│   │                                   │   └── config/
│   │                                   │       ├── SetCommandTest.java
│   │                                   │       ├── options/
│   │                                   │       │   └── ConfigOptionsTest.java
│   │                                   │       └── security/
│   │                                   │           └── SecurityUtilsTest.java
│   │                                   ├── parser/
│   │                                   │   └── OperationParserTest.java
│   │                                   ├── prefix/
│   │                                   │   ├── JCommanderPrefixTranslatorTest.java
│   │                                   │   ├── JCommanderPropertiesTransformerTest.java
│   │                                   │   ├── JCommanderTranslationMapTest.java
│   │                                   │   ├── JavassistUtilsTest.java
│   │                                   │   ├── PrefixedJCommanderTest.java
│   │                                   │   └── TranslationEntryTest.java
│   │                                   └── spi/
│   │                                       └── OperationRegistryTest.java
│   ├── geotime/
│   │   ├── .gitignore
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── locationtech/
│   │       │   │           └── geowave/
│   │       │   │               └── core/
│   │       │   │                   └── geotime/
│   │       │   │                       ├── GeoTimePersistableRegistry.java
│   │       │   │                       ├── adapter/
│   │       │   │                       │   ├── GeometryFieldMapper.java
│   │       │   │                       │   ├── GeotimeRegisteredIndexFieldMappers.java
│   │       │   │                       │   ├── LatLonFieldMapper.java
│   │       │   │                       │   ├── SpatialFieldDescriptor.java
│   │       │   │                       │   ├── SpatialFieldDescriptorBuilder.java
│   │       │   │                       │   ├── SpatialFieldMapper.java
│   │       │   │                       │   ├── TemporalFieldDescriptor.java
│   │       │   │                       │   ├── TemporalFieldDescriptorBuilder.java
│   │       │   │                       │   ├── TemporalIntervalFieldMapper.java
│   │       │   │                       │   ├── TemporalLongFieldMapper.java
│   │       │   │                       │   ├── TimeInstantFieldMapper.java
│   │       │   │                       │   ├── TimeRangeFieldMapper.java
│   │       │   │                       │   └── annotation/
│   │       │   │                       │       ├── GeoWaveSpatialField.java
│   │       │   │                       │       ├── GeoWaveTemporalField.java
│   │       │   │                       │       ├── SpatialAnnotatedFieldDescriptorBuilder.java
│   │       │   │                       │       └── TemporalAnnotatedFieldDescriptorBuilder.java
│   │       │   │                       ├── binning/
│   │       │   │                       │   ├── ComplexGeometryBinningOption.java
│   │       │   │                       │   ├── GeohashBinningHelper.java
│   │       │   │                       │   ├── H3BinningHelper.java
│   │       │   │                       │   ├── S2BinningHelper.java
│   │       │   │                       │   ├── SpatialBinningHelper.java
│   │       │   │                       │   └── SpatialBinningType.java
│   │       │   │                       ├── index/
│   │       │   │                       │   ├── CommonSpatialOptions.java
│   │       │   │                       │   ├── SpatialAttributeIndexProvider.java
│   │       │   │                       │   ├── SpatialDimensionalityTypeProvider.java
│   │       │   │                       │   ├── SpatialIndexFilter.java
│   │       │   │                       │   ├── SpatialOptions.java
│   │       │   │                       │   ├── SpatialTemporalDimensionalityTypeProvider.java
│   │       │   │                       │   ├── SpatialTemporalOptions.java
│   │       │   │                       │   ├── TemporalAttributeIndexProvider.java
│   │       │   │                       │   ├── TemporalDimensionalityTypeProvider.java
│   │       │   │                       │   ├── TemporalOptions.java
│   │       │   │                       │   ├── api/
│   │       │   │                       │   │   ├── SpatialIndexBuilder.java
│   │       │   │                       │   │   ├── SpatialTemporalIndexBuilder.java
│   │       │   │                       │   │   └── TemporalIndexBuilder.java
│   │       │   │                       │   └── dimension/
│   │       │   │                       │       ├── LatitudeDefinition.java
│   │       │   │                       │       ├── LongitudeDefinition.java
│   │       │   │                       │       ├── SimpleTimeDefinition.java
│   │       │   │                       │       ├── SimpleTimeIndexStrategy.java
│   │       │   │                       │       ├── TemporalBinningStrategy.java
│   │       │   │                       │       └── TimeDefinition.java
│   │       │   │                       ├── store/
│   │       │   │                       │   ├── GeotoolsFeatureDataAdapter.java
│   │       │   │                       │   ├── InternalGeotoolsDataAdapterWrapper.java
│   │       │   │                       │   ├── InternalGeotoolsFeatureDataAdapter.java
│   │       │   │                       │   ├── dimension/
│   │       │   │                       │   │   ├── BaseCustomCRSSpatialDimension.java
│   │       │   │                       │   │   ├── CustomCRSBoundedSpatialDimension.java
│   │       │   │                       │   │   ├── CustomCRSBoundedSpatialDimensionX.java
│   │       │   │                       │   │   ├── CustomCRSBoundedSpatialDimensionY.java
│   │       │   │                       │   │   ├── CustomCRSSpatialDimension.java
│   │       │   │                       │   │   ├── CustomCRSSpatialField.java
│   │       │   │                       │   │   ├── CustomCRSUnboundedSpatialDimension.java
│   │       │   │                       │   │   ├── CustomCRSUnboundedSpatialDimensionX.java
│   │       │   │                       │   │   ├── CustomCRSUnboundedSpatialDimensionY.java
│   │       │   │                       │   │   ├── CustomCrsIndexModel.java
│   │       │   │                       │   │   ├── LatitudeField.java
│   │       │   │                       │   │   ├── LongitudeField.java
│   │       │   │                       │   │   ├── SpatialField.java
│   │       │   │                       │   │   └── TimeField.java
│   │       │   │                       │   ├── field/
│   │       │   │                       │   │   ├── CalendarArraySerializationProvider.java
│   │       │   │                       │   │   ├── CalendarSerializationProvider.java
│   │       │   │                       │   │   ├── DateArraySerializationProvider.java
│   │       │   │                       │   │   ├── DateSerializationProvider.java
│   │       │   │                       │   │   ├── GeometryArraySerializationProvider.java
│   │       │   │                       │   │   ├── GeometrySerializationProvider.java
│   │       │   │                       │   │   ├── IntervalArraySerializationProvider.java
│   │       │   │                       │   │   └── IntervalSerializationProvider.java
│   │       │   │                       │   ├── query/
│   │       │   │                       │   │   ├── AbstractVectorConstraints.java
│   │       │   │                       │   │   ├── BaseVectorQueryBuilder.java
│   │       │   │                       │   │   ├── ExplicitCQLQuery.java
│   │       │   │                       │   │   ├── ExplicitSpatialQuery.java
│   │       │   │                       │   │   ├── ExplicitSpatialTemporalQuery.java
│   │       │   │                       │   │   ├── ExplicitTemporalQuery.java
│   │       │   │                       │   │   ├── IndexOnlySpatialQuery.java
│   │       │   │                       │   │   ├── OptimalCQLQuery.java
│   │       │   │                       │   │   ├── ScaledTemporalRange.java
│   │       │   │                       │   │   ├── SpatialQuery.java
│   │       │   │                       │   │   ├── SpatialTemporalConstraintsBuilderImpl.java
│   │       │   │                       │   │   ├── SpatialTemporalQuery.java
│   │       │   │                       │   │   ├── TemporalConstraints.java
│   │       │   │                       │   │   ├── TemporalConstraintsSet.java
│   │       │   │                       │   │   ├── TemporalQuery.java
│   │       │   │                       │   │   ├── TemporalRange.java
│   │       │   │                       │   │   ├── VectorQueryBuilderImpl.java
│   │       │   │                       │   │   ├── VectorQueryConstraintsFactoryImpl.java
│   │       │   │                       │   │   ├── aggregate/
│   │       │   │                       │   │   │   ├── BaseOptimalVectorAggregation.java
│   │       │   │                       │   │   │   ├── BoundingBoxAggregation.java
│   │       │   │                       │   │   │   ├── CommonIndexBoundingBoxAggregation.java
│   │       │   │                       │   │   │   ├── CommonIndexTimeRangeAggregation.java
│   │       │   │                       │   │   │   ├── OptimalVectorBoundingBoxAggregation.java
│   │       │   │                       │   │   │   ├── OptimalVectorTimeRangeAggregation.java
│   │       │   │                       │   │   │   ├── SpatialBinningStrategy.java
│   │       │   │                       │   │   │   ├── SpatialCommonIndexedBinningStrategy.java
│   │       │   │                       │   │   │   ├── SpatialFieldBinningStrategy.java
│   │       │   │                       │   │   │   ├── SpatialSimpleFeatureBinningStrategy.java
│   │       │   │                       │   │   │   ├── TimeRangeAggregation.java
│   │       │   │                       │   │   │   ├── VectorAggregationQueryBuilderImpl.java
│   │       │   │                       │   │   │   ├── VectorBoundingBoxAggregation.java
│   │       │   │                       │   │   │   └── VectorTimeRangeAggregation.java
│   │       │   │                       │   │   ├── api/
│   │       │   │                       │   │   │   ├── SpatialTemporalConstraintsBuilder.java
│   │       │   │                       │   │   │   ├── VectorAggregationQueryBuilder.java
│   │       │   │                       │   │   │   ├── VectorQueryBuilder.java
│   │       │   │                       │   │   │   └── VectorQueryConstraintsFactory.java
│   │       │   │                       │   │   ├── filter/
│   │       │   │                       │   │   │   ├── CQLQueryFilter.java
│   │       │   │                       │   │   │   ├── SpatialQueryFilter.java
│   │       │   │                       │   │   │   └── expression/
│   │       │   │                       │   │   │       ├── CQLToGeoWaveConversionException.java
│   │       │   │                       │   │   │       ├── CQLToGeoWaveFilterVisitor.java
│   │       │   │                       │   │   │       ├── spatial/
│   │       │   │                       │   │   │       │   ├── BBox.java
│   │       │   │                       │   │   │       │   ├── BinarySpatialPredicate.java
│   │       │   │                       │   │   │       │   ├── Crosses.java
│   │       │   │                       │   │   │       │   ├── Disjoint.java
│   │       │   │                       │   │   │       │   ├── FilterGeometry.java
│   │       │   │                       │   │   │       │   ├── Intersects.java
│   │       │   │                       │   │   │       │   ├── Overlaps.java
│   │       │   │                       │   │   │       │   ├── PreparedFilterGeometry.java
│   │       │   │                       │   │   │       │   ├── SpatialContains.java
│   │       │   │                       │   │   │       │   ├── SpatialEqualTo.java
│   │       │   │                       │   │   │       │   ├── SpatialExpression.java
│   │       │   │                       │   │   │       │   ├── SpatialFieldValue.java
│   │       │   │                       │   │   │       │   ├── SpatialLiteral.java
│   │       │   │                       │   │   │       │   ├── SpatialNotEqualTo.java
│   │       │   │                       │   │   │       │   ├── TextToSpatialExpression.java
│   │       │   │                       │   │   │       │   ├── Touches.java
│   │       │   │                       │   │   │       │   ├── UnpreparedFilterGeometry.java
│   │       │   │                       │   │   │       │   └── Within.java
│   │       │   │                       │   │   │       └── temporal/
│   │       │   │                       │   │   │           ├── After.java
│   │       │   │                       │   │   │           ├── Before.java
│   │       │   │                       │   │   │           ├── BeforeOrDuring.java
│   │       │   │                       │   │   │           ├── BinaryTemporalPredicate.java
│   │       │   │                       │   │   │           ├── During.java
│   │       │   │                       │   │   │           ├── DuringOrAfter.java
│   │       │   │                       │   │   │           ├── TemporalBetween.java
│   │       │   │                       │   │   │           ├── TemporalEqualTo.java
│   │       │   │                       │   │   │           ├── TemporalExpression.java
│   │       │   │                       │   │   │           ├── TemporalFieldValue.java
│   │       │   │                       │   │   │           ├── TemporalLiteral.java
│   │       │   │                       │   │   │           ├── TemporalNotEqualTo.java
│   │       │   │                       │   │   │           └── TimeOverlaps.java
│   │       │   │                       │   │   └── gwql/
│   │       │   │                       │   │       ├── BboxFunction.java
│   │       │   │                       │   │       ├── DateCastableType.java
│   │       │   │                       │   │       ├── GWQLSpatialTemporalExtensions.java
│   │       │   │                       │   │       ├── GeometryCastableType.java
│   │       │   │                       │   │       ├── SpatialPredicates.java
│   │       │   │                       │   │       ├── TemporalOperators.java
│   │       │   │                       │   │       └── TemporalPredicates.java
│   │       │   │                       │   └── statistics/
│   │       │   │                       │       ├── AbstractBoundingBoxValue.java
│   │       │   │                       │       ├── AbstractTimeRangeValue.java
│   │       │   │                       │       ├── BoundingBoxStatistic.java
│   │       │   │                       │       ├── GeotimeRegisteredStatistics.java
│   │       │   │                       │       ├── SpatialTemporalStatisticQueryBuilder.java
│   │       │   │                       │       ├── TimeRangeStatistic.java
│   │       │   │                       │       └── binning/
│   │       │   │                       │           ├── SpatialFieldValueBinningStrategy.java
│   │       │   │                       │           └── TimeRangeFieldValueBinningStrategy.java
│   │       │   │                       └── util/
│   │       │   │                           ├── DWithinFilterVisitor.java
│   │       │   │                           ├── ExtractAttributesFilter.java
│   │       │   │                           ├── ExtractGeometryFilterVisitor.java
│   │       │   │                           ├── ExtractGeometryFilterVisitorResult.java
│   │       │   │                           ├── ExtractTimeFilterVisitor.java
│   │       │   │                           ├── FilterToCQLTool.java
│   │       │   │                           ├── GeometryUtils.java
│   │       │   │                           ├── HasDWithinFilterVisitor.java
│   │       │   │                           ├── IndexOptimizationUtils.java
│   │       │   │                           ├── SimpleFeatureUserDataConfiguration.java
│   │       │   │                           ├── SpatialIndexUtils.java
│   │       │   │                           ├── TWKBReader.java
│   │       │   │                           ├── TWKBUtils.java
│   │       │   │                           ├── TWKBWriter.java
│   │       │   │                           ├── TimeDescriptors.java
│   │       │   │                           └── TimeUtils.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   │       │               ├── org.locationtech.geowave.core.store.data.field.FieldSerializationProviderSpi
│   │       │               ├── org.locationtech.geowave.core.store.index.AttributeIndexProviderSpi
│   │       │               ├── org.locationtech.geowave.core.store.index.IndexFieldMapperRegistrySPI
│   │       │               ├── org.locationtech.geowave.core.store.query.gwql.GWQLExtensionRegistrySpi
│   │       │               ├── org.locationtech.geowave.core.store.spi.DimensionalityTypeProviderSpi
│   │       │               └── org.locationtech.geowave.core.store.statistics.StatisticsRegistrySPI
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── locationtech/
│   │           │           └── geowave/
│   │           │               └── core/
│   │           │                   └── geotime/
│   │           │                       ├── TestGeoTimePersistableRegistry.java
│   │           │                       ├── adapter/
│   │           │                       │   ├── SpatialFieldDescriptorTest.java
│   │           │                       │   ├── SpatialFieldMapperTest.java
│   │           │                       │   └── annotation/
│   │           │                       │       └── SpatialTemporalAnnotationsTest.java
│   │           │                       ├── binning/
│   │           │                       │   └── SpatialBinningTypeTest.java
│   │           │                       ├── index/
│   │           │                       │   ├── dimension/
│   │           │                       │   │   ├── LongitudeDefinitionTest.java
│   │           │                       │   │   ├── TemporalBinningStrategyTest.java
│   │           │                       │   │   └── TimeDefinitionTest.java
│   │           │                       │   └── sfc/
│   │           │                       │       └── hilbert/
│   │           │                       │           ├── HilbertSFCTest.java
│   │           │                       │           ├── PrimitiveHilbertSFCTest.java
│   │           │                       │           └── tiered/
│   │           │                       │               └── TieredSFCIndexStrategyTest.java
│   │           │                       ├── store/
│   │           │                       │   ├── data/
│   │           │                       │   │   └── PersistenceEncodingTest.java
│   │           │                       │   ├── field/
│   │           │                       │   │   └── GeoTimeReaderWriterTest.java
│   │           │                       │   ├── query/
│   │           │                       │   │   ├── BasicQueryTest.java
│   │           │                       │   │   ├── SpatialQueryTest.java
│   │           │                       │   │   ├── SpatialTemporalQueryTest.java
│   │           │                       │   │   ├── TemporalConstraintsTest.java
│   │           │                       │   │   ├── TemporalRangeTest.java
│   │           │                       │   │   ├── aggregate/
│   │           │                       │   │   │   ├── AbstractVectorAggregationTest.java
│   │           │                       │   │   │   ├── CompositeAggregationTest.java
│   │           │                       │   │   │   ├── GeohashBinningStrategyTest.java
│   │           │                       │   │   │   ├── VectorBoundingBoxAggregationTest.java
│   │           │                       │   │   │   ├── VectorCountAggregationTest.java
│   │           │                       │   │   │   └── VectorMathAggregationTest.java
│   │           │                       │   │   ├── filter/
│   │           │                       │   │   │   └── expression/
│   │           │                       │   │   │       ├── CQLToGeoWaveFilterTest.java
│   │           │                       │   │   │       └── SpatialTemporalFilterExpressionTest.java
│   │           │                       │   │   └── gwql/
│   │           │                       │   │       └── GWQLParserTest.java
│   │           │                       │   └── statistics/
│   │           │                       │       └── BoundingBoxStatisticTest.java
│   │           │                       └── util/
│   │           │                           ├── GeometryUtilsTest.java
│   │           │                           └── TWKBTest.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── services/
│   │                       └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   ├── index/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── locationtech/
│   │       │   │           └── geowave/
│   │       │   │               └── core/
│   │       │   │                   └── index/
│   │       │   │                       ├── ByteArray.java
│   │       │   │                       ├── ByteArrayRange.java
│   │       │   │                       ├── ByteArrayUtils.java
│   │       │   │                       ├── CompoundIndexStrategy.java
│   │       │   │                       ├── Coordinate.java
│   │       │   │                       ├── CoordinateRange.java
│   │       │   │                       ├── CustomIndexStrategy.java
│   │       │   │                       ├── FloatCompareUtils.java
│   │       │   │                       ├── GeoWaveSerializationException.java
│   │       │   │                       ├── HierarchicalNumericIndexStrategy.java
│   │       │   │                       ├── IndexConstraints.java
│   │       │   │                       ├── IndexData.java
│   │       │   │                       ├── IndexDimensionHint.java
│   │       │   │                       ├── IndexMetaData.java
│   │       │   │                       ├── IndexPersistableRegistry.java
│   │       │   │                       ├── IndexStrategy.java
│   │       │   │                       ├── IndexUtils.java
│   │       │   │                       ├── InsertionIds.java
│   │       │   │                       ├── Mergeable.java
│   │       │   │                       ├── MultiDimensionalCoordinateRanges.java
│   │       │   │                       ├── MultiDimensionalCoordinateRangesArray.java
│   │       │   │                       ├── MultiDimensionalCoordinates.java
│   │       │   │                       ├── MultiDimensionalIndexData.java
│   │       │   │                       ├── NullNumericIndexStrategy.java
│   │       │   │                       ├── NumericIndexStrategy.java
│   │       │   │                       ├── NumericIndexStrategyWrapper.java
│   │       │   │                       ├── PartitionIndexStrategy.java
│   │       │   │                       ├── PartitionIndexStrategyWrapper.java
│   │       │   │                       ├── QueryRanges.java
│   │       │   │                       ├── SPIServiceRegistry.java
│   │       │   │                       ├── SinglePartitionInsertionIds.java
│   │       │   │                       ├── SinglePartitionQueryRanges.java
│   │       │   │                       ├── SortedIndexStrategy.java
│   │       │   │                       ├── StringUtils.java
│   │       │   │                       ├── VarintUtils.java
│   │       │   │                       ├── dimension/
│   │       │   │                       │   ├── BasicDimensionDefinition.java
│   │       │   │                       │   ├── NumericDimensionDefinition.java
│   │       │   │                       │   └── UnboundedDimensionDefinition.java
│   │       │   │                       ├── lexicoder/
│   │       │   │                       │   ├── ByteLexicoder.java
│   │       │   │                       │   ├── DoubleLexicoder.java
│   │       │   │                       │   ├── FloatLexicoder.java
│   │       │   │                       │   ├── IntegerLexicoder.java
│   │       │   │                       │   ├── Lexicoders.java
│   │       │   │                       │   ├── LongLexicoder.java
│   │       │   │                       │   ├── NumberLexicoder.java
│   │       │   │                       │   └── ShortLexicoder.java
│   │       │   │                       ├── numeric/
│   │       │   │                       │   ├── BasicNumericDataset.java
│   │       │   │                       │   ├── BinnedNumericDataset.java
│   │       │   │                       │   ├── MultiDimensionalNumericData.java
│   │       │   │                       │   ├── NumericData.java
│   │       │   │                       │   ├── NumericRange.java
│   │       │   │                       │   └── NumericValue.java
│   │       │   │                       ├── persist/
│   │       │   │                       │   ├── InternalPersistableRegistry.java
│   │       │   │                       │   ├── Persistable.java
│   │       │   │                       │   ├── PersistableFactory.java
│   │       │   │                       │   ├── PersistableList.java
│   │       │   │                       │   ├── PersistableRegistrySpi.java
│   │       │   │                       │   └── PersistenceUtils.java
│   │       │   │                       ├── sfc/
│   │       │   │                       │   ├── BasicSFCIndexStrategy.java
│   │       │   │                       │   ├── RangeDecomposition.java
│   │       │   │                       │   ├── SFCDimensionDefinition.java
│   │       │   │                       │   ├── SFCFactory.java
│   │       │   │                       │   ├── SpaceFillingCurve.java
│   │       │   │                       │   ├── binned/
│   │       │   │                       │   │   └── BinnedSFCUtils.java
│   │       │   │                       │   ├── hilbert/
│   │       │   │                       │   │   ├── HilbertSFC.java
│   │       │   │                       │   │   ├── HilbertSFCOperations.java
│   │       │   │                       │   │   ├── PrimitiveHilbertSFCOperations.java
│   │       │   │                       │   │   └── UnboundedHilbertSFCOperations.java
│   │       │   │                       │   ├── tiered/
│   │       │   │                       │   │   ├── SingleTierSubStrategy.java
│   │       │   │                       │   │   ├── TieredSFCIndexFactory.java
│   │       │   │                       │   │   └── TieredSFCIndexStrategy.java
│   │       │   │                       │   ├── xz/
│   │       │   │                       │   │   ├── XZHierarchicalIndexFactory.java
│   │       │   │                       │   │   ├── XZHierarchicalIndexStrategy.java
│   │       │   │                       │   │   └── XZOrderSFC.java
│   │       │   │                       │   └── zorder/
│   │       │   │                       │       ├── ZOrderSFC.java
│   │       │   │                       │       └── ZOrderUtils.java
│   │       │   │                       ├── simple/
│   │       │   │                       │   ├── HashKeyIndexStrategy.java
│   │       │   │                       │   ├── RoundRobinKeyIndexStrategy.java
│   │       │   │                       │   ├── SimpleByteIndexStrategy.java
│   │       │   │                       │   ├── SimpleDoubleIndexStrategy.java
│   │       │   │                       │   ├── SimpleFloatIndexStrategy.java
│   │       │   │                       │   ├── SimpleIntegerIndexStrategy.java
│   │       │   │                       │   ├── SimpleLongIndexStrategy.java
│   │       │   │                       │   ├── SimpleNumericIndexStrategy.java
│   │       │   │                       │   └── SimpleShortIndexStrategy.java
│   │       │   │                       └── text/
│   │       │   │                           ├── BasicTextDataset.java
│   │       │   │                           ├── CaseSensitivity.java
│   │       │   │                           ├── EnumIndexStrategy.java
│   │       │   │                           ├── EnumSearch.java
│   │       │   │                           ├── ExplicitTextSearch.java
│   │       │   │                           ├── MultiDimensionalTextData.java
│   │       │   │                           ├── TextConstraints.java
│   │       │   │                           ├── TextData.java
│   │       │   │                           ├── TextIndexEntryConverter.java
│   │       │   │                           ├── TextIndexStrategy.java
│   │       │   │                           ├── TextIndexType.java
│   │       │   │                           ├── TextIndexUtils.java
│   │       │   │                           ├── TextRange.java
│   │       │   │                           ├── TextSearch.java
│   │       │   │                           ├── TextSearchPredicate.java
│   │       │   │                           ├── TextSearchType.java
│   │       │   │                           └── TextValue.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── locationtech/
│   │           │           └── geowave/
│   │           │               └── core/
│   │           │                   └── index/
│   │           │                       ├── ByteArrayRangeTest.java
│   │           │                       ├── ByteArrayUtilsTest.java
│   │           │                       ├── CompoundIndexStrategyTest.java
│   │           │                       ├── PersistenceUtilsTest.java
│   │           │                       ├── StringUtilsTest.java
│   │           │                       ├── TestIndexPersistableRegistry.java
│   │           │                       ├── VarintUtilsTest.java
│   │           │                       ├── dimension/
│   │           │                       │   └── BasicDimensionDefinitionTest.java
│   │           │                       ├── lexicoder/
│   │           │                       │   ├── AbstractLexicoderTest.java
│   │           │                       │   ├── ByteLexicoderTest.java
│   │           │                       │   ├── DoubleLexicoderTest.java
│   │           │                       │   ├── FloatLexicoderTest.java
│   │           │                       │   ├── IntegerLexicoderTest.java
│   │           │                       │   ├── LongLexicoderTest.java
│   │           │                       │   └── ShortLexicoderTest.java
│   │           │                       ├── sfc/
│   │           │                       │   ├── data/
│   │           │                       │   │   ├── BasicNumericDatasetTest.java
│   │           │                       │   │   ├── NumericRangeTest.java
│   │           │                       │   │   └── NumericValueTest.java
│   │           │                       │   ├── xz/
│   │           │                       │   │   └── XZOrderSFCTest.java
│   │           │                       │   └── zorder/
│   │           │                       │       └── ZOrderSFCTest.java
│   │           │                       └── simple/
│   │           │                           ├── HashKeyIndexStrategyTest.java
│   │           │                           ├── RoundRobinKeyIndexStrategyTest.java
│   │           │                           └── SimpleNumericIndexStrategyTest.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── services/
│   │                       └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   ├── ingest/
│   │   ├── .gitignore
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── avro/
│   │       │   │   └── wholefile.avsc
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── locationtech/
│   │       │   │           └── geowave/
│   │       │   │               └── core/
│   │       │   │                   └── ingest/
│   │       │   │                       ├── HdfsIngestHandler.java
│   │       │   │                       ├── S3IngestHandler.java
│   │       │   │                       ├── URLIngestUtils.java
│   │       │   │                       ├── avro/
│   │       │   │                       │   ├── AbstractStageWholeFileToAvro.java
│   │       │   │                       │   ├── GenericAvroSerializer.java
│   │       │   │                       │   ├── GeoWaveAvroFormatPlugin.java
│   │       │   │                       │   ├── GeoWaveAvroPluginBase.java
│   │       │   │                       │   └── GeoWaveAvroSchemaProvider.java
│   │       │   │                       ├── hdfs/
│   │       │   │                       │   ├── HdfsFile.java
│   │       │   │                       │   ├── StageRunData.java
│   │       │   │                       │   ├── StageToHdfsDriver.java
│   │       │   │                       │   └── mapreduce/
│   │       │   │                       │       ├── AbstractLocalIngestWithMapper.java
│   │       │   │                       │       ├── AbstractMapReduceIngest.java
│   │       │   │                       │       ├── ByteBufferBackedInputStream.java
│   │       │   │                       │       ├── IngestFromHdfsDriver.java
│   │       │   │                       │       ├── IngestFromHdfsPlugin.java
│   │       │   │                       │       ├── IngestMapper.java
│   │       │   │                       │       ├── IngestPersistableRegistry.java
│   │       │   │                       │       ├── IngestReducer.java
│   │       │   │                       │       ├── IngestWithMapper.java
│   │       │   │                       │       ├── IngestWithMapperJobRunner.java
│   │       │   │                       │       ├── IngestWithReducer.java
│   │       │   │                       │       ├── IngestWithReducerJobRunner.java
│   │       │   │                       │       ├── IntermediateKeyValueMapper.java
│   │       │   │                       │       ├── KeyValueData.java
│   │       │   │                       │       └── MapReduceCommandLineOptions.java
│   │       │   │                       ├── kafka/
│   │       │   │                       │   ├── IngestFromKafkaDriver.java
│   │       │   │                       │   ├── KafkaCommandLineArgument.java
│   │       │   │                       │   ├── KafkaCommandLineOptions.java
│   │       │   │                       │   ├── KafkaConsumerCommandLineOptions.java
│   │       │   │                       │   ├── KafkaIngestRunData.java
│   │       │   │                       │   ├── KafkaProducerCommandLineOptions.java
│   │       │   │                       │   ├── PropertyReference.java
│   │       │   │                       │   ├── StageKafkaData.java
│   │       │   │                       │   └── StageToKafkaDriver.java
│   │       │   │                       ├── local/
│   │       │   │                       │   └── LocalFileIngestCLIDriver.java
│   │       │   │                       ├── operations/
│   │       │   │                       │   ├── AddTypeCommand.java
│   │       │   │                       │   ├── ConfigAWSCommand.java
│   │       │   │                       │   ├── IngestOperationProvider.java
│   │       │   │                       │   ├── IngestSection.java
│   │       │   │                       │   ├── KafkaToGeoWaveCommand.java
│   │       │   │                       │   ├── ListIngestPluginsCommand.java
│   │       │   │                       │   ├── LocalToGeoWaveCommand.java
│   │       │   │                       │   ├── LocalToHdfsCommand.java
│   │       │   │                       │   ├── LocalToKafkaCommand.java
│   │       │   │                       │   ├── LocalToMapReduceToGeoWaveCommand.java
│   │       │   │                       │   ├── MapReduceToGeoWaveCommand.java
│   │       │   │                       │   ├── SparkToGeoWaveCommand.java
│   │       │   │                       │   └── options/
│   │       │   │                       │       └── IngestFormatPluginOptions.java
│   │       │   │                       ├── spark/
│   │       │   │                       │   ├── SparkCommandLineOptions.java
│   │       │   │                       │   └── SparkIngestDriver.java
│   │       │   │                       └── spi/
│   │       │   │                           ├── IngestFormatPluginProviderSpi.java
│   │       │   │                           └── IngestFormatPluginRegistry.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               ├── java.nio.file.spi.FileSystemProvider
│   │       │               ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │       │               ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   │       │               ├── org.locationtech.geowave.core.store.ingest.IngestUrlHandlerSpi
│   │       │               └── org.locationtech.geowave.core.store.ingest.LocalFileIngestPluginRegistrySpi
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── locationtech/
│   │                       └── geowave/
│   │                           └── ingest/
│   │                               └── s3/
│   │                                   └── DefaultGeoWaveAWSCredentialsProviderTest.java
│   ├── mapreduce/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── locationtech/
│   │           │           └── geowave/
│   │           │               └── mapreduce/
│   │           │                   ├── AbstractGeoWaveJobRunner.java
│   │           │                   ├── BaseMapReduceDataStore.java
│   │           │                   ├── GeoWaveConfiguratorBase.java
│   │           │                   ├── GeoWaveKey.java
│   │           │                   ├── GeoWaveMapper.java
│   │           │                   ├── GeoWaveReducer.java
│   │           │                   ├── GeoWaveWritableInputMapper.java
│   │           │                   ├── GeoWaveWritableInputReducer.java
│   │           │                   ├── GeoWaveWritableOutputMapper.java
│   │           │                   ├── GeoWaveWritableOutputReducer.java
│   │           │                   ├── HadoopDataAdapter.java
│   │           │                   ├── HadoopWritableSerializationTool.java
│   │           │                   ├── HadoopWritableSerializer.java
│   │           │                   ├── JobContextAdapterIndexMappingStore.java
│   │           │                   ├── JobContextAdapterStore.java
│   │           │                   ├── JobContextIndexStore.java
│   │           │                   ├── JobContextInternalAdapterStore.java
│   │           │                   ├── MapReduceDataStore.java
│   │           │                   ├── MapReduceDataStoreOperations.java
│   │           │                   ├── MapReduceUtils.java
│   │           │                   ├── NativeMapContext.java
│   │           │                   ├── NativeReduceContext.java
│   │           │                   ├── URLClassloaderUtils.java
│   │           │                   ├── VFSClassLoaderTransformer.java
│   │           │                   ├── copy/
│   │           │                   │   ├── StoreCopyJobRunner.java
│   │           │                   │   ├── StoreCopyMapper.java
│   │           │                   │   └── StoreCopyReducer.java
│   │           │                   ├── dedupe/
│   │           │                   │   ├── GeoWaveDedupeCombiner.java
│   │           │                   │   ├── GeoWaveDedupeJobRunner.java
│   │           │                   │   ├── GeoWaveDedupeMapper.java
│   │           │                   │   └── GeoWaveDedupeReducer.java
│   │           │                   ├── hdfs/
│   │           │                   │   └── HdfsUrlStreamHandlerFactory.java
│   │           │                   ├── input/
│   │           │                   │   ├── AsyncInputFormatIteratorWrapper.java
│   │           │                   │   ├── GeoWaveInputConfigurator.java
│   │           │                   │   ├── GeoWaveInputFormat.java
│   │           │                   │   ├── GeoWaveInputKey.java
│   │           │                   │   └── InputFormatIteratorWrapper.java
│   │           │                   ├── operations/
│   │           │                   │   ├── ConfigHDFSCommand.java
│   │           │                   │   ├── CopyCommand.java
│   │           │                   │   ├── CopyCommandOptions.java
│   │           │                   │   ├── HdfsHostPortConverter.java
│   │           │                   │   └── MapReduceOperationProvider.java
│   │           │                   ├── output/
│   │           │                   │   ├── GeoWaveOutputFormat.java
│   │           │                   │   └── GeoWaveOutputKey.java
│   │           │                   ├── s3/
│   │           │                   │   ├── DefaultGeoWaveAWSCredentialsProvider.java
│   │           │                   │   ├── GeoWaveAmazonS3Factory.java
│   │           │                   │   ├── S3Params.java
│   │           │                   │   ├── S3ParamsExtractor.java
│   │           │                   │   ├── S3URLConnection.java
│   │           │                   │   ├── S3URLStreamHandler.java
│   │           │                   │   └── S3URLStreamHandlerFactory.java
│   │           │                   └── splits/
│   │           │                       ├── GeoWaveInputSplit.java
│   │           │                       ├── GeoWaveRecordReader.java
│   │           │                       ├── GeoWaveRowRange.java
│   │           │                       ├── IntermediateSplitInfo.java
│   │           │                       ├── RangeLocationPair.java
│   │           │                       ├── RecordReaderParams.java
│   │           │                       ├── SplitInfo.java
│   │           │                       └── SplitsProvider.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── services/
│   │                       ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │                       └── org.locationtech.geowave.core.store.spi.ClassLoaderTransformerSpi
│   ├── pom.xml
│   └── store/
│       ├── .gitignore
│       ├── pom.xml
│       └── src/
│           ├── main/
│           │   ├── antlr4/
│           │   │   └── org/
│           │   │       └── locationtech/
│           │   │           └── geowave/
│           │   │               └── core/
│           │   │                   └── store/
│           │   │                       └── query/
│           │   │                           └── gwql/
│           │   │                               └── parse/
│           │   │                                   └── GWQL.g4
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── locationtech/
│           │   │           └── geowave/
│           │   │               └── core/
│           │   │                   └── store/
│           │   │                       ├── AdapterMapping.java
│           │   │                       ├── AdapterToIndexMapping.java
│           │   │                       ├── BaseDataStoreFactory.java
│           │   │                       ├── BaseDataStoreFamily.java
│           │   │                       ├── BaseDataStoreOptions.java
│           │   │                       ├── BaseStoreFactory.java
│           │   │                       ├── CloseableIterator.java
│           │   │                       ├── CloseableIteratorWrapper.java
│           │   │                       ├── DataStoreOptions.java
│           │   │                       ├── DataStoreProperty.java
│           │   │                       ├── EntryVisibilityHandler.java
│           │   │                       ├── GenericFactory.java
│           │   │                       ├── GenericStoreFactory.java
│           │   │                       ├── GeoWaveStoreFinder.java
│           │   │                       ├── PropertyStore.java
│           │   │                       ├── StoreFactoryFamilySpi.java
│           │   │                       ├── StoreFactoryHelper.java
│           │   │                       ├── StoreFactoryOptions.java
│           │   │                       ├── StorePersistableRegistry.java
│           │   │                       ├── adapter/
│           │   │                       │   ├── AbstractAdapterPersistenceEncoding.java
│           │   │                       │   ├── AbstractDataTypeAdapter.java
│           │   │                       │   ├── AdapterIndexMappingStore.java
│           │   │                       │   ├── AdapterPersistenceEncoding.java
│           │   │                       │   ├── AdapterStore.java
│           │   │                       │   ├── AdapterStoreWrapper.java
│           │   │                       │   ├── AsyncPersistenceEncoding.java
│           │   │                       │   ├── BaseFieldDescriptor.java
│           │   │                       │   ├── BasicDataTypeAdapter.java
│           │   │                       │   ├── BinaryDataAdapter.java
│           │   │                       │   ├── FieldDescriptor.java
│           │   │                       │   ├── FieldDescriptorBuilder.java
│           │   │                       │   ├── FitToIndexPersistenceEncoding.java
│           │   │                       │   ├── FullAsyncPersistenceEncoding.java
│           │   │                       │   ├── IndexDependentDataAdapter.java
│           │   │                       │   ├── IndexedAdapterPersistenceEncoding.java
│           │   │                       │   ├── InternalAdapterStore.java
│           │   │                       │   ├── InternalAdapterUtils.java
│           │   │                       │   ├── InternalDataAdapter.java
│           │   │                       │   ├── InternalDataAdapterImpl.java
│           │   │                       │   ├── LazyReadPersistenceEncoding.java
│           │   │                       │   ├── MapRowBuilder.java
│           │   │                       │   ├── PartialAsyncPersistenceEncoding.java
│           │   │                       │   ├── PersistentAdapterStore.java
│           │   │                       │   ├── RowMergingDataAdapter.java
│           │   │                       │   ├── SimpleAbstractDataAdapter.java
│           │   │                       │   ├── SimpleRowTransform.java
│           │   │                       │   ├── SingletonFieldRowBuilder.java
│           │   │                       │   ├── TransientAdapterStore.java
│           │   │                       │   ├── annotation/
│           │   │                       │   │   ├── AnnotatedFieldDescriptorBuilder.java
│           │   │                       │   │   ├── BaseAnnotatedFieldDescriptorBuilder.java
│           │   │                       │   │   ├── GeoWaveDataType.java
│           │   │                       │   │   ├── GeoWaveField.java
│           │   │                       │   │   └── GeoWaveFieldAnnotation.java
│           │   │                       │   ├── exceptions/
│           │   │                       │   │   └── AdapterException.java
│           │   │                       │   └── statistics/
│           │   │                       │       └── histogram/
│           │   │                       │           ├── ByteUtils.java
│           │   │                       │           ├── FixedBinNumericHistogram.java
│           │   │                       │           ├── MinimalBinDistanceHistogram.java
│           │   │                       │           ├── NumericHistogram.java
│           │   │                       │           ├── NumericHistogramFactory.java
│           │   │                       │           └── TDigestNumericHistogram.java
│           │   │                       ├── api/
│           │   │                       │   ├── Aggregation.java
│           │   │                       │   ├── AggregationQuery.java
│           │   │                       │   ├── AggregationQueryBuilder.java
│           │   │                       │   ├── AttributeIndex.java
│           │   │                       │   ├── BinConstraints.java
│           │   │                       │   ├── BinningStrategy.java
│           │   │                       │   ├── DataStore.java
│           │   │                       │   ├── DataStoreFactory.java
│           │   │                       │   ├── DataTypeAdapter.java
│           │   │                       │   ├── DataTypeStatistic.java
│           │   │                       │   ├── FieldStatistic.java
│           │   │                       │   ├── Index.java
│           │   │                       │   ├── IndexFieldMapper.java
│           │   │                       │   ├── IndexStatistic.java
│           │   │                       │   ├── IngestOptions.java
│           │   │                       │   ├── Query.java
│           │   │                       │   ├── QueryBuilder.java
│           │   │                       │   ├── QueryConstraintsFactory.java
│           │   │                       │   ├── RowBuilder.java
│           │   │                       │   ├── Statistic.java
│           │   │                       │   ├── StatisticBinningStrategy.java
│           │   │                       │   ├── StatisticQuery.java
│           │   │                       │   ├── StatisticQueryBuilder.java
│           │   │                       │   ├── StatisticValue.java
│           │   │                       │   ├── VisibilityHandler.java
│           │   │                       │   ├── WriteResults.java
│           │   │                       │   └── Writer.java
│           │   │                       ├── base/
│           │   │                       │   ├── AbstractBaseRowQuery.java
│           │   │                       │   ├── BaseConstraintsQuery.java
│           │   │                       │   ├── BaseDataIndexWriter.java
│           │   │                       │   ├── BaseDataStore.java
│           │   │                       │   ├── BaseDataStoreUtils.java
│           │   │                       │   ├── BaseFilteredIndexQuery.java
│           │   │                       │   ├── BaseIndexWriter.java
│           │   │                       │   ├── BaseInsertionIdQuery.java
│           │   │                       │   ├── BaseQuery.java
│           │   │                       │   ├── BaseQueryOptions.java
│           │   │                       │   ├── BaseRowPrefixQuery.java
│           │   │                       │   ├── CastIterator.java
│           │   │                       │   ├── DataStoreCallbackManager.java
│           │   │                       │   ├── GeoWaveValueStore.java
│           │   │                       │   ├── IntermediaryReadEntryInfo.java
│           │   │                       │   ├── IntermediaryWriteEntryInfo.java
│           │   │                       │   └── dataidx/
│           │   │                       │       ├── BatchDataIndexRetrieval.java
│           │   │                       │       ├── BatchDataIndexRetrievalIteratorHelper.java
│           │   │                       │       ├── BatchIndexRetrievalImpl.java
│           │   │                       │       ├── DataIndexRetrieval.java
│           │   │                       │       ├── DataIndexRetrievalImpl.java
│           │   │                       │       ├── DataIndexUtils.java
│           │   │                       │       ├── DefaultDataIndexRowDeleterWrapper.java
│           │   │                       │       └── DefaultDataIndexRowWriterWrapper.java
│           │   │                       ├── callback/
│           │   │                       │   ├── DeleteCallback.java
│           │   │                       │   ├── DeleteCallbackList.java
│           │   │                       │   ├── DeleteOtherIndicesCallback.java
│           │   │                       │   ├── DuplicateDeletionCallback.java
│           │   │                       │   ├── IngestCallback.java
│           │   │                       │   ├── IngestCallbackList.java
│           │   │                       │   ├── ScanCallback.java
│           │   │                       │   └── ScanCallbackList.java
│           │   │                       ├── cli/
│           │   │                       │   ├── CLIUtils.java
│           │   │                       │   ├── VisibilityOptions.java
│           │   │                       │   ├── index/
│           │   │                       │   │   ├── AddIndexCommand.java
│           │   │                       │   │   ├── CompactIndexCommand.java
│           │   │                       │   │   ├── IndexOperationProvider.java
│           │   │                       │   │   ├── IndexSection.java
│           │   │                       │   │   ├── ListIndexPluginsCommand.java
│           │   │                       │   │   ├── ListIndicesCommand.java
│           │   │                       │   │   └── RemoveIndexCommand.java
│           │   │                       │   ├── query/
│           │   │                       │   │   ├── CSVQueryOutputFormat.java
│           │   │                       │   │   ├── ConsoleQueryOutputFormat.java
│           │   │                       │   │   ├── GWQLQuery.java
│           │   │                       │   │   ├── QueryOperationProvider.java
│           │   │                       │   │   └── QueryOutputFormatSpi.java
│           │   │                       │   ├── stats/
│           │   │                       │   │   ├── AbstractStatsCommand.java
│           │   │                       │   │   ├── AddStatCommand.java
│           │   │                       │   │   ├── CompactStatsCommand.java
│           │   │                       │   │   ├── ListStatTypesCommand.java
│           │   │                       │   │   ├── ListStatsCommand.java
│           │   │                       │   │   ├── RecalculateStatsCommand.java
│           │   │                       │   │   ├── RemoveStatCommand.java
│           │   │                       │   │   ├── StatsCommandLineOptions.java
│           │   │                       │   │   ├── StatsOperationProvider.java
│           │   │                       │   │   └── StatsSection.java
│           │   │                       │   ├── store/
│           │   │                       │   │   ├── AbstractRemoveCommand.java
│           │   │                       │   │   ├── AddStoreCommand.java
│           │   │                       │   │   ├── ClearStoreCommand.java
│           │   │                       │   │   ├── CopyConfigStoreCommand.java
│           │   │                       │   │   ├── CopyStoreCommand.java
│           │   │                       │   │   ├── DataStorePluginOptions.java
│           │   │                       │   │   ├── DescribeStoreCommand.java
│           │   │                       │   │   ├── ListStorePluginsCommand.java
│           │   │                       │   │   ├── ListStoresCommand.java
│           │   │                       │   │   ├── RemoveStoreCommand.java
│           │   │                       │   │   ├── StoreLoader.java
│           │   │                       │   │   ├── StoreOperationProvider.java
│           │   │                       │   │   ├── StoreSection.java
│           │   │                       │   │   └── VersionCommand.java
│           │   │                       │   └── type/
│           │   │                       │       ├── DescribeTypeCommand.java
│           │   │                       │       ├── ListTypesCommand.java
│           │   │                       │       ├── RemoveTypeCommand.java
│           │   │                       │       ├── TypeOperationProvider.java
│           │   │                       │       └── TypeSection.java
│           │   │                       ├── config/
│           │   │                       │   ├── ConfigOption.java
│           │   │                       │   └── ConfigUtils.java
│           │   │                       ├── data/
│           │   │                       │   ├── CommonIndexedPersistenceEncoding.java
│           │   │                       │   ├── DataReader.java
│           │   │                       │   ├── DataWriter.java
│           │   │                       │   ├── DeferredReadCommonIndexedPersistenceEncoding.java
│           │   │                       │   ├── IndexedPersistenceEncoding.java
│           │   │                       │   ├── MultiFieldPersistentDataset.java
│           │   │                       │   ├── PersistenceEncoding.java
│           │   │                       │   ├── PersistentDataset.java
│           │   │                       │   ├── PersistentValue.java
│           │   │                       │   ├── SingleFieldPersistentDataset.java
│           │   │                       │   ├── UnreadFieldDataList.java
│           │   │                       │   ├── field/
│           │   │                       │   │   ├── ArrayReader.java
│           │   │                       │   │   ├── ArrayWriter.java
│           │   │                       │   │   ├── FieldReader.java
│           │   │                       │   │   ├── FieldSerializationProviderSpi.java
│           │   │                       │   │   ├── FieldUtils.java
│           │   │                       │   │   ├── FieldWriter.java
│           │   │                       │   │   ├── PersistableReader.java
│           │   │                       │   │   ├── PersistableWriter.java
│           │   │                       │   │   └── base/
│           │   │                       │   │       ├── BigDecimalArraySerializationProvider.java
│           │   │                       │   │       ├── BigDecimalSerializationProvider.java
│           │   │                       │   │       ├── BigIntegerArraySerializationProvider.java
│           │   │                       │   │       ├── BigIntegerSerializationProvider.java
│           │   │                       │   │       ├── BooleanArraySerializationProvider.java
│           │   │                       │   │       ├── BooleanSerializationProvider.java
│           │   │                       │   │       ├── ByteArraySerializationProvider.java
│           │   │                       │   │       ├── ByteSerializationProvider.java
│           │   │                       │   │       ├── DoubleArraySerializationProvider.java
│           │   │                       │   │       ├── DoubleSerializationProvider.java
│           │   │                       │   │       ├── FloatArraySerializationProvider.java
│           │   │                       │   │       ├── FloatSerializationProvider.java
│           │   │                       │   │       ├── IntegerArraySerializationProvider.java
│           │   │                       │   │       ├── IntegerSerializationProvider.java
│           │   │                       │   │       ├── LongArraySerializationProvider.java
│           │   │                       │   │       ├── LongSerializationProvider.java
│           │   │                       │   │       ├── PrimitiveBooleanArraySerializationProvider.java
│           │   │                       │   │       ├── PrimitiveByteArraySerializationProvider.java
│           │   │                       │   │       ├── PrimitiveDoubleArraySerializationProvider.java
│           │   │                       │   │       ├── PrimitiveFloatArraySerializationProvider.java
│           │   │                       │   │       ├── PrimitiveIntArraySerializationProvider.java
│           │   │                       │   │       ├── PrimitiveLongArraySerializationProvider.java
│           │   │                       │   │       ├── PrimitiveShortArraySerializationProvider.java
│           │   │                       │   │       ├── ShortArraySerializationProvider.java
│           │   │                       │   │       ├── ShortSerializationProvider.java
│           │   │                       │   │       ├── StringArraySerializationProvider.java
│           │   │                       │   │       └── StringSerializationProvider.java
│           │   │                       │   └── visibility/
│           │   │                       │       ├── FallbackVisibilityHandler.java
│           │   │                       │       ├── FieldLevelVisibilityHandler.java
│           │   │                       │       ├── FieldMappedVisibilityHandler.java
│           │   │                       │       ├── GlobalVisibilityHandler.java
│           │   │                       │       ├── JsonFieldLevelVisibilityHandler.java
│           │   │                       │       ├── UnconstrainedVisibilityHandler.java
│           │   │                       │       ├── VisibilityComposer.java
│           │   │                       │       └── VisibilityExpression.java
│           │   │                       ├── dimension/
│           │   │                       │   ├── AbstractNumericDimensionField.java
│           │   │                       │   ├── BasicNumericDimensionField.java
│           │   │                       │   └── NumericDimensionField.java
│           │   │                       ├── entities/
│           │   │                       │   ├── GeoWaveKey.java
│           │   │                       │   ├── GeoWaveKeyImpl.java
│           │   │                       │   ├── GeoWaveMetadata.java
│           │   │                       │   ├── GeoWaveRow.java
│           │   │                       │   ├── GeoWaveRowImpl.java
│           │   │                       │   ├── GeoWaveRowIteratorTransformer.java
│           │   │                       │   ├── GeoWaveRowMergingIterator.java
│           │   │                       │   ├── GeoWaveRowMergingTransform.java
│           │   │                       │   ├── GeoWaveValue.java
│           │   │                       │   ├── GeoWaveValueImpl.java
│           │   │                       │   └── MergeableGeoWaveRow.java
│           │   │                       ├── flatten/
│           │   │                       │   ├── BitmaskUtils.java
│           │   │                       │   ├── BitmaskedPairComparator.java
│           │   │                       │   ├── FlattenedDataSet.java
│           │   │                       │   ├── FlattenedFieldInfo.java
│           │   │                       │   ├── FlattenedUnreadData.java
│           │   │                       │   └── FlattenedUnreadDataSingleRow.java
│           │   │                       ├── index/
│           │   │                       │   ├── AttributeDimensionalityTypeProvider.java
│           │   │                       │   ├── AttributeIndexImpl.java
│           │   │                       │   ├── AttributeIndexOptions.java
│           │   │                       │   ├── AttributeIndexProviderSpi.java
│           │   │                       │   ├── BaseIndexBuilder.java
│           │   │                       │   ├── BasicIndexModel.java
│           │   │                       │   ├── CommonIndexModel.java
│           │   │                       │   ├── CompositeConstraints.java
│           │   │                       │   ├── CoreRegisteredIndexFieldMappers.java
│           │   │                       │   ├── CustomAttributeIndex.java
│           │   │                       │   ├── CustomIndex.java
│           │   │                       │   ├── CustomNameIndex.java
│           │   │                       │   ├── FilterableConstraints.java
│           │   │                       │   ├── IndexBuilder.java
│           │   │                       │   ├── IndexFieldMapperPersistableRegistry.java
│           │   │                       │   ├── IndexFieldMapperRegistry.java
│           │   │                       │   ├── IndexFieldMapperRegistrySPI.java
│           │   │                       │   ├── IndexFilter.java
│           │   │                       │   ├── IndexImpl.java
│           │   │                       │   ├── IndexPluginOptions.java
│           │   │                       │   ├── IndexStore.java
│           │   │                       │   ├── NoOpIndexFieldMapper.java
│           │   │                       │   ├── NullIndex.java
│           │   │                       │   ├── NumericAttributeIndexProvider.java
│           │   │                       │   ├── TextAttributeIndexProvider.java
│           │   │                       │   └── writer/
│           │   │                       │       ├── IndependentAdapterIndexWriter.java
│           │   │                       │       └── IndexCompositeWriter.java
│           │   │                       ├── ingest/
│           │   │                       │   ├── AbstractLocalFileDriver.java
│           │   │                       │   ├── AbstractLocalFileIngestDriver.java
│           │   │                       │   ├── BaseDataStoreIngestDriver.java
│           │   │                       │   ├── DataAdapterProvider.java
│           │   │                       │   ├── GeoWaveData.java
│           │   │                       │   ├── IndexProvider.java
│           │   │                       │   ├── IngestFormatOptions.java
│           │   │                       │   ├── IngestOptionsBuilderImpl.java
│           │   │                       │   ├── IngestPluginBase.java
│           │   │                       │   ├── IngestTask.java
│           │   │                       │   ├── IngestUrlHandlerSpi.java
│           │   │                       │   ├── IngestUtils.java
│           │   │                       │   ├── LocalFileIngestPlugin.java
│           │   │                       │   ├── LocalFileIngestPluginRegistrySpi.java
│           │   │                       │   ├── LocalIngestRunData.java
│           │   │                       │   ├── LocalInputCommandLineOptions.java
│           │   │                       │   ├── LocalPluginBase.java
│           │   │                       │   └── LocalPluginFileVisitor.java
│           │   │                       ├── memory/
│           │   │                       │   ├── MemoryAdapterIndexMappingStore.java
│           │   │                       │   ├── MemoryAdapterStore.java
│           │   │                       │   ├── MemoryDataStoreOperations.java
│           │   │                       │   ├── MemoryFactoryHelper.java
│           │   │                       │   ├── MemoryIndexStore.java
│           │   │                       │   ├── MemoryMetadataFilteringIterator.java
│           │   │                       │   ├── MemoryPersistentAdapterStore.java
│           │   │                       │   ├── MemoryRequiredOptions.java
│           │   │                       │   ├── MemoryStoreFactoryFamily.java
│           │   │                       │   └── MemoryStoreUtils.java
│           │   │                       ├── metadata/
│           │   │                       │   ├── AbstractGeoWavePersistence.java
│           │   │                       │   ├── AdapterIndexMappingStoreFactory.java
│           │   │                       │   ├── AdapterIndexMappingStoreImpl.java
│           │   │                       │   ├── AdapterStoreFactory.java
│           │   │                       │   ├── AdapterStoreImpl.java
│           │   │                       │   ├── DataStatisticsStoreFactory.java
│           │   │                       │   ├── DataStatisticsStoreImpl.java
│           │   │                       │   ├── IndexStoreFactory.java
│           │   │                       │   ├── IndexStoreImpl.java
│           │   │                       │   ├── InternalAdapterStoreFactory.java
│           │   │                       │   ├── InternalAdapterStoreImpl.java
│           │   │                       │   ├── MetadataIterators.java
│           │   │                       │   ├── PropertyStoreFactory.java
│           │   │                       │   └── PropertyStoreImpl.java
│           │   │                       ├── operations/
│           │   │                       │   ├── BaseReaderParams.java
│           │   │                       │   ├── BaseReaderParamsBuilder.java
│           │   │                       │   ├── DataIndexReaderParams.java
│           │   │                       │   ├── DataIndexReaderParamsBuilder.java
│           │   │                       │   ├── DataStoreOperations.java
│           │   │                       │   ├── DataStoreOperationsFactory.java
│           │   │                       │   ├── Deleter.java
│           │   │                       │   ├── MetadataDeleter.java
│           │   │                       │   ├── MetadataQuery.java
│           │   │                       │   ├── MetadataReader.java
│           │   │                       │   ├── MetadataType.java
│           │   │                       │   ├── MetadataWriter.java
│           │   │                       │   ├── ParallelDecoder.java
│           │   │                       │   ├── QueryAndDeleteByRow.java
│           │   │                       │   ├── RangeReaderParams.java
│           │   │                       │   ├── RangeReaderParamsBuilder.java
│           │   │                       │   ├── ReaderParams.java
│           │   │                       │   ├── ReaderParamsBuilder.java
│           │   │                       │   ├── RowDeleter.java
│           │   │                       │   ├── RowReader.java
│           │   │                       │   ├── RowReaderWrapper.java
│           │   │                       │   ├── RowWriter.java
│           │   │                       │   ├── SimpleParallelDecoder.java
│           │   │                       │   ├── config/
│           │   │                       │   │   └── IndexDefaultConfigProvider.java
│           │   │                       │   └── remote/
│           │   │                       │       └── options/
│           │   │                       │           └── BasicIndexOptions.java
│           │   │                       ├── query/
│           │   │                       │   ├── BaseQuery.java
│           │   │                       │   ├── BaseQueryBuilder.java
│           │   │                       │   ├── BaseQueryBuilderImpl.java
│           │   │                       │   ├── QueryBuilderImpl.java
│           │   │                       │   ├── aggregate/
│           │   │                       │   │   ├── AdapterAndIndexBasedAggregation.java
│           │   │                       │   │   ├── AggregationQueryBuilderImpl.java
│           │   │                       │   │   ├── BinningAggregation.java
│           │   │                       │   │   ├── BinningAggregationOptions.java
│           │   │                       │   │   ├── CommonIndexAggregation.java
│           │   │                       │   │   ├── CompositeAggregation.java
│           │   │                       │   │   ├── CountAggregation.java
│           │   │                       │   │   ├── FieldMathAggregation.java
│           │   │                       │   │   ├── FieldMaxAggregation.java
│           │   │                       │   │   ├── FieldMinAggregation.java
│           │   │                       │   │   ├── FieldNameParam.java
│           │   │                       │   │   ├── FieldSumAggregation.java
│           │   │                       │   │   ├── MergingAggregation.java
│           │   │                       │   │   ├── OptimalCountAggregation.java
│           │   │                       │   │   └── OptimalFieldAggregation.java
│           │   │                       │   ├── constraints/
│           │   │                       │   │   ├── AdapterAndIndexBasedQueryConstraints.java
│           │   │                       │   │   ├── BasicOrderedConstraintQuery.java
│           │   │                       │   │   ├── BasicQuery.java
│           │   │                       │   │   ├── BasicQueryByClass.java
│           │   │                       │   │   ├── Constraints.java
│           │   │                       │   │   ├── CoordinateRangeQuery.java
│           │   │                       │   │   ├── CoordinateRangeUtils.java
│           │   │                       │   │   ├── CustomQueryConstraints.java
│           │   │                       │   │   ├── CustomQueryConstraintsWithFilter.java
│           │   │                       │   │   ├── DataIdQuery.java
│           │   │                       │   │   ├── DataIdRangeQuery.java
│           │   │                       │   │   ├── EverythingQuery.java
│           │   │                       │   │   ├── ExplicitFilteredQuery.java
│           │   │                       │   │   ├── FilteredEverythingQuery.java
│           │   │                       │   │   ├── InsertionIdQuery.java
│           │   │                       │   │   ├── OptimalExpressionQuery.java
│           │   │                       │   │   ├── PrefixIdQuery.java
│           │   │                       │   │   ├── QueryConstraints.java
│           │   │                       │   │   ├── QueryConstraintsFactoryImpl.java
│           │   │                       │   │   ├── SimpleNumericQuery.java
│           │   │                       │   │   └── TypeConstraintQuery.java
│           │   │                       │   ├── filter/
│           │   │                       │   │   ├── AdapterIdQueryFilter.java
│           │   │                       │   │   ├── BasicQueryFilter.java
│           │   │                       │   │   ├── ClientVisibilityFilter.java
│           │   │                       │   │   ├── CoordinateRangeQueryFilter.java
│           │   │                       │   │   ├── DataIdQueryFilter.java
│           │   │                       │   │   ├── DataIdRangeQueryFilter.java
│           │   │                       │   │   ├── DedupeFilter.java
│           │   │                       │   │   ├── ExpressionQueryFilter.java
│           │   │                       │   │   ├── FilterList.java
│           │   │                       │   │   ├── FixedResolutionSubsampleQueryFilter.java
│           │   │                       │   │   ├── InsertionIdQueryFilter.java
│           │   │                       │   │   ├── PrefixIdQueryFilter.java
│           │   │                       │   │   ├── QueryFilter.java
│           │   │                       │   │   └── expression/
│           │   │                       │   │       ├── And.java
│           │   │                       │   │       ├── Between.java
│           │   │                       │   │       ├── BinaryPredicate.java
│           │   │                       │   │       ├── BooleanExpression.java
│           │   │                       │   │       ├── BooleanFieldValue.java
│           │   │                       │   │       ├── BooleanLiteral.java
│           │   │                       │   │       ├── ComparableExpression.java
│           │   │                       │   │       ├── ComparisonOperator.java
│           │   │                       │   │       ├── Exclude.java
│           │   │                       │   │       ├── Expression.java
│           │   │                       │   │       ├── FieldValue.java
│           │   │                       │   │       ├── Filter.java
│           │   │                       │   │       ├── FilterConstraints.java
│           │   │                       │   │       ├── FilterRange.java
│           │   │                       │   │       ├── GenericEqualTo.java
│           │   │                       │   │       ├── GenericExpression.java
│           │   │                       │   │       ├── GenericFieldValue.java
│           │   │                       │   │       ├── GenericLiteral.java
│           │   │                       │   │       ├── GenericNotEqualTo.java
│           │   │                       │   │       ├── Include.java
│           │   │                       │   │       ├── IndexFieldConstraints.java
│           │   │                       │   │       ├── InvalidFilterException.java
│           │   │                       │   │       ├── IsNotNull.java
│           │   │                       │   │       ├── IsNull.java
│           │   │                       │   │       ├── Literal.java
│           │   │                       │   │       ├── MultiFilterOperator.java
│           │   │                       │   │       ├── Not.java
│           │   │                       │   │       ├── Or.java
│           │   │                       │   │       ├── Predicate.java
│           │   │                       │   │       ├── numeric/
│           │   │                       │   │       │   ├── Abs.java
│           │   │                       │   │       │   ├── Add.java
│           │   │                       │   │       │   ├── Divide.java
│           │   │                       │   │       │   ├── MathExpression.java
│           │   │                       │   │       │   ├── Multiply.java
│           │   │                       │   │       │   ├── NumericBetween.java
│           │   │                       │   │       │   ├── NumericComparisonOperator.java
│           │   │                       │   │       │   ├── NumericExpression.java
│           │   │                       │   │       │   ├── NumericFieldConstraints.java
│           │   │                       │   │       │   ├── NumericFieldValue.java
│           │   │                       │   │       │   ├── NumericLiteral.java
│           │   │                       │   │       │   └── Subtract.java
│           │   │                       │   │       └── text/
│           │   │                       │   │           ├── Concat.java
│           │   │                       │   │           ├── Contains.java
│           │   │                       │   │           ├── EndsWith.java
│           │   │                       │   │           ├── StartsWith.java
│           │   │                       │   │           ├── TextBetween.java
│           │   │                       │   │           ├── TextBinaryPredicate.java
│           │   │                       │   │           ├── TextComparisonOperator.java
│           │   │                       │   │           ├── TextExpression.java
│           │   │                       │   │           ├── TextFieldConstraints.java
│           │   │                       │   │           ├── TextFieldValue.java
│           │   │                       │   │           ├── TextFilterRange.java
│           │   │                       │   │           └── TextLiteral.java
│           │   │                       │   ├── gwql/
│           │   │                       │   │   ├── AdapterEntryResultSet.java
│           │   │                       │   │   ├── AggregationSelector.java
│           │   │                       │   │   ├── CastableType.java
│           │   │                       │   │   ├── ColumnSelector.java
│           │   │                       │   │   ├── ErrorListener.java
│           │   │                       │   │   ├── GWQLCoreExtensions.java
│           │   │                       │   │   ├── GWQLExtensionRegistry.java
│           │   │                       │   │   ├── GWQLExtensionRegistrySpi.java
│           │   │                       │   │   ├── GWQLParseException.java
│           │   │                       │   │   ├── GWQLParseHelper.java
│           │   │                       │   │   ├── QLFunction.java
│           │   │                       │   │   ├── Result.java
│           │   │                       │   │   ├── ResultSet.java
│           │   │                       │   │   ├── Selector.java
│           │   │                       │   │   ├── SingletonResultSet.java
│           │   │                       │   │   ├── function/
│           │   │                       │   │   │   ├── aggregation/
│           │   │                       │   │   │   │   ├── AggregationFunction.java
│           │   │                       │   │   │   │   ├── CountFunction.java
│           │   │                       │   │   │   │   ├── MathAggregationFunction.java
│           │   │                       │   │   │   │   ├── MaxFunction.java
│           │   │                       │   │   │   │   ├── MinFunction.java
│           │   │                       │   │   │   │   └── SumFunction.java
│           │   │                       │   │   │   ├── expression/
│           │   │                       │   │   │   │   ├── AbsFunction.java
│           │   │                       │   │   │   │   ├── ConcatFunction.java
│           │   │                       │   │   │   │   └── ExpressionFunction.java
│           │   │                       │   │   │   ├── operator/
│           │   │                       │   │   │   │   └── OperatorFunction.java
│           │   │                       │   │   │   └── predicate/
│           │   │                       │   │   │       ├── PredicateFunction.java
│           │   │                       │   │   │       └── TextPredicates.java
│           │   │                       │   │   ├── statement/
│           │   │                       │   │   │   ├── DeleteStatement.java
│           │   │                       │   │   │   ├── SelectStatement.java
│           │   │                       │   │   │   └── Statement.java
│           │   │                       │   │   └── type/
│           │   │                       │   │       ├── NumberCastableType.java
│           │   │                       │   │       └── TextCastableType.java
│           │   │                       │   └── options/
│           │   │                       │       ├── AggregateTypeQueryOptions.java
│           │   │                       │       ├── CommonQueryOptions.java
│           │   │                       │       ├── DataTypeQueryOptions.java
│           │   │                       │       ├── FilterByTypeQueryOptions.java
│           │   │                       │       ├── IndexQueryOptions.java
│           │   │                       │       ├── QueryAllIndices.java
│           │   │                       │       ├── QueryAllTypes.java
│           │   │                       │       └── QuerySingleIndex.java
│           │   │                       ├── server/
│           │   │                       │   ├── BasicOptionProvider.java
│           │   │                       │   ├── RowMergingAdapterOptionProvider.java
│           │   │                       │   ├── ServerOpConfig.java
│           │   │                       │   ├── ServerOpHelper.java
│           │   │                       │   └── ServerSideOperations.java
│           │   │                       ├── spi/
│           │   │                       │   ├── ClassLoaderTransformerSpi.java
│           │   │                       │   ├── DimensionalityTypeOptions.java
│           │   │                       │   ├── DimensionalityTypeProviderSpi.java
│           │   │                       │   └── DimensionalityTypeRegistry.java
│           │   │                       ├── statistics/
│           │   │                       │   ├── CoreRegisteredStatistics.java
│           │   │                       │   ├── DataStatisticsStore.java
│           │   │                       │   ├── DefaultStatisticsProvider.java
│           │   │                       │   ├── InternalStatisticsHelper.java
│           │   │                       │   ├── StatisticId.java
│           │   │                       │   ├── StatisticType.java
│           │   │                       │   ├── StatisticUpdateCallback.java
│           │   │                       │   ├── StatisticUpdateHandler.java
│           │   │                       │   ├── StatisticValueReader.java
│           │   │                       │   ├── StatisticValueWriter.java
│           │   │                       │   ├── StatisticsDeleteCallback.java
│           │   │                       │   ├── StatisticsIngestCallback.java
│           │   │                       │   ├── StatisticsPersistableRegistry.java
│           │   │                       │   ├── StatisticsRegistry.java
│           │   │                       │   ├── StatisticsRegistrySPI.java
│           │   │                       │   ├── StatisticsValueIterator.java
│           │   │                       │   ├── adapter/
│           │   │                       │   │   ├── CountStatistic.java
│           │   │                       │   │   └── DataTypeStatisticType.java
│           │   │                       │   ├── binning/
│           │   │                       │   │   ├── BinningStrategyUtils.java
│           │   │                       │   │   ├── CompositeBinningStrategy.java
│           │   │                       │   │   ├── DataTypeBinningStrategy.java
│           │   │                       │   │   ├── FieldValueBinningStrategy.java
│           │   │                       │   │   ├── NumericRangeFieldValueBinningStrategy.java
│           │   │                       │   │   └── PartitionBinningStrategy.java
│           │   │                       │   ├── field/
│           │   │                       │   │   ├── BloomFilterStatistic.java
│           │   │                       │   │   ├── CountMinSketchStatistic.java
│           │   │                       │   │   ├── FieldStatisticId.java
│           │   │                       │   │   ├── FieldStatisticType.java
│           │   │                       │   │   ├── FixedBinNumericHistogramStatistic.java
│           │   │                       │   │   ├── HyperLogLogStatistic.java
│           │   │                       │   │   ├── NumericHistogramStatistic.java
│           │   │                       │   │   ├── NumericMeanStatistic.java
│           │   │                       │   │   ├── NumericRangeStatistic.java
│           │   │                       │   │   ├── NumericStatsStatistic.java
│           │   │                       │   │   ├── Stats.java
│           │   │                       │   │   └── StatsAccumulator.java
│           │   │                       │   ├── index/
│           │   │                       │   │   ├── DifferingVisibilityCountStatistic.java
│           │   │                       │   │   ├── DuplicateEntryCountStatistic.java
│           │   │                       │   │   ├── FieldVisibilityCountStatistic.java
│           │   │                       │   │   ├── IndexMetaDataSetStatistic.java
│           │   │                       │   │   ├── IndexStatisticType.java
│           │   │                       │   │   ├── MaxDuplicatesStatistic.java
│           │   │                       │   │   ├── PartitionsStatistic.java
│           │   │                       │   │   └── RowRangeHistogramStatistic.java
│           │   │                       │   ├── query/
│           │   │                       │   │   ├── AbstractStatisticQuery.java
│           │   │                       │   │   ├── AbstractStatisticQueryBuilder.java
│           │   │                       │   │   ├── BinConstraintsImpl.java
│           │   │                       │   │   ├── DataTypeStatisticQuery.java
│           │   │                       │   │   ├── DataTypeStatisticQueryBuilder.java
│           │   │                       │   │   ├── FieldStatisticQuery.java
│           │   │                       │   │   ├── FieldStatisticQueryBuilder.java
│           │   │                       │   │   ├── IndexStatisticQuery.java
│           │   │                       │   │   └── IndexStatisticQueryBuilder.java
│           │   │                       │   └── visibility/
│           │   │                       │       ├── DefaultStatisticVisibility.java
│           │   │                       │       └── FieldDependentStatisticVisibility.java
│           │   │                       └── util/
│           │   │                           ├── AsyncNativeEntryIteratorWrapper.java
│           │   │                           ├── ClasspathUtils.java
│           │   │                           ├── CompoundHierarchicalIndexStrategyWrapper.java
│           │   │                           ├── DataAdapterAndIndexCache.java
│           │   │                           ├── DataStoreUtils.java
│           │   │                           ├── GenericTypeResolver.java
│           │   │                           ├── GeoWaveRowIteratorFactory.java
│           │   │                           ├── IteratorWrapper.java
│           │   │                           ├── MergingEntryIterator.java
│           │   │                           ├── NativeEntryIteratorWrapper.java
│           │   │                           ├── NativeEntryTransformer.java
│           │   │                           ├── RewritingMergingEntryIterator.java
│           │   │                           ├── RowConsumer.java
│           │   │                           └── SecondaryIndexEntryIteratorWrapper.java
│           │   └── resources/
│           │       └── META-INF/
│           │           └── services/
│           │               ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│           │               ├── org.locationtech.geowave.core.cli.spi.DefaultConfigProviderSpi
│           │               ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│           │               ├── org.locationtech.geowave.core.store.cli.query.QueryOutputFormatSpi
│           │               ├── org.locationtech.geowave.core.store.data.field.FieldSerializationProviderSpi
│           │               ├── org.locationtech.geowave.core.store.index.AttributeIndexProviderSpi
│           │               ├── org.locationtech.geowave.core.store.index.IndexFieldMapperRegistrySPI
│           │               ├── org.locationtech.geowave.core.store.query.gwql.GWQLExtensionRegistrySpi
│           │               ├── org.locationtech.geowave.core.store.spi.DimensionalityTypeProviderSpi
│           │               └── org.locationtech.geowave.core.store.statistics.StatisticsRegistrySPI
│           └── test/
│               ├── java/
│               │   └── org/
│               │       └── locationtech/
│               │           └── geowave/
│               │               └── core/
│               │                   └── store/
│               │                       ├── DataStorePropertyTest.java
│               │                       ├── TestStorePersistableRegistry.java
│               │                       ├── adapter/
│               │                       │   ├── AbstractDataTypeAdapterTest.java
│               │                       │   ├── BasicDataTypeAdapterTest.java
│               │                       │   ├── FieldDescriptorTest.java
│               │                       │   ├── IndexFieldMapperTest.java
│               │                       │   ├── MockComponents.java
│               │                       │   ├── MockRegisteredIndexFieldMappers.java
│               │                       │   └── statistics/
│               │                       │       └── histogram/
│               │                       │           ├── ByteUtilsTest.java
│               │                       │           └── NumericHistogramTest.java
│               │                       ├── api/
│               │                       │   ├── DataStoreAddTest.java
│               │                       │   └── DataStoreRemoveTest.java
│               │                       ├── data/
│               │                       │   ├── field/
│               │                       │   │   └── BasicReaderWriterTest.java
│               │                       │   └── visibility/
│               │                       │       ├── JsonFieldLevelVisibilityHandlerTest.java
│               │                       │       └── VisibilityExpressionTest.java
│               │                       ├── flatten/
│               │                       │   └── BitmaskUtilsTest.java
│               │                       ├── memory/
│               │                       │   ├── MemoryDataStoreTest.java
│               │                       │   └── MemoryStoreUtilsTest.java
│               │                       ├── query/
│               │                       │   ├── BasicQueryByClassTest.java
│               │                       │   ├── aggregate/
│               │                       │   │   ├── AbstractAggregationTest.java
│               │                       │   │   ├── AbstractCommonIndexAggregationTest.java
│               │                       │   │   ├── BinningAggregationOptionsTest.java
│               │                       │   │   ├── BinningAggregationTest.java
│               │                       │   │   └── CountAggregationTest.java
│               │                       │   ├── filter/
│               │                       │   │   ├── DistributedQueryFilterTest.java
│               │                       │   │   └── expression/
│               │                       │   │       ├── FilterExpressionTest.java
│               │                       │   │       └── FilterRangeTest.java
│               │                       │   └── gwql/
│               │                       │       ├── AbstractGWQLTest.java
│               │                       │       ├── DeleteStatementTest.java
│               │                       │       ├── GWQLParserTest.java
│               │                       │       └── SelectStatementTest.java
│               │                       └── statistics/
│               │                           └── index/
│               │                               ├── PartitionsStatisticTest.java
│               │                               └── RowRangeHistogramStatisticTest.java
│               └── resources/
│                   └── META-INF/
│                       └── services/
│                           ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│                           └── org.locationtech.geowave.core.store.index.IndexFieldMapperRegistrySPI
├── deploy/
│   ├── Jenkinsfile
│   ├── packaging/
│   │   ├── docker/
│   │   │   ├── .gitignore
│   │   │   ├── README.md
│   │   │   ├── build-args-matrix.sh.example
│   │   │   ├── build-rpm/
│   │   │   │   ├── build-rpm.sh
│   │   │   │   ├── build-services-rpm.sh
│   │   │   │   ├── deploy-geowave-to-hdfs.sh.template
│   │   │   │   └── fpm_scripts/
│   │   │   │       ├── gwgeoserver_logrotate
│   │   │   │       ├── gwgrpc.environment
│   │   │   │       ├── gwgrpc.rsyslog
│   │   │   │       ├── gwgrpc.service
│   │   │   │       ├── gwgrpc_logrotate
│   │   │   │       ├── gwgrpc_post_install.sh
│   │   │   │       ├── gwgrpc_post_uninstall.sh
│   │   │   │       ├── gwtomcat
│   │   │   │       ├── gwtomcat.service
│   │   │   │       ├── gwtomcat_logrotate
│   │   │   │       ├── gwtomcat_post_install.sh
│   │   │   │       ├── gwtomcat_post_uninstall.sh
│   │   │   │       ├── gwtomcat_pre_uninstall.sh
│   │   │   │       └── gwtomcat_tools.sh.template
│   │   │   ├── build-src/
│   │   │   │   ├── build-geowave-common.sh
│   │   │   │   └── build-geowave-vendor.sh
│   │   │   ├── docker-build-rpms.sh
│   │   │   ├── geowave-centos7-java7-build.dockerfile
│   │   │   ├── geowave-centos7-java8-build.dockerfile
│   │   │   ├── geowave-centos7-publish.dockerfile
│   │   │   ├── geowave-centos7-rpm-build.dockerfile
│   │   │   ├── init.sh
│   │   │   ├── publish/
│   │   │   │   ├── publish-common-rpm.sh
│   │   │   │   └── publish-vendor-rpm.sh
│   │   │   └── pull-s3-caches.sh
│   │   ├── emr/
│   │   │   ├── README.md
│   │   │   ├── generate-emr-scripts.sh
│   │   │   └── template/
│   │   │       ├── accumulo/
│   │   │       │   ├── DATASTORE_BOOTSTRAP_TOKEN
│   │   │       │   ├── DATASTORE_CONFIGURE_GEOWAVE_TOKEN
│   │   │       │   ├── DATASTORE_LIB_TOKEN
│   │   │       │   ├── DATASTORE_PARAMS_TOKEN
│   │   │       │   └── DATASTORE_PUPPET_TOKEN
│   │   │       ├── bootstrap-geowave.sh.template
│   │   │       ├── bootstrap-zeppelin.sh.template
│   │   │       ├── cassandra/
│   │   │       │   ├── DATASTORE_BOOTSTRAP_TOKEN
│   │   │       │   └── DATASTORE_PARAMS_TOKEN
│   │   │       ├── configure-zeppelin.sh.template
│   │   │       ├── geowave-install-lib.sh.template
│   │   │       ├── hbase/
│   │   │       │   ├── DATASTORE_PARAMS_TOKEN
│   │   │       │   └── DATASTORE_PUPPET_TOKEN
│   │   │       ├── jupyter/
│   │   │       │   ├── bootstrap-jupyter.sh.template
│   │   │       │   ├── bootstrap-jupyterhub.sh.template
│   │   │       │   ├── create-configure-kernel.sh.template
│   │   │       │   ├── gw-base.yml
│   │   │       │   ├── install-conda.sh
│   │   │       │   ├── jupyterhub_config.py
│   │   │       │   └── pre-spawn.sh
│   │   │       └── quickstart/
│   │   │           ├── QUICKSTART_BOOTSTRAP_TOKEN
│   │   │           ├── geowave-env.sh.template
│   │   │           ├── ingest-and-kde-gdelt.sh.template
│   │   │           └── setup-geoserver-geowave-workspace.sh
│   │   ├── puppet/
│   │   │   └── geowave/
│   │   │       └── manifests/
│   │   │           ├── accumulo.pp
│   │   │           ├── app.pp
│   │   │           ├── gwgeoserver.pp
│   │   │           ├── gwgrpc.pp
│   │   │           ├── gwtomcat_server.pp
│   │   │           ├── gwtomcat_service.pp
│   │   │           ├── hbase.pp
│   │   │           ├── init.pp
│   │   │           ├── params.pp
│   │   │           ├── repo.pp
│   │   │           └── restservices.pp
│   │   ├── rpm/
│   │   │   ├── .gitignore
│   │   │   ├── centos/
│   │   │   │   └── 7/
│   │   │   │       ├── .gitignore
│   │   │   │       ├── SOURCES/
│   │   │   │       │   ├── bash_profile.sh
│   │   │   │       │   ├── default.xml
│   │   │   │       │   ├── geowave-tools.sh
│   │   │   │       │   ├── namespace.xml
│   │   │   │       │   └── workspace.xml
│   │   │   │       ├── SPECS/
│   │   │   │       │   ├── geowave-common.spec
│   │   │   │       │   └── geowave-vendor.spec
│   │   │   │       └── rpm.sh
│   │   │   ├── repo-dev/
│   │   │   │   ├── SOURCES/
│   │   │   │   │   └── geowave-dev.repo
│   │   │   │   ├── SPECS/
│   │   │   │   │   └── geowave-dev.spec
│   │   │   │   └── rpm.sh
│   │   │   ├── repo-release/
│   │   │   │   ├── SOURCES/
│   │   │   │   │   └── geowave.repo
│   │   │   │   ├── SPECS/
│   │   │   │   │   └── geowave-release.spec
│   │   │   │   └── rpm.sh
│   │   │   └── rpm-functions.sh
│   │   ├── sandbox/
│   │   │   ├── generate-sandbox-scripts.sh
│   │   │   └── template/
│   │   │       └── quickstart/
│   │   │           └── geowave-env.sh.template
│   │   └── standalone/
│   │       └── standalone-installer.install4j
│   ├── pom.xml
│   ├── scripts/
│   │   └── clean-up.py
│   └── src/
│       └── main/
│           └── resources/
│               ├── GeoWaveLabels.properties
│               ├── build.properties
│               └── log4j2.properties
├── dev-resources/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── resources/
│               ├── assemblies/
│               │   ├── default-installer-main.xml
│               │   └── default-installer-plugin.xml
│               ├── eclipse/
│               │   ├── eclipse-cleanup.xml
│               │   └── eclipse-formatter.xml
│               └── findbugs/
│                   └── findbugs-exclude.xml
├── docs/
│   ├── .gitignore
│   ├── content/
│   │   ├── commands/
│   │   │   ├── 000-header.adoc
│   │   │   ├── 005-commands-and-flags.adoc
│   │   │   ├── 010-config-commands.adoc
│   │   │   ├── 011-store-commands.adoc
│   │   │   ├── 012-index-commands.adoc
│   │   │   ├── 013-type-commands.adoc
│   │   │   ├── 014-stat-commands.adoc
│   │   │   ├── 015-ingest-commands.adoc
│   │   │   ├── 017-query-command.adoc
│   │   │   ├── 020-analytic-commands.adoc
│   │   │   ├── 025-vector-commands.adoc
│   │   │   ├── 030-raster-commands.adoc
│   │   │   ├── 035-geoserver-commands.adoc
│   │   │   ├── 040-util-commands.adoc
│   │   │   ├── 041-util-migrate.adoc
│   │   │   ├── 045-util-standalone-commands.adoc
│   │   │   ├── 050-util-accumulo-commands.adoc
│   │   │   ├── 050-util-osm-commands.adoc
│   │   │   ├── 055-util-python-commands.adoc
│   │   │   ├── 060-util-landsat-commands.adoc
│   │   │   ├── 065-util-grpc-commands.adoc
│   │   │   ├── 070-util-filesystem-commands.adoc
│   │   │   └── manpages/
│   │   │       ├── analytic/
│   │   │       │   ├── geowave-dbscan.txt
│   │   │       │   ├── geowave-kde.txt
│   │   │       │   ├── geowave-kdespark.txt
│   │   │       │   ├── geowave-kmeansjump.txt
│   │   │       │   ├── geowave-kmeansparallel.txt
│   │   │       │   ├── geowave-kmeansspark.txt
│   │   │       │   ├── geowave-nn.txt
│   │   │       │   ├── geowave-spatialjoin.txt
│   │   │       │   └── geowave-sql.txt
│   │   │       ├── config/
│   │   │       │   ├── geowave-aws.txt
│   │   │       │   ├── geowave-geoserver.txt
│   │   │       │   ├── geowave-hdfs.txt
│   │   │       │   ├── geowave-list.txt
│   │   │       │   ├── geowave-newcryptokey.txt
│   │   │       │   └── geowave-set.txt
│   │   │       ├── geoserver/
│   │   │       │   ├── geowave-addcs.txt
│   │   │       │   ├── geowave-addcv.txt
│   │   │       │   ├── geowave-addds.txt
│   │   │       │   ├── geowave-addfl.txt
│   │   │       │   ├── geowave-addlayer.txt
│   │   │       │   ├── geowave-addstyle.txt
│   │   │       │   ├── geowave-addws.txt
│   │   │       │   ├── geowave-getcs.txt
│   │   │       │   ├── geowave-getcv.txt
│   │   │       │   ├── geowave-getds.txt
│   │   │       │   ├── geowave-getfl.txt
│   │   │       │   ├── geowave-getsa.txt
│   │   │       │   ├── geowave-getstyle.txt
│   │   │       │   ├── geowave-listcs.txt
│   │   │       │   ├── geowave-listcv.txt
│   │   │       │   ├── geowave-listds.txt
│   │   │       │   ├── geowave-listfl.txt
│   │   │       │   ├── geowave-liststyles.txt
│   │   │       │   ├── geowave-listws.txt
│   │   │       │   ├── geowave-rmcs.txt
│   │   │       │   ├── geowave-rmcv.txt
│   │   │       │   ├── geowave-rmds.txt
│   │   │       │   ├── geowave-rmfl.txt
│   │   │       │   ├── geowave-rmstyle.txt
│   │   │       │   ├── geowave-rmws.txt
│   │   │       │   ├── geowave-rungs.txt
│   │   │       │   └── geowave-setls.txt
│   │   │       ├── index/
│   │   │       │   ├── geowave-addindex.txt
│   │   │       │   ├── geowave-compactindex.txt
│   │   │       │   ├── geowave-listindex.txt
│   │   │       │   ├── geowave-listindexplugins.txt
│   │   │       │   └── geowave-rmindex.txt
│   │   │       ├── ingest/
│   │   │       │   ├── geowave-kafkaToGW.txt
│   │   │       │   ├── geowave-listplugins.txt
│   │   │       │   ├── geowave-localToGW.txt
│   │   │       │   ├── geowave-localToHdfs.txt
│   │   │       │   ├── geowave-localToKafka.txt
│   │   │       │   ├── geowave-localToMrGW.txt
│   │   │       │   ├── geowave-mrToGW.txt
│   │   │       │   └── geowave-sparkToGW.txt
│   │   │       ├── query/
│   │   │       │   └── geowave-query.txt
│   │   │       ├── raster/
│   │   │       │   ├── geowave-installgdal.txt
│   │   │       │   ├── geowave-resizemr.txt
│   │   │       │   └── geowave-resizespark.txt
│   │   │       ├── stat/
│   │   │       │   ├── geowave-addstat.txt
│   │   │       │   ├── geowave-compactstats.txt
│   │   │       │   ├── geowave-liststats.txt
│   │   │       │   ├── geowave-liststattypes.txt
│   │   │       │   ├── geowave-recalcstats.txt
│   │   │       │   └── geowave-rmstat.txt
│   │   │       ├── store/
│   │   │       │   ├── geowave-addstore.txt
│   │   │       │   ├── geowave-clear.txt
│   │   │       │   ├── geowave-copy.txt
│   │   │       │   ├── geowave-copymr.txt
│   │   │       │   ├── geowave-copystorecfg.txt
│   │   │       │   ├── geowave-describestore.txt
│   │   │       │   ├── geowave-liststoreplugins.txt
│   │   │       │   ├── geowave-liststores.txt
│   │   │       │   ├── geowave-rmstore.txt
│   │   │       │   └── geowave-version.txt
│   │   │       ├── type/
│   │   │       │   ├── geowave-addtype.txt
│   │   │       │   ├── geowave-describetype.txt
│   │   │       │   ├── geowave-listtypes.txt
│   │   │       │   └── geowave-rmtype.txt
│   │   │       ├── util/
│   │   │       │   ├── accumulo/
│   │   │       │   │   ├── geowave-presplitpartitionid.txt
│   │   │       │   │   ├── geowave-runserver.txt
│   │   │       │   │   ├── geowave-splitequalinterval.txt
│   │   │       │   │   ├── geowave-splitnumrecords.txt
│   │   │       │   │   └── geowave-splitquantile.txt
│   │   │       │   ├── bigtable/
│   │   │       │   │   └── geowave-runbigtable.txt
│   │   │       │   ├── cassandra/
│   │   │       │   │   └── geowave-runcassandra.txt
│   │   │       │   ├── dynamodb/
│   │   │       │   │   └── geowave-rundynamodb.txt
│   │   │       │   ├── filesystem/
│   │   │       │   │   └── geowave-filesystem-listformats.txt
│   │   │       │   ├── grpc/
│   │   │       │   │   ├── geowave-grpc-start.txt
│   │   │       │   │   └── geowave-grpc-stop.txt
│   │   │       │   ├── hbase/
│   │   │       │   │   └── geowave-runhbase.txt
│   │   │       │   ├── kudu/
│   │   │       │   │   └── geowave-runkudu.txt
│   │   │       │   ├── landsat/
│   │   │       │   │   ├── geowave-analyze.txt
│   │   │       │   │   ├── geowave-download.txt
│   │   │       │   │   ├── geowave-ingest.txt
│   │   │       │   │   ├── geowave-ingestraster.txt
│   │   │       │   │   └── geowave-ingestvector.txt
│   │   │       │   ├── migrate/
│   │   │       │   │   └── geowave-util-migrate.txt
│   │   │       │   ├── osm/
│   │   │       │   │   ├── geowave-ingest.txt
│   │   │       │   │   └── geowave-stage.txt
│   │   │       │   ├── python/
│   │   │       │   │   └── geowave-python-rungateway.txt
│   │   │       │   └── redis/
│   │   │       │       └── geowave-runredis.txt
│   │   │       └── vector/
│   │   │           ├── geowave-cqldelete.txt
│   │   │           ├── geowave-localexport.txt
│   │   │           └── geowave-mrexport.txt
│   │   ├── devguide/
│   │   │   ├── 000-header.adoc
│   │   │   ├── 005-introduction.adoc
│   │   │   ├── 010-development-setup.adoc
│   │   │   ├── 015-building.adoc
│   │   │   ├── 020-packaging.adoc
│   │   │   ├── 025-contributions.adoc
│   │   │   ├── 030-architecture.adoc
│   │   │   ├── 035-statistics.adoc
│   │   │   ├── 040-ingest.adoc
│   │   │   ├── 045-query.adoc
│   │   │   ├── 050-services.adoc
│   │   │   ├── 075-programmatic-api.adoc
│   │   │   ├── 100-appendices.adoc
│   │   │   ├── 102-extending-geowave.adoc
│   │   │   ├── 105-appendix-documentation.adoc
│   │   │   ├── 105-appendix-project-descriptions.adoc
│   │   │   ├── 110-appendix-maven-artifacts.adoc
│   │   │   ├── 115-appendix-python-api.adoc
│   │   │   ├── 120-appendix-jace.adoc
│   │   │   └── 125-appendix-theory.adoc
│   │   ├── docs-common/
│   │   │   ├── 00-attrs.adoc
│   │   │   ├── 900-version.adoc
│   │   │   └── docinfo.html
│   │   ├── downloads/
│   │   │   ├── 001-imports.adoc
│   │   │   ├── 002-navbar.adoc
│   │   │   ├── 003-container.adoc
│   │   │   └── 004-scripts.adoc
│   │   ├── geowave-index/
│   │   │   ├── 001-imports.adoc
│   │   │   ├── 002-navbar.adoc
│   │   │   ├── 003-container.adoc
│   │   │   ├── docinfo.html
│   │   │   ├── js/
│   │   │   │   ├── geowave.js
│   │   │   │   └── versions.js
│   │   │   ├── site.webmanifest
│   │   │   └── stylesheets/
│   │   │       ├── blank.css
│   │   │       ├── font-awesome.css
│   │   │       ├── geowave-boostrap-theme.css
│   │   │       ├── geowave-docs.css
│   │   │       └── geowave.css
│   │   ├── installation-guide/
│   │   │   ├── 000-header.adoc
│   │   │   ├── 005-standalone.adoc
│   │   │   └── 010-rpm.adoc
│   │   ├── overview/
│   │   │   ├── 000-header.adoc
│   │   │   ├── 005-introduction.adoc
│   │   │   ├── 010-overview.adoc
│   │   │   ├── 015-screenshots.adoc
│   │   │   └── 020-deeper.adoc
│   │   ├── quickstart/
│   │   │   ├── 000-header.adoc
│   │   │   ├── 005-preparation.adoc
│   │   │   ├── 010-vector-demo.adoc
│   │   │   ├── 015-raster-demo.adoc
│   │   │   └── 020-further-documentation.adoc
│   │   ├── quickstart-emr/
│   │   │   ├── aws-env/
│   │   │   │   ├── 000-quickstart-guide-intro.adoc
│   │   │   │   ├── 007-quickstart-guide-scripts.adoc
│   │   │   │   ├── 010-quickstart-guide-CLI.adoc
│   │   │   │   ├── 015-quickstart-guide-GUI.adoc
│   │   │   │   ├── 020-quickstart-guide-GUI-step-1.adoc
│   │   │   │   ├── 025-quickstart-guide-GUI-step-2.adoc
│   │   │   │   ├── 030-quickstart-guide-GUI-step-3.adoc
│   │   │   │   ├── 035-quickstart-guide-GUI-step-4.adoc
│   │   │   │   ├── 036-quickstart-guide-enable-jupyter.adoc
│   │   │   │   ├── 037-quickstart-steps-overview.adoc
│   │   │   │   └── 110-appendices.adoc
│   │   │   ├── interact-cluster/
│   │   │   │   └── 001-hw-quickstart-guide-interact.adoc
│   │   │   ├── jupyter/
│   │   │   │   └── 000-jupyter-main-page.adoc
│   │   │   ├── quickstart-emr/
│   │   │   │   ├── 000-header.adoc
│   │   │   │   ├── 005-environment-setup.adoc
│   │   │   │   ├── 010-preparation.adoc
│   │   │   │   ├── 015-vector-demo.adoc
│   │   │   │   ├── 020-raster-demo.adoc
│   │   │   │   ├── 025-notebook-examples.adoc
│   │   │   │   └── 030-further-documentation.adoc
│   │   │   ├── spatial-join/
│   │   │   │   └── 000-join-main-page.adoc
│   │   │   └── zeppelin/
│   │   │       └── 000-zeppelin-main-page.adoc
│   │   └── userguide/
│   │       ├── 000-header.adoc
│   │       ├── 005-introduction.adoc
│   │       ├── 010-cli.adoc
│   │       ├── 015-datastores.adoc
│   │       ├── 020-indices.adoc
│   │       ├── 025-ingest.adoc
│   │       ├── 030-queries.adoc
│   │       ├── 031-statistics.adoc
│   │       ├── 035-analytics.adoc
│   │       ├── 045-geoserver.adoc
│   │       ├── 100-appendices.adoc
│   │       ├── 101-migrating.adoc
│   │       ├── 105-accumulo-config.adoc
│   │       ├── 110-visibility-management.adoc
│   │       ├── 115-appendix-security.adoc
│   │       └── 120-puppet.adoc
│   └── pom.xml
├── examples/
│   ├── README.md
│   ├── data/
│   │   ├── notebooks/
│   │   │   ├── jupyter/
│   │   │   │   ├── geowave-gdelt.ipynb
│   │   │   │   ├── geowave-gpx.ipynb
│   │   │   │   ├── geowave-spatial-join.ipynb
│   │   │   │   └── pygw-showcase.ipynb
│   │   │   └── zeppelin/
│   │   │       ├── GDELT-Quick-Start.json
│   │   │       ├── GeoWave-GPX-Demo.json
│   │   │       └── README.md
│   │   └── slds/
│   │       ├── DistributedRender.sld
│   │       ├── KDEColorMap.sld
│   │       └── SubsamplePoints.sld
│   └── java-api/
│       ├── pom.xml
│       └── src/
│           ├── main/
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── locationtech/
│           │   │           └── geowave/
│           │   │               └── examples/
│           │   │                   ├── ExamplePersistableRegistry.java
│           │   │                   ├── adapter/
│           │   │                   │   ├── BasicDataTypeAdapterExample.java
│           │   │                   │   └── CustomAdapterExample.java
│           │   │                   ├── aggregation/
│           │   │                   │   └── binning/
│           │   │                   │       └── SpatialBinningAggregationExample.java
│           │   │                   ├── index/
│           │   │                   │   └── CustomIndexExample.java
│           │   │                   ├── ingest/
│           │   │                   │   ├── SimpleIngest.java
│           │   │                   │   ├── bulk/
│           │   │                   │   │   ├── GeonamesDataFileInputFormat.java
│           │   │                   │   │   ├── GeonamesSimpleFeatureType.java
│           │   │                   │   │   └── SimpleFeatureToAccumuloKeyValueMapper.java
│           │   │                   │   └── plugin/
│           │   │                   │       ├── CustomIngestFormat.java
│           │   │                   │       ├── CustomIngestPlugin.java
│           │   │                   │       └── CustomIngestPluginExample.java
│           │   │                   ├── query/
│           │   │                   │   ├── CQLQueryExample.java
│           │   │                   │   ├── SpatialQueryExample.java
│           │   │                   │   └── SpatialTemporalQueryExample.java
│           │   │                   ├── spark/
│           │   │                   │   └── GeoWaveRDDExample.java
│           │   │                   └── stats/
│           │   │                       ├── CustomStatisticExample.java
│           │   │                       ├── ExampleRegisteredStatistics.java
│           │   │                       ├── SpatialBinningStatisticExample.java
│           │   │                       └── WordCountStatistic.java
│           │   └── resources/
│           │       ├── META-INF/
│           │       │   └── services/
│           │       │       ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│           │       │       ├── org.locationtech.geowave.core.ingest.spi.IngestFormatPluginProviderSpi
│           │       │       └── org.locationtech.geowave.core.store.statistics.StatisticsRegistrySPI
│           │       ├── geonames.txt
│           │       └── stateCapitals.csv
│           └── test/
│               ├── java/
│               │   └── org/
│               │       └── locationtech/
│               │           └── geowave/
│               │               └── examples/
│               │                   └── ingest/
│               │                       ├── BulkIngestInputGenerationTest.java
│               │                       └── SimpleIngestTest.java
│               └── resources/
│                   ├── hbase.properties
│                   └── org/
│                       └── locationtech/
│                           └── geowave/
│                               └── examples/
│                                   └── ingest/
│                                       └── geonames/
│                                           ├── barbados/
│                                           │   └── BB.txt
│                                           └── readme.txt
├── extensions/
│   ├── adapters/
│   │   ├── auth/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── locationtech/
│   │   │       │   │           └── geowave/
│   │   │       │   │               └── adapter/
│   │   │       │   │                   └── auth/
│   │   │       │   │                       ├── AuthorizationEntry.java
│   │   │       │   │                       ├── AuthorizationFactorySPI.java
│   │   │       │   │                       ├── AuthorizationSPI.java
│   │   │       │   │                       ├── AuthorizationSet.java
│   │   │       │   │                       ├── EmptyAuthorizationFactory.java
│   │   │       │   │                       ├── EmptyAuthorizationProvider.java
│   │   │       │   │                       ├── JsonFileAuthorizationFactory.java
│   │   │       │   │                       └── JsonFileAuthorizationProvider.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.locationtech.geowave.adapter.auth.AuthorizationFactorySPI
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── adapter/
│   │   │           │                   └── auth/
│   │   │           │                       └── JsonFileAuthorizationAdapterTest.java
│   │   │           └── resources/
│   │   │               └── jsonAuthfile.json
│   │   ├── raster/
│   │   │   ├── .gitignore
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── locationtech/
│   │   │       │   │           └── geowave/
│   │   │       │   │               └── adapter/
│   │   │       │   │                   └── raster/
│   │   │       │   │                       ├── FitToIndexGridCoverage.java
│   │   │       │   │                       ├── ImageWorkerPredefineStats.java
│   │   │       │   │                       ├── RasterAdapterPersistableRegistry.java
│   │   │       │   │                       ├── RasterUtils.java
│   │   │       │   │                       ├── Resolution.java
│   │   │       │   │                       ├── adapter/
│   │   │       │   │                       │   ├── ClientMergeableRasterTile.java
│   │   │       │   │                       │   ├── GridCoverageWritable.java
│   │   │       │   │                       │   ├── InternalRasterDataAdapter.java
│   │   │       │   │                       │   ├── MosaicPropertyGenerator.java
│   │   │       │   │                       │   ├── RasterDataAdapter.java
│   │   │       │   │                       │   ├── RasterRegisteredIndexFieldMappers.java
│   │   │       │   │                       │   ├── RasterTile.java
│   │   │       │   │                       │   ├── RasterTileReader.java
│   │   │       │   │                       │   ├── RasterTileSpatialFieldMapper.java
│   │   │       │   │                       │   ├── RasterTileWriter.java
│   │   │       │   │                       │   ├── ServerMergeableRasterTile.java
│   │   │       │   │                       │   ├── SourceThresholdFixMosaicDescriptor.java
│   │   │       │   │                       │   ├── SourceThresholdMosaicDescriptor.java
│   │   │       │   │                       │   ├── merge/
│   │   │       │   │                       │   │   ├── MultiAdapterServerMergeStrategy.java
│   │   │       │   │                       │   │   ├── RasterTileMergeStrategy.java
│   │   │       │   │                       │   │   ├── RasterTileRowTransform.java
│   │   │       │   │                       │   │   ├── ServerMergeStrategy.java
│   │   │       │   │                       │   │   ├── SimpleAbstractMergeStrategy.java
│   │   │       │   │                       │   │   ├── SingleAdapterServerMergeStrategy.java
│   │   │       │   │                       │   │   └── nodata/
│   │   │       │   │                       │   │       ├── NoDataByFilter.java
│   │   │       │   │                       │   │       ├── NoDataBySampleIndex.java
│   │   │       │   │                       │   │       ├── NoDataMergeStrategy.java
│   │   │       │   │                       │   │       ├── NoDataMetadata.java
│   │   │       │   │                       │   │       └── NoDataMetadataFactory.java
│   │   │       │   │                       │   └── warp/
│   │   │       │   │                       │       ├── WarpNearestOpImage.java
│   │   │       │   │                       │       ├── WarpOpImage.java
│   │   │       │   │                       │       └── WarpRIF.java
│   │   │       │   │                       ├── operations/
│   │   │       │   │                       │   ├── DeletePyramidLevelCommand.java
│   │   │       │   │                       │   ├── InstallGdalCommand.java
│   │   │       │   │                       │   ├── RasterOperationCLIProvider.java
│   │   │       │   │                       │   ├── RasterSection.java
│   │   │       │   │                       │   ├── ResizeMRCommand.java
│   │   │       │   │                       │   └── options/
│   │   │       │   │                       │       └── RasterTileResizeCommandLineOptions.java
│   │   │       │   │                       ├── plugin/
│   │   │       │   │                       │   ├── GeoWaveGTRasterFormat.java
│   │   │       │   │                       │   ├── GeoWaveGTRasterFormatFactory.java
│   │   │       │   │                       │   ├── GeoWaveRasterConfig.java
│   │   │       │   │                       │   ├── GeoWaveRasterReader.java
│   │   │       │   │                       │   ├── GeoWaveRasterReaderState.java
│   │   │       │   │                       │   └── gdal/
│   │   │       │   │                       │       ├── GDALGeoTiffFormat.java
│   │   │       │   │                       │       ├── GDALGeoTiffFormatFactory.java
│   │   │       │   │                       │       ├── GDALGeoTiffReader.java
│   │   │       │   │                       │       └── InstallGdal.java
│   │   │       │   │                       ├── resize/
│   │   │       │   │                       │   ├── RasterTileResizeCombiner.java
│   │   │       │   │                       │   ├── RasterTileResizeHelper.java
│   │   │       │   │                       │   ├── RasterTileResizeJobRunner.java
│   │   │       │   │                       │   ├── RasterTileResizeMapper.java
│   │   │       │   │                       │   └── RasterTileResizeReducer.java
│   │   │       │   │                       ├── stats/
│   │   │       │   │                       │   ├── HistogramConfig.java
│   │   │       │   │                       │   ├── RasterBoundingBoxStatistic.java
│   │   │       │   │                       │   ├── RasterFootprintStatistic.java
│   │   │       │   │                       │   ├── RasterHistogramStatistic.java
│   │   │       │   │                       │   ├── RasterOverviewStatistic.java
│   │   │       │   │                       │   ├── RasterRegisteredStatistics.java
│   │   │       │   │                       │   └── RasterStatisticQueryBuilder.java
│   │   │       │   │                       └── util/
│   │   │       │   │                           ├── DataBufferPersistenceUtils.java
│   │   │       │   │                           ├── SampleModelPersistenceUtils.java
│   │   │       │   │                           └── ZipUtils.java
│   │   │       │   ├── protobuf/
│   │   │       │   │   ├── DataBuffer.proto
│   │   │       │   │   └── SampleModel.proto
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               ├── org.geotools.coverage.grid.io.GridFormatFactorySpi
│   │   │       │               ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   │       │               ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   │   │       │               ├── org.locationtech.geowave.core.store.index.IndexFieldMapperRegistrySPI
│   │   │       │               └── org.locationtech.geowave.core.store.statistics.StatisticsRegistrySPI
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── locationtech/
│   │   │                       └── geowave/
│   │   │                           └── adapter/
│   │   │                               └── raster/
│   │   │                                   ├── RasterUtilsTest.java
│   │   │                                   └── WebMercatorRasterTest.java
│   │   └── vector/
│   │       ├── .gitignore
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── avro/
│   │           │   │   └── AvroSimpleFeature.avsc
│   │           │   ├── java/
│   │           │   │   └── org/
│   │           │   │       ├── geotools/
│   │           │   │       │   ├── feature/
│   │           │   │       │   │   └── simple/
│   │           │   │       │   │       └── OptimizedSimpleFeatureBuilder.java
│   │           │   │       │   ├── process/
│   │           │   │       │   │   └── function/
│   │           │   │       │   │       └── DistributedRenderProcessUtils.java
│   │           │   │       │   └── renderer/
│   │           │   │       │       └── lite/
│   │           │   │       │           └── DistributedRenderer.java
│   │           │   │       └── locationtech/
│   │           │   │           └── geowave/
│   │           │   │               └── adapter/
│   │           │   │                   └── vector/
│   │           │   │                       ├── FeatureAdapterPersistableRegistry.java
│   │           │   │                       ├── FeatureDataAdapter.java
│   │           │   │                       ├── FeatureRowBuilder.java
│   │           │   │                       ├── FeatureWritable.java
│   │           │   │                       ├── GeoWaveAvroFeatureUtils.java
│   │           │   │                       ├── cli/
│   │           │   │                       │   ├── VectorCLIProvider.java
│   │           │   │                       │   └── VectorSection.java
│   │           │   │                       ├── delete/
│   │           │   │                       │   └── CQLDelete.java
│   │           │   │                       ├── export/
│   │           │   │                       │   ├── VectorExportMapper.java
│   │           │   │                       │   ├── VectorExportOptions.java
│   │           │   │                       │   ├── VectorLocalExportCommand.java
│   │           │   │                       │   ├── VectorLocalExportOptions.java
│   │           │   │                       │   ├── VectorMRExportCommand.java
│   │           │   │                       │   ├── VectorMRExportJobRunner.java
│   │           │   │                       │   └── VectorMRExportOptions.java
│   │           │   │                       ├── field/
│   │           │   │                       │   └── SimpleFeatureSerializationProvider.java
│   │           │   │                       ├── index/
│   │           │   │                       │   ├── ChooseBestMatchIndexQueryStrategy.java
│   │           │   │                       │   ├── ChooseHeuristicMatchIndexQueryStrategy.java
│   │           │   │                       │   ├── ChooseLocalityPreservingQueryStrategy.java
│   │           │   │                       │   ├── IndexQueryStrategySPI.java
│   │           │   │                       │   ├── SimpleFeaturePrimaryIndexConfiguration.java
│   │           │   │                       │   ├── SimpleFeatureSecondaryIndexConfiguration.java
│   │           │   │                       │   └── VectorTextIndexEntryConverter.java
│   │           │   │                       ├── ingest/
│   │           │   │                       │   ├── AbstractSimpleFeatureIngestFormat.java
│   │           │   │                       │   ├── AbstractSimpleFeatureIngestPlugin.java
│   │           │   │                       │   ├── CQLFilterOptionProvider.java
│   │           │   │                       │   ├── DataSchemaOptionProvider.java
│   │           │   │                       │   ├── FeatureSerializationOptionProvider.java
│   │           │   │                       │   ├── GeometrySimpOptionProvider.java
│   │           │   │                       │   ├── MinimalSimpleFeatureIngestFormat.java
│   │           │   │                       │   ├── MinimalSimpleFeatureIngestPlugin.java
│   │           │   │                       │   ├── SerializableSimpleFeatureIngestOptions.java
│   │           │   │                       │   ├── SimpleFeatureIngestOptions.java
│   │           │   │                       │   └── TypeNameOptionProvider.java
│   │           │   │                       ├── plugin/
│   │           │   │                       │   ├── DecimationProcess.java
│   │           │   │                       │   ├── DistributedRenderProcess.java
│   │           │   │                       │   ├── GeoWaveDataStoreComponents.java
│   │           │   │                       │   ├── GeoWaveFeatureCollection.java
│   │           │   │                       │   ├── GeoWaveFeatureReader.java
│   │           │   │                       │   ├── GeoWaveFeatureSource.java
│   │           │   │                       │   ├── GeoWaveFeatureWriter.java
│   │           │   │                       │   ├── GeoWaveGSProcessFactory.java
│   │           │   │                       │   ├── GeoWaveGTDataStore.java
│   │           │   │                       │   ├── GeoWaveGTDataStoreFactory.java
│   │           │   │                       │   ├── GeoWaveGTPluginUtils.java
│   │           │   │                       │   ├── GeoWavePluginConfig.java
│   │           │   │                       │   ├── GeoWavePluginException.java
│   │           │   │                       │   ├── GeoWaveQueryCaps.java
│   │           │   │                       │   ├── InternalProcessFactory.java
│   │           │   │                       │   ├── QueryIssuer.java
│   │           │   │                       │   ├── SubsampleProcess.java
│   │           │   │                       │   ├── lock/
│   │           │   │                       │   │   ├── AbstractLockingManagement.java
│   │           │   │                       │   │   ├── AuthorizedLock.java
│   │           │   │                       │   │   ├── LockingManagement.java
│   │           │   │                       │   │   ├── LockingManagementFactory.java
│   │           │   │                       │   │   ├── MemoryLockManager.java
│   │           │   │                       │   │   └── MemoryLockManagerFactory.java
│   │           │   │                       │   └── transaction/
│   │           │   │                       │       ├── AbstractTransactionManagement.java
│   │           │   │                       │       ├── GeoWaveAutoCommitTransactionState.java
│   │           │   │                       │       ├── GeoWaveEmptyTransaction.java
│   │           │   │                       │       ├── GeoWaveTransaction.java
│   │           │   │                       │       ├── GeoWaveTransactionManagement.java
│   │           │   │                       │       ├── GeoWaveTransactionManagementState.java
│   │           │   │                       │       ├── GeoWaveTransactionState.java
│   │           │   │                       │       ├── MemoryTransactionsAllocator.java
│   │           │   │                       │       ├── StatisticsCache.java
│   │           │   │                       │       └── TransactionsAllocator.java
│   │           │   │                       ├── query/
│   │           │   │                       │   ├── GeoJsonQueryOutputFormat.java
│   │           │   │                       │   ├── ShapefileQueryOutputFormat.java
│   │           │   │                       │   └── aggregation/
│   │           │   │                       │       └── VectorCountAggregation.java
│   │           │   │                       ├── render/
│   │           │   │                       │   ├── AsyncQueueFeatureCollection.java
│   │           │   │                       │   ├── DistributedRenderAggregation.java
│   │           │   │                       │   ├── DistributedRenderCallback.java
│   │           │   │                       │   ├── DistributedRenderMapOutputFormat.java
│   │           │   │                       │   ├── DistributedRenderOptions.java
│   │           │   │                       │   ├── DistributedRenderResult.java
│   │           │   │                       │   ├── DistributedRenderWMSFacade.java
│   │           │   │                       │   ├── InternalDistributedRenderProcess.java
│   │           │   │                       │   ├── PersistableComposite.java
│   │           │   │                       │   └── PersistableRenderedImage.java
│   │           │   │                       └── util/
│   │           │   │                           ├── DateUtilities.java
│   │           │   │                           ├── FeatureDataUtils.java
│   │           │   │                           ├── FeatureGeometryUtils.java
│   │           │   │                           ├── FeatureTranslatingIterator.java
│   │           │   │                           ├── PolygonAreaCalculator.java
│   │           │   │                           ├── QueryIndexHelper.java
│   │           │   │                           ├── SimpleFeatureUserDataConfigurationSet.java
│   │           │   │                           └── SimpleFeatureWrapper.java
│   │           │   ├── protobuf/
│   │           │   │   └── CqlHBaseQueryFilters.proto
│   │           │   └── resources/
│   │           │       ├── META-INF/
│   │           │       │   └── services/
│   │           │       │       ├── org.geotools.data.DataStoreFactorySpi
│   │           │       │       ├── org.geotools.process.ProcessFactory
│   │           │       │       ├── org.locationtech.geowave.adapter.vector.index.IndexQueryStrategySPI
│   │           │       │       ├── org.locationtech.geowave.adapter.vector.plugin.lock.LockingManagementFactory
│   │           │       │       ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │           │       │       ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   │           │       │       └── org.locationtech.geowave.core.store.cli.query.QueryOutputFormatSpi
│   │           │       └── applicationContext.xml
│   │           └── test/
│   │               ├── java/
│   │               │   └── org/
│   │               │       └── locationtech/
│   │               │           └── geowave/
│   │               │               └── adapter/
│   │               │                   └── vector/
│   │               │                       ├── BaseDataStoreTest.java
│   │               │                       ├── FeatureDataAdapterTest.java
│   │               │                       ├── FeatureWritableTest.java
│   │               │                       ├── index/
│   │               │                       │   ├── ChooseBestMatchIndexQueryStrategyTest.java
│   │               │                       │   ├── ChooseHeuristicMatchQueryStrategyTest.java
│   │               │                       │   └── ChooseLocalityPreservingQueryStrategyTest.java
│   │               │                       ├── plugin/
│   │               │                       │   ├── ExtractGeometryFilterVisitorTest.java
│   │               │                       │   ├── ExtractTimeFilterVisitorTest.java
│   │               │                       │   ├── GeoToolsAttributesSubsetTest.java
│   │               │                       │   ├── GeoWaveFeatureReaderTest.java
│   │               │                       │   ├── GeoWaveFeatureSourceTest.java
│   │               │                       │   ├── GeoWavePluginConfigTest.java
│   │               │                       │   ├── WFSBoundedQueryTest.java
│   │               │                       │   ├── WFSBoundedSpatialQueryTest.java
│   │               │                       │   ├── WFSSpatialTest.java
│   │               │                       │   ├── WFSTemporalQueryTest.java
│   │               │                       │   ├── WFSTransactionTest.java
│   │               │                       │   └── lock/
│   │               │                       │       └── MemoryLockManagerTest.java
│   │               │                       ├── query/
│   │               │                       │   ├── CqlQueryFilterIteratorTest.java
│   │               │                       │   ├── TemporalRangeTest.java
│   │               │                       │   └── cql/
│   │               │                       │       ├── CQLQueryFilterTest.java
│   │               │                       │       ├── CQLQueryTest.java
│   │               │                       │       └── FilterToCQLToolTest.java
│   │               │                       ├── stats/
│   │               │                       │   ├── CountMinSketchStatisticsTest.java
│   │               │                       │   ├── FixedBinNumericHistogramStatisticTest.java
│   │               │                       │   ├── HyperLogLogStaticticsTest.java
│   │               │                       │   └── NumericHistogramStatisticsTest.java
│   │               │                       └── util/
│   │               │                           ├── FeatureDataUtilsTest.java
│   │               │                           ├── QueryIndexHelperTest.java
│   │               │                           └── TimeDescriptorsTest.java
│   │               └── resources/
│   │                   └── statsFile.json
│   ├── cli/
│   │   ├── accumulo-embed/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── datastore/
│   │   │           │                   └── accumulo/
│   │   │           │                       └── cli/
│   │   │           │                           ├── AccumuloMiniCluster.java
│   │   │           │                           ├── AccumuloMiniClusterShell.java
│   │   │           │                           ├── AccumuloRunServerCommand.java
│   │   │           │                           ├── EmbeddedAccumuloOperationProvider.java
│   │   │           │                           ├── MiniAccumuloClusterFactory.java
│   │   │           │                           └── MiniAccumuloUtils.java
│   │   │           └── resources/
│   │   │               └── META-INF/
│   │   │                   └── services/
│   │   │                       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   ├── bigtable-embed/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── datastore/
│   │   │           │                   └── bigtable/
│   │   │           │                       └── cli/
│   │   │           │                           ├── BigtableEmulator.java
│   │   │           │                           ├── BigtableOperationProvider.java
│   │   │           │                           ├── BigtableSection.java
│   │   │           │                           ├── RunBigtableEmulator.java
│   │   │           │                           └── RunBigtableEmulatorOptions.java
│   │   │           └── resources/
│   │   │               └── META-INF/
│   │   │                   └── services/
│   │   │                       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   ├── cassandra-embed/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── datastore/
│   │   │           │                   └── cassandra/
│   │   │           │                       └── cli/
│   │   │           │                           ├── CassandraOperationProvider.java
│   │   │           │                           ├── CassandraSection.java
│   │   │           │                           ├── CassandraServer.java
│   │   │           │                           └── RunCassandraServer.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── services/
│   │   │               │       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   │               └── cassandra-default.yaml
│   │   ├── debug/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── cli/
│   │   │           │                   └── debug/
│   │   │           │                       ├── AbstractGeoWaveQuery.java
│   │   │           │                       ├── BBOXQuery.java
│   │   │           │                       ├── CQLQuery.java
│   │   │           │                       ├── ClientSideCQLQuery.java
│   │   │           │                       ├── DebugOperationsProvider.java
│   │   │           │                       ├── DebugSection.java
│   │   │           │                       ├── FullTableScan.java
│   │   │           │                       ├── MinimalFullTable.java
│   │   │           │                       └── SparkQuery.java
│   │   │           └── resources/
│   │   │               └── META-INF/
│   │   │                   └── services/
│   │   │                       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   ├── dynamodb-embed/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── datastore/
│   │   │           │                   └── dynamodb/
│   │   │           │                       └── cli/
│   │   │           │                           ├── DynamoDBLocal.java
│   │   │           │                           ├── DynamoDBOperationProvider.java
│   │   │           │                           ├── DynamoDBSection.java
│   │   │           │                           ├── RunDynamoDBLocal.java
│   │   │           │                           └── RunDynamoDBLocalOptions.java
│   │   │           └── resources/
│   │   │               └── META-INF/
│   │   │                   └── services/
│   │   │                       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   ├── geoserver/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── locationtech/
│   │   │       │   │           └── geowave/
│   │   │       │   │               └── cli/
│   │   │       │   │                   └── geoserver/
│   │   │       │   │                       ├── ConfigGeoServerCommand.java
│   │   │       │   │                       ├── GeoServerCommand.java
│   │   │       │   │                       ├── GeoServerConfig.java
│   │   │       │   │                       ├── GeoServerOperationProvider.java
│   │   │       │   │                       ├── GeoServerRemoveCommand.java
│   │   │       │   │                       ├── GeoServerRestClient.java
│   │   │       │   │                       ├── GeoServerSSLConfigurationOptions.java
│   │   │       │   │                       ├── GeoServerSection.java
│   │   │       │   │                       ├── SSLOptionAnnotation.java
│   │   │       │   │                       ├── StoreSSLConfigurationOptions.java
│   │   │       │   │                       ├── constants/
│   │   │       │   │                       │   └── GeoServerConstants.java
│   │   │       │   │                       ├── coverage/
│   │   │       │   │                       │   ├── CoverageOperationProvider.java
│   │   │       │   │                       │   ├── CoverageSection.java
│   │   │       │   │                       │   ├── GeoServerAddCoverageCommand.java
│   │   │       │   │                       │   ├── GeoServerGetCoverageCommand.java
│   │   │       │   │                       │   ├── GeoServerListCoveragesCommand.java
│   │   │       │   │                       │   └── GeoServerRemoveCoverageCommand.java
│   │   │       │   │                       ├── cvstore/
│   │   │       │   │                       │   ├── CoverageStoreOperationProvider.java
│   │   │       │   │                       │   ├── CoverageStoreSection.java
│   │   │       │   │                       │   ├── GeoServerAddCoverageStoreCommand.java
│   │   │       │   │                       │   ├── GeoServerGetCoverageStoreCommand.java
│   │   │       │   │                       │   ├── GeoServerListCoverageStoresCommand.java
│   │   │       │   │                       │   └── GeoServerRemoveCoverageStoreCommand.java
│   │   │       │   │                       ├── datastore/
│   │   │       │   │                       │   ├── DatastoreOperationProvider.java
│   │   │       │   │                       │   ├── DatastoreSection.java
│   │   │       │   │                       │   ├── GeoServerAddDatastoreCommand.java
│   │   │       │   │                       │   ├── GeoServerGetDatastoreCommand.java
│   │   │       │   │                       │   ├── GeoServerGetStoreAdapterCommand.java
│   │   │       │   │                       │   ├── GeoServerListDatastoresCommand.java
│   │   │       │   │                       │   └── GeoServerRemoveDatastoreCommand.java
│   │   │       │   │                       ├── featurelayer/
│   │   │       │   │                       │   ├── FeatureLayerOperationProvider.java
│   │   │       │   │                       │   ├── FeatureLayerSection.java
│   │   │       │   │                       │   ├── GeoServerAddFeatureLayerCommand.java
│   │   │       │   │                       │   ├── GeoServerGetFeatureLayerCommand.java
│   │   │       │   │                       │   ├── GeoServerListFeatureLayersCommand.java
│   │   │       │   │                       │   └── GeoServerRemoveFeatureLayerCommand.java
│   │   │       │   │                       ├── layer/
│   │   │       │   │                       │   ├── GeoServerAddLayerCommand.java
│   │   │       │   │                       │   ├── LayerOperationProvider.java
│   │   │       │   │                       │   └── LayerSection.java
│   │   │       │   │                       ├── style/
│   │   │       │   │                       │   ├── GeoServerAddStyleCommand.java
│   │   │       │   │                       │   ├── GeoServerGetStyleCommand.java
│   │   │       │   │                       │   ├── GeoServerListStylesCommand.java
│   │   │       │   │                       │   ├── GeoServerRemoveStyleCommand.java
│   │   │       │   │                       │   ├── GeoServerSetLayerStyleCommand.java
│   │   │       │   │                       │   ├── StyleOperationProvider.java
│   │   │       │   │                       │   └── StyleSection.java
│   │   │       │   │                       └── workspace/
│   │   │       │   │                           ├── GeoServerAddWorkspaceCommand.java
│   │   │       │   │                           ├── GeoServerListWorkspacesCommand.java
│   │   │       │   │                           ├── GeoServerRemoveWorkspaceCommand.java
│   │   │       │   │                           ├── WorkspaceOperationProvider.java
│   │   │       │   │                           └── WorkspaceSection.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── locationtech/
│   │   │                       └── geowave/
│   │   │                           └── cli/
│   │   │                               └── geoserver/
│   │   │                                   └── GeoServerRestClientTest.java
│   │   ├── geoserver-embed/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── cli/
│   │   │           │                   └── geoserver/
│   │   │           │                       ├── RunGeoServer.java
│   │   │           │                       ├── RunGeoServerOperationProvider.java
│   │   │           │                       └── RunGeoServerOptions.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── services/
│   │   │               │       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   │               └── log4j-geoserver.properties
│   │   ├── hbase-embed/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── datastore/
│   │   │           │                   └── hbase/
│   │   │           │                       └── cli/
│   │   │           │                           ├── GeoWaveHBaseUtility.java
│   │   │           │                           ├── HBaseMiniCluster.java
│   │   │           │                           ├── HBaseMiniClusterClassLoader.java
│   │   │           │                           ├── HBaseSection.java
│   │   │           │                           ├── HBaseTestVisibilityLabelServiceImpl.java
│   │   │           │                           ├── RunHBaseServer.java
│   │   │           │                           ├── RunHBaseServerOperationProvider.java
│   │   │           │                           ├── RunHBaseServerOptions.java
│   │   │           │                           └── ZookeeperMiniCluster.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── services/
│   │   │               │       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   │               └── hbase.properties
│   │   ├── kudu-embed/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── datastore/
│   │   │           │                   └── kudu/
│   │   │           │                       └── cli/
│   │   │           │                           ├── KuduLocal.java
│   │   │           │                           ├── KuduOperationProvider.java
│   │   │           │                           ├── KuduSection.java
│   │   │           │                           ├── RunKuduLocal.java
│   │   │           │                           └── RunKuduLocalOptions.java
│   │   │           └── resources/
│   │   │               └── META-INF/
│   │   │                   └── services/
│   │   │                       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   ├── landsat8/
│   │   │   ├── README.md
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── locationtech/
│   │   │       │   │           └── geowave/
│   │   │       │   │               └── format/
│   │   │       │   │                   └── landsat8/
│   │   │       │   │                       ├── AnalyzeRunner.java
│   │   │       │   │                       ├── BandFeatureIterator.java
│   │   │       │   │                       ├── DownloadRunner.java
│   │   │       │   │                       ├── IngestRunner.java
│   │   │       │   │                       ├── Landsat8AnalyzeCommand.java
│   │   │       │   │                       ├── Landsat8BandConverterSpi.java
│   │   │       │   │                       ├── Landsat8BasicCommandLineOptions.java
│   │   │       │   │                       ├── Landsat8DownloadCommand.java
│   │   │       │   │                       ├── Landsat8DownloadCommandLineOptions.java
│   │   │       │   │                       ├── Landsat8IngestCommand.java
│   │   │       │   │                       ├── Landsat8IngestRasterCommand.java
│   │   │       │   │                       ├── Landsat8IngestVectorCommand.java
│   │   │       │   │                       ├── Landsat8OperationProvider.java
│   │   │       │   │                       ├── Landsat8RasterIngestCommandLineOptions.java
│   │   │       │   │                       ├── Landsat8Section.java
│   │   │       │   │                       ├── PropertyIgnoringFilterVisitor.java
│   │   │       │   │                       ├── RasterIngestRunner.java
│   │   │       │   │                       ├── SceneFeatureIterator.java
│   │   │       │   │                       ├── VectorIngestRunner.java
│   │   │       │   │                       ├── VectorOverrideCommandLineOptions.java
│   │   │       │   │                       ├── WRS2GeometryStore.java
│   │   │       │   │                       ├── index/
│   │   │       │   │                       │   ├── Landsat8PersistableRegistry.java
│   │   │       │   │                       │   └── Landsat8TemporalBinningStrategy.java
│   │   │       │   │                       └── qa/
│   │   │       │   │                           └── QABandToIceMaskConverter.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   │       │               ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   │   │       │               └── org.locationtech.geowave.format.landsat.Landsat8BandConverterSpi
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── format/
│   │   │           │                   └── landsat8/
│   │   │           │                       ├── AnalyzeRunnerTest.java
│   │   │           │                       ├── DownloadRunnerTest.java
│   │   │           │                       ├── IngestRunnerTest.java
│   │   │           │                       ├── RasterIngestRunnerTest.java
│   │   │           │                       ├── SceneFeatureIteratorTest.java
│   │   │           │                       ├── Tests.java
│   │   │           │                       ├── VectorIngestRunnerTest.java
│   │   │           │                       └── WRS2GeometryStoreTest.java
│   │   │           └── resources/
│   │   │               └── geowave-config.properties
│   │   ├── osm/
│   │   │   ├── .gitignore
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── avro/
│   │   │       │   │   ├── LongArray.avsc
│   │   │       │   │   └── OsmAvro.avsc
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── locationtech/
│   │   │       │   │           └── geowave/
│   │   │       │   │               └── cli/
│   │   │       │   │                   └── osm/
│   │   │       │   │                       ├── accumulo/
│   │   │       │   │                       │   └── osmschema/
│   │   │       │   │                       │       ├── ColumnFamily.java
│   │   │       │   │                       │       ├── ColumnQualifier.java
│   │   │       │   │                       │       ├── Constants.java
│   │   │       │   │                       │       └── Schema.java
│   │   │       │   │                       ├── mapreduce/
│   │   │       │   │                       │   ├── Convert/
│   │   │       │   │                       │   │   ├── OSMConversionMapper.java
│   │   │       │   │                       │   │   ├── OSMConversionRunner.java
│   │   │       │   │                       │   │   ├── OsmProvider/
│   │   │       │   │                       │   │   │   └── OsmProvider.java
│   │   │       │   │                       │   │   └── SimpleFeatureGenerator.java
│   │   │       │   │                       │   └── Ingest/
│   │   │       │   │                       │       ├── OSMMapperBase.java
│   │   │       │   │                       │       ├── OSMNodeMapper.java
│   │   │       │   │                       │       ├── OSMRelationMapper.java
│   │   │       │   │                       │       ├── OSMRunner.java
│   │   │       │   │                       │       └── OSMWayMapper.java
│   │   │       │   │                       ├── operations/
│   │   │       │   │                       │   ├── IngestOSMToGeoWaveCommand.java
│   │   │       │   │                       │   ├── OSMOperationProvider.java
│   │   │       │   │                       │   ├── OSMSection.java
│   │   │       │   │                       │   ├── StageOSMToHDFSCommand.java
│   │   │       │   │                       │   └── options/
│   │   │       │   │                       │       └── OSMIngestCommandArgs.java
│   │   │       │   │                       ├── osmfeature/
│   │   │       │   │                       │   ├── FeatureConfigParser.java
│   │   │       │   │                       │   └── types/
│   │   │       │   │                       │       ├── attributes/
│   │   │       │   │                       │       │   ├── AttributeDefinition.java
│   │   │       │   │                       │       │   ├── AttributeType.java
│   │   │       │   │                       │       │   └── AttributeTypes.java
│   │   │       │   │                       │       └── features/
│   │   │       │   │                       │           ├── FeatureDefinition.java
│   │   │       │   │                       │           ├── FeatureDefinitionSet.java
│   │   │       │   │                       │           └── FeatureType.java
│   │   │       │   │                       ├── parser/
│   │   │       │   │                       │   ├── OsmPbfParser.java
│   │   │       │   │                       │   ├── OsmPbfParserOptions.java
│   │   │       │   │                       │   └── OsmXmlLoader.java
│   │   │       │   │                       └── types/
│   │   │       │   │                           └── TypeUtils.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   │       └── test/
│   │   │           ├── data/
│   │   │           │   └── test_mapping.json
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── locationtech/
│   │   │                       └── geowave/
│   │   │                           └── cli/
│   │   │                               └── osm/
│   │   │                                   ├── ColumnQualifierTest.java
│   │   │                                   └── osmfeature/
│   │   │                                       └── FeatureConfigParserTest.java
│   │   ├── redis-embed/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── datastore/
│   │   │           │                   └── redis/
│   │   │           │                       └── cli/
│   │   │           │                           ├── RedisOperationProvider.java
│   │   │           │                           ├── RedisSection.java
│   │   │           │                           ├── RunRedisServer.java
│   │   │           │                           └── RunRedisServerOptions.java
│   │   │           └── resources/
│   │   │               └── META-INF/
│   │   │                   └── services/
│   │   │                       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   └── sentinel2/
│   │       ├── README.md
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── org/
│   │           │   │       └── locationtech/
│   │           │   │           └── geowave/
│   │           │   │               └── format/
│   │           │   │                   └── sentinel2/
│   │           │   │                       ├── AnalyzeRunner.java
│   │           │   │                       ├── BandFeatureIterator.java
│   │           │   │                       ├── DownloadRunner.java
│   │           │   │                       ├── IngestRunner.java
│   │           │   │                       ├── PropertyIgnoringFilterVisitor.java
│   │           │   │                       ├── RasterBandData.java
│   │           │   │                       ├── RasterIngestRunner.java
│   │           │   │                       ├── SceneFeatureIterator.java
│   │           │   │                       ├── Sentinel2AnalyzeCommand.java
│   │           │   │                       ├── Sentinel2BandConverterSpi.java
│   │           │   │                       ├── Sentinel2BasicCommandLineOptions.java
│   │           │   │                       ├── Sentinel2DownloadCommand.java
│   │           │   │                       ├── Sentinel2DownloadCommandLineOptions.java
│   │           │   │                       ├── Sentinel2ImageryProvider.java
│   │           │   │                       ├── Sentinel2ImageryProvidersCommand.java
│   │           │   │                       ├── Sentinel2IngestCommand.java
│   │           │   │                       ├── Sentinel2IngestRasterCommand.java
│   │           │   │                       ├── Sentinel2IngestVectorCommand.java
│   │           │   │                       ├── Sentinel2OperationProvider.java
│   │           │   │                       ├── Sentinel2RasterIngestCommandLineOptions.java
│   │           │   │                       ├── Sentinel2Section.java
│   │           │   │                       ├── VectorIngestRunner.java
│   │           │   │                       ├── VectorOverrideCommandLineOptions.java
│   │           │   │                       ├── amazon/
│   │           │   │                       │   └── AmazonImageryProvider.java
│   │           │   │                       └── theia/
│   │           │   │                           └── TheiaImageryProvider.java
│   │           │   └── resources/
│   │           │       └── META-INF/
│   │           │           └── services/
│   │           │               └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │           └── test/
│   │               ├── java/
│   │               │   └── org/
│   │               │       └── locationtech/
│   │               │           └── geowave/
│   │               │               └── format/
│   │               │                   └── sentinel2/
│   │               │                       ├── AnalyzeRunnerTest.java
│   │               │                       ├── DownloadRunnerTest.java
│   │               │                       ├── IngestRunnerTest.java
│   │               │                       ├── RasterIngestRunnerTest.java
│   │               │                       ├── SceneFeatureIteratorTest.java
│   │               │                       ├── Tests.java
│   │               │                       └── VectorIngestRunnerTest.java
│   │               └── resources/
│   │                   ├── auth_theia.txt
│   │                   └── geowave-config.properties
│   ├── datastores/
│   │   ├── accumulo/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── locationtech/
│   │   │       │   │           └── geowave/
│   │   │       │   │               └── datastore/
│   │   │       │   │                   └── accumulo/
│   │   │       │   │                       ├── AccumuloDataStore.java
│   │   │       │   │                       ├── AccumuloDataStoreFactory.java
│   │   │       │   │                       ├── AccumuloFactoryHelper.java
│   │   │       │   │                       ├── AccumuloRow.java
│   │   │       │   │                       ├── AccumuloStoreFactoryFamily.java
│   │   │       │   │                       ├── IteratorConfig.java
│   │   │       │   │                       ├── MergingCombiner.java
│   │   │       │   │                       ├── MergingVisibilityCombiner.java
│   │   │       │   │                       ├── RowMergingCombiner.java
│   │   │       │   │                       ├── RowMergingVisibilityCombiner.java
│   │   │       │   │                       ├── cli/
│   │   │       │   │                       │   ├── AbstractSplitsCommand.java
│   │   │       │   │                       │   ├── AccumuloOperationProvider.java
│   │   │       │   │                       │   ├── AccumuloSection.java
│   │   │       │   │                       │   ├── PreSplitPartitionIdCommand.java
│   │   │       │   │                       │   ├── SplitEqualIntervalCommand.java
│   │   │       │   │                       │   ├── SplitNumRecordsCommand.java
│   │   │       │   │                       │   └── SplitQuantileCommand.java
│   │   │       │   │                       ├── config/
│   │   │       │   │                       │   ├── AccumuloOptions.java
│   │   │       │   │                       │   └── AccumuloRequiredOptions.java
│   │   │       │   │                       ├── iterators/
│   │   │       │   │                       │   ├── AggregationIterator.java
│   │   │       │   │                       │   ├── AttributeSubsettingIterator.java
│   │   │       │   │                       │   ├── ExceptionHandlingFilter.java
│   │   │       │   │                       │   ├── ExceptionHandlingSkippingIterator.java
│   │   │       │   │                       │   ├── ExceptionHandlingTransformingIterator.java
│   │   │       │   │                       │   ├── FixedCardinalitySkippingIterator.java
│   │   │       │   │                       │   ├── NumericIndexStrategyFilterIterator.java
│   │   │       │   │                       │   ├── QueryFilterIterator.jav

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
# Handle line endings automatically for files detected as text
# and leave all files detected as binary untouched.
* text=auto

# Never modify line endings of our bash scripts
*.sh -crlf

#
# The above will handle all files NOT found below
#
# These files are text and should be normalized (Convert crlf => lf)
*.css           text
*.html          text
*.java          text
*.js            text
*.json          text
*.properties    text
*.txt           text
*.xml           text

# These files are binary and should be left untouched
# (binary is a macro for -text -diff)
*.class         binary
*.gif           binary
*.jar           binary
*.jpg           binary
*.png           binary
*.war           binary


================================================
FILE: .github/workflows/publish.yml
================================================
name: Publish
on: 
  push:
    branches:
      - master
env:
  DEV_RESOURCES_VERSION: 1.7
  MAVEN_OPTS: "-XX:CompressedClassSpaceSize=256m -XX:+UseSerialGC -Xmx2g -XX:MaxMetaspaceSize=512m"
jobs:
  publish:
    if: github.repository == 'locationtech/geowave'
    runs-on: ubuntu-18.04
    name: Publish Artifacts and Docs
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      CHANGELOG_GITHUB_TOKEN: ${{ secrets.CHANGELOG_TOKEN }}
      GPG_OWNERTRUST: ${{ secrets.GPG_OWNERTRUST }}
      GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
      GPG_SECRET_KEYS: ${{ secrets.GPG_SECRET_KEYS }}
      PYPI_CREDENTIALS: ${{ secrets.PYPI_CREDENTIALS }}
      SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
      SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
    steps:
    - name: Checkout repository
      uses: actions/checkout@v2

    - name: Set up JDK 1.8
      uses: joschi/setup-jdk@v2
      with:
        java-version: '8'  
        architecture: x64  

    - name: Cache resources
      uses: actions/cache@v2
      env:
        cache-name: cache-geowave-resources
      with:
        key:  ${{ runner.os }}-Publish
        path: ~/.m2

    - name: Install Local Artifacts
      run: mvn install -B -DskipTests -Dspotbugs.skip

    - name: Publish Artifacts
      run: ./.utility/publish-artifacts.sh
    
    - name: Generate Changelog
      uses: heinrichreimer/github-changelog-generator-action@v2.2
      with:
        issues: true
        issuesWoLabels: true
        pullRequests: true
        prWoLabels: true
        author: true
        unreleased: true
        stripGeneratorNotice: true
        verbose: true
        compareLink: true
        httpCache: true
        filterByMilestone: true

    - name: Convert Changelog to HTML
      uses: docker://pandoc/core:2.9
      with:
        args: "-f markdown -t html -s -c stylesheets/changelog.css -o changelog.html CHANGELOG.md"

    - name: Build HTML Docs
      run: mvn -P html -pl docs install -DskipTests -Dspotbugs.skip      

    - name: Build Aggregate Javadocs
      run: mvn javadoc:aggregate -B -DskipTests -Dspotbugs.skip

    - name: Build Python Docs
      run: ./.utility/build-python-docs.sh

    - name: Publish Docs to GH-Pages
      run: ./.utility/publish-docs.sh



================================================
FILE: .github/workflows/test.yml
================================================
name: Tests
on: [push, pull_request]
env:
    DEV_RESOURCES_VERSION: 1.7
    MAVEN_PROFILES: '""'
    IT_ONLY: true
    MAVEN_OPTS: "-XX:CompressedClassSpaceSize=256m -XX:+UseSerialGC -Xmx2g -XX:MaxMetaspaceSize=512m"    
jobs:
    unit-tests:
        runs-on: ubuntu-20.04
        name: Unit Tests on Latest ASF Versions
        env:
            IT_ONLY: false
        steps:
            - name: Checkout repository
              uses: actions/checkout@v2

            - name: Set up JDK 1.8
              uses: joschi/setup-jdk@v2
              with:
                java-version: '8'  
                architecture: x64  

            - name: Set up Maven
              uses: stCarolas/setup-maven@v4
              with:
                maven-version: 3.6.3
                
            - name: Cache maven resources
              uses: actions/cache@v2
              env:
                cache-name: cache-maven-resources
              with:
                key: ${{ runner.os }}-mvn-${{ hashFiles('**/pom.xml') }}
                restore-keys: |
                      ${{ runner.os }}-mvn-
                path: |
                      ~/.m2/repository

            - name: Cache other resources
              uses: actions/cache@v2
              env:
                cache-name: cache-resources
              with:
                key: ${{ runner.os }}-other-${{ secrets.CACHE_ID }}
                restore-keys: |
                      ${{ runner.os }}-other-${{ secrets.CACHE_ID }}
                path: |  
                      ~/.downloads
                      test/landsat8
                      test/sentinel2
                      test/target/temp/gdal

            - name: Run
              run: ./.utility/run-tests.sh

            - name: Publish Unit Test Results
              uses: scacap/action-surefire-report@v1
              if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
              with:
                check_name: Unit Test Results
                report_paths: "**/target/surefire-reports/*.xml"
                github_token: ${{ secrets.GITHUB_TOKEN }} 
                     
    python-tests:
        runs-on:  ubuntu-20.04
        name: Python Tests on Latest ASF Versions
        env:
            IT_ONLY: false
            PYTHON_BUILD: true
        steps:
            - name: Checkout repository
              uses: actions/checkout@v2

            - name: Set up AdoptOpenJDK 1.8
              uses: joschi/setup-jdk@v2
              with:
                java-version: '8'  
                architecture: x64   

            - name: Set up Maven
              uses: stCarolas/setup-maven@v4
              with:
                maven-version: 3.6.3
                
            - name: Cache maven resources
              uses: actions/cache@v2
              env:
                cache-name: cache-maven-resources
              with:
                key: ${{ runner.os }}-mvn-${{ hashFiles('**/pom.xml') }}
                restore-keys: |
                      ${{ runner.os }}-mvn-
                path: |
                      ~/.m2/repository

            - name: Cache other resources
              uses: actions/cache@v2
              env:
                cache-name: cache-resources
              with:
                key: ${{ runner.os }}-other-${{ secrets.CACHE_ID }}
                restore-keys: |
                      ${{ runner.os }}-other-${{ secrets.CACHE_ID }}
                path: |  
                      ~/.downloads
                      test/landsat8
                      test/sentinel2
                      test/target/temp/gdal

            - name: Run
              run: ./.utility/run-tests.sh

            - name: Python Test Results
              uses: scacap/action-surefire-report@v1
              if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
              with:
                check_name: Python Test Results
                report_paths: python/src/main/python/test-report.xml
                github_token: ${{ secrets.GITHUB_TOKEN }}

    integration-tests:
        runs-on: ubuntu-20.04
        name: ${{ matrix.profile }} Integration Tests 
        strategy:
            fail-fast: false
            matrix:
                profile: [redis-it, rocksdb-it, accumulo-it-client, accumulo-it-server, hbase-it-client, hbase-it-server, dynamodb-it, bigtable-it, kudu-it, filesystem-it, 'filesystem-it,secondary-index-it', 'rocksdb-it,secondary-index-it', 'accumulo-it-server,compatibility','hbase-it-server,secondary-index-it']
                include:
                  - profile: cassandra-it
                    retry_tests: true
                ## for now kerberos test environment isn't quite working, skip the kerberos tests until the issue is resolved
                  # include a new variable of TEST_KERBEROS = true
                #  - profile: accumulo-it-kerberos
                #    test_kerberos: true
                #  - profile: 'accumulo-it-kerberos,compatibility'
                #    test_kerberos: true
        env:
            IT_ONLY: true
            MAVEN_PROFILES: ${{ matrix.profile }}
            TEST_KERBEROS: ${{ matrix.test_kerberos }}
            RETRY_TESTS: ${{ matrix.retry_tests }}
        steps:
            - name: Checkout repository
              uses: actions/checkout@v2
              
            - name: Set up AdoptOpenJDK 1.8
              uses: joschi/setup-jdk@v2
              with:
                java-version: '8' 
                architecture: x64  
                
            - name: Set up Maven
              uses: stCarolas/setup-maven@v4
              with:
                maven-version: 3.6.3
              
                
            - name: Cache maven resources
              uses: actions/cache@v2
              env:
                cache-name: cache-maven-resources
              with:
                key: ${{ runner.os }}-mvn-${{ hashFiles('**/pom.xml') }}
                restore-keys: |
                      ${{ runner.os }}-mvn-
                path: |
                      ~/.m2/repository

            - name: Cache other resources
              uses: actions/cache@v2
              env:
                cache-name: cache-resources
              with:
                key: ${{ runner.os }}-other-${{ secrets.CACHE_ID }}
                restore-keys: |
                      ${{ runner.os }}-other-${{ secrets.CACHE_ID }}
                path: |  
                      ~/.downloads
                      test/landsat8
                      test/sentinel2
                      test/target/temp/gdal

            - name: Run
              run: ./.utility/retry ./.utility/run-tests.sh

            - name: Publish Integration Test ${{ matrix.profile }} Results
              uses: scacap/action-surefire-report@v1
              if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
              with:
                check_name: ${{ matrix.profile }} Results
                report_paths: test/target/failsafe-reports/TEST-org.locationtech.geowave.test.GeoWaveITSuite.xml
                github_token: ${{ secrets.GITHUB_TOKEN }}

================================================
FILE: .gitignore
================================================
*.project
*.classpath
*.prefs
*.settings
target
*.log
dependency-reduced-pom.xml
*.imls
*.iml
.idea/
.DS_Store
bin
docker-root
generated
.metadata
**/.factorypath
.vscode


================================================
FILE: .utility/.maven.xml
================================================
<settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/SETTINGS/1.0.0" xsi:schemalocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <servers>
        <server>
            <!-- Maven Central Deployment -->
            <id>ossrh</id>
            <username>${env.SONATYPE_USERNAME}</username>
            <password>${env.SONATYPE_PASSWORD}</password>
        </server>
        
        <server>
          <id>osgeo-release</id>
          <httpConfiguration>
            <all>
              <connectionTimeout>120000</connectionTimeout>
              <readTimeout>120000</readTimeout>
            </all>
          </httpConfiguration>
        </server>
    </servers>

    <profiles>
      <profile>
        <id>ossrh</id>
        <activation>
          <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
          <gpg.executable>${env.GPG_EXECUTABLE}</gpg.executable>
          <gpg.passphrase>${env.GPG_PASSPHRASE}</gpg.passphrase>
        </properties>
      </profile>
    </profiles>
</settings>

================================================
FILE: .utility/build-dev-resources.sh
================================================
#!/bin/bash
set -v
pushd dev-resources
# Build the dev-resources jar
echo -e "Building dev-resources..."
mvn clean install
popd

================================================
FILE: .utility/build-python-docs.sh
================================================
#!/bin/bash

# Build and Run Java Gateway
mvn -q package -P geowave-tools-singlejar -Dspotbugs.skip -DskipTests >/dev/null
GEOWAVE_VERSION=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
nohup java -cp deploy/target/geowave-deploy-${GEOWAVE_VERSION}-tools.jar org.locationtech.geowave.core.cli.GeoWaveMain util python rungateway &

# Install pip and venv
sudo apt-get install -yq python3-pip python3-venv

# Build Python docs
cd python/src/main/python
python3 -m venv tests-venv

source ./tests-venv/bin/activate

pip install --upgrade pip

pip install wheel
pip install -r requirements.txt

pdoc --html pygw
EXIT_CODE=$?

cd ../../../..
mv python/src/main/python/html/pygw target/site/pydocs

deactivate

exit $EXIT_CODE


================================================
FILE: .utility/publish-artifacts.sh
================================================
#!/bin/bash
set -ev

echo -e "Building javadocs...\n"
mvn javadoc:javadoc -B -DskipTests -Dspotbugs.skip

echo $GPG_SECRET_KEYS | base64 --decode | gpg --import --no-tty --batch --yes
echo $GPG_OWNERTRUST | base64 --decode | gpg --import-ownertrust --no-tty --batch --yes

# Build the dev-resources jar
if ! curl --head --silent --fail  https://oss.sonatype.org/service/local/repositories/releases/content/org/locationtech/geowave/geowave-dev-resources/${DEV_RESOURCES_VERSION}/geowave-dev-resources-${DEV_RESOURCES_VERSION}.pom 2> /dev/null;
  then
    pushd dev-resources
    echo -e "Deploying dev-resources..."
    mvn deploy --settings ../.utility/.maven.xml -DskipTests -Dspotbugs.skip -B -U -Prelease
    popd
fi
echo -e "Deploying geowave artifacts..."
mvn deploy --settings .utility/.maven.xml -DskipTests -Dspotbugs.skip -B -U -Prelease

# Get the version from the build.properties file
filePath=deploy/target/classes/build.properties
GEOWAVE_VERSION=$(grep project.version $filePath|  awk -F= '{print $2}')

# Don't publish snapshots to PyPi
if [[ ! "$GEOWAVE_VERSION" =~ "SNAPSHOT" ]] ; then
  if [[ -z "${PYPI_CREDENTIALS}" ]]; then
    echo -e "No PyPi credentials, skipping PyPi distribution..."
  else
    echo -e "Deploying pygw to PyPi..."
    pushd python/src/main/python
    python3 -m venv publish-venv
    source ./publish-venv/bin/activate
  
    pip install --upgrade pip wheel setuptools twine
    python3 setup.py bdist_wheel --python-tag=py3 sdist
    twine upload --skip-existing -u __token__ -p $PYPI_CREDENTIALS dist/*
    deactivate
    popd
  fi
fi 


================================================
FILE: .utility/publish-docs.sh
================================================
#!/bin/bash

# Get the version from the build.properties file
filePath=deploy/target/classes/build.properties
GEOWAVE_VERSION=$(grep project.version $filePath|  awk -F= '{print $2}')

echo -e "Copying changelog...\n"
cp changelog.html target/site/

echo -e "Publishing site ...\n"
# Save docs to latest
cp -R target/site $HOME/latest

cd $HOME
git config --global user.email "geowave-dev@eclipse.org"
git config --global user.name "geowave-dev"
git clone --quiet --depth 1 --branch=gh-pages https://x-access-token:${GITHUB_TOKEN}@github.com/locationtech/geowave gh-pages > /dev/null

cd gh-pages 

# Back up previous versions
mv previous-versions $HOME/previous-versions

# Remove old latest
rm -rf latest

if [[ ! "$GEOWAVE_VERSION" =~ "SNAPSHOT" ]] && [[ ! "$GEOWAVE_VERSION" =~ "RC" ]] ; then
  # If this isn't a snapshot or release candidate, this becomes the main site
  echo -e "Publishing release documentation ...\n"
  cp -Rf $HOME/latest $HOME/site/
else
  echo -e "Publishing snapshot documentation ...\n"
  # Otherwise keep old release
  cp -Rf . $HOME/site/
fi

# Save previous versions of the documentation
cp -r $HOME/previous-versions $HOME/site/

# Save latest
cp -r $HOME/latest $HOME/site/

git rm -r -f -q .
cp -Rf $HOME/site/* .

# Don't check in big binary blobs
# TODO: Push to S3 if we want to link to them via the web site
rm -f *.epub *.pdf *.pdfmarks

git add -f .
git commit -m "Lastest docs on successful github build $GITHUB_RUN_NUMBER auto-pushed to gh-pages"
git push -fq origin gh-pages > /dev/null

echo -e "Published docs to gh-pages.\n"


================================================
FILE: .utility/retry
================================================
#!/usr/bin/env bash

set -euo pipefail

x() {
    echo "+ $*" >&2
    "$@"
}
if [[ -z "${RETRY_TESTS}" ]]; then
    x "$@" && exit 0
else
    max_retry_time_seconds=$(( 120 * 60 ))
    retry_delay_seconds=10

    END=$(( $(date +%s) + ${max_retry_time_seconds} ))

    while (( $(date +%s) < $END )); do
        x "$@" && exit 0
        sleep "${retry_delay_seconds}"
    done

    echo "$0: retrying [$*] timed out" >&2
    exit 1
fi



================================================
FILE: .utility/run-python-tests.sh
================================================
#!/bin/bash

# Build and Run Java Gateway
mvn -q package -P geowave-tools-singlejar -Dfindbugs.skip=true -DskipTests=true -Dspotbugs.skip=true
GEOWAVE_VERSION=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
echo -e "GeoWave version: $GEOWAVE_VERSION\n"
nohup java -cp deploy/target/geowave-deploy-${GEOWAVE_VERSION}-tools.jar org.locationtech.geowave.core.cli.GeoWaveMain util python rungateway &
echo -e "Gateway started...\n"

# Install pip and venv
sudo apt-get install -yq python3-pip python3-venv

# Run Python tests
cd python/src/main/python
python3 -m venv tests-venv

source ./tests-venv/bin/activate

pip install --upgrade pip

pip install wheel
pip install -r requirements.txt

pytest --junitxml=test-report.xml --cov-report= --cov=pygw pygw/test/
EXIT_CODE=$?

deactivate

exit $EXIT_CODE


================================================
FILE: .utility/run-tests.sh
================================================
#!/bin/bash
set -ev
chmod +x .utility/*.sh

.utility/build-dev-resources.sh
if [ "$PYTHON_BUILD" == "true" ]; then
  echo -e "Running Python tests...\n"
  source .utility/run-python-tests.sh
else
  if [ "$IT_ONLY" == "true" ]; then
    echo -e "Skipping unit tests w/ verify...\n"
    wget -q https://archive.apache.org/dist/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz
    tar -xzf ./hadoop-3.1.2.tar.gz hadoop-3.1.2/lib/native/
    export LD_LIBRARY_PATH=$(pwd)/hadoop-3.1.2/lib/native/
    mvn -q -B verify -am -pl test -Dtest=SkipUnitTests -Dfindbugs.skip -Dspotbugs.skip -DfailIfNoTests=false -P $MAVEN_PROFILES
  else
    echo -e "Running unit tests only w/ verify...\n"
    mvn -q -B verify -Dformatter.action=validate -P $MAVEN_PROFILES
  fi
fi


================================================
FILE: CONTRIBUTING.md
================================================
Before your contribution can be accepted by the project, you need to create an Eclipse Foundation 
account and electronically sign the Eclipse Contributor Agreement (ECA).

- http://www.eclipse.org/legal/ECA.php

For more information on contributing to GeoWave, please see our developer guide here:

- http://locationtech.github.io/geowave/devguide.html#contributions


================================================
FILE: LICENSE
================================================
Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS
   
   APPENDIX: How to apply the Apache License to your work.
 
       To apply the Apache License to your work, attach the following
       boilerplate notice, with the fields enclosed by brackets "[]"
       replaced with your own identifying information. (Don't include
       the brackets!)  The text should be enclosed in the appropriate
       comment syntax for the file format. We also recommend that a
       file or class name and description of purpose be included on the
       same "printed page" as the copyright notice for easier
       identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]
   
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: NOTICE
================================================
Copyright 2019-2020 Maxar Technologies Inc.
Copyright 2016-2020 Prominent Edge
Copyright 2019-2020 BlackLynx
Copyright 2017-2019 Radiant Solutions
Copyright 2013-2016 RadiantBlue Technologies
Copyright 2016-2017 DigitalGlobe, Inc.
Copyright 2013-2017 Booz Allen Hamilton
Copyright 2010 Lars Francke – RE:  OsmAvro.avsc
Copyright 2013-2016 Commonwealth Computer Research, Inc. RE:  XZOrderSFC.java
Copyright 2014 GeoSolutions RE:  WarpNearestOpImage.java

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Portions of this software were developed under contract to
the U.S. Government (National Geospatial-Intelligence Agency).



================================================
FILE: README.md
================================================
<p align="center">
	<a href="http://locationtech.github.io/geowave/">
	<img float="center" width="65%" src="https://raw.githubusercontent.com/locationtech/geowave/master/docs/content/geowave-index/images/geowave-logo-transluscent.png" alt="GeoWave"><br/><br/>
	</a>
</p>

## About  

| Continuous Integration | License | Chat |            
|:------------------:|:-------:|:----:| 
| <a href="https://github.com/locationtech/geowave/actions?query=workflow%3ATests+branch%3Amaster"><img alt="GitHub Action Test Status" src="https://github.com/locationtech/geowave/workflows/Tests/badge.svg?branch=master"/></a> | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![Join the chat at https://gitter.im/locationtech/geowave](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/locationtech/geowave?utm_source=badge&utm_medium=badge&utm_content=badge) |  

GeoWave is an open source set of software that:

* Capabilities
  * Adds multi-dimensional indexing capability to key/value stores (currently [Apache Accumulo](https://accumulo.apache.org), [Apache HBase](https://hbase.apache.org), [Apache Cassandra](http://cassandra.apache.org/), [Amazon DynamoDB](https://aws.amazon.com/dynamodb/), [Cloud Bigtable](https://cloud.google.com/bigtable/), [Redis](https://redis.io/), [RocksDB](https://rocksdb.org/), and [Apache Kudu](https://kudu.apache.org/), as well as direct FileSystem support)
  * Adds support for geographic objects and geospatial operators to these stores
  * Provides Map-Reduce input and output formats for distributed processing and analysis of geospatial data
* Geospatial software plugins
  * [GeoServer](http://geoserver.org/) plugin to allow geospatial data in various key/value stores to be shared and visualized via OGC standard services
  
Basically, GeoWave is working to bridge geospatial software with modern key/value stores and distributed compute systems.

## The Docs
* [GeoWave](https://locationtech.github.io/geowave/latest/index.html) - Latest snapshot documentation homepage
* [GeoWave Overview](https://locationtech.github.io/geowave/latest/overview.html) - Overview of GeoWave's capabilities
* [Installation Guide](https://locationtech.github.io/geowave/latest/installation-guide.html) - Installation instructions for standalone installers and from RPMs
* [Quickstart Guide](https://locationtech.github.io/geowave/latest/quickstart.html) - A quick demo of GeoWave features using the command-line interface
* [User Guide](https://locationtech.github.io/geowave/latest/userguide.html) - A guide for using GeoWave through the command-line interface and GeoServer plugin
* [Developer Guide](https://locationtech.github.io/geowave/latest/devguide.html) - A guide for developing applications that utilize GeoWave
* [Command-Line Interface](https://locationtech.github.io/geowave/latest/commands.html) - Full documentation for the GeoWave CLI
* [Changelog](https://locationtech.github.io/geowave/latest/changelog.html) - Changes and features for each of our [GitHub releases](https://github.com/locationtech/geowave/releases)
* The underlying principles employed in GeoWave are outlined in past academic publications to include largely the background theory in [Advances in Spatial and Temporal Databases 2017](https://link.springer.com/chapter/10.1007/978-3-319-64367-0_6) and a derivative, more applied paper in [FOSS4G Conference Proceedings 2017](http://scholarworks.umass.edu/cgi/viewcontent.cgi?article=1027&context=foss4g).

## The Software
* We have [multi-platform standalone installers](https://locationtech.github.io/geowave/latest/installation-guide.html#standalone-installers) for the GeoWave's command-line tools to help get started
  * This is often the quickest and easiest way to get started using GeoWave on your own machine
* We have a [RPM repository](https://locationtech.github.io/geowave/latest/downloads.html)
  * This contains various packages including puppet modules, best used for distributed environments.
  * See the [Installation Guide](https://locationtech.github.io/geowave/latest/installation-guide.html#installation-from-rpm) for more info.
* Maven artifacts are available on Maven Central
* And you can always [build from source](https://locationtech.github.io/geowave/latest/devguide.html#development-setup)

## Community

* Community support is available on [chat](https://gitter.im/locationtech/geowave) and on [our mailing list](mailto:geowave-dev@eclipse.org).

## Getting Started
### Programmatic Access
You can use Maven to reference pre-built GeoWave artifacts with the following pom.xml snippet (replacing `${keyvalue-datastore}` with your data store of choice and `${geowave.version}` with the GeoWave version you'd like to use):
```
	<dependencies>
		<dependency>
			<groupId>org.locationtech.geowave</groupId>
			<artifactId>geowave-datastore-${keyvalue-datastore}</artifactId>
			<version>${geowave.version}</version>
		</dependency>
		<dependency>
			<groupId>org.locationtech.geowave</groupId>
			<artifactId>geowave-adapter-vector</artifactId>
			<version>${geowave.version}</version>
		</dependency>
		<dependency>
			<groupId>org.locationtech.geowave</groupId>
			<artifactId>geowave-adapter-raster</artifactId>
			<version>${geowave.version}</version>
		</dependency>
	</dependencies>
```

Use the libraries available in the `api` package to leverage GeoWave's capabilities (where `<data store options>` might be `AccumuloRequiredOptions` or `HBaseRequiredOptions` and simple examples of creating the data type and index can be found in `SimpleIngest` within the `examples` directory):
```java
DataStore store = DataStoreFactory.createDataStore(<data store options>);
store.addType(<my data type>, <my index>);
try(Writer writer = store.createWriter()){
  //write data
  writer.writer(<data>);
}
 
//this just queries everything
try(CloseableIterator it = store.query(QueryBuilder.newBuilder().build())){
  while(it.hasNext()){
    //retrieve results matching query criteria and do something
    it.next();
  }
}
```
See the [Developer Guide](https://locationtech.github.io/geowave/latest/devguide.html#programmatic-api-examples) for more detailed programmatic API examples.

### Command-line Access
Alternatively, you can always use the GeoWave command-line to access the same capabilities:
```bash
# Add a new RocksDB data store called myStore in the current directory
geowave store add -t rocksdb myStore

# Add a spatial index called spatialIdx to myStore
geowave index add -t spatial myStore spatialIdx

# Ingest a shapefile with states into myStore in the spatialIdx index
geowave ingest localToGW -f geotools-vector states.shp myStore spatialIdx

# Query all the data in the states type from myStore
geowave vector query "SELECT * FROM myStore.states"
```
See the [CLI documentation](https://locationtech.github.io/geowave/latest/commands.html) for a full list of commands and their options.

## Some GeoWave rendered eye candy

<p align="center">
	<a href="https://raw.githubusercontent.com/locationtech/geowave/master/docs/content/overview/images/geolife-density-13.jpg" target="_blank"><img align="center" src="https://raw.githubusercontent.com/locationtech/geowave/master/docs/content/overview/images/geolife-density-13-thumb.jpg" alt="Geolife data at city scale"></a><br/><br/>
	<a href="https://raw.githubusercontent.com/locationtech/geowave/master/docs/content/overview/images/geolife-density-17.jpg" target="_blank"><img align="center" src="https://raw.githubusercontent.com/locationtech/geowave/master/docs/content/overview/images/geolife-density-17-thumb.jpg" alt="Geolife data at block scale"></a><br/><br/>
	<a href="https://raw.githubusercontent.com/locationtech/geowave/master/docs/content/overview/images/osmgpx.jpg" target="_blank"><img align="center" src="https://raw.githubusercontent.com/locationtech/geowave/master/docs/content/overview/images/osmgpx-thumb.jpg" alt="OSM GPX tracks at country scale"></a><br/>
	
</p>

See [Example Screenshots](https://locationtech.github.io/geowave/latest/overview.html#example-screenshots) in the GeoWave Overview for more information.

## Supported versions of core libraries

We work to maintain a N and N-1 tested and supported version pace for the following core libraries.

| GeoServer | GeoTools | Accumulo | HBase | Hadoop | Java |
|:---------:|:--------:|:--------:|:-----:|:------:|:----:|
| 2.19.x | 25.x | [1.9.x,2.0.x] | 2.4.x | [2.10.x,3.1.x] | Java8 |

* [Apache Maven](http://maven.apache.org/) 3.x or greater is required for building



## Origin

GeoWave was originally developed at the National Geospatial-Intelligence Agency (NGA) in collaboration with [RadiantBlue Technologies](http://www.radiantblue.com/) (now [Maxar Technologies](https://www.maxar.com/)) and [Booz Allen Hamilton](http://www.boozallen.com/). The software use, modification, and distribution rights are stipulated within the [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) license.  


## Contributing

All pull request contributions to this project will be released under the Apache 2.0 or compatible license. Contributions are welcome and guidelines are provided [here](https://locationtech.github.io/geowave/latest/devguide.html#how-to-contribute).

Did I mention our [documentation!](https://locationtech.github.io/geowave/latest/index.html)


================================================
FILE: analytics/api/pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<artifactId>geowave-analytic-parent</artifactId>
		<groupId>org.locationtech.geowave</groupId>
		<relativePath>../</relativePath>
		<version>2.0.2-SNAPSHOT</version>
	</parent>
	<artifactId>geowave-analytic-api</artifactId>
	<name>GeoWave Analytics API</name>
	<dependencies>
		<dependency>
			<groupId>org.locationtech.geowave</groupId>
			<artifactId>geowave-adapter-vector</artifactId>
			<version>${project.version}</version>
			<exclusions>
				<exclusion>
					<artifactId>jdk.tools</artifactId>
					<groupId>jdk.tools</groupId>
				</exclusion>
				<exclusion>
					<artifactId>mockito-all</artifactId>
					<groupId>org.mockito</groupId>
				</exclusion>
				<exclusion>
					<groupId>javax.servlet</groupId>
					<artifactId>*</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.geoserver</groupId>
					<artifactId>gs-wms</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.geoserver</groupId>
					<artifactId>gs-main</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.locationtech.geowave</groupId>
			<artifactId>geowave-adapter-raster</artifactId>
			<version>${project.version}</version>
			<exclusions>
				<exclusion>
					<artifactId>jdk.tools</artifactId>
					<groupId>jdk.tools</groupId>
				</exclusion>
				<exclusion>
					<artifactId>mockito-all</artifactId>
					<groupId>org.mockito</groupId>
				</exclusion>
				<exclusion>
					<groupId>javax.servlet</groupId>
					<artifactId>*</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.geoserver</groupId>
					<artifactId>gs-wms</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.geoserver</groupId>
					<artifactId>gs-main</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>
</project>


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/AdapterWithObjectWritable.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import org.apache.hadoop.io.ObjectWritable;
import org.apache.hadoop.io.Writable;
import org.locationtech.geowave.core.index.ByteArray;
import org.locationtech.geowave.mapreduce.HadoopWritableSerializationTool;

public class AdapterWithObjectWritable implements Writable {
  private ObjectWritable objectWritable;
  private Short internalAdapterId = null;
  private ByteArray dataId;

  public void setObject(final ObjectWritable data) {
    objectWritable = data;
  }

  public ObjectWritable getObjectWritable() {
    return objectWritable;
  }

  protected void setObjectWritable(final ObjectWritable objectWritable) {
    this.objectWritable = objectWritable;
  }

  public Short getInternalAdapterId() {
    return internalAdapterId;
  }

  public void setInternalAdapterId(final short internalAdapterId) {
    this.internalAdapterId = internalAdapterId;
  }

  public ByteArray getDataId() {
    return dataId;
  }

  public void setDataId(final ByteArray dataId) {
    this.dataId = dataId;
  }

  @Override
  public void readFields(final DataInput input) throws IOException {
    internalAdapterId = input.readShort();
    final int dataIdLength = input.readUnsignedShort();
    if (dataIdLength > 0) {
      final byte[] dataIdBinary = new byte[dataIdLength];
      input.readFully(dataIdBinary);
      dataId = new ByteArray(dataIdBinary);
    }

    if (objectWritable == null) {
      objectWritable = new ObjectWritable();
    }
    objectWritable.readFields(input);
  }

  @Override
  public void write(final DataOutput output) throws IOException {
    output.writeShort(internalAdapterId);
    if (dataId != null) {
      final byte[] dataIdBinary = dataId.getBytes();
      output.writeShort((short) dataIdBinary.length);
      output.write(dataIdBinary);
    } else {
      output.writeShort(0);
    }

    objectWritable.write(output);
  }

  public static void fillWritableWithAdapter(
      final HadoopWritableSerializationTool serializationTool,
      final AdapterWithObjectWritable writableToFill,
      final short internalAdapterId,
      final ByteArray dataId,
      final Object entry) {
    writableToFill.setInternalAdapterId(internalAdapterId);
    writableToFill.setDataId(dataId);
    writableToFill.setObject(serializationTool.toWritable(internalAdapterId, entry));
  }

  public static Object fromWritableWithAdapter(
      final HadoopWritableSerializationTool serializationTool,
      final AdapterWithObjectWritable writableToExtract) {
    final short internalAdapterId = writableToExtract.getInternalAdapterId();
    final Object innerObj = writableToExtract.objectWritable.get();
    return (innerObj instanceof Writable)
        ? serializationTool.getHadoopWritableSerializerForAdapter(internalAdapterId).fromWritable(
            (Writable) innerObj)
        : innerObj;
  }

  @Override
  public String toString() {
    return "AdapterWithObjectWritable [ internalAdapterId="
        + internalAdapterId
        + ", dataId="
        + dataId.getString()
        + "]";
  }
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/AnalyticFeature.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import java.util.List;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.feature.type.BasicFeatureTypes;
import org.geotools.referencing.CRS;
import org.locationtech.geowave.adapter.vector.FeatureDataAdapter;
import org.locationtech.geowave.core.geotime.index.SpatialDimensionalityTypeProvider;
import org.locationtech.geowave.core.geotime.index.SpatialOptions;
import org.locationtech.jts.geom.Geometry;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.feature.type.AttributeDescriptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * A set of utilities to describe and create a simple feature for use within the set of analytics.
 */
public class AnalyticFeature {
  static final Logger LOGGER = LoggerFactory.getLogger(AnalyticFeature.class);

  public static SimpleFeature createGeometryFeature(
      final SimpleFeatureType featureType,
      final String batchId,
      final String dataId,
      final String name,
      final String groupID,
      final double weight,
      final Geometry geometry,
      final String[] extraDimensionNames,
      final double[] extraDimensions,
      final int zoomLevel,
      final int iteration,
      final long count) {
    if (extraDimensionNames.length != extraDimensions.length) {
      LOGGER.error(
          "The number of extraDimension names does not equal the number of extraDimensions");
      throw new IllegalArgumentException(
          "The number of extraDimension names does not equal the number of extraDimensions");
    }
    final List<AttributeDescriptor> descriptors = featureType.getAttributeDescriptors();
    final Object[] defaults = new Object[descriptors.size()];
    int p = 0;
    for (final AttributeDescriptor descriptor : descriptors) {
      defaults[p++] = descriptor.getDefaultValue();
    }

    final SimpleFeature newFeature = SimpleFeatureBuilder.build(featureType, defaults, dataId);
    newFeature.setAttribute(ClusterFeatureAttribute.NAME.attrName(), name);
    newFeature.setAttribute(ClusterFeatureAttribute.GROUP_ID.attrName(), groupID);
    newFeature.setAttribute(ClusterFeatureAttribute.ITERATION.attrName(), iteration);
    newFeature.setAttribute(ClusterFeatureAttribute.WEIGHT.attrName(), weight);
    newFeature.setAttribute(ClusterFeatureAttribute.BATCH_ID.attrName(), batchId);
    newFeature.setAttribute(ClusterFeatureAttribute.COUNT.attrName(), count);
    newFeature.setAttribute(ClusterFeatureAttribute.GEOMETRY.attrName(), geometry);
    newFeature.setAttribute(ClusterFeatureAttribute.ZOOM_LEVEL.attrName(), zoomLevel);
    int i = 0;
    for (final String dimName : extraDimensionNames) {
      newFeature.setAttribute(dimName, new Double(extraDimensions[i++]));
    }
    return newFeature;
  }

  public static FeatureDataAdapter createFeatureAdapter(
      final String centroidDataTypeId,
      final String[] extraNumericDimensions,
      final String namespaceURI,
      final String SRID,
      final ClusterFeatureAttribute[] attributes,
      final Class<? extends Geometry> geometryClass) {
    try {
      final SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
      builder.setName(centroidDataTypeId);
      builder.setNamespaceURI(
          namespaceURI == null ? BasicFeatureTypes.DEFAULT_NAMESPACE : namespaceURI);
      builder.setSRS(SRID);
      builder.setCRS(CRS.decode(SRID, true));

      for (final ClusterFeatureAttribute attrVal : attributes) {
        builder.add(
            attrVal.name,
            attrVal.equals(ClusterFeatureAttribute.GEOMETRY) ? geometryClass : attrVal.type);
      }
      for (final String extraDim : extraNumericDimensions) {
        builder.add(extraDim, Double.class);
      }
      final FeatureDataAdapter adapter = new FeatureDataAdapter(builder.buildFeatureType());
      return adapter;
    } catch (final Exception e) {
      LOGGER.warn("Schema Creation Error.  Hint: Check the SRID.", e);
    }

    return null;
  }

  public static FeatureDataAdapter createGeometryFeatureAdapter(
      final String centroidDataTypeId,
      final String[] extraNumericDimensions,
      final String namespaceURI,
      final String SRID) {
    return createFeatureAdapter(
        centroidDataTypeId,
        extraNumericDimensions,
        namespaceURI,
        SRID,
        ClusterFeatureAttribute.values(),
        Geometry.class);
  }

  public static enum ClusterFeatureAttribute {
    NAME("name", String.class),
    GROUP_ID("groupID", String.class),
    ITERATION("iteration", Integer.class),
    GEOMETRY("geometry", Geometry.class),
    WEIGHT("weight", Double.class),
    COUNT("count", Long.class),
    ZOOM_LEVEL("level", Integer.class),
    BATCH_ID("batchID", String.class);

    private final String name;
    private final Class<?> type;

    ClusterFeatureAttribute(final String name, final Class<?> type) {
      this.name = name;
      this.type = type;
    }

    public String attrName() {
      return name;
    }

    public Class<?> getType() {
      return type;
    }
  }
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/AnalyticItemWrapper.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import org.locationtech.jts.geom.Geometry;

/**
 * Wrap an object used to by analytical processes. This class provides generic wrapper to specific
 * functions associated with analytic processes such as managing centroids.
 *
 * @param <T>
 */
public interface AnalyticItemWrapper<T> {
  public String getID();

  public T getWrappedItem();

  public long getAssociationCount();

  public void resetAssociatonCount();

  public void incrementAssociationCount(long increment);

  public int getIterationID();

  public String getName();

  public String[] getExtraDimensions();

  public double[] getDimensionValues();

  public Geometry getGeometry();

  public double getCost();

  public void setCost(double cost);

  public String getGroupID();

  public void setGroupID(String groupID);

  public void setZoomLevel(int level);

  public int getZoomLevel();

  public void setBatchID(String batchID);

  public String getBatchID();
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/AnalyticItemWrapperFactory.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import java.io.IOException;
import org.apache.hadoop.mapreduce.JobContext;
import org.locationtech.jts.geom.Coordinate;
import org.slf4j.Logger;

/**
 * Create an analytic item wrapper for the provided item.
 *
 * @param <T> the type of the item to wrap
 */
public interface AnalyticItemWrapperFactory<T> {
  /**
   * Wrap the item.
   */
  public AnalyticItemWrapper<T> create(T item);

  /**
   * Creates a new item based on the old item with new coordinates and dimension values
   */
  public AnalyticItemWrapper<T> createNextItem(
      final T feature,
      final String groupID,
      final Coordinate coordinate,
      final String[] extraNames,
      final double[] extraValues);

  public void initialize(final JobContext context, Class<?> scope, Logger logger)
      throws IOException;
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/AnalyticPersistableRegistry.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import org.locationtech.geowave.analytic.clustering.DistortionGroupManagement.BatchIdFilter;
import org.locationtech.geowave.analytic.clustering.DistortionGroupManagement.BatchIdQuery;
import org.locationtech.geowave.analytic.clustering.DistortionGroupManagement.DistortionDataAdapter;
import org.locationtech.geowave.analytic.store.PersistableStore;
import org.locationtech.geowave.core.index.persist.InternalPersistableRegistry;
import org.locationtech.geowave.core.index.persist.PersistableRegistrySpi;

public class AnalyticPersistableRegistry implements
    PersistableRegistrySpi,
    InternalPersistableRegistry {
  @Override
  public PersistableIdAndConstructor[] getSupportedPersistables() {
    return new PersistableIdAndConstructor[] {
        new PersistableIdAndConstructor((short) 700, GeoObjectDimensionValues::new),
        new PersistableIdAndConstructor((short) 701, BatchIdFilter::new),
        new PersistableIdAndConstructor((short) 702, DistortionDataAdapter::new),
        new PersistableIdAndConstructor((short) 703, PersistableStore::new),
        new PersistableIdAndConstructor((short) 704, BatchIdQuery::new)};
  }
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/GeoObjectDimensionValues.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import java.nio.ByteBuffer;
import org.locationtech.geowave.core.index.VarintUtils;
import org.locationtech.geowave.core.index.persist.Persistable;

/**
 * Extracted numeric dimension values associated with an item or a sum of dimension values from
 * multiple items.
 */
public class GeoObjectDimensionValues implements Persistable {
  public double x = 0.0;
  public double y = 0.0;
  public double z = 0.0;
  public double[] values = new double[0];
  public double distance = 0.0;
  public long count = 0;

  public GeoObjectDimensionValues(final int extraValuesCount) {
    values = new double[extraValuesCount];
  }

  public GeoObjectDimensionValues() {}

  public GeoObjectDimensionValues(
      final double x,
      final double y,
      final double z,
      final double[] extraDimensions,
      final double distance) {
    super();
    this.x = x;
    this.y = y;
    this.z = z;
    values = extraDimensions;
    this.distance = distance;
    count = 1;
  }

  public void add(final GeoObjectDimensionValues association) {
    x += association.x;
    y += association.y;
    z += association.z;
    for (int i = 0; i < values.length; i++) {
      values[i] += association.values[i];
    }
    distance += association.distance;
    count += association.count;
  }

  public void set(
      final double x,
      final double y,
      final double z,
      final double[] extraDimensions,
      final double distance) {
    this.x = x;
    this.y = y;
    this.z = z;
    values = extraDimensions;
    this.distance = distance;
    count = 1;
  }

  public long getCount() {
    return count;
  }

  public void setCount(final long count) {
    this.count = count;
  }

  public double getX() {
    return x;
  }

  public void setX(final double x) {
    this.x = x;
  }

  public double getY() {
    return y;
  }

  public void setY(final double y) {
    this.y = y;
  }

  public double getZ() {
    return z;
  }

  public void setZ(final double z) {
    this.z = z;
  }

  public double getDistance() {
    return distance;
  }

  public void setDistance(final double distance) {
    this.distance = distance;
  }

  @Override
  public byte[] toBinary() {
    final ByteBuffer b =
        ByteBuffer.allocate(
            ((4 + values.length) * 8)
                + VarintUtils.unsignedIntByteLength(values.length)
                + VarintUtils.unsignedLongByteLength(count));
    VarintUtils.writeUnsignedLong(count, b);
    b.putDouble(x);
    b.putDouble(y);
    b.putDouble(z);
    b.putDouble(distance);
    VarintUtils.writeUnsignedInt(values.length, b);
    for (final double value : values) {
      b.putDouble(value);
    }
    return b.array();
  }

  @Override
  public void fromBinary(final byte[] bytes) {
    final ByteBuffer b = ByteBuffer.wrap(bytes);
    count = VarintUtils.readUnsignedLong(b);
    x = b.getDouble();
    y = b.getDouble();
    z = b.getDouble();
    distance = b.getDouble();
    int i = VarintUtils.readUnsignedInt(b);
    values = new double[i];
    for (; i > 0; i--) {
      values[i - 1] = b.getDouble();
    }
  }
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/GeometryCalculations.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import java.util.LinkedList;
import java.util.List;
import javax.measure.Unit;
import javax.measure.quantity.Length;
import org.geotools.geometry.jts.ReferencedEnvelope;
import org.geotools.referencing.GeodeticCalculator;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.PrecisionModel;
import org.opengis.geometry.DirectPosition;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.TransformException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import tech.units.indriya.unit.Units;

public class GeometryCalculations {
  private static final Logger LOGGER = LoggerFactory.getLogger(GeometryCalculations.class);

  final GeometryFactory factory;
  final CoordinateReferenceSystem crs;
  final double xMin, yMin, xMax, yMax;

  public GeometryCalculations(final CoordinateReferenceSystem crs) {
    factory = new GeometryFactory(new PrecisionModel(), 4326);
    this.crs = crs;
    xMin = crs.getCoordinateSystem().getAxis(0).getMinimumValue();
    xMax = crs.getCoordinateSystem().getAxis(0).getMaximumValue();
    yMin = crs.getCoordinateSystem().getAxis(1).getMinimumValue();
    yMax = crs.getCoordinateSystem().getAxis(1).getMaximumValue();
  }

  /**
   * Build geometries with the provided coordinate at the center. The width of the geometry is twice
   * the distance provided. More than one geometry is return when passing the date line.
   *
   * @param distances [x,y] = [longitude, latitude]
   * @param unit
   * @param coordinate
   * @return the geometries that were built
   */
  public List<Geometry> buildSurroundingGeometries(
      final double[] distances,
      final Unit<Length> unit,
      final Coordinate coordinate) {
    final List<Geometry> geos = new LinkedList<>();
    final GeodeticCalculator geoCalc = new GeodeticCalculator();
    geoCalc.setStartingGeographicPoint(coordinate.x, coordinate.y);
    try {
      geoCalc.setDirection(0, unit.getConverterTo(Units.METRE).convert(distances[1]));
      final DirectPosition north = geoCalc.getDestinationPosition();
      geoCalc.setDirection(90, unit.getConverterTo(Units.METRE).convert(distances[0]));
      final DirectPosition east = geoCalc.getDestinationPosition();
      geoCalc.setStartingGeographicPoint(coordinate.x, coordinate.y);
      geoCalc.setDirection(-90, unit.getConverterTo(Units.METRE).convert(distances[0]));
      final DirectPosition west = geoCalc.getDestinationPosition();
      geoCalc.setDirection(180, unit.getConverterTo(Units.METRE).convert(distances[1]));
      final DirectPosition south = geoCalc.getDestinationPosition();

      final double x1 = west.getOrdinate(0);
      final double x2 = east.getOrdinate(0);
      final double y1 = north.getOrdinate(1);
      final double y2 = south.getOrdinate(1);

      handleBoundaries(geos, coordinate, x1, x2, y1, y2);
      return geos;
    } catch (final TransformException ex) {
      LOGGER.error("Unable to build geometry", ex);
    }

    return null;
  }

  private void handleBoundaries(
      final List<Geometry> geos,
      final Coordinate coordinate,
      final double x1,
      final double x2,
      final double y1,
      final double y2) {

    if (Math.signum(x1) > Math.signum(coordinate.x)) {
      ReferencedEnvelope bounds =
          new ReferencedEnvelope(x1, xMax, Math.max(y1, yMin), Math.min(y2, yMax), crs);
      geos.add(factory.toGeometry(bounds));
      bounds = new ReferencedEnvelope(xMin, x2, Math.max(y1, yMin), Math.min(y2, yMax), crs);
      geos.add(factory.toGeometry(bounds));
    } else if (Math.signum(x2) < Math.signum(coordinate.x)) {
      ReferencedEnvelope bounds =
          new ReferencedEnvelope(xMin, x2, Math.max(y1, yMin), Math.min(y2, yMax), crs);
      geos.add(factory.toGeometry(bounds));
      bounds = new ReferencedEnvelope(x1, xMax, Math.max(y1, yMin), Math.min(y2, yMax), crs);
      geos.add(factory.toGeometry(bounds));
    } else {
      final ReferencedEnvelope bounds =
          new ReferencedEnvelope(x1, x2, Math.max(y1, yMin), Math.min(y2, yMax), crs);
      geos.add(factory.toGeometry(bounds));
    }
  }
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/GeometryDataSetGenerator.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.UUID;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.commons.math3.geometry.euclidean.twod.Vector2D;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
/** Generate clusters of geometries. */
import org.geotools.referencing.CRS;
import org.locationtech.geowave.adapter.vector.FeatureDataAdapter;
import org.locationtech.geowave.analytic.distance.CoordinateCircleDistanceFn;
import org.locationtech.geowave.analytic.distance.DistanceFn;
import org.locationtech.geowave.core.geotime.index.SpatialDimensionalityTypeProvider;
import org.locationtech.geowave.core.geotime.index.SpatialOptions;
import org.locationtech.geowave.core.store.api.DataStore;
import org.locationtech.geowave.core.store.api.Index;
import org.locationtech.geowave.core.store.api.Writer;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.LineString;
import org.locationtech.jts.geom.Point;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.type.AttributeDescriptor;
import org.opengis.feature.type.GeometryType;
import org.opengis.referencing.FactoryException;
import org.opengis.referencing.cs.CoordinateSystem;
import org.opengis.referencing.cs.CoordinateSystemAxis;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/** Generate clusters of geometries. */
public class GeometryDataSetGenerator {
  static final Logger LOGGER = LoggerFactory.getLogger(GeometryDataSetGenerator.class);
  private final Random rand = new Random();
  private final GeometryFactory geoFactory = new GeometryFactory();
  private final DistanceFn<SimpleFeature> distanceFunction;
  private final SimpleFeatureBuilder builder;
  // coordinate system boundaries
  private SimpleFeature minFeature;
  private double[] minAxis;
  private double[] maxAxis;
  private CoordinateSystem coordSystem;
  private boolean includePolygons = true;

  public GeometryDataSetGenerator(
      final DistanceFn<SimpleFeature> distanceFunction,
      final SimpleFeatureBuilder builder) {
    super();
    this.distanceFunction = distanceFunction;
    this.builder = builder;
    init();
  }

  public boolean isIncludePolygons() {
    return includePolygons;
  }

  public void setIncludePolygons(final boolean includePolygons) {
    this.includePolygons = includePolygons;
  }

  public SimpleFeature getCorner() {
    return minFeature;
  }

  public Geometry getBoundingRegion() {
    final int[] adder = {1, 2, -1, 2};
    int num = 0;
    int addCnt = 0;
    final int dims = coordSystem.getDimension();
    final int coords = (int) Math.pow(dims, 2);

    final Coordinate[] coordinates = new Coordinate[coords + 1];
    for (int i = 0; i < coords; i++) {
      coordinates[i] = new Coordinate();
      for (int j = 0; j < dims; j++) {
        final boolean isMin = ((num >> j) % 2) == 0;
        coordinates[i].setOrdinate(j, isMin ? minAxis[j] : maxAxis[j]);
      }
      num += adder[addCnt];
      addCnt = (addCnt + 1) % 4;
    }
    coordinates[coords] = coordinates[0];
    return geoFactory.createPolygon(coordinates);
  }

  /**
   * Calculate the range for the given bounds
   *
   * @param factor
   * @param minAxis
   * @param maxAxis
   * @return
   */
  private double[] createRange(
      final double factor,
      final double[] minAxis,
      final double[] maxAxis) {
    final double[] range = new double[minAxis.length];
    for (int i = 0; i < minAxis.length; i++) {
      range[i] = (maxAxis[i] - minAxis[i]) * factor;
    }
    return range;
  }

  /**
   * Pick a random grid cell and supply the boundary. The grid is determined by the parameter,which
   * provides a percentage of distance over the total range for each cell.
   *
   * @param minCenterDistanceFactor
   * @return
   */
  private Pair<double[], double[]> gridCellBounds(
      final double minCenterDistanceFactor,
      final double[] minAxis,
      final double[] maxAxis) {
    final double[] range = createRange(1.0, minAxis, maxAxis);
    final double[] min = new double[range.length];
    final double[] max = new double[range.length];
    for (int i = 0; i < range.length; i++) {
      // HP Fortify "Insecure Randomness" false positive
      // This random number is not used for any purpose
      // related to security or cryptography
      min[i] =
          Math.max(
              minAxis[i]
                  + (minCenterDistanceFactor
                      * (rand.nextInt(Integer.MAX_VALUE) % (range[i] / minCenterDistanceFactor))),
              minAxis[i]);
      max[i] = Math.min(min[i] + (minCenterDistanceFactor * range[i]), maxAxis[i]);
    }
    return Pair.of(min, max);
  }

  public void writeToGeoWave(final DataStore dataStore, final List<SimpleFeature> featureData)
      throws IOException {
    final Index index =
        SpatialDimensionalityTypeProvider.createIndexFromOptions(new SpatialOptions());
    final FeatureDataAdapter adapter = new FeatureDataAdapter(featureData.get(0).getFeatureType());
    final SimpleFeatureBuilder featureBuilder =
        new SimpleFeatureBuilder(featureData.get(0).getFeatureType());

    LOGGER.info(
        "Writing " + featureData.size() + " records to " + adapter.getFeatureType().getTypeName());
    dataStore.addType(adapter, index);
    try (Writer writer = dataStore.createWriter(adapter.getTypeName())) {
      for (final SimpleFeature feature : featureData) {
        writer.write(feature);
        featureBuilder.reset();
      }
    }
  }

  public List<SimpleFeature> generatePointSet(
      final double minCenterDistanceFactor,
      final double outlierFactor,
      final int numberOfCenters,
      final int minSetSize) {
    return this.generatePointSet(
        minCenterDistanceFactor,
        outlierFactor,
        numberOfCenters,
        minSetSize,
        minAxis,
        maxAxis);
  }

  public List<SimpleFeature> generatePointSet(
      final LineString line,
      final double distanceFactor,
      final int points) {
    final List<SimpleFeature> pointSet = new ArrayList<>();
    for (final Point point : CurvedDensityDataGeneratorTool.generatePoints(
        line,
        distanceFactor,
        points)) {
      pointSet.add(createFeatureWithGeometry(point));
    }
    return pointSet;
  }

  public List<SimpleFeature> generatePointSet(
      final double minCenterDistanceFactor,
      final double outlierFactor,
      final int numberOfCenters,
      final int minSetSize,
      final double[] minAxis,
      final double[] maxAxis) {

    final List<SimpleFeature> pointSet = new ArrayList<>();
    final List<double[]> minForCenter = new ArrayList<>();
    final List<double[]> maxForCenter = new ArrayList<>();
    final double[] range = createRange(minCenterDistanceFactor, minAxis, maxAxis);
    if (numberOfCenters >= minSetSize) {
      LOGGER.error("The number of centers passed much be less than the minimum set size");
      throw new IllegalArgumentException(
          "The number of centers passed much be less than the minimum set size");
    }

    final double minDistance = computeMinDistance(minCenterDistanceFactor, minAxis, maxAxis);

    /** Pick the initial centers which have minimum distance from each other. */
    while (pointSet.size() < numberOfCenters) {

      final Pair<double[], double[]> axis =
          gridCellBounds(minCenterDistanceFactor, minAxis, maxAxis);

      final SimpleFeature nextFeature = createNewFeature(axis.getLeft(), axis.getRight());
      if (isFarEnough(nextFeature, pointSet, minDistance)) {
        pointSet.add(nextFeature);
      }
    }

    /**
     * Calculate the boundaries around each center point to place additional points, thus creating
     * clusters
     */
    for (final SimpleFeature center : pointSet) {
      final double[] centerMinAxis = new double[coordSystem.getDimension()];
      final double[] centerMaxAxis = new double[coordSystem.getDimension()];
      final Geometry geo = (Geometry) center.getDefaultGeometry();
      final Coordinate centerCoord = geo.getCentroid().getCoordinate();
      for (int i = 0; i < centerMinAxis.length; i++) {
        centerMinAxis[i] = centerCoord.getOrdinate(i) - (range[i] / 2.0);
        centerMaxAxis[i] = centerCoord.getOrdinate(i) + (range[i] / 2.0);
      }
      minForCenter.add(centerMinAxis);
      maxForCenter.add(centerMaxAxis);
    }

    /*
     * Pick a random center point and add a new geometry with the bounding range around that point.
     */
    final int clusterdItemsCount = (int) Math.ceil((minSetSize) * (1.0 - outlierFactor));
    while (pointSet.size() < clusterdItemsCount) {
      // HP Fortify "Insecure Randomness" false positive
      // This random number is not used for any purpose
      // related to security or cryptography
      final int centerPos = rand.nextInt(Integer.MAX_VALUE) % minForCenter.size();

      pointSet.add(createNewFeature(minForCenter.get(centerPos), maxForCenter.get(centerPos)));
    }

    /** Add random points as potential outliers (no guarantees) */
    while (pointSet.size() < minSetSize) {
      pointSet.add(createNewFeature(minAxis, maxAxis));
    }
    return pointSet;
  }

  public List<SimpleFeature> addRandomNoisePoints(
      final List<SimpleFeature> pointSet,
      final int minSetSize,
      final double[] minAxis,
      final double[] maxAxis) {
    while (pointSet.size() < minSetSize) {
      pointSet.add(createNewFeature(minAxis, maxAxis));
    }
    return pointSet;
  }

  private void init() {
    coordSystem = builder.getFeatureType().getCoordinateReferenceSystem().getCoordinateSystem();

    minAxis = new double[coordSystem.getDimension()];
    maxAxis = new double[coordSystem.getDimension()];
    for (int i = 0; i < coordSystem.getDimension(); i++) {
      final CoordinateSystemAxis axis = coordSystem.getAxis(i);
      minAxis[i] = axis.getMinimumValue();
      maxAxis[i] = axis.getMaximumValue();
    }
    final int dims = coordSystem.getDimension();

    final Coordinate coordinate = new Coordinate();
    for (int i = 0; i < dims; i++) {
      coordinate.setOrdinate(i, minAxis[i]);
    }
    minFeature = createFeatureWithGeometry(geoFactory.createPoint(coordinate));
  }

  private boolean isFarEnough(
      final SimpleFeature feature,
      final List<SimpleFeature> set,
      final double minDistance) {
    for (final SimpleFeature setItem : set) {
      if (distanceFunction.measure(feature, setItem) < minDistance) {
        return false;
      }
    }
    return true;
  }

  /**
   * Find the distance maximum distance of the entire space and multiply that by the distance factor
   * to determine a minimum distance each initial center point occurs from each other.
   *
   * @param minCenterDistanceFactor
   * @return
   */
  private double computeMinDistance(
      final double minCenterDistanceFactor,
      final double[] minAxis,
      final double[] maxAxis) {
    assert minCenterDistanceFactor < 0.75;

    final int dims = coordSystem.getDimension();

    Coordinate coordinate = new Coordinate();
    for (int i = 0; i < dims; i++) {
      coordinate.setOrdinate(i, minAxis[i]);
    }
    final SimpleFeature minFeature = createFeatureWithGeometry(geoFactory.createPoint(coordinate));

    coordinate = new Coordinate();
    for (int i = 0; i < dims; i++) {
      coordinate.setOrdinate(i, maxAxis[i]);
    }

    final SimpleFeature maxFeature = createFeatureWithGeometry(geoFactory.createPoint(coordinate));

    return minCenterDistanceFactor * distanceFunction.measure(minFeature, maxFeature);
  }

  private SimpleFeature createNewFeature(final double[] minAxis, final double[] maxAxis) {

    final int dims = coordSystem.getDimension();

    // HP Fortify "Insecure Randomness" false positive
    // This random number is not used for any purpose
    // related to security or cryptography
    final int shapeSize = includePolygons ? (rand.nextInt(Integer.MAX_VALUE) % 5) + 1 : 1;
    final Coordinate[] shape = new Coordinate[shapeSize > 2 ? shapeSize + 1 : shapeSize];
    final double[] constrainedMaxAxis = Arrays.copyOf(maxAxis, maxAxis.length);
    final double[] constrainedMinAxis = Arrays.copyOf(minAxis, minAxis.length);
    for (int s = 0; s < shapeSize; s++) {
      final Coordinate coordinate = new Coordinate();
      for (int i = 0; i < dims; i++) {
        // HP Fortify "Insecure Randomness" false positive
        // This random number is not used for any purpose
        // related to security or cryptography
        coordinate.setOrdinate(
            i,
            constrainedMinAxis[i]
                + (rand.nextDouble() * (constrainedMaxAxis[i] - constrainedMinAxis[i])));
      }
      shape[s] = coordinate;
      if (s == 0) {
        constrain(coordinate, constrainedMaxAxis, constrainedMinAxis);
      }
    }
    if (shapeSize > 2) {
      shape[shapeSize] = shape[0];
      return createFeatureWithGeometry(geoFactory.createLinearRing(shape).convexHull());
    } else if (shapeSize == 2) {
      return createFeatureWithGeometry(geoFactory.createLineString(shape));
    } else {
      return createFeatureWithGeometry(geoFactory.createPoint(shape[0]));
    }
  }

  public GeometryFactory getFactory() {
    return geoFactory;
  }

  /**
   * Change the constrain min and max to center around the coordinate to keep the polygons tight.
   *
   * @param coordinate
   * @param constrainedMaxAxis
   * @param constrainedMinAxis
   */
  private void constrain(
      final Coordinate coordinate,
      final double[] constrainedMaxAxis,
      final double[] constrainedMinAxis) {
    for (int i = 0; i < constrainedMaxAxis.length; i++) {
      final double range = (constrainedMaxAxis[i] - constrainedMinAxis[i]) * 0.001;
      constrainedMaxAxis[i] = Math.min(coordinate.getOrdinate(i) + range, constrainedMaxAxis[i]);
      constrainedMinAxis[i] = Math.max(coordinate.getOrdinate(i) - range, constrainedMinAxis[i]);
    }
  }

  private SimpleFeature createFeatureWithGeometry(final Geometry geometry) {
    final Object[] values = new Object[builder.getFeatureType().getAttributeCount()];
    for (int i = 0; i < values.length; i++) {
      final AttributeDescriptor desc = builder.getFeatureType().getDescriptor(i);
      if (desc.getType() instanceof GeometryType) {
        values[i] = geometry;
      } else {
        final Class<?> binding = desc.getType().getBinding();
        if (String.class.isAssignableFrom(binding)) {
          values[i] = UUID.randomUUID().toString();
        }
      }
    }
    return builder.buildFeature(UUID.randomUUID().toString(), values);
  }

  // public static void main(
  // final String[] args )
  // throws Exception {
  // final Options allOptions = new Options();
  // DataStoreCommandLineOptions.applyOptions(allOptions);
  // final Option typeNameOption = new Option(
  // "typename",
  // true,
  // "a name for the feature type (required)");
  // typeNameOption.setRequired(true);
  // allOptions.addOption(typeNameOption);
  // CommandLine commandLine = new BasicParser().parse(
  // allOptions,
  // args);
  //
  // final CommandLineResult<DataStoreCommandLineOptions> dataStoreOption =
  // DataStoreCommandLineOptions.parseOptions(
  // allOptions,
  // commandLine);
  // if (dataStoreOption.isCommandLineChange()) {
  // commandLine = dataStoreOption.getCommandLine();
  // }
  // else {
  // throw new ParseException(
  // "Unable to parse data store from command line");
  // }
  // final DataStore dataStore = dataStoreOption.getResult().createStore();
  // final String typeName = commandLine.getOptionValue("typename");
  // final GeometryDataSetGenerator dataGenerator = new
  // GeometryDataSetGenerator(
  // new FeatureCentroidDistanceFn(),
  // getBuilder(typeName));
  // dataGenerator.writeToGeoWave(
  // dataStore,
  // dataGenerator.generatePointSet(
  // 0.2,
  // 0.2,
  // 5,
  // 5000,
  // new double[] {
  // -100,
  // -45
  // },
  // new double[] {
  // -90,
  // -35
  // }));
  // dataGenerator.writeToGeoWave(
  // dataStore,
  // dataGenerator.generatePointSet(
  // 0.2,
  // 0.2,
  // 7,
  // 5000,
  // new double[] {
  // 0,
  // 0
  // },
  // new double[] {
  // 10,
  // 10
  // }));
  // dataGenerator.writeToGeoWave(
  // dataStore,
  // dataGenerator.addRandomNoisePoints(
  // dataGenerator.generatePointSet(
  // 0.2,
  // 0.2,
  // 6,
  // 5000,
  // new double[] {
  // 65,
  // 35
  // },
  // new double[] {
  // 75,
  // 45
  // }),
  // 6000,
  // new double[] {
  // -90,
  // -90
  // },
  // new double[] {
  // 90,
  // 90
  // }));
  // }

  private static SimpleFeatureBuilder getBuilder(final String name) throws FactoryException {
    final SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder();
    typeBuilder.setName(name);
    typeBuilder.setCRS(CRS.decode("EPSG:4326", true)); // <- Coordinate
    // reference
    // add attributes in order
    typeBuilder.add("geom", Geometry.class);
    typeBuilder.add("name", String.class);
    typeBuilder.add("count", Long.class);

    // build the type
    return new SimpleFeatureBuilder(typeBuilder.buildFeatureType());
  }

  public static class CurvedDensityDataGeneratorTool {

    private static final CoordinateCircleDistanceFn DISTANCE_FN = new CoordinateCircleDistanceFn();

    private CurvedDensityDataGeneratorTool() {}

    public static final List<Point> generatePoints(
        final LineString line,
        final double distanceFactor,
        final int points) {
      final List<Point> results = new ArrayList<>();
      Coordinate lastCoor = null;
      double distanceTotal = 0.0;
      final double[] distancesBetweenCoords = new double[line.getCoordinates().length - 1];
      int i = 0;
      for (final Coordinate coor : line.getCoordinates()) {
        if (lastCoor != null) {
          distancesBetweenCoords[i] = Math.abs(DISTANCE_FN.measure(lastCoor, coor));
          distanceTotal += distancesBetweenCoords[i++];
        }
        lastCoor = coor;
      }
      lastCoor = null;
      i = 0;
      for (final Coordinate coor : line.getCoordinates()) {
        if (lastCoor != null) {
          results.addAll(
              generatePoints(
                  line.getFactory(),
                  toVec(coor),
                  toVec(lastCoor),
                  distanceFactor,
                  (int) ((points) * (distancesBetweenCoords[i++] / distanceTotal))));
        }
        lastCoor = coor;
      }

      return results;
    }

    private static final List<Point> generatePoints(
        final GeometryFactory factory,
        final Vector2D coordinateOne,
        final Vector2D coordinateTwo,
        final double distanceFactor,
        final int points) {
      final List<Point> results = new ArrayList<>();
      final Random rand = new Random();
      final Vector2D originVec = coordinateTwo.subtract(coordinateOne);
      for (int i = 0; i < points; i++) {
        // HP Fortify "Insecure Randomness" false positive
        // This random number is not used for any purpose
        // related to security or cryptography
        final double factor = rand.nextDouble();
        final Vector2D projectionPoint = originVec.scalarMultiply(factor);
        final double direction = rand.nextGaussian() * distanceFactor;
        final Vector2D orthogonal = new Vector2D(originVec.getY(), -originVec.getX());

        results.add(
            factory.createPoint(
                toCoordinate(
                    orthogonal.scalarMultiply(direction).add(projectionPoint).add(coordinateOne))));
      }
      return results;
    }

    public static Coordinate toCoordinate(final Vector2D vec) {
      return new Coordinate(vec.getX(), vec.getY());
    }

    public static Vector2D toVec(final Coordinate coor) {
      return new Vector2D(coor.x, coor.y);
    }
  }
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/GeometryHullTool.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.commons.math.util.MathUtils;
import org.apache.commons.math3.geometry.Vector;
import org.apache.commons.math3.geometry.euclidean.twod.Euclidean2D;
import org.apache.commons.math3.geometry.euclidean.twod.Vector2D;
import org.locationtech.geowave.analytic.clustering.NeighborData;
import org.locationtech.geowave.analytic.distance.DistanceFn;
import org.locationtech.geowave.core.index.FloatCompareUtils;
import org.locationtech.jts.algorithm.CGAlgorithms;
import org.locationtech.jts.algorithm.ConvexHull;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.Polygon;
import org.locationtech.jts.operation.union.UnaryUnionOp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/** Set of algorithms to mere hulls and increase the gradient of convexity over hulls. */
public class GeometryHullTool {
  protected static final Logger LOGGER = LoggerFactory.getLogger(GeometryHullTool.class);

  DistanceFn<Coordinate> distanceFnForCoordinate;
  double concaveThreshold = 1.8;

  public void connect(final List<Geometry> geometries) {}

  public DistanceFn<Coordinate> getDistanceFnForCoordinate() {
    return distanceFnForCoordinate;
  }

  public void setDistanceFnForCoordinate(final DistanceFn<Coordinate> distanceFnForCoordinate) {
    this.distanceFnForCoordinate = distanceFnForCoordinate;
  }

  protected double getConcaveThreshold() {
    return concaveThreshold;
  }

  /*
   * Set the threshold for the concave algorithm
   */
  protected void setConcaveThreshold(final double concaveThreshold) {
    this.concaveThreshold = concaveThreshold;
  }

  protected static class Edge implements Comparable<Edge> {
    Coordinate start;
    Coordinate end;
    double distance;
    Edge next, last;
    private TreeSet<NeighborData<Coordinate>> points = null;

    public Edge(final Coordinate start, final Coordinate end, final double distance) {
      super();
      this.start = start;
      this.end = end;
      this.distance = distance;
    }

    public TreeSet<NeighborData<Coordinate>> getPoints() {
      if (points == null) {
        points = new TreeSet<>();
      }
      return points;
    }

    @Override
    public int compareTo(final Edge edge) {
      return (distance - edge.distance) > 0 ? 1 : -1;
    }

    @Override
    public int hashCode() {
      final int prime = 31;
      int result = 1;
      result = (prime * result) + ((end == null) ? 0 : end.hashCode());
      result = (prime * result) + ((start == null) ? 0 : start.hashCode());
      return result;
    }

    public void connectLast(final Edge last) {
      this.last = last;
      last.next = this;
    }

    @Override
    public boolean equals(final Object obj) {
      if (this == obj) {
        return true;
      }
      if (obj == null) {
        return false;
      }
      if (getClass() != obj.getClass()) {
        return false;
      }
      final Edge other = (Edge) obj;
      if (end == null) {
        if (other.end != null) {
          return false;
        }
      } else if (!end.equals(other.end)) {
        return false;
      }
      if (start == null) {
        if (other.start != null) {
          return false;
        }
      } else if (!start.equals(other.start)) {
        return false;
      }
      return true;
    }

    @Override
    public String toString() {
      return "Edge [start=" + start + ", end=" + end + ", distance=" + distance + "]";
    }
  }

  private Edge createEdgeWithSideEffects(
      final Coordinate start,
      final Coordinate end,
      final Set<Coordinate> innerPoints,
      final TreeSet<Edge> edges) {
    final Edge newEdge = new Edge(start, end, distanceFnForCoordinate.measure(start, end));
    innerPoints.remove(newEdge.start);
    innerPoints.remove(newEdge.end);
    edges.add(newEdge);
    return newEdge;
  }

  /*
   * Generate a concave hull, if possible, given a geometry and a set of additional points.
   *
   * @param fast expedite processing allowing for some outliers.
   */

  public Geometry createHullFromGeometry(
      final Geometry clusterGeometry,
      final Collection<Coordinate> additionalPoints,
      final boolean fast) {

    if (additionalPoints.isEmpty()) {
      return clusterGeometry;
    }
    final Set<Coordinate> batchCoords = new HashSet<>();

    if (clusterGeometry != null) {
      for (final Coordinate coordinate : clusterGeometry.getCoordinates()) {
        batchCoords.add(coordinate);
      }
    }
    for (final Coordinate coordinate : additionalPoints) {
      batchCoords.add(coordinate);
    }

    final GeometryFactory factory =
        clusterGeometry == null ? new GeometryFactory() : clusterGeometry.getFactory();
    final Coordinate[] actualCoords = batchCoords.toArray(new Coordinate[batchCoords.size()]);

    if (batchCoords.size() == 2) {
      return factory.createLineString(actualCoords);
    }

    final ConvexHull convexHull = new ConvexHull(actualCoords, factory);

    final Geometry convexHullGeo = convexHull.getConvexHull();

    try {
      // does this shape benefit from concave hulling?
      // it cannot be a line string
      if ((batchCoords.size() > 5) && (convexHullGeo.getArea() > 0.0)) {
        final Geometry concaveHull =
            fast ? concaveHull(convexHullGeo, batchCoords)
                : concaveHullParkOhMethod(convexHullGeo, batchCoords);
        if (fast && !concaveHull.isSimple()) {

          LOGGER.warn("Produced non simple hull", concaveHull.toText());
          return concaveHullParkOhMethod(convexHullGeo, batchCoords);
        }
        return concaveHull;
      } else {
        return convexHullGeo;
      }
    } catch (final Exception ex) {

      /*
       * Geometry[] points = new Geometry[actualCoords.length + 1]; for (int i = 0; i <
       * actualCoords.length; i++) points[i] = hull.getFactory().createPoint( actualCoords[i]);
       * points[points.length - 1] = hull; try { ShapefileTool.writeShape( "test_perf_xh", new File(
       * "./targettest_perf_xh"), points); } catch (IOException e) { e.printStackTrace(); }
       */
      LOGGER.error("Failed to compute hull", ex);

      return convexHullGeo;
    }
  }

  /**
   * Gift unwrapping (e.g. dig) concept, taking a convex hull and a set of inner points, add inner
   * points to the hull without violating hull invariants--all points must reside on the hull or
   * inside the hull. Based on: Jin-Seo Park and Se-Jong Oh. "A New Concave Algorithm and
   * Concaveness Measure for n-dimensional Datasets" . Department of Nanobiomedical Science. Dankook
   * University". 2010.
   *
   * <p> Per the paper, N = concaveThreshold
   */
  public Geometry concaveHullParkOhMethod(
      final Geometry geometry,
      final Collection<Coordinate> providedInnerPoints) {

    final Set<Coordinate> innerPoints = new HashSet<>(providedInnerPoints);
    final TreeSet<Edge> edges = new TreeSet<>();
    final Coordinate[] geoCoordinateList = geometry.getCoordinates();
    final int s = geoCoordinateList.length - 1;
    final Edge firstEdge =
        createEdgeWithSideEffects(geoCoordinateList[0], geoCoordinateList[1], innerPoints, edges);
    Edge lastEdge = firstEdge;
    for (int i = 1; i < s; i++) {
      final Edge newEdge =
          createEdgeWithSideEffects(
              geoCoordinateList[i],
              geoCoordinateList[i + 1],
              innerPoints,
              edges);
      newEdge.connectLast(lastEdge);
      lastEdge = newEdge;
    }
    firstEdge.connectLast(lastEdge);
    while (!edges.isEmpty() && !innerPoints.isEmpty()) {
      final Edge edge = edges.pollLast();
      lastEdge = edge;
      double score = Double.MAX_VALUE;
      Coordinate selectedCandidate = null;
      for (final Coordinate candidate : innerPoints) {
        final double dist = calcDistance(edge.start, edge.end, candidate);
        // on the hull
        if (MathUtils.equals(dist, 0.0, 0.000000001)) {
          score = 0.0;
          selectedCandidate = candidate;
          break;
        }
        if ((dist > 0) && (dist < score)) {
          score = dist;
          selectedCandidate = candidate;
        }
      }
      if (selectedCandidate == null) {
        continue;
      }
      // if one a line segment of the hull, then remove candidate
      if (FloatCompareUtils.checkDoublesEqual(score, 0.0)) {
        innerPoints.remove(selectedCandidate);
        edges.add(edge);
        continue;
      }
      // Park and Oh look only at the neighbor edges
      // but this fails in some cases.
      if (isCandidateCloserToAnotherEdge(score, edge, edges, selectedCandidate)) {
        continue;
      }

      innerPoints.remove(selectedCandidate);
      final double eh = edge.distance;
      final double startToCandidate =
          distanceFnForCoordinate.measure(edge.start, selectedCandidate);
      final double endToCandidate = distanceFnForCoordinate.measure(edge.end, selectedCandidate);
      final double min = Math.min(startToCandidate, endToCandidate);
      // protected against duplicates
      if ((eh / min) > concaveThreshold) {
        final Edge newEdge1 = new Edge(edge.start, selectedCandidate, startToCandidate);
        final Edge newEdge2 = new Edge(selectedCandidate, edge.end, endToCandidate);
        // need to replace this with something more intelligent. This
        // occurs in cases of sharp angles. An angular approach may also
        // work
        // look for an angle to flip in the reverse direction.
        if (!intersectAnotherEdge(newEdge1, edge)
            && !intersectAnotherEdge(newEdge2, edge)
            && !intersectAnotherEdge(newEdge1, edge.last)
            && !intersectAnotherEdge(newEdge2, edge.next)) {
          edges.add(newEdge2);
          edges.add(newEdge1);
          newEdge1.connectLast(edge.last);
          newEdge2.connectLast(newEdge1);
          edge.next.connectLast(newEdge2);
          lastEdge = newEdge1;
        }
      }
    }
    return geometry.getFactory().createPolygon(reassemble(lastEdge));
  }

  /**
   * Gift unwrapping (e.g. dig) concept, taking a convex hull and a set of inner points, add inner
   * points to the hull without violating hull invariants--all points must reside on the hull or
   * inside the hull. Based on: Jin-Seo Park and Se-Jong Oh. "A New Concave Algorithm and
   * Concaveness Measure for n-dimensional Datasets" . Department of Nanobiomedical Science. Dankook
   * University". 2010.
   *
   * <p> Per the paper, N = concaveThreshold.
   *
   * <p> This algorithm evaluates remarkably faster than Park and Oh, but the quality of the result
   * is marginally less. If it is acceptable to have some small number of points fall outside of the
   * hull and speed is critical, use this method. The measure of error is difficult to calculate
   * since it is not directly calculated based on the number of inner points. Rather, the measure is
   * based on some number of points in proximity the optimal concave hull.
   */
  public Geometry concaveHull(
      final Geometry geometry,
      final Collection<Coordinate> providedInnerPoints) {
    final Set<Coordinate> innerPoints =
        (providedInnerPoints instanceof Set) ? (Set<Coordinate>) providedInnerPoints
            : new HashSet<>(providedInnerPoints);
    final TreeSet<Edge> edges = new TreeSet<>();
    final Coordinate[] geoCoordinateList = geometry.getCoordinates();
    final int s = geoCoordinateList.length - 1;
    final Edge firstEdge =
        createEdgeWithSideEffects(geoCoordinateList[0], geoCoordinateList[1], innerPoints, edges);
    Edge lastEdge = firstEdge;
    for (int i = 1; i < s; i++) {
      final Edge newEdge =
          createEdgeWithSideEffects(
              geoCoordinateList[i],
              geoCoordinateList[i + 1],
              innerPoints,
              edges);
      newEdge.connectLast(lastEdge);
      lastEdge = newEdge;
    }
    firstEdge.connectLast(lastEdge);
    for (final Coordinate candidate : innerPoints) {
      double min = Double.MAX_VALUE;
      Edge bestEdge = null;
      for (final Edge edge : edges) {
        final double dist = calcDistance(edge.start, edge.end, candidate);
        if ((dist > 0) && (dist < min)) {
          min = dist;
          bestEdge = edge;
        }
      }
      if (bestEdge != null) {
        bestEdge.getPoints().add(new NeighborData<>(candidate, null, min));
      }
    }
    while (!edges.isEmpty()) {
      final Edge edge = edges.pollLast();
      lastEdge = edge;
      NeighborData<Coordinate> candidate = edge.getPoints().pollFirst();
      while (candidate != null) {
        if (!MathUtils.equals(candidate.getDistance(), 0.0, 0.000000001)) {
          final Coordinate selectedCandidate = candidate.getElement();
          final double eh = edge.distance;
          final double startToCandidate =
              distanceFnForCoordinate.measure(edge.start, selectedCandidate);
          final double endToCandidate =
              distanceFnForCoordinate.measure(edge.end, selectedCandidate);
          final double min = Math.min(startToCandidate, endToCandidate);
          // protected against duplicates
          if ((eh / min) > concaveThreshold) {
            final Edge newEdge1 = new Edge(edge.start, selectedCandidate, startToCandidate);
            final Edge newEdge2 = new Edge(selectedCandidate, edge.end, endToCandidate);
            edges.add(newEdge2);
            edges.add(newEdge1);
            newEdge1.connectLast(edge.last);
            newEdge2.connectLast(newEdge1);
            edge.next.connectLast(newEdge2);
            lastEdge = newEdge1;
            for (final NeighborData<Coordinate> otherPoint : edge.getPoints()) {
              final double[] distProfile1 =
                  calcDistanceSegment(newEdge1.start, newEdge1.end, otherPoint.getElement());
              final double[] distProfile2 =
                  calcDistanceSegment(newEdge2.start, newEdge2.end, otherPoint.getElement());
              if ((distProfile1[0] >= 0.0) && (distProfile1[0] <= 1.0)) {
                if ((distProfile1[0] < 0.0)
                    || (distProfile1[0] > 1.0)
                    || (distProfile2[1] > distProfile1[1])) {
                  otherPoint.setDistance(distProfile1[1]);
                  newEdge1.getPoints().add(otherPoint);
                } else {
                  otherPoint.setDistance(distProfile2[1]);
                  newEdge2.getPoints().add(otherPoint);
                }
              } else if ((distProfile2[0] >= 0.0) && (distProfile2[0] <= 1.0)) {

                otherPoint.setDistance(distProfile2[1]);
                newEdge2.getPoints().add(otherPoint);
              }
            }
            edge.getPoints().clear(); // forces this loop to end
          }
        }
        candidate = edge.getPoints().pollFirst();
      }
    }
    return geometry.getFactory().createPolygon(reassemble(lastEdge));
  }

  public static boolean intersectAnotherEdge(final Edge newEdge, final Edge edgeToReplace) {
    Edge nextEdge = edgeToReplace.next.next;
    final Edge stopEdge = edgeToReplace.last;
    while (nextEdge != stopEdge) {
      if (edgesIntersect(newEdge, nextEdge)) {
        return true;
      }
      nextEdge = nextEdge.next;
    }
    return false;
  }

  public static boolean edgesIntersect(final Edge e1, final Edge e2) {
    return CGAlgorithms.distanceLineLine(e1.start, e1.end, e2.start, e2.end) <= 0.0;
  }

  private static boolean isCandidateCloserToAnotherEdge(
      final double distanceToBeat,
      final Edge selectedEdgeToBeat,
      final Collection<Edge> edges,
      final Coordinate selectedCandidate) {
    for (final Edge edge : edges) {
      if (selectedEdgeToBeat.equals(edge)) {
        continue;
      }
      final double dist = calcDistance(edge.start, edge.end, selectedCandidate);
      if ((dist >= 0.0) && (dist < distanceToBeat)) {
        return true;
      }
    }
    return false;
  }

  private static Coordinate[] reassemble(final Edge lastEdge) {
    final List<Coordinate> coordinates = new ArrayList<>();
    coordinates.add(lastEdge.start);
    Edge nextEdge = lastEdge.next;
    while (nextEdge != lastEdge) {
      coordinates.add(nextEdge.start);
      nextEdge = nextEdge.next;
    }
    coordinates.add(lastEdge.start);
    return coordinates.toArray(new Coordinate[coordinates.size()]);
  }

  protected boolean isInside(final Coordinate coor, final Coordinate[] hullCoordinates) {
    double maxAngle = 0;
    for (int i = 1; i < hullCoordinates.length; i++) {
      final Coordinate hullCoordinate = hullCoordinates[i];
      maxAngle = Math.max(calcAngle(hullCoordinates[0], coor, hullCoordinate), maxAngle);
    }
    // return 360 == Math.abs(maxAngle);
    return ((Math.abs(maxAngle) >= 359.999) && (Math.abs(maxAngle) <= 360.0001));
  }

  /**
   * Forms create edges between two shapes maintaining convexity.
   *
   * <p> Does not currently work if the shapes intersect
   */
  public Geometry connect(final Geometry shape1, final Geometry shape2) {

    try {
      if ((shape1 instanceof Polygon)
          && (shape2 instanceof Polygon)
          && !shape1.intersects(shape2)) {
        return connect(shape1, shape2, getClosestPoints(shape1, shape2, distanceFnForCoordinate));
      }
      return UnaryUnionOp.union(Arrays.asList(shape1, shape2));
    } catch (final Exception ex) {
      LOGGER.warn("Exception caught in connect method", ex);
    }
    return createHullFromGeometry(shape1, Arrays.asList(shape2.getCoordinates()), false);
  }

  protected Geometry connect(
      final Geometry shape1,
      final Geometry shape2,
      final Pair<Integer, Integer> closestCoordinates) {
    Coordinate[] leftCoords = shape1.getCoordinates(), rightCoords = shape2.getCoordinates();
    int startLeft, startRight;
    if ((leftCoords[closestCoordinates.getLeft()].x < rightCoords[closestCoordinates.getRight()].x)) {
      startLeft = closestCoordinates.getLeft();
      startRight = closestCoordinates.getRight();
    } else {
      leftCoords = shape2.getCoordinates();
      rightCoords = shape1.getCoordinates();
      startLeft = closestCoordinates.getRight();
      startRight = closestCoordinates.getLeft();
    }
    final HashSet<Coordinate> visitedSet = new HashSet<>();

    visitedSet.add(leftCoords[startLeft]);
    visitedSet.add(rightCoords[startRight]);

    final boolean leftClockwise = clockwise(leftCoords);
    final boolean rightClockwise = clockwise(rightCoords);

    final Pair<Integer, Integer> upperCoords =
        walk(visitedSet, leftCoords, rightCoords, startLeft, startRight, new DirectionFactory() {

          @Override
          public Direction createLeftFootDirection(final int start, final int max) {
            return leftClockwise ? new IncreaseDirection(start, max, true)
                : new DecreaseDirection(start, max, true);
          }

          @Override
          public Direction createRightFootDirection(final int start, final int max) {
            return rightClockwise ? new DecreaseDirection(start, max, false)
                : new IncreaseDirection(start, max, false);
          }
        });

    final Pair<Integer, Integer> lowerCoords =
        walk(visitedSet, leftCoords, rightCoords, startLeft, startRight, new DirectionFactory() {

          @Override
          public Direction createLeftFootDirection(final int start, final int max) {
            return leftClockwise ? new DecreaseDirection(start, max, false)
                : new IncreaseDirection(start, max, false);
          }

          @Override
          public Direction createRightFootDirection(final int start, final int max) {
            return rightClockwise ? new IncreaseDirection(start, max, true)
                : new DecreaseDirection(start, max, true);
          }
        });

    final List<Coordinate> newCoordinateSet = new ArrayList<>();
    final Direction leftSet =
        leftClockwise
            ? new IncreaseDirection(
                upperCoords.getLeft(),
                lowerCoords.getLeft() + 1,
                leftCoords.length)
            : new DecreaseDirection(
                upperCoords.getLeft(),
                lowerCoords.getLeft() - 1,
                leftCoords.length);
    newCoordinateSet.add(leftCoords[upperCoords.getLeft()]);
    while (leftSet.hasNext()) {
      newCoordinateSet.add(leftCoords[leftSet.next()]);
    }
    final Direction rightSet =
        rightClockwise
            ? new IncreaseDirection(
                lowerCoords.getRight(),
                upperCoords.getRight() + 1,
                rightCoords.length)
            : new DecreaseDirection(
                lowerCoords.getRight(),
                upperCoords.getRight() - 1,
                rightCoords.length);
    newCoordinateSet.add(rightCoords[lowerCoords.getRight()]);
    while (rightSet.hasNext()) {
      newCoordinateSet.add(rightCoords[rightSet.next()]);
    }
    newCoordinateSet.add(leftCoords[upperCoords.getLeft()]);
    return shape1.getFactory().createPolygon(
        newCoordinateSet.toArray(new Coordinate[newCoordinateSet.size()]));
  }

  private Pair<Integer, Integer> walk(
      final Set<Coordinate> visited,
      final Coordinate[] shape1Coords,
      final Coordinate[] shape2Coords,
      final int start1,
      final int start2,
      final DirectionFactory factory) {

    final int upPos =
        takeBiggestStep(
            visited,
            shape2Coords[start2],
            shape1Coords,
            factory.createLeftFootDirection(start1, shape1Coords.length));

    // even if the left foot was stationary, try to move the right foot
    final int downPos =
        takeBiggestStep(
            visited,
            shape1Coords[upPos],
            shape2Coords,
            factory.createRightFootDirection(start2, shape2Coords.length));

    // if the right step moved, then see if another l/r step can be taken
    if (downPos != start2) {
      return walk(visited, shape1Coords, shape2Coords, upPos, downPos, factory);
    }
    return Pair.of(upPos, start2);
  }

  /**
   * Determine if the polygon is defined clockwise
   */
  public static boolean clockwise(final Coordinate[] set) {
    double sum = 0.0;
    for (int i = 1; i < set.length; i++) {
      sum += (set[i].x - set[i - 1].x) / (set[i].y + set[i - 1].y);
    }
    return sum > 0.0;
  }

  public static double calcSmallestAngle(
      final Coordinate one,
      final Coordinate vertex,
      final Coordinate two) {
    final double angle = Math.abs(calcAngle(one, vertex, two));
    return (angle > 180.0) ? angle - 180.0 : angle;
  }

  /**
   * Calculate the angle between two points and a given vertex
   */
  public static double calcAngle(
      final Coordinate one,
      final Coordinate vertex,
      final Coordinate two) {

    final double p1x = one.x - vertex.x;
    final double p1y = one.y - vertex.y;
    final double p2x = two.x - vertex.x;
    final double p2y = two.y - vertex.y;

    final double angle1 = Math.toDegrees(Math.atan2(p1y, p1x));
    final double angle2 = Math.toDegrees(Math.atan2(p2y, p2x));
    return angle2 - angle1;
  }

  /**
   * Calculate the distance between two points and a given vertex
   *
   * @return array if doubles double[0] = length of the projection from start on the line containing
   *         the segment(start to end) double[1] = distance to the segment double[2] = distance to
   *         the line containing the segment(start to end)
   */
  public static double[] calcDistanceSegment(
      final Coordinate start,
      final Coordinate end,
      final Coordinate point) {

    final Vector<Euclidean2D> vOne = new Vector2D(start.x, start.y);

    final Vector<Euclidean2D> vTwo = new Vector2D(end.x, end.y);

    final Vector<Euclidean2D> vVertex = new Vector2D(point.x, point.y);

    final Vector<Euclidean2D> E1 = vTwo.subtract(vOne);

    final Vector<Euclidean2D> E2 = vVertex.subtract(vOne);

    final double distOneTwo = E2.dotProduct(E1);
    final double lengthVOneSq = E1.getNormSq();
    final double projectionLength = distOneTwo / lengthVOneSq;
    final Vector<Euclidean2D> projection = E1.scalarMultiply(projectionLength).add(vOne);
    final double o =
        ((projectionLength < 0.0) ? vOne.distance(vVertex)
            : ((projectionLength > 1.0) ? vTwo.distance(vVertex) : vVertex.distance(projection)));

    return new double[] {projectionLength, o, vVertex.distance(projection)};
  }

  public static double calcDistance(
      final Coordinate start,
      final Coordinate end,
      final Coordinate point) {
    final double[] p = calcDistanceSegment(start, end, point);
    return ((p[0] < 0.0) || (p[0] > 1.0)) ? -1 : p[1];
  }

  public static Pair<Integer, Integer> getClosestPoints(
      final Geometry shape1,
      final Geometry shape2,
      final DistanceFn<Coordinate> distanceFnForCoordinate) {
    int bestShape1Position = 0;
    int bestShape2Position = 0;
    double minDist = Double.MAX_VALUE;
    int pos1 = 0, pos2 = 0;
    for (final Coordinate coord1 : shape1.getCoordinates()) {
      pos2 = 0;
      for (final Coordinate coord2 : shape2.getCoordinates()) {
        final double dist = (distanceFnForCoordinate.measure(coord1, coord2));
        if (dist < minDist) {
          bestShape1Position = pos1;
          bestShape2Position = pos2;
          minDist = dist;
        }
        pos2++;
      }
      pos1++;
    }
    return Pair.of(bestShape1Position, bestShape2Position);
  }

  private int takeBiggestStep(
      final Set<Coordinate> visited,
      final Coordinate station,
      final Coordinate[] shapeCoords,
      final Direction legIncrement) {
    double angle = 0.0;
    final Coordinate startPoint = shapeCoords[legIncrement.getStart()];
    int last = legIncrement.getStart();
    Coordinate lastCoordinate = shapeCoords[last];
    while (legIncrement.hasNext()) {
      final int pos = legIncrement.next();
      // skip over duplicate (a ring or polygon has one duplicate)
      if (shapeCoords[pos].equals(lastCoordinate)) {
        continue;
      }
      lastCoordinate = shapeCoords[pos];
      if (visited.contains(lastCoordinate)) {
        break;
      }
      double currentAngle =
          legIncrement.angleChange(calcAngle(startPoint, station, lastCoordinate));
      currentAngle = currentAngle < -180 ? currentAngle + 360 : currentAngle;
      if ((currentAngle >= angle) && (currentAngle < 180.0)) {
        angle = currentAngle;
        last = pos;
        visited.add(shapeCoords[pos]);
      } else {
        return last;
      }
    }
    return last;
  }

  private interface DirectionFactory {
    Direction createLeftFootDirection(int start, int max);

    Direction createRightFootDirection(int start, int max);
  }

  private interface Direction extends Iterator<Integer> {
    public int getStart();

    public double angleChange(double angle);
  }

  private class IncreaseDirection implements Direction {

    final int max;
    final int start;
    final int stop;
    int current = 0;
    final boolean angleIsNegative;

    @Override
    public int getStart() {
      return start;
    }

    public IncreaseDirection(final int start, final int max, final boolean angleIsNegative) {
      super();
      this.max = max;
      current = getNext(start);
      stop = start;
      this.start = start;
      this.angleIsNegative = angleIsNegative;
    }

    public IncreaseDirection(final int start, final int stop, final int max) {
      super();
      this.max = max;
      current = getNext(start);
      this.stop = stop;
      this.start = start;
      angleIsNegative = true;
    }

    @Override
    public Integer next() {
      final int n = current;
      current = getNext(current);
      return n;
    }

    @Override
    public boolean hasNext() {
      return current != stop;
    }

    protected int getNext(final int n) {
      return (n + 1) % max;
    }

    @Override
    public void remove() {}

    @Override
    public double angleChange(final double angle) {
      return angleIsNegative ? -angle : angle;
    }
  }

  private class DecreaseDirection extends IncreaseDirection implements Direction {

    public DecreaseDirection(final int start, final int max, final boolean angleIsNegative) {
      super(start, max, angleIsNegative);
    }

    public DecreaseDirection(final int start, final int stop, final int max) {
      super(start, stop, max);
    }

    @Override
    protected int getNext(final int n) {
      return (n == 0) ? max - 1 : n - 1;
    }
  }
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/IndependentJobRunner.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import java.util.Collection;
import org.locationtech.geowave.analytic.param.ParameterEnum;

public interface IndependentJobRunner {
  public int run(PropertyManagement properties) throws Exception;

  public Collection<ParameterEnum<?>> getParameters();
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/Projection.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.mapreduce.JobContext;
import org.locationtech.jts.geom.Geometry;

/**
 * Project a n-dimensional item into a two-dimensional polygon for convex hull construction.
 *
 * @param <T>
 */
public interface Projection<T> {
  public Geometry getProjection(T anItem);

  public void initialize(JobContext context, Class<?> scope) throws IOException;

  public void setup(
      PropertyManagement runTimeProperties,
      Class<?> scope,
      Configuration configuration);
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/PropertyManagement.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.ParseException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.locationtech.geowave.analytic.param.ParameterEnum;
import org.locationtech.geowave.core.index.ByteArrayUtils;
import org.locationtech.geowave.core.index.numeric.NumericRange;
import org.locationtech.geowave.core.index.persist.Persistable;
import org.locationtech.geowave.core.index.persist.PersistenceUtils;
import org.locationtech.geowave.core.store.api.Query;
import org.locationtech.geowave.core.store.api.QueryBuilder;
import org.locationtech.geowave.core.store.query.constraints.QueryConstraints;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Manage properties used by the Map Reduce environment that are provided through the API (e.g.
 * command). Allow these arguments to be placed an 'args' list for 'main' executables (e.g.
 * ToolRunner).
 *
 * <p> The class supports some basic conversions.
 *
 * <p> Non-serializable objects: {@link Persistable} instances are converted to and from byte
 * formats. {@link QueryConstraints} is a special case, supporting WKT String. {@link Path} are
 * converted to a from string representation of the their URI.
 *
 * <p> Serializable objects: {@link NumericRange} supports min,max in string representation (e.g.
 * "1.0,2.0")
 *
 * <p> NOTE: ConfigutationWrapper implementation is scopeless.
 *
 * <p> EXPECTED FUTURE WORK: I am bit unsatisfied with the duality of the parameters base class. In
 * one case, in is treated a description for a class value and, in the other case, it is treated as
 * a description for the type of a property value. The former is really a descriptor of a Class of
 * type class. Generics do not help due to erasure. The impact of this inconsistency is the
 * inability to validate on 'store'. Instead, validation occurs on 'gets'. The ultimate goal is to
 * uniformly provide feedback to parameters from command line arguments and property files on
 * submission to the manager rather than on extraction from the manager.
 */
public class PropertyManagement implements Serializable {

  /** */
  private static final long serialVersionUID = -4186468044516636362L;

  static final Logger LOGGER = LoggerFactory.getLogger(PropertyManagement.class);

  private final Map<ParameterEnum<?>, Serializable> localProperties = new HashMap<>();
  private final List<PropertyConverter<?>> converters = new ArrayList<>();
  private PropertyManagement nestProperties = null;

  public PropertyManagement() {
    converters.add(new QueryConverter());
    converters.add(new PathConverter());
    converters.add(new PersistableConverter());
    converters.add(new DoubleConverter());
    converters.add(new IntegerConverter());
    converters.add(new ByteConverter());
  }

  public PropertyManagement(
      final PropertyConverter<?>[] converters,
      final ParameterEnum<?>[] names,
      final Object[] values) {
    this.converters.add(new QueryConverter());
    this.converters.add(new PathConverter());
    this.converters.add(new PersistableConverter());
    this.converters.add(new DoubleConverter());
    this.converters.add(new IntegerConverter());
    this.converters.add(new ByteConverter());
    for (final PropertyConverter<?> converter : converters) {
      addConverter(converter);
    }
    storeAll(names, values);
  }

  public PropertyManagement(final ParameterEnum<?>[] names, final Object[] values) {
    converters.add(new QueryConverter());
    converters.add(new PathConverter());
    converters.add(new PersistableConverter());
    converters.add(new DoubleConverter());
    converters.add(new IntegerConverter());
    converters.add(new ByteConverter());
    storeAll(names, values);
  }

  public PropertyManagement(final PropertyManagement pm) {
    nestProperties = pm;
    converters.addAll(pm.converters);
  }

  public Serializable get(final ParameterEnum<?> propertyName) {
    return getPropertyValue(propertyName);
  }

  public synchronized <T> void store(
      final ParameterEnum<?> property,
      final T value,
      final PropertyConverter<T> converter) {
    Serializable convertedValue;
    try {
      convertedValue = converter.convert(value);
    } catch (final Exception e) {
      throw new IllegalArgumentException(
          String.format(
              "Cannot store %s with value %s. Expected type = %s; Error message = %s",
              property.self().toString(),
              value.toString(),
              property.getHelper().getBaseClass().toString(),
              e.getLocalizedMessage()),
          e);
    }
    localProperties.put(property, convertedValue);
    addConverter(converter);
  }

  public synchronized void store(final ParameterEnum<?> property, final Object value) {
    if (value != null) {
      Serializable convertedValue;
      try {
        convertedValue = convertIfNecessary(property, value);
      } catch (final Exception e) {
        throw new IllegalArgumentException(
            String.format(
                "Cannot store %s with value %s:%s",
                property.self().toString(),
                value.toString(),
                e.getLocalizedMessage()));
      }
      localProperties.put(property, convertedValue);
    }
  }

  /** Does not work for non-serializable data (e.g. Path or Persistable) */
  public synchronized Serializable storeIfEmpty(
      final ParameterEnum<?> propertyEnum,
      final Serializable value) {
    if (!containsPropertyValue(propertyEnum) && (value != null)) {
      LOGGER.info("Setting parameter : {} to {}", propertyEnum.toString(), value.toString());
      store(propertyEnum, value);
      return value;
    }
    return getPropertyValue(propertyEnum);
  }

  public synchronized void copy(
      final ParameterEnum<?> propertyNameFrom,
      final ParameterEnum<?> propertyNameTo) {
    if (containsPropertyValue(propertyNameFrom)) {
      localProperties.put(propertyNameTo, getPropertyValue(propertyNameFrom));
    }
  }

  public synchronized void storeAll(final ParameterEnum<?>[] names, final Object[] values) {
    if (values.length != names.length) {
      LOGGER.error(
          "The number of values must equal the number of names passed to the store method");
      throw new IllegalArgumentException(
          "The number of values must equal the number of names passed to the store method");
    }
    int i = 0;
    for (final Object value : values) {
      store(names[i++], value);
    }
  }

  public void setConfig(
      final ParameterEnum<?>[] parameters,
      final Configuration config,
      final Class<?> scope) {
    for (final ParameterEnum param : parameters) {
      Object value;
      try {
        value = getProperty(param);
        param.getHelper().setValue(config, scope, value);

      } catch (final Exception e) {
        LOGGER.error("Property " + param.self().toString() + " is not available", e);
        throw new IllegalArgumentException(
            "Property " + param.self().toString() + " is not available",
            e);
      }
    }
  }

  @SuppressWarnings("unchecked")
  public <T> T getClassInstance(
      final ParameterEnum<?> property,
      final Class<T> iface,
      final Class<?> defaultClass) throws InstantiationException {
    final Object o = getPropertyValue(property);

    try {
      final Class<?> clazz =
          o == null ? defaultClass
              : (o instanceof Class) ? (Class<?>) o : Class.forName(o.toString());
      if (!property.getHelper().getBaseClass().isAssignableFrom(clazz)) {
        LOGGER.error(
            "Class for property "
                + property.self().toString()
                + " does not implement "
                + property.getHelper().getBaseClass().toString());
      }
      return (T) clazz.newInstance();
    } catch (final ClassNotFoundException e) {
      LOGGER.error("Class for property " + property.self().toString() + " is not found", e);
      throw new InstantiationException(property.self().toString());
    } catch (final InstantiationException e) {
      LOGGER.error("Class for property " + property.self().toString() + " is not instiatable", e);
      throw new InstantiationException(property.self().toString());
    } catch (final IllegalAccessException e) {
      LOGGER.error("Class for property " + property.self().toString() + " is not accessible", e);
      throw new InstantiationException(property.self().toString());
    }
  }

  public synchronized boolean hasProperty(final ParameterEnum<?> property) {
    return containsPropertyValue(property);
  }

  public String getPropertyAsString(final ParameterEnum<?> property) {
    return getPropertyAsString(property, null);
  }

  /**
   * Returns the value as, without conversion from the properties. Throws an exception if a
   * conversion is required to a specific type
   */
  public Object getProperty(final ParameterEnum<?> property) throws Exception {
    final Serializable value = getPropertyValue(property);
    if (!Serializable.class.isAssignableFrom(property.getHelper().getBaseClass())) {
      for (final PropertyConverter converter : converters) {
        if (converter.baseClass().isAssignableFrom(property.getHelper().getBaseClass())) {
          return this.validate(property, converter.convert(value));
        }
      }
    }
    return this.validate(property, value);
  }

  /**
   * Returns the value after conversion. Throws an exception if a conversion fails.
   */
  public <T> T getProperty(final ParameterEnum<?> property, final PropertyConverter<T> converter)
      throws Exception {

    final Serializable value = getPropertyValue(property);
    return converter.convert(value);
  }

  public byte[] getPropertyAsBytes(final ParameterEnum<?> property) {
    final Object val = getPropertyValue(property);
    if (val != null) {
      if (val instanceof byte[]) {
        return (byte[]) val;
      }
      return ByteArrayUtils.byteArrayFromString(val.toString());
    }
    return null;
  }

  public String getPropertyAsString(final ParameterEnum<?> property, final String defaultValue) {
    // not using containsKey to avoid synchronization
    final Object value = getPropertyValue(property);
    return (String) validate(property, value == null ? defaultValue : value.toString());
  }

  public Boolean getPropertyAsBoolean(final ParameterEnum<?> property, final Boolean defaultValue) {
    final Object val = getPropertyValue(property);
    if (val != null) {
      return Boolean.valueOf(val.toString());
    }
    LOGGER.warn("Using default value for parameter : " + property.self().toString());
    return defaultValue;
  }

  public Integer getPropertyAsInt(final ParameterEnum<?> property, final int defaultValue) {
    final Object val = getPropertyValue(property);
    if (val != null) {
      if (val instanceof Integer) {
        return (Integer) val;
      }
      return (Integer) validate(property, Integer.parseInt(val.toString()));
    }
    LOGGER.warn("Using default value for parameter : " + property.self().toString());
    return defaultValue;
  }

  public Double getPropertyAsDouble(final ParameterEnum<?> property, final double defaultValue) {
    final Object val = getPropertyValue(property);
    if (val != null) {
      if (val instanceof Double) {
        return (Double) val;
      }
      return Double.parseDouble(val.toString());
    }
    LOGGER.warn("Using default value for parameter : " + property.self().toString());
    return defaultValue;
  }

  public NumericRange getPropertyAsRange(
      final ParameterEnum<?> property,
      final NumericRange defaultValue) {
    final Object val = getPropertyValue(property);
    if (val != null) {
      if (val instanceof NumericRange) {
        return (NumericRange) val;
      }
      final String p = val.toString();
      final String[] parts = p.split(",");
      try {
        if (parts.length == 2) {
          return new NumericRange(
              Double.parseDouble(parts[0].trim()),
              Double.parseDouble(parts[1].trim()));
        } else {
          return new NumericRange(0, Double.parseDouble(p));
        }
      } catch (final Exception ex) {
        LOGGER.error("Invalid range parameter " + property.self().toString(), ex);
        return defaultValue;
      }
    }
    LOGGER.warn("Using default value for parameter : " + property.self().toString());
    return defaultValue;
  }

  public Class<?> getPropertyAsClass(final ParameterEnum<?> property) {
    final Object val = getPropertyValue(property);
    if (val != null) {
      if (val instanceof Class) {
        return validate((Class<?>) val, property.getHelper().getBaseClass());
      }
      try {
        return validate(
            (Class<?>) Class.forName(val.toString()),
            property.getHelper().getBaseClass());
      } catch (final ClassNotFoundException e) {
        LOGGER.error("Class not found for property " + property, e);
      } catch (final java.lang.IllegalArgumentException ex) {
        LOGGER.error("Invalid class for property" + property, ex);
        throw new IllegalArgumentException("Invalid class for property" + property);
      }
    }
    return null;
  }

  public <T> Class<T> getPropertyAsClass(final ParameterEnum<?> property, final Class<T> iface)
      throws ClassNotFoundException {
    final Object val = getPropertyValue(property);
    if (val != null) {
      if (val instanceof Class) {
        return validate((Class<T>) val, property.getHelper().getBaseClass());
      }
      try {
        return validate(
            (Class<T>) Class.forName(val.toString()),
            property.getHelper().getBaseClass());
      } catch (final ClassNotFoundException e) {
        LOGGER.error("Class not found for property " + property.self().toString());
        throw e;
      } catch (final java.lang.IllegalArgumentException ex) {
        LOGGER.error("Invalid class for property" + property.self().toString(), ex);
        throw new IllegalArgumentException("Invalid class for property" + property);
      }
    } else {
      LOGGER.error("Value not found for property " + property.self().toString());
    }
    throw new ClassNotFoundException("Value not found for property " + property.self().toString());
  }

  public <T> Class<? extends T> getPropertyAsClass(
      final ParameterEnum<?> property,
      final Class<? extends T> iface,
      final Class<? extends T> defaultClass) {
    final Object val = getPropertyValue(property);
    if (val != null) {
      if (val instanceof Class) {
        return validate((Class<T>) val, property.getHelper().getBaseClass());
      }
      try {
        return validate(
            (Class<T>) Class.forName(val.toString()),
            property.getHelper().getBaseClass());
      } catch (final ClassNotFoundException e) {
        LOGGER.error("Class not found for property " + property, e);
      } catch (final java.lang.IllegalArgumentException ex) {
        LOGGER.error("Invalid class for property" + property, ex);
        throw new IllegalArgumentException("Invalid class for property" + property);
      }
    }
    LOGGER.warn("Using default class for parameter : " + property.self().toString());
    return defaultClass;
  }

  private <T> Class<T> validate(final Class<T> classToValidate, final Class<?> iface)
      throws IllegalArgumentException {
    if (!iface.isAssignableFrom(classToValidate)) {
      throw new IllegalArgumentException(classToValidate + "is an invalid subclass of " + iface);
    }
    return classToValidate;
  }

  public Query<?> getPropertyAsQuery(final ParameterEnum property) throws Exception {
    final Serializable val = getPropertyValue(property);
    if (val != null) {
      return (Query) validate(property, new QueryConverter().convert(val));
    }
    return null;
  }

  public Path getPropertyAsPath(final ParameterEnum<?> property) throws Exception {
    final Serializable val = getPropertyValue(property);
    if (val != null) {
      return (Path) validate(property, new PathConverter().convert(val));
    }
    return null;
  }

  public Persistable getPropertyAsPersistable(final ParameterEnum<?> property) throws Exception {

    final Serializable val = getPropertyValue(property);
    if (val != null) {
      return (Persistable) validate(property, new PersistableConverter().convert(val));
    }
    return null;
  }

  public void setJobConfiguration(final Configuration configuration, final Class<?> scope) {
    for (final ParameterEnum param : localProperties.keySet()) {
      param.getHelper().setValue(configuration, scope, param.getHelper().getValue(this));
    }
    if ((nestProperties != null) && !nestProperties.localProperties.isEmpty()) {
      nestProperties.setJobConfiguration(configuration, scope);
    }
  }

  public void dump() {
    LOGGER.info("Properties : ");
    for (final Map.Entry<ParameterEnum<?>, Serializable> prop : localProperties.entrySet()) {
      LOGGER.info("{} = {}", prop.getKey(), prop.getValue());
    }
    nestProperties.dump();
  }

  /**
   * Add to the set of converters used to take a String representation of a value and convert it
   * into another serializable form.
   *
   * <p> This is done if the preferred internal representation does not match that of a string. For
   * example, a query is maintained as bytes even though it can be provided as a query
   *
   * @param converter
   */
  public synchronized void addConverter(final PropertyConverter<?> converter) {
    converters.add(converter);
  }

  private static byte[] toBytes(final Persistable persistableObject)
      throws UnsupportedEncodingException {
    return PersistenceUtils.toBinary(persistableObject);
  }

  private static Persistable fromBytes(final byte[] data) throws InstantiationException,
      IllegalAccessException, ClassNotFoundException, UnsupportedEncodingException {
    return PersistenceUtils.fromBinary(data);
  }

  private Object validate(final ParameterEnum propertyName, final Object value) {
    if (value != null) {
      if (value instanceof Class) {
        if (((Class<?>) value).isAssignableFrom(propertyName.getHelper().getBaseClass())) {
          throw new IllegalArgumentException(
              String.format(
                  "%s does not accept class %s",
                  propertyName.self().toString(),
                  ((Class<?>) value).getName()));
        }
      } else if (!propertyName.getHelper().getBaseClass().isInstance(value)) {
        throw new IllegalArgumentException(
            String.format(
                "%s does not accept type %s",
                propertyName.self().toString(),
                value.getClass().getName()));
      }
    }
    return value;
  }

  @SuppressWarnings("unchecked")
  private Serializable convertIfNecessary(final ParameterEnum property, final Object value)
      throws Exception {

    if (!(value instanceof Serializable)) {
      for (@SuppressWarnings("rawtypes")
      final PropertyConverter converter : converters) {
        if (converter.baseClass().isAssignableFrom(property.getHelper().getBaseClass())) {
          return converter.convert(value);
        }
      }
    }
    if (!property.getHelper().getBaseClass().isInstance(value) && (value instanceof String)) {
      for (@SuppressWarnings("rawtypes")
      final PropertyConverter converter : converters) {
        if (converter.baseClass().isAssignableFrom(property.getHelper().getBaseClass())) {
          return converter.convert(converter.convert(value.toString()));
        }
      }
    }
    return (Serializable) value;
  }

  public interface PropertyConverter<T> extends Serializable {
    public Serializable convert(T ob) throws Exception;

    public T convert(Serializable ob) throws Exception;

    public Class<T> baseClass();
  }

  public interface PropertyGroup<T extends Serializable> extends Serializable {
    public T convert(CommandLine commandLine) throws ParseException;

    public ParameterEnum getParameter();
  }

  public static class QueryConverter implements PropertyConverter<Query> {

    /** */
    private static final long serialVersionUID = 1L;

    @Override
    public Serializable convert(final Query ob) {
      try {
        return toBytes(ob);
      } catch (final UnsupportedEncodingException e) {
        throw new IllegalArgumentException(
            String.format(
                "Cannot convert %s to a Query: %s",
                ob.toString(),
                e.getLocalizedMessage()));
      }
    }

    @Override
    public Query convert(final Serializable ob) throws Exception {
      if (ob instanceof byte[]) {
        return (Query) PropertyManagement.fromBytes((byte[]) ob);
      } else if (ob instanceof Query) {
        return (Query) ob;
      }
      return QueryBuilder.newBuilder().build();
    }

    @Override
    public Class<Query> baseClass() {
      return Query.class;
    }
  }

  public static class PathConverter implements PropertyConverter<Path> {
    /** */
    private static final long serialVersionUID = 1L;

    @Override
    public Serializable convert(final Path ob) {
      return ob.toUri().toString();
    }

    @Override
    public Path convert(final Serializable ob) throws Exception {
      return new Path(ob.toString());
    }

    @Override
    public Class<Path> baseClass() {
      return Path.class;
    }
  }

  public static class ByteConverter implements PropertyConverter<byte[]> {
    private static final long serialVersionUID = 1L;

    @Override
    public Serializable convert(final byte[] ob) {
      return ByteArrayUtils.byteArrayToString(ob);
    }

    @Override
    public byte[] convert(final Serializable ob) throws Exception {
      return ByteArrayUtils.byteArrayFromString(ob.toString());
    }

    @Override
    public Class<byte[]> baseClass() {
      return byte[].class;
    }
  }

  public static class IntegerConverter implements PropertyConverter<Integer> {
    private static final long serialVersionUID = 1L;

    @Override
    public Serializable convert(final Integer ob) {
      return ob;
    }

    @Override
    public Integer convert(final Serializable ob) throws Exception {
      return Integer.parseInt(ob.toString());
    }

    @Override
    public Class<Integer> baseClass() {
      return Integer.class;
    }
  }

  public static class DoubleConverter implements PropertyConverter<Double> {
    /** */
    private static final long serialVersionUID = 1L;

    @Override
    public Serializable convert(final Double ob) {
      return ob;
    }

    @Override
    public Double convert(final Serializable ob) throws Exception {
      return Double.parseDouble(ob.toString());
    }

    @Override
    public Class<Double> baseClass() {
      return Double.class;
    }
  }

  public static class PersistableConverter implements PropertyConverter<Persistable> {

    /** */
    private static final long serialVersionUID = 1L;

    @Override
    public Serializable convert(final Persistable ob) {
      try {
        return toBytes(ob);
      } catch (final UnsupportedEncodingException e) {
        throw new IllegalArgumentException(
            String.format(
                "Cannot convert %s to a Persistable: %s",
                ob.toString(),
                e.getLocalizedMessage()));
      }
    }

    @Override
    public Persistable convert(final Serializable ob) throws Exception {
      if (ob instanceof byte[]) {
        return fromBytes((byte[]) ob);
      }
      throw new IllegalArgumentException(
          String.format("Cannot convert %s to Persistable", ob.toString()));
    }

    @Override
    public Class<Persistable> baseClass() {
      return Persistable.class;
    }
  }

  private boolean containsPropertyValue(final ParameterEnum<?> property) {
    return ((nestProperties != null) && nestProperties.containsPropertyValue(property))
        || localProperties.containsKey(property);
  }

  private Serializable getPropertyValue(final ParameterEnum<?> property) {
    final Serializable val = localProperties != null ? localProperties.get(property) : null;
    if (val == null) {
      return nestProperties != null ? nestProperties.getPropertyValue(property) : null;
    }
    return val;
  }
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/ScopedJobConfiguration.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import org.apache.hadoop.conf.Configuration;
import org.locationtech.geowave.core.index.ByteArrayUtils;
import org.locationtech.geowave.mapreduce.GeoWaveConfiguratorBase;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ScopedJobConfiguration {
  protected static final Logger LOGGER = LoggerFactory.getLogger(ScopedJobConfiguration.class);

  private final Configuration jobConfiguration;

  private final Class<?> scope;
  private Logger logger = LOGGER;

  public ScopedJobConfiguration(final Configuration jobConfiguration, final Class<?> scope) {
    super();
    this.jobConfiguration = jobConfiguration;
    this.scope = scope;
  }

  public ScopedJobConfiguration(
      final Configuration jobConfiguration,
      final Class<?> scope,
      final Logger logger) {
    super();
    this.jobConfiguration = jobConfiguration;
    this.scope = scope;
    this.logger = logger;
  }

  public int getInt(final Enum<?> property, final int defaultValue) {
    final String propName = GeoWaveConfiguratorBase.enumToConfKey(scope, property);
    if (jobConfiguration.getRaw(propName) == null) {
      logger.warn("Using default for property " + propName);
    }
    final int v = jobConfiguration.getInt(propName, defaultValue);
    return v;
  }

  public String getString(final Enum<?> property, final String defaultValue) {
    final String propName = GeoWaveConfiguratorBase.enumToConfKey(scope, property);
    if (jobConfiguration.getRaw(propName) == null) {
      logger.warn("Using default for property " + propName);
    }
    return jobConfiguration.get(propName, defaultValue);
  }

  public <T> T getInstance(
      final Enum<?> property,
      final Class<T> iface,
      final Class<? extends T> defaultValue) throws InstantiationException, IllegalAccessException {
    try {
      final String propName = GeoWaveConfiguratorBase.enumToConfKey(scope, property);
      if (jobConfiguration.getRaw(propName) == null) {
        if (defaultValue == null) {
          return null;
        }
        logger.warn("Using default for property " + propName);
      }
      return jobConfiguration.getClass(
          GeoWaveConfiguratorBase.enumToConfKey(scope, property),
          defaultValue,
          iface).newInstance();
    } catch (final Exception ex) {
      logger.error("Cannot instantiate " + GeoWaveConfiguratorBase.enumToConfKey(scope, property));
      throw ex;
    }
  }

  public double getDouble(final Enum<?> property, final double defaultValue) {
    final String propName = GeoWaveConfiguratorBase.enumToConfKey(scope, property);
    if (jobConfiguration.getRaw(propName) == null) {
      logger.warn("Using default for property " + propName);
    }
    return jobConfiguration.getDouble(propName, defaultValue);
  }

  public byte[] getBytes(final Enum<?> property) {
    final String propName = GeoWaveConfiguratorBase.enumToConfKey(scope, property);
    final String data = jobConfiguration.getRaw(propName);
    if (data == null) {
      logger.error(propName + " not found ");
    }
    return ByteArrayUtils.byteArrayFromString(data);
  }
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/SerializableAdapterStore.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import java.io.IOException;
import java.io.Serializable;
import org.locationtech.geowave.core.store.adapter.TransientAdapterStore;
import org.locationtech.geowave.core.store.api.DataTypeAdapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Support for adapter stores that are Serializable. Rather than for an adapter store to serialize
 * its state, wrap an adapter store. If the adapter store is not serializable, then log a warning
 * message upon serialization.
 */
public class SerializableAdapterStore implements TransientAdapterStore, Serializable {

  /** */
  private static final long serialVersionUID = 1L;

  static final Logger LOGGER = LoggerFactory.getLogger(SerializableAdapterStore.class);

  transient TransientAdapterStore adapterStore;

  public SerializableAdapterStore() {}

  public SerializableAdapterStore(final TransientAdapterStore adapterStore) {
    super();
    this.adapterStore = adapterStore;
  }

  private TransientAdapterStore getAdapterStore() {
    if (adapterStore == null) {
      throw new IllegalStateException("AdapterStore has not been initialized");
    }
    return adapterStore;
  }

  @Override
  public void addAdapter(final DataTypeAdapter<?> adapter) {
    getAdapterStore().addAdapter(adapter);
  }

  @Override
  public DataTypeAdapter<?> getAdapter(final String typeName) {
    return getAdapterStore().getAdapter(typeName);
  }

  @Override
  public boolean adapterExists(final String typeName) {
    return getAdapterStore().adapterExists(typeName);
  }

  @Override
  public DataTypeAdapter<?>[] getAdapters() {
    return getAdapterStore().getAdapters();
  }

  @Override
  public void removeAll() {
    getAdapterStore().removeAll();
  }

  private void writeObject(final java.io.ObjectOutputStream out) throws IOException {
    if (adapterStore instanceof Serializable) {
      out.writeBoolean(true);
      out.writeObject(adapterStore);
    } else {
      out.writeBoolean(false);
    }
  }

  private void readObject(final java.io.ObjectInputStream in)
      throws IOException, ClassNotFoundException {
    if (in.readBoolean()) {
      adapterStore = (TransientAdapterStore) in.readObject();
    } else {
      LOGGER.warn("Unable to initialized AdapterStore; the store is not serializable");
    }
  }

  @Override
  public void removeAdapter(final String typeName) {
    getAdapterStore().removeAdapter(typeName);
  }
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/ShapefileTool.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.io.FileUtils;
import org.geotools.data.DefaultTransaction;
import org.geotools.data.FeatureWriter;
import org.geotools.data.Transaction;
import org.geotools.data.shapefile.ShapefileDataStore;
import org.geotools.data.shapefile.ShapefileDataStoreFactory;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.referencing.crs.DefaultGeographicCRS;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.Point;
import org.locationtech.jts.geom.Polygon;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.feature.type.AttributeDescriptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ShapefileTool {
  private static final Logger LOGGER = LoggerFactory.getLogger(ShapefileTool.class);

  private static SimpleFeatureType createFeatureType(final String typeName, final boolean isPoint) {

    final SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
    builder.setName(typeName);
    builder.setCRS(DefaultGeographicCRS.WGS84); // <- Coordinate reference
    // system

    // add attributes in order
    builder.add("the_geom", isPoint ? Point.class : Polygon.class);
    builder.length(15).add("Name", String.class); // <- 15 chars width for name field

    // build the type

    return builder.buildFeatureType();
  }

  @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
      value = "RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",
      justification = "Directories may alreadybe there")
  public static void writeShape(final String typeName, final File dir, final Geometry[] shapes)
      throws IOException {

    FileUtils.deleteDirectory(dir);

    dir.mkdirs();

    final SimpleFeatureBuilder featureBuilder =
        new SimpleFeatureBuilder(createFeatureType(typeName, shapes[0] instanceof Point));

    final ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory();

    final Map<String, Serializable> params = new HashMap<>();
    params.put("url", new File(dir.getAbsolutePath() + "/" + typeName + ".shp").toURI().toURL());
    params.put("create spatial index", Boolean.TRUE);

    final ShapefileDataStore newDataStore =
        (ShapefileDataStore) dataStoreFactory.createNewDataStore(params);
    newDataStore.createSchema(createFeatureType(typeName, shapes[0] instanceof Point));
    final Transaction transaction = new DefaultTransaction("create");

    try (final FeatureWriter<SimpleFeatureType, SimpleFeature> writer =
        newDataStore.getFeatureWriterAppend(typeName, transaction)) {
      final int i = 1;
      for (final Geometry shape : shapes) {
        featureBuilder.add(shape);
        featureBuilder.add(Integer.valueOf(i));
        final SimpleFeature feature = featureBuilder.buildFeature(null);
        final SimpleFeature copy = writer.next();
        for (final AttributeDescriptor attrD : feature.getFeatureType().getAttributeDescriptors()) {
          // the null case should only happen for geometry
          if (copy.getFeatureType().getDescriptor(attrD.getName()) != null) {
            copy.setAttribute(attrD.getName(), feature.getAttribute(attrD.getName()));
          }
        }
        // shape files force geometry name to be 'the_geom'. So isolate
        // this change
        copy.setDefaultGeometry(feature.getDefaultGeometry());
        writer.write();
      }
    } catch (final IOException e) {
      LOGGER.warn("Problem with the FeatureWritter", e);
      transaction.rollback();
    } finally {
      transaction.commit();
      transaction.close();
    }
  }

  @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
      value = "RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",
      justification = "Directories may alreadybe there")
  public static void writeShape(final File dir, final List<SimpleFeature> shapes)
      throws IOException {

    FileUtils.deleteDirectory(dir);

    dir.mkdirs();

    final ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory();
    final String typeName = shapes.get(0).getType().getTypeName();
    final Map<String, Serializable> params = new HashMap<>();
    params.put("url", new File(dir.getAbsolutePath() + "/" + typeName + ".shp").toURI().toURL());
    params.put("create spatial index", Boolean.TRUE);

    final ShapefileDataStore newDataStore =
        (ShapefileDataStore) dataStoreFactory.createNewDataStore(params);
    newDataStore.createSchema(shapes.get(0).getFeatureType());
    final Transaction transaction = new DefaultTransaction("create");

    try (final FeatureWriter<SimpleFeatureType, SimpleFeature> writer =
        newDataStore.getFeatureWriterAppend(typeName, transaction)) {
      for (final SimpleFeature shape : shapes) {
        final SimpleFeature copy = writer.next();
        for (final AttributeDescriptor attrD : copy.getFeatureType().getAttributeDescriptors()) {
          // the null case should only happen for geometry
          if (copy.getFeatureType().getDescriptor(attrD.getName()) != null) {
            copy.setAttribute(attrD.getName(), shape.getAttribute(attrD.getName()));
          }
        }
        // shape files force geometry name to be 'the_geom'. So isolate
        // this change
        copy.setDefaultGeometry(shape.getDefaultGeometry());
        writer.write();
      }
    } catch (final IOException e) {
      LOGGER.warn("Problem with the FeatureWritter", e);
      transaction.rollback();
    } finally {
      transaction.commit();
      transaction.close();
    }
  }
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/SimpleFeatureItemWrapperFactory.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import java.io.IOException;
import java.util.UUID;
import org.apache.hadoop.mapreduce.JobContext;
import org.locationtech.geowave.analytic.AnalyticFeature.ClusterFeatureAttribute;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.opengis.feature.simple.SimpleFeature;
import org.slf4j.Logger;

public class SimpleFeatureItemWrapperFactory implements AnalyticItemWrapperFactory<SimpleFeature> {

  @Override
  public AnalyticItemWrapper<SimpleFeature> create(final SimpleFeature item) {
    return new SimpleFeatureAnalyticItemWrapper(item);
  }

  @Override
  public void initialize(final JobContext context, final Class<?> scope, final Logger logger)
      throws IOException {}

  public static class SimpleFeatureAnalyticItemWrapper implements
      AnalyticItemWrapper<SimpleFeature> {

    final SimpleFeature item;

    public SimpleFeatureAnalyticItemWrapper(final SimpleFeature item) {
      this.item = item;
    }

    @Override
    public String getID() {
      return item.getID();
    }

    @Override
    public SimpleFeature getWrappedItem() {
      return item;
    }

    @Override
    public long getAssociationCount() {
      final Long countO = (Long) item.getAttribute(ClusterFeatureAttribute.COUNT.attrName());
      return (countO != null) ? countO.longValue() : 0;
    }

    @Override
    public int getIterationID() {
      return ((Integer) item.getAttribute(ClusterFeatureAttribute.ITERATION.attrName())).intValue();
    }

    @Override
    public String getGroupID() {
      return getAttribute(item, ClusterFeatureAttribute.GROUP_ID.attrName());
    }

    @Override
    public void setGroupID(final String groupID) {
      item.setAttribute(ClusterFeatureAttribute.GROUP_ID.attrName(), groupID);
    }

    @Override
    public void resetAssociatonCount() {
      item.setAttribute(ClusterFeatureAttribute.COUNT.attrName(), 0);
    }

    @Override
    public void incrementAssociationCount(final long increment) {
      item.setAttribute(
          ClusterFeatureAttribute.COUNT.attrName(),
          getAssociationCount() + increment);
    }

    @Override
    public String toString() {
      return "SimpleFeatureCentroid [item="
          + item.getID()
          + ", + group="
          + getGroupID()
          + ", + count="
          + getAssociationCount()
          + ", cost="
          + getCost()
          + "]";
    }

    @Override
    public double getCost() {
      final Double costO = (Double) item.getAttribute(ClusterFeatureAttribute.WEIGHT.attrName());
      return (costO != null) ? costO.doubleValue() : 0.0;
    }

    @Override
    public void setCost(final double cost) {
      // GENERIC GEOMETRY HAS A DISTANCE, NOT A COST
      item.setAttribute(ClusterFeatureAttribute.WEIGHT.attrName(), cost);
    }

    @Override
    public String getName() {
      return item.getAttribute(ClusterFeatureAttribute.NAME.attrName()).toString();
    }

    @Override
    public String[] getExtraDimensions() {
      return new String[0];
    }

    @Override
    public double[] getDimensionValues() {
      return new double[0];
    }

    @Override
    public Geometry getGeometry() {
      return (Geometry) item.getAttribute(ClusterFeatureAttribute.GEOMETRY.attrName());
    }

    @Override
    public void setZoomLevel(final int level) {
      item.setAttribute(ClusterFeatureAttribute.ZOOM_LEVEL.attrName(), Integer.valueOf(level));
    }

    @Override
    public int getZoomLevel() {
      return getIntAttribute(item, ClusterFeatureAttribute.ZOOM_LEVEL.attrName(), 1);
    }

    @Override
    public void setBatchID(final String batchID) {
      item.setAttribute(ClusterFeatureAttribute.BATCH_ID.attrName(), batchID);
    }

    @Override
    public String getBatchID() {
      return item.getAttribute(ClusterFeatureAttribute.BATCH_ID.attrName()).toString();
    }
  }

  private static String getAttribute(final SimpleFeature feature, final String name) {
    final Object att = feature.getAttribute(name);
    return att == null ? null : att.toString();
  }

  private static int getIntAttribute(
      final SimpleFeature feature,
      final String name,
      final int defaultValue) {
    final Object att = feature.getAttribute(name);
    return att == null ? defaultValue
        : (att instanceof Number ? ((Number) att).intValue() : Integer.parseInt(att.toString()));
  }

  /*
   * @see org.locationtech.geowave.analytics.tools.CentroidFactory#createNextCentroid
   * (java.lang.Object, org.locationtech.jts.geom.Coordinate, java.lang.String[], double[])
   */

  @Override
  public AnalyticItemWrapper<SimpleFeature> createNextItem(
      final SimpleFeature feature,
      final String groupID,
      final Coordinate coordinate,
      final String[] extraNames,
      final double[] extraValues) {
    final Geometry geometry =
        (Geometry) feature.getAttribute(ClusterFeatureAttribute.GEOMETRY.attrName());

    return new SimpleFeatureAnalyticItemWrapper(
        AnalyticFeature.createGeometryFeature(
            feature.getFeatureType(),
            feature.getAttribute(ClusterFeatureAttribute.BATCH_ID.attrName()).toString(),
            UUID.randomUUID().toString(),
            getAttribute(feature, ClusterFeatureAttribute.NAME.attrName()),
            groupID,
            ((Double) feature.getAttribute(
                ClusterFeatureAttribute.WEIGHT.attrName())).doubleValue(),
            geometry.getFactory().createPoint(coordinate),
            extraNames,
            extraValues,
            ((Integer) feature.getAttribute(
                ClusterFeatureAttribute.ZOOM_LEVEL.attrName())).intValue(),
            ((Integer) feature.getAttribute(
                ClusterFeatureAttribute.ITERATION.attrName())).intValue() + 1,
            ((Long) feature.getAttribute(ClusterFeatureAttribute.COUNT.attrName())).longValue()));
  }
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/SimpleFeatureProjection.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic;

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.mapreduce.JobContext;
import org.locationtech.jts.geom.Geometry;
import org.opengis.feature.simple.SimpleFeature;

/** Assumes two-dimensional simple feature without time dimensions. */
public class SimpleFeatureProjection implements Projection<SimpleFeature> {

  @Override
  public Geometry getProjection(final SimpleFeature anItem) {
    return (Geometry) anItem.getDefaultGeometry();
  }

  @Override
  public void initialize(final JobContext context, final Class<?> scope) throws IOException {}

  @Override
  public void setup(
      final PropertyManagement runTimeProperties,
      final Class<?> scope,
      final Configuration configuration) {}
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/CentroidItemWrapperFactory.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic.clustering;

import java.io.IOException;
import org.apache.hadoop.mapreduce.JobContext;
import org.locationtech.geowave.analytic.AnalyticItemWrapper;
import org.locationtech.geowave.analytic.AnalyticItemWrapperFactory;
import org.locationtech.geowave.analytic.kmeans.AssociationNotification;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Determine the group ID for an item dynamically.
 *
 * @param <T>
 */
public class CentroidItemWrapperFactory<T> implements AnalyticItemWrapperFactory<T> {

  static final Logger LOGGER = LoggerFactory.getLogger(CentroidItemWrapperFactory.class);
  private AnalyticItemWrapperFactory<T> itemFactory;
  private NestedGroupCentroidAssignment<T> nestedGroupCentroidAssignment;

  @Override
  public AnalyticItemWrapper<T> create(final T item) {
    return new CentroidItemWrapper(item);
  }

  @Override
  public void initialize(final JobContext context, final Class<?> scope, final Logger logger)
      throws IOException {
    try {
      nestedGroupCentroidAssignment = new NestedGroupCentroidAssignment<>(context, scope, logger);
    } catch (InstantiationException | IllegalAccessException e) {
      throw new IOException("Failed to instantiate", e);
    }

    itemFactory.initialize(context, scope, logger);
  }

  public AnalyticItemWrapperFactory<T> getItemFactory() {
    return itemFactory;
  }

  public void setItemFactory(final AnalyticItemWrapperFactory<T> itemFactory) {
    this.itemFactory = itemFactory;
  }

  public class CentroidItemWrapper implements AnalyticItemWrapper<T> {
    final AnalyticItemWrapper<T> wrappedItem;
    AnalyticItemWrapper<T> centroidItem;

    public CentroidItemWrapper(final T item) {
      wrappedItem = itemFactory.create(item);
      try {
        nestedGroupCentroidAssignment.findCentroidForLevel(
            wrappedItem,
            new AssociationNotification<T>() {
              @Override
              public void notify(final CentroidPairing<T> pairing) {
                centroidItem = pairing.getCentroid();
              }
            });
      } catch (final IOException e) {
        LOGGER.error("Cannot resolve paired centroid for " + wrappedItem.getID(), e);
        centroidItem = wrappedItem;
      }
    }

    @Override
    public String getID() {
      return centroidItem.getID();
    }

    @Override
    public T getWrappedItem() {
      return centroidItem.getWrappedItem();
    }

    @Override
    public long getAssociationCount() {
      return centroidItem.getAssociationCount();
    }

    @Override
    public int getIterationID() {
      return centroidItem.getIterationID();
    }

    // this is not a mistake...the group id is the centroid itself
    @Override
    public String getGroupID() {
      return centroidItem.getID();
    }

    @Override
    public void setGroupID(final String groupID) {}

    @Override
    public void resetAssociatonCount() {}

    @Override
    public void incrementAssociationCount(final long increment) {}

    @Override
    public double getCost() {
      return centroidItem.getCost();
    }

    @Override
    public void setCost(final double cost) {}

    @Override
    public String getName() {
      return centroidItem.getName();
    }

    @Override
    public String[] getExtraDimensions() {
      return new String[0];
    }

    @Override
    public double[] getDimensionValues() {
      return new double[0];
    }

    @Override
    public Geometry getGeometry() {
      return centroidItem.getGeometry();
    }

    @Override
    public void setZoomLevel(final int level) {}

    @Override
    public int getZoomLevel() {
      return centroidItem.getZoomLevel();
    }

    @Override
    public void setBatchID(final String batchID) {}

    @Override
    public String getBatchID() {
      return centroidItem.getBatchID();
    }
  }

  /*
   * @see org.locationtech.geowave.analytics.tools.CentroidFactory#createNextCentroid
   * (java.lang.Object, org.locationtech.jts.geom.Coordinate, java.lang.String[], double[])
   */

  @Override
  public AnalyticItemWrapper<T> createNextItem(
      final T feature,
      final String groupID,
      final Coordinate coordinate,
      final String[] extraNames,
      final double[] extraValues) {
    return this.itemFactory.createNextItem(feature, groupID, coordinate, extraNames, extraValues);
  }
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/CentroidManager.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic.clustering;

import java.io.IOException;
import java.util.List;
import org.locationtech.geowave.analytic.AnalyticItemWrapper;
import org.locationtech.geowave.analytic.clustering.exception.MatchingCentroidNotFoundException;
import org.locationtech.jts.geom.Coordinate;

/**
 * Manage centroids created per batch and per group of analytic processes. There can be multiple
 * groups per batch. A group is loosely interpreted as a set of item geometries under analysis. The
 * sets can be defined by shared characteristics.
 *
 * @param <T> The type of item that is used to represent a centroid.
 */
public interface CentroidManager<T> {

  /**
   * Creates a new centroid based on the old centroid with new coordinates and dimension values
   */
  public AnalyticItemWrapper<T> createNextCentroid(
      final T feature,
      final String groupID,
      final Coordinate coordinate,
      final String[] extraNames,
      final double[] extraValues);

  public AnalyticItemWrapper<T> getCentroidById(final String id, final String groupID)
      throws IOException, MatchingCentroidNotFoundException;

  public void delete(final String[] dataIds) throws IOException;

  public List<String> getAllCentroidGroups() throws IOException;

  public List<AnalyticItemWrapper<T>> getCentroidsForGroup(final String groupID) throws IOException;

  public List<AnalyticItemWrapper<T>> getCentroidsForGroup(
      final String batchID,
      final String groupID) throws IOException;

  public int processForAllGroups(CentroidProcessingFn<T> fn) throws IOException;

  public static interface CentroidProcessingFn<T> {
    public int processGroup(final String groupID, final List<AnalyticItemWrapper<T>> centroids);
  }

  public AnalyticItemWrapper<T> getCentroid(final String id);

  public void clear();

  public String getDataTypeName();

  public String getIndexName();
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/CentroidManagerGeoWave.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic.clustering;

import java.io.IOException;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections.map.LRUMap;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.JobContext;
import org.geotools.data.DefaultTransaction;
import org.geotools.data.FeatureWriter;
import org.geotools.data.Transaction;
import org.geotools.data.shapefile.ShapefileDataStore;
import org.geotools.data.shapefile.ShapefileDataStoreFactory;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.feature.type.BasicFeatureTypes;
import org.geotools.filter.FilterFactoryImpl;
import org.locationtech.geowave.adapter.vector.FeatureDataAdapter;
import org.locationtech.geowave.analytic.AnalyticFeature;
import org.locationtech.geowave.analytic.AnalyticFeature.ClusterFeatureAttribute;
import org.locationtech.geowave.analytic.AnalyticItemWrapper;
import org.locationtech.geowave.analytic.AnalyticItemWrapperFactory;
import org.locationtech.geowave.analytic.PropertyManagement;
import org.locationtech.geowave.analytic.ScopedJobConfiguration;
import org.locationtech.geowave.analytic.clustering.exception.MatchingCentroidNotFoundException;
import org.locationtech.geowave.analytic.param.CentroidParameters;
import org.locationtech.geowave.analytic.param.GlobalParameters;
import org.locationtech.geowave.analytic.param.ParameterEnum;
import org.locationtech.geowave.analytic.param.StoreParameters;
import org.locationtech.geowave.analytic.store.PersistableStore;
import org.locationtech.geowave.core.geotime.index.SpatialDimensionalityTypeProvider;
import org.locationtech.geowave.core.geotime.index.SpatialOptions;
import org.locationtech.geowave.core.geotime.store.GeotoolsFeatureDataAdapter;
import org.locationtech.geowave.core.geotime.store.query.api.VectorQueryBuilder;
import org.locationtech.geowave.core.index.StringUtils;
import org.locationtech.geowave.core.store.CloseableIterator;
import org.locationtech.geowave.core.store.adapter.PersistentAdapterStore;
import org.locationtech.geowave.core.store.api.DataStore;
import org.locationtech.geowave.core.store.api.Index;
import org.locationtech.geowave.core.store.api.QueryBuilder;
import org.locationtech.geowave.core.store.api.Writer;
import org.locationtech.geowave.core.store.index.IndexStore;
import org.locationtech.geowave.mapreduce.GeoWaveConfiguratorBase;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.Point;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.feature.type.AttributeDescriptor;
import org.opengis.feature.type.GeometryType;
import org.opengis.filter.Filter;
import org.opengis.filter.expression.Expression;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Manages the population of centroids by group id and batch id.
 * 
 * @param <T> The item type used to represent a centroid.
 */
public class CentroidManagerGeoWave<T> implements CentroidManager<T> {
  static final Logger LOGGER = LoggerFactory.getLogger(CentroidManagerGeoWave.class);
  private static final ParameterEnum<?>[] MY_PARAMS =
      new ParameterEnum[] {
          StoreParameters.StoreParam.INPUT_STORE,
          GlobalParameters.Global.BATCH_ID,
          CentroidParameters.Centroid.DATA_TYPE_ID,
          CentroidParameters.Centroid.DATA_NAMESPACE_URI,
          CentroidParameters.Centroid.INDEX_NAME,
          CentroidParameters.Centroid.WRAPPER_FACTORY_CLASS,
          CentroidParameters.Centroid.ZOOM_LEVEL};
  private String batchId;
  private int level = 0;

  private AnalyticItemWrapperFactory<T> centroidFactory;
  private GeotoolsFeatureDataAdapter adapter;
  private String centroidDataTypeId;

  private DataStore dataStore;
  private IndexStore indexStore;
  private Index index;

  public CentroidManagerGeoWave(
      final DataStore dataStore,
      final IndexStore indexStore,
      final PersistentAdapterStore adapterStore,
      final AnalyticItemWrapperFactory<T> centroidFactory,
      final String centroidDataTypeId,
      final short centroidInternalAdapterId,
      final String indexName,
      final String batchId,
      final int level) {
    this.centroidFactory = centroidFactory;
    this.level = level;
    this.batchId = batchId;
    this.dataStore = dataStore;
    this.indexStore = indexStore;
    this.centroidDataTypeId = centroidDataTypeId;
    index = indexStore.getIndex(indexName);
    adapter =
        (GeotoolsFeatureDataAdapter) adapterStore.getAdapter(
            centroidInternalAdapterId).getAdapter();
  }

  public CentroidManagerGeoWave(final PropertyManagement properties) throws IOException {
    final Class<?> scope = CentroidManagerGeoWave.class;
    final Configuration configuration = new Configuration();
    properties.setJobConfiguration(configuration, scope);
    init(Job.getInstance(configuration), scope, LOGGER);
  }

  public CentroidManagerGeoWave(final JobContext context, final Class<?> scope) throws IOException {
    this(context, scope, LOGGER);
  }

  public CentroidManagerGeoWave(final JobContext context, final Class<?> scope, final Logger logger)
      throws IOException {
    init(context, scope, logger);
  }

  private void init(final JobContext context, final Class<?> scope, final Logger logger)
      throws IOException {
    final ScopedJobConfiguration scopedJob =
        new ScopedJobConfiguration(context.getConfiguration(), scope, logger);
    try {
      centroidFactory =
          (AnalyticItemWrapperFactory<T>) CentroidParameters.Centroid.WRAPPER_FACTORY_CLASS.getHelper().getValue(
              context,
              scope,
              CentroidItemWrapperFactory.class);
      centroidFactory.initialize(context, scope, logger);

    } catch (final Exception e1) {
      LOGGER.error(
          "Cannot instantiate "
              + GeoWaveConfiguratorBase.enumToConfKey(
                  this.getClass(),
                  CentroidParameters.Centroid.WRAPPER_FACTORY_CLASS));
      throw new IOException(e1);
    }

    this.level = scopedJob.getInt(CentroidParameters.Centroid.ZOOM_LEVEL, 1);

    centroidDataTypeId = scopedJob.getString(CentroidParameters.Centroid.DATA_TYPE_ID, "centroid");

    batchId =
        scopedJob.getString(
            GlobalParameters.Global.BATCH_ID,
            Long.toString(Calendar.getInstance().getTime().getTime()));

    final String indexName =
        scopedJob.getString(
            CentroidParameters.Centroid.INDEX_NAME,
            SpatialDimensionalityTypeProvider.createIndexFromOptions(
                new SpatialOptions()).getName());
    final PersistableStore store =
        (PersistableStore) StoreParameters.StoreParam.INPUT_STORE.getHelper().getValue(
            context,
            scope,
            null);

    dataStore = store.getDataStoreOptions().createDataStore();
    indexStore = store.getDataStoreOptions().createIndexStore();
    index = indexStore.getIndex(indexName);
    final PersistentAdapterStore adapterStore = store.getDataStoreOptions().createAdapterStore();
    adapter =
        (GeotoolsFeatureDataAdapter) adapterStore.getAdapter(
            store.getDataStoreOptions().createInternalAdapterStore().getAdapterId(
                centroidDataTypeId)).getAdapter();
  }

  /**
   * Creates a new centroid based on the old centroid with new coordinates and dimension values
   */
  @Override
  public AnalyticItemWrapper<T> createNextCentroid(
      final T feature,
      final String groupID,
      final Coordinate coordinate,
      final String[] extraNames,
      final double[] extraValues) {
    return centroidFactory.createNextItem(feature, groupID, coordinate, extraNames, extraValues);
  }

  private final int capacity = 100;
  private final LRUMap groupToCentroid = new LRUMap(capacity);

  @Override
  public void clear() {
    groupToCentroid.clear();
  }

  @Override
  public void delete(final String[] dataIds) throws IOException {
    for (final String dataId : dataIds) {
      if (dataId != null) {
        final QueryBuilder<?, ?> bldr =
            QueryBuilder.newBuilder().addTypeName(centroidDataTypeId).indexName(index.getName());
        dataStore.delete(
            bldr.constraints(
                bldr.constraintsFactory().dataIds(StringUtils.stringToBinary(dataId))).build());
      }
    }
  }

  @Override
  public List<String> getAllCentroidGroups() throws IOException {
    final List<String> groups = new ArrayList<>();
    final CloseableIterator<T> it = getRawCentroids(this.batchId, null);
    while (it.hasNext()) {
      final AnalyticItemWrapper<T> item = centroidFactory.create(it.next());
      final String groupID = item.getGroupID();
      int pos = groups.indexOf(groupID);
      if (pos < 0) {
        pos = groups.size();
        groups.add(groupID);
      }
      // cache the first set
      if (pos < capacity) {
        getCentroidsForGroup(groupID);
      }
    }
    it.close();
    return groups;
  }

  @Override
  public List<AnalyticItemWrapper<T>> getCentroidsForGroup(final String groupID)
      throws IOException {
    return getCentroidsForGroup(this.batchId, groupID);
  }

  @Override
  public List<AnalyticItemWrapper<T>> getCentroidsForGroup(
      final String batchID,
      final String groupID) throws IOException {
    final String lookupGroup = (groupID == null) ? "##" : groupID;

    final Pair<String, String> gid = Pair.of(batchID, lookupGroup);
    @SuppressWarnings("unchecked")
    List<AnalyticItemWrapper<T>> centroids =
        (List<AnalyticItemWrapper<T>>) groupToCentroid.get(gid);
    if (centroids == null) {
      centroids = groupID == null ? loadCentroids(batchID, null) : loadCentroids(batchID, groupID);
      groupToCentroid.put(gid, centroids);
    }
    return centroids;
  }

  @Override
  public AnalyticItemWrapper<T> getCentroidById(final String id, final String groupID)
      throws IOException, MatchingCentroidNotFoundException {
    for (final AnalyticItemWrapper<T> centroid : this.getCentroidsForGroup(groupID)) {
      if (centroid.getID().equals(id)) {
        return centroid;
      }
    }
    throw new MatchingCentroidNotFoundException(id);
  }

  private List<AnalyticItemWrapper<T>> loadCentroids(final String batchID, final String groupID)
      throws IOException {
    final List<AnalyticItemWrapper<T>> centroids = new ArrayList<>();
    try {

      CloseableIterator<T> it = null;

      try {
        it = this.getRawCentroids(batchID, groupID);
        while (it.hasNext()) {
          centroids.add(centroidFactory.create(it.next()));
        }
        return centroids;
      } finally {
        if (it != null) {
          it.close();
        }
      }

    } catch (final IOException e) {
      LOGGER.error("Cannot load centroids");
      throw new IOException(e);
    }
  }

  @Override
  @SuppressWarnings("unchecked")
  public AnalyticItemWrapper<T> getCentroid(final String dataId) {
    final QueryBuilder<T, ?> bldr =
        (QueryBuilder<T, ?>) QueryBuilder.newBuilder().addTypeName(centroidDataTypeId).indexName(
            index.getName());
    try (CloseableIterator<T> it =
        dataStore.query(
            bldr.constraints(
                bldr.constraintsFactory().dataIds(StringUtils.stringToBinary(dataId))).build())) {
      if (it.hasNext()) {
        return centroidFactory.create(it.next());
      }
    }
    return null;
  }

  @SuppressWarnings("unchecked")
  protected CloseableIterator<T> getRawCentroids(final String batchId, final String groupID)
      throws IOException {

    final FilterFactoryImpl factory = new FilterFactoryImpl();
    final Expression expB1 = factory.property(ClusterFeatureAttribute.BATCH_ID.attrName());
    final Expression expB2 = factory.literal(batchId);

    final Filter batchIdFilter = factory.equal(expB1, expB2, false);

    Filter finalFilter = batchIdFilter;
    if (groupID != null) {
      final Expression exp1 = factory.property(ClusterFeatureAttribute.GROUP_ID.attrName());
      final Expression exp2 = factory.literal(groupID);
      // ignore levels for group IDS
      finalFilter = factory.and(factory.equal(exp1, exp2, false), batchIdFilter);
    } else if (level > 0) {
      final Expression exp1 = factory.property(ClusterFeatureAttribute.ZOOM_LEVEL.attrName());
      final Expression exp2 = factory.literal(level);
      finalFilter = factory.and(factory.equal(exp1, exp2, false), batchIdFilter);
    }
    final VectorQueryBuilder bldr =
        VectorQueryBuilder.newBuilder().addTypeName(adapter.getTypeName()).indexName(
            index.getName());
    return (CloseableIterator<T>) dataStore.query(
        bldr.constraints(bldr.constraintsFactory().filterConstraints(finalFilter)).build());
  }

  @SuppressWarnings("unchecked")
  public void transferBatch(final String fromBatchId, final String groupID) throws IOException {
    int count = 0;
    try (final CloseableIterator<T> it = getRawCentroids(fromBatchId, groupID)) {
      dataStore.addType(adapter, index);
      try (final Writer indexWriter = dataStore.createWriter(adapter.getTypeName())) {
        while (it.hasNext()) {
          final AnalyticItemWrapper<T> item = centroidFactory.create(it.next());
          item.setBatchID(this.batchId);
          count++;

          indexWriter.write(item.getWrappedItem());
        }
        // indexWriter.close();
      }
    }
    LOGGER.info("Transfer " + count + " centroids");
  }

  @Override
  public int processForAllGroups(final CentroidProcessingFn<T> fn) throws IOException {
    List<String> centroidGroups;
    try {
      centroidGroups = getAllCentroidGroups();
    } catch (final IOException e) {
      throw new IOException(e);
    }

    int status = 0;
    for (final String groupID : centroidGroups) {
      status = fn.processGroup(groupID, getCentroidsForGroup(groupID));
      if (status != 0) {
        break;
      }
    }
    return status;
  }

  public static Collection<ParameterEnum<?>> getParameters() {
    return Arrays.asList(MY_PARAMS);
  }

  public static void setParameters(
      final Configuration config,
      final Class<?> scope,
      final PropertyManagement runTimeProperties) {
    runTimeProperties.setConfig(MY_PARAMS, config, scope);
  }

  @Override
  public String getIndexName() {
    return index.getName();
  }

  public String getBatchId() {
    return this.batchId;
  }

  private ToSimpleFeatureConverter<T> getFeatureConverter(
      final List<AnalyticItemWrapper<T>> items,
      final Class<? extends Geometry> shapeClass) {
    return (adapter instanceof FeatureDataAdapter)
        ? new SimpleFeatureConverter((FeatureDataAdapter) adapter, shapeClass)
        : new NonSimpleFeatureConverter(
            items.isEmpty() ? new String[0] : items.get(0).getExtraDimensions(),
            shapeClass);
  }

  private interface ToSimpleFeatureConverter<T> {
    SimpleFeatureType getFeatureType();

    SimpleFeature toSimpleFeature(AnalyticItemWrapper<T> item);
  }

  private static SimpleFeatureType createFeatureType(
      final SimpleFeatureType featureType,
      final Class<? extends Geometry> shapeClass) {
    try {
      final SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
      builder.setName(featureType.getName().getLocalPart());
      builder.setNamespaceURI(featureType.getName().getNamespaceURI());
      builder.setCRS(featureType.getCoordinateReferenceSystem());
      for (final AttributeDescriptor attr : featureType.getAttributeDescriptors()) {
        if (attr.getType() instanceof GeometryType) {
          builder.add(attr.getLocalName(), shapeClass);
        } else {
          builder.add(attr.getLocalName(), attr.getType().getBinding());
        }
      }
      return builder.buildFeatureType();
    } catch (final Exception e) {
      LOGGER.warn("Schema Creation Error.  Hint: Check the SRID.", e);
    }

    return null;
  }

  private static Geometry convert(
      final Geometry value,
      final Class<? extends Geometry> shapeClass) {
    if (shapeClass.isInstance(value)) {
      return value;
    }
    if (shapeClass.isAssignableFrom(Point.class)) {
      return value.getCentroid();
    }
    final Geometry hull = value.convexHull();
    if (shapeClass.isInstance(hull)) {
      return hull;
    }
    return null;
  }

  private class SimpleFeatureConverter implements ToSimpleFeatureConverter<T> {

    final SimpleFeatureType type;
    final Object[] defaults;
    final Class<? extends Geometry> shapeClass;

    public SimpleFeatureConverter(
        final FeatureDataAdapter adapter,
        final Class<? extends Geometry> shapeClass) {
      type = createFeatureType(adapter.getFeatureType(), shapeClass);
      int p = 0;
      this.shapeClass = shapeClass;
      final List<AttributeDescriptor> descriptors =
          adapter.getFeatureType().getAttributeDescriptors();
      defaults = new Object[descriptors.size()];
      for (final AttributeDescriptor descriptor : descriptors) {
        defaults[p++] = descriptor.getDefaultValue();
      }
    }

    @Override
    public SimpleFeatureType getFeatureType() {
      return type;
    }

    @Override
    public SimpleFeature toSimpleFeature(final AnalyticItemWrapper<T> item) {
      final SimpleFeature newFeature = SimpleFeatureBuilder.build(type, defaults, item.getID());
      int i = 0;
      for (final Object value : ((SimpleFeature) item.getWrappedItem()).getAttributes()) {
        if (value instanceof Geometry) {
          final Geometry newValue = convert((Geometry) value, shapeClass);
          if (newValue == null) {
            return null;
          }
          newFeature.setAttribute(i++, newValue);
        } else {
          newFeature.setAttribute(i++, value);
        }
      }
      return newFeature;
    }
  }

  private class NonSimpleFeatureConverter implements ToSimpleFeatureConverter<T> {
    final SimpleFeatureType featureType;
    final Object[] defaults;
    final Class<? extends Geometry> shapeClass;

    public NonSimpleFeatureConverter(
        final String[] extraDimensionNames,
        final Class<? extends Geometry> shapeClass) {
      featureType =
          AnalyticFeature.createFeatureAdapter(
              centroidDataTypeId,
              extraDimensionNames,
              BasicFeatureTypes.DEFAULT_NAMESPACE,
              ClusteringUtils.CLUSTERING_CRS,
              ClusterFeatureAttribute.values(),
              shapeClass).getFeatureType();
      this.shapeClass = shapeClass;
      final List<AttributeDescriptor> descriptors = featureType.getAttributeDescriptors();
      defaults = new Object[descriptors.size()];
      int p = 0;
      for (final AttributeDescriptor descriptor : descriptors) {
        defaults[p++] = descriptor.getDefaultValue();
      }
    }

    @Override
    public SimpleFeatureType getFeatureType() {
      return featureType;
    }

    @Override
    public SimpleFeature toSimpleFeature(final AnalyticItemWrapper<T> item) {

      final Geometry value = item.getGeometry();
      final Geometry newValue = convert(value, shapeClass);
      if (newValue == null) {
        return null;
      }

      return AnalyticFeature.createGeometryFeature(
          featureType,
          item.getBatchID(),
          item.getID(),
          item.getName(),
          item.getGroupID(),
          item.getCost(),
          newValue,
          item.getExtraDimensions(),
          item.getDimensionValues(),
          item.getZoomLevel(),
          item.getIterationID(),
          item.getAssociationCount());
    }
  }

  public void toShapeFile(final String parentDir, final Class<? extends Geometry> shapeClass)
      throws IOException {
    // File shp = new File(parentDir + "/" + this.batchId + ".shp");
    // File shx = new File(parentDir + "/" + this.batchId + ".shx");
    final ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory();
    final Map<String, Serializable> params = new HashMap<>();
    try {
      params.put("url", new URL("file://" + parentDir + "/" + this.batchId + ".shp"));
    } catch (final MalformedURLException e) {
      LOGGER.error("Error creating URL", e);
    }
    params.put("create spatial index", Boolean.TRUE);

    final List<AnalyticItemWrapper<T>> centroids = loadCentroids(batchId, null);

    final ToSimpleFeatureConverter<T> converter = getFeatureConverter(centroids, shapeClass);

    final ShapefileDataStore newDataStore =
        (ShapefileDataStore) dataStoreFactory.createNewDataStore(params);
    newDataStore.createSchema(converter.getFeatureType());

    final Transaction transaction = new DefaultTransaction("create");

    final String typeName = newDataStore.getTypeNames()[0];

    try (final FeatureWriter<SimpleFeatureType, SimpleFeature> writer =
        newDataStore.getFeatureWriterAppend(typeName, transaction)) {
      for (final AnalyticItemWrapper<T> item : centroids) {
        final SimpleFeature copy = writer.next();
        final SimpleFeature newFeature = converter.toSimpleFeature(item);
        for (final AttributeDescriptor attrD : newFeature.getFeatureType().getAttributeDescriptors()) {
          // the null case should only happen for geometry
          if (copy.getFeatureType().getDescriptor(attrD.getName()) != null) {
            copy.setAttribute(attrD.getName(), newFeature.getAttribute(attrD.getName()));
          }
        }
        // shape files force geometry name to be 'the_geom'. So isolate
        // this change
        copy.setDefaultGeometry(newFeature.getDefaultGeometry());
        writer.write();
      }
    } catch (final IOException e) {
      LOGGER.warn("Problem with the FeatureWritter", e);
      transaction.rollback();
    } finally {
      transaction.commit();
      transaction.close();
    }
  }

  @Override
  public String getDataTypeName() {
    return this.centroidDataTypeId;
  }
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/CentroidPairing.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.org/licenses/LICENSE-2.0.txt
 */
package org.locationtech.geowave.analytic.clustering;

import org.locationtech.geowave.analytic.AnalyticItemWrapper;

public class CentroidPairing<T> {
  private AnalyticItemWrapper<T> centroid;
  private AnalyticItemWrapper<T> pairedItem;
  private double distance;

  public CentroidPairing() {}

  public CentroidPairing(
      final AnalyticItemWrapper<T> centroid,
      final AnalyticItemWrapper<T> pairedItem,
      final double distance) {
    super();
    this.centroid = centroid;
    this.pairedItem = pairedItem;
    this.distance = distance;
  }

  public AnalyticItemWrapper<T> getCentroid() {
    return centroid;
  }

  public void setCentroid(final AnalyticItemWrapper<T> centroid) {
    this.centroid = centroid;
  }

  public AnalyticItemWrapper<T> getPairedItem() {
    return pairedItem;
  }

  public void setPairedItem(final AnalyticItemWrapper<T> pairedItem) {
    this.pairedItem = pairedItem;
  }

  public double getDistance() {
    return distance;
  }

  public void setDistance(final double distance) {
    this.distance = distance;
  }

  @Override
  public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = (prime * result) + ((centroid == null) ? 0 : centroid.hashCode());
    long temp;
    temp = Double.doubleToLongBits(distance);
    result = (prime * result) + (int) (temp ^ (temp >>> 32));
    result = (prime * result) + ((pairedItem == null) ? 0 : pairedItem.hashCode());
    return result;
  }

  @Override
  public boolean equals(final Object obj) {
    if (this == obj) {
      return true;
    }
    if (obj == null) {
      return false;
    }
    if (getClass() != obj.getClass()) {
      return false;
    }
    final CentroidPairing other = (CentroidPairing) obj;
    if (centroid == null) {
      if (other.centroid != null) {
        return false;
      }
    } else if (!centroid.equals(other.centroid)) {
      return false;
    }
    if (Double.doubleToLongBits(distance) != Double.doubleToLongBits(other.distance)) {
      return false;
    }
    if (pairedItem == null) {
      if (other.pairedItem != null) {
        return false;
      }
    } else if (!pairedItem.equals(other.pairedItem)) {
      return false;
    }
    return true;
  }
}


================================================
FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/ClusteringUtils.java
================================================
/**
 * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation
 *
 * <p> See the NOTICE file distributed with this work for additional information regarding copyright
 * ownership. All rights reserved. This program and the accompanying materials are made available
 * under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
 * available at http://www.apache.or
Download .txt
Showing preview only (342K chars total). Download the full file or copy to clipboard to get everything.
gitextract_mqqhxs54/

├── .gitattributes
├── .github/
│   └── workflows/
│       ├── publish.yml
│       └── test.yml
├── .gitignore
├── .utility/
│   ├── .maven.xml
│   ├── build-dev-resources.sh
│   ├── build-python-docs.sh
│   ├── publish-artifacts.sh
│   ├── publish-docs.sh
│   ├── retry
│   ├── run-python-tests.sh
│   └── run-tests.sh
├── CONTRIBUTING.md
├── LICENSE
├── NOTICE
├── README.md
├── analytics/
│   ├── api/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── locationtech/
│   │       │   │           └── geowave/
│   │       │   │               └── analytic/
│   │       │   │                   ├── AdapterWithObjectWritable.java
│   │       │   │                   ├── AnalyticFeature.java
│   │       │   │                   ├── AnalyticItemWrapper.java
│   │       │   │                   ├── AnalyticItemWrapperFactory.java
│   │       │   │                   ├── AnalyticPersistableRegistry.java
│   │       │   │                   ├── GeoObjectDimensionValues.java
│   │       │   │                   ├── GeometryCalculations.java
│   │       │   │                   ├── GeometryDataSetGenerator.java
│   │       │   │                   ├── GeometryHullTool.java
│   │       │   │                   ├── IndependentJobRunner.java
│   │       │   │                   ├── Projection.java
│   │       │   │                   ├── PropertyManagement.java
│   │       │   │                   ├── ScopedJobConfiguration.java
│   │       │   │                   ├── SerializableAdapterStore.java
│   │       │   │                   ├── ShapefileTool.java
│   │       │   │                   ├── SimpleFeatureItemWrapperFactory.java
│   │       │   │                   ├── SimpleFeatureProjection.java
│   │       │   │                   ├── clustering/
│   │       │   │                   │   ├── CentroidItemWrapperFactory.java
│   │       │   │                   │   ├── CentroidManager.java
│   │       │   │                   │   ├── CentroidManagerGeoWave.java
│   │       │   │                   │   ├── CentroidPairing.java
│   │       │   │                   │   ├── ClusteringUtils.java
│   │       │   │                   │   ├── DistortionGroupManagement.java
│   │       │   │                   │   ├── LongCentroid.java
│   │       │   │                   │   ├── NeighborData.java
│   │       │   │                   │   ├── NestedGroupCentroidAssignment.java
│   │       │   │                   │   └── exception/
│   │       │   │                   │       └── MatchingCentroidNotFoundException.java
│   │       │   │                   ├── distance/
│   │       │   │                   │   ├── CoordinateCircleDistanceFn.java
│   │       │   │                   │   ├── CoordinateCosineDistanceFn.java
│   │       │   │                   │   ├── CoordinateEuclideanDistanceFn.java
│   │       │   │                   │   ├── DistanceFn.java
│   │       │   │                   │   ├── FeatureCentroidDistanceFn.java
│   │       │   │                   │   ├── FeatureCentroidOrthodromicDistanceFn.java
│   │       │   │                   │   ├── FeatureDistanceFn.java
│   │       │   │                   │   ├── FeatureGeometryDistanceFn.java
│   │       │   │                   │   └── GeometryCentroidDistanceFn.java
│   │       │   │                   ├── extract/
│   │       │   │                   │   ├── CentroidExtractor.java
│   │       │   │                   │   ├── DimensionExtractor.java
│   │       │   │                   │   ├── EmptyDimensionExtractor.java
│   │       │   │                   │   ├── SimpleFeatureCentroidExtractor.java
│   │       │   │                   │   ├── SimpleFeatureGeometryExtractor.java
│   │       │   │                   │   ├── SimpleFeatureInteriorPointExtractor.java
│   │       │   │                   │   └── TimeDimensionExtractor.java
│   │       │   │                   ├── kmeans/
│   │       │   │                   │   ├── AssociationNotification.java
│   │       │   │                   │   ├── CentroidAssociationFn.java
│   │       │   │                   │   └── serial/
│   │       │   │                   │       ├── AnalyticStats.java
│   │       │   │                   │       ├── KMeansParallelInitialize.java
│   │       │   │                   │       └── StatsMap.java
│   │       │   │                   ├── kryo/
│   │       │   │                   │   ├── FeatureSerializer.java
│   │       │   │                   │   ├── GridCoverageWritableSerializer.java
│   │       │   │                   │   └── PersistableSerializer.java
│   │       │   │                   ├── model/
│   │       │   │                   │   ├── IndexModelBuilder.java
│   │       │   │                   │   └── SpatialIndexModelBuilder.java
│   │       │   │                   ├── nn/
│   │       │   │                   │   ├── DefaultNeighborList.java
│   │       │   │                   │   ├── DistanceProfile.java
│   │       │   │                   │   ├── DistanceProfileGenerateFn.java
│   │       │   │                   │   ├── NNProcessor.java
│   │       │   │                   │   ├── NeighborIndex.java
│   │       │   │                   │   ├── NeighborList.java
│   │       │   │                   │   ├── NeighborListFactory.java
│   │       │   │                   │   ├── NullList.java
│   │       │   │                   │   └── TypeConverter.java
│   │       │   │                   ├── param/
│   │       │   │                   │   ├── BasicParameterHelper.java
│   │       │   │                   │   ├── CentroidParameters.java
│   │       │   │                   │   ├── ClusteringParameters.java
│   │       │   │                   │   ├── CommonParameters.java
│   │       │   │                   │   ├── ExtractParameters.java
│   │       │   │                   │   ├── FormatConfiguration.java
│   │       │   │                   │   ├── GlobalParameters.java
│   │       │   │                   │   ├── GroupParameterEnum.java
│   │       │   │                   │   ├── HullParameters.java
│   │       │   │                   │   ├── InputParameters.java
│   │       │   │                   │   ├── InputStoreParameterHelper.java
│   │       │   │                   │   ├── JumpParameters.java
│   │       │   │                   │   ├── MapReduceParameters.java
│   │       │   │                   │   ├── OutputParameters.java
│   │       │   │                   │   ├── OutputStoreParameterHelper.java
│   │       │   │                   │   ├── ParameterEnum.java
│   │       │   │                   │   ├── ParameterHelper.java
│   │       │   │                   │   ├── PartitionParameters.java
│   │       │   │                   │   ├── SampleParameters.java
│   │       │   │                   │   ├── StoreParameters.java
│   │       │   │                   │   └── annotations/
│   │       │   │                   │       ├── CentroidParameter.java
│   │       │   │                   │       ├── ClusteringParameter.java
│   │       │   │                   │       ├── CommonParameter.java
│   │       │   │                   │       ├── ExtractParameter.java
│   │       │   │                   │       ├── GlobalParameter.java
│   │       │   │                   │       ├── HullParameter.java
│   │       │   │                   │       ├── InputParameter.java
│   │       │   │                   │       ├── JumpParameter.java
│   │       │   │                   │       ├── MapReduceParameter.java
│   │       │   │                   │       ├── OutputParameter.java
│   │       │   │                   │       ├── PartitionParameter.java
│   │       │   │                   │       └── SampleParameter.java
│   │       │   │                   ├── partitioner/
│   │       │   │                   │   ├── AbstractPartitioner.java
│   │       │   │                   │   ├── BoundaryPartitioner.java
│   │       │   │                   │   ├── OrthodromicDistancePartitioner.java
│   │       │   │                   │   └── Partitioner.java
│   │       │   │                   ├── sample/
│   │       │   │                   │   ├── BahmanEtAlSampleProbabilityFn.java
│   │       │   │                   │   ├── RandomProbabilitySampleFn.java
│   │       │   │                   │   ├── SampleNotification.java
│   │       │   │                   │   ├── SampleProbabilityFn.java
│   │       │   │                   │   ├── Sampler.java
│   │       │   │                   │   └── function/
│   │       │   │                   │       ├── CentroidDistanceBasedSamplingRankFunction.java
│   │       │   │                   │       ├── RandomSamplingRankFunction.java
│   │       │   │                   │       └── SamplingRankFunction.java
│   │       │   │                   └── store/
│   │       │   │                       └── PersistableStore.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── locationtech/
│   │                       └── geowave/
│   │                           └── analytic/
│   │                               ├── AnalyticFeatureTest.java
│   │                               ├── GeometryCalculationsTest.java
│   │                               ├── GeometryDataSetGeneratorTest.java
│   │                               ├── GeometryGenerator.java
│   │                               ├── GeometryHullToolTest.java
│   │                               ├── PropertyManagementTest.java
│   │                               ├── SerializableAdapterStoreTest.java
│   │                               ├── SimpleFeatureCentroidExractorTest.java
│   │                               ├── clustering/
│   │                               │   ├── CentroidManagerTest.java
│   │                               │   ├── DistortionGroupManagementTest.java
│   │                               │   └── NestedGroupCentroidAssignmentTest.java
│   │                               ├── distance/
│   │                               │   ├── CoordinateCircleDistanceFnTest.java
│   │                               │   └── FeatureDistanceFnTest.java
│   │                               ├── kmeans/
│   │                               │   ├── CentroidAssociationFnTest.java
│   │                               │   └── KMeansParallelInitializeTest.java
│   │                               ├── kryo/
│   │                               │   └── FeatureSerializationTest.java
│   │                               ├── nn/
│   │                               │   └── NNProcessorTest.java
│   │                               └── partitioner/
│   │                                   ├── BoundaryDistancePartitionerTest.java
│   │                                   └── OrthodromicDistancePartitionerTest.java
│   ├── mapreduce/
│   │   ├── .gitignore
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── locationtech/
│   │       │   │           └── geowave/
│   │       │   │               └── analytic/
│   │       │   │                   └── mapreduce/
│   │       │   │                       ├── CountofDoubleWritable.java
│   │       │   │                       ├── DoubleOutputFormat.java
│   │       │   │                       ├── GeoWaveAnalyticJobRunner.java
│   │       │   │                       ├── GeoWaveInputFormatConfiguration.java
│   │       │   │                       ├── GeoWaveOutputFormatConfiguration.java
│   │       │   │                       ├── GroupIDText.java
│   │       │   │                       ├── HadoopOptions.java
│   │       │   │                       ├── MapReduceIntegration.java
│   │       │   │                       ├── MapReduceJobController.java
│   │       │   │                       ├── MapReduceJobRunner.java
│   │       │   │                       ├── SequenceFileInputFormatConfiguration.java
│   │       │   │                       ├── SequenceFileOutputFormatConfiguration.java
│   │       │   │                       ├── ToolRunnerMapReduceIntegration.java
│   │       │   │                       ├── clustering/
│   │       │   │                       │   ├── ConvexHullMapReduce.java
│   │       │   │                       │   ├── GroupAssignmentMapReduce.java
│   │       │   │                       │   ├── InputToOutputKeyReducer.java
│   │       │   │                       │   ├── SimpleFeatureOutputReducer.java
│   │       │   │                       │   └── runner/
│   │       │   │                       │       ├── AnalyticJobRunner.java
│   │       │   │                       │       ├── ClusteringRunner.java
│   │       │   │                       │       ├── ConvexHullJobRunner.java
│   │       │   │                       │       ├── GeoWaveAnalyticExtractJobRunner.java
│   │       │   │                       │       ├── GeoWaveInputLoadJobRunner.java
│   │       │   │                       │       ├── GroupAssigmentJobRunner.java
│   │       │   │                       │       ├── MultiLevelClusteringJobRunner.java
│   │       │   │                       │       ├── MultiLevelJumpKMeansClusteringJobRunner.java
│   │       │   │                       │       └── MultiLevelKMeansClusteringJobRunner.java
│   │       │   │                       ├── dbscan/
│   │       │   │                       │   ├── Cluster.java
│   │       │   │                       │   ├── ClusterItem.java
│   │       │   │                       │   ├── ClusterItemDistanceFn.java
│   │       │   │                       │   ├── ClusterNeighborList.java
│   │       │   │                       │   ├── ClusterUnionList.java
│   │       │   │                       │   ├── DBScanClusterList.java
│   │       │   │                       │   ├── DBScanIterationsJobRunner.java
│   │       │   │                       │   ├── DBScanJobRunner.java
│   │       │   │                       │   ├── DBScanMapReduce.java
│   │       │   │                       │   ├── PreProcessSingleItemClusterList.java
│   │       │   │                       │   └── SingleItemClusterList.java
│   │       │   │                       ├── kde/
│   │       │   │                       │   ├── CellCounter.java
│   │       │   │                       │   ├── CellSummationCombiner.java
│   │       │   │                       │   ├── CellSummationReducer.java
│   │       │   │                       │   ├── DoubleLevelPartitioner.java
│   │       │   │                       │   ├── GaussianCellMapper.java
│   │       │   │                       │   ├── GaussianFilter.java
│   │       │   │                       │   ├── IdentityMapper.java
│   │       │   │                       │   ├── KDECommandLineOptions.java
│   │       │   │                       │   ├── KDEJobRunner.java
│   │       │   │                       │   ├── KDEReducer.java
│   │       │   │                       │   ├── LevelPartitioner.java
│   │       │   │                       │   ├── MapContextCellCounter.java
│   │       │   │                       │   └── compare/
│   │       │   │                       │       ├── ComparisonAccumuloStatsReducer.java
│   │       │   │                       │       ├── ComparisonCellData.java
│   │       │   │                       │       ├── ComparisonCellDataReducer.java
│   │       │   │                       │       ├── ComparisonCellLevelPartitioner.java
│   │       │   │                       │       ├── ComparisonCellSummationReducer.java
│   │       │   │                       │       ├── ComparisonCombinedLevelPartitioner.java
│   │       │   │                       │       ├── ComparisonCombiningStatsMapper.java
│   │       │   │                       │       ├── ComparisonCombiningStatsReducer.java
│   │       │   │                       │       ├── ComparisonCommandLineOptions.java
│   │       │   │                       │       ├── ComparisonDoubleLevelPartitioner.java
│   │       │   │                       │       ├── ComparisonGaussianCellMapper.java
│   │       │   │                       │       ├── ComparisonIdentityMapper.java
│   │       │   │                       │       ├── ComparisonLevelPartitioner.java
│   │       │   │                       │       ├── ComparisonStatsJobRunner.java
│   │       │   │                       │       └── NegativeCellIdCounter.java
│   │       │   │                       ├── kmeans/
│   │       │   │                       │   ├── KMeansDistortionMapReduce.java
│   │       │   │                       │   ├── KMeansMapReduce.java
│   │       │   │                       │   ├── KSamplerMapReduce.java
│   │       │   │                       │   ├── UpdateCentroidCostMapReduce.java
│   │       │   │                       │   └── runner/
│   │       │   │                       │       ├── IterationCountCalculateRunner.java
│   │       │   │                       │       ├── KMeansDistortionJobRunner.java
│   │       │   │                       │       ├── KMeansIterationsJobRunner.java
│   │       │   │                       │       ├── KMeansJobRunner.java
│   │       │   │                       │       ├── KMeansJumpJobRunner.java
│   │       │   │                       │       ├── KMeansParallelJobRunner.java
│   │       │   │                       │       ├── KMeansSingleSampleJobRunner.java
│   │       │   │                       │       ├── KSamplerJobRunner.java
│   │       │   │                       │       ├── RankSamplerJobRunner.java
│   │       │   │                       │       ├── SampleMultipleSetsJobRunner.java
│   │       │   │                       │       ├── StripWeakCentroidsRunner.java
│   │       │   │                       │       └── UpdateCentroidCostJobRunner.java
│   │       │   │                       ├── nn/
│   │       │   │                       │   ├── GeoWaveExtractNNJobRunner.java
│   │       │   │                       │   ├── NNData.java
│   │       │   │                       │   ├── NNJobRunner.java
│   │       │   │                       │   └── NNMapReduce.java
│   │       │   │                       └── operations/
│   │       │   │                           ├── AnalyticOperationCLIProvider.java
│   │       │   │                           ├── AnalyticSection.java
│   │       │   │                           ├── DBScanCommand.java
│   │       │   │                           ├── KdeCommand.java
│   │       │   │                           ├── KmeansJumpCommand.java
│   │       │   │                           ├── KmeansParallelCommand.java
│   │       │   │                           ├── NearestNeighborCommand.java
│   │       │   │                           └── options/
│   │       │   │                               ├── CommonOptions.java
│   │       │   │                               ├── DBScanOptions.java
│   │       │   │                               ├── KMeansCommonOptions.java
│   │       │   │                               ├── KMeansJumpOptions.java
│   │       │   │                               ├── KMeansParallelOptions.java
│   │       │   │                               ├── NearestNeighborOptions.java
│   │       │   │                               ├── PropertyManagementConverter.java
│   │       │   │                               └── QueryOptionsCommand.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── locationtech/
│   │           │           └── geowave/
│   │           │               └── analytic/
│   │           │                   └── mapreduce/
│   │           │                       ├── TestMapReducePersistableRegistry.java
│   │           │                       ├── clustering/
│   │           │                       │   └── runner/
│   │           │                       │       ├── ConvexHullJobRunnerTest.java
│   │           │                       │       └── GroupAssigmentJobRunnerTest.java
│   │           │                       ├── dbscan/
│   │           │                       │   └── DBScanMapReduceTest.java
│   │           │                       ├── kmeans/
│   │           │                       │   ├── KMeansDistortionMapReduceTest.java
│   │           │                       │   ├── KSamplerMapReduceTest.java
│   │           │                       │   ├── SimpleFeatureImplSerialization.java
│   │           │                       │   ├── TestObject.java
│   │           │                       │   ├── TestObjectDataAdapter.java
│   │           │                       │   ├── TestObjectDimExtractor.java
│   │           │                       │   ├── TestObjectDistanceFn.java
│   │           │                       │   ├── TestObjectExtractor.java
│   │           │                       │   ├── TestObjectItemWrapperFactory.java
│   │           │                       │   ├── TestObjectSerialization.java
│   │           │                       │   ├── TestObjectWritable.java
│   │           │                       │   └── runner/
│   │           │                       │       ├── KMeansIterationsJobRunnerTest.java
│   │           │                       │       └── StripWeakCentroidsRunnerTest.java
│   │           │                       ├── nn/
│   │           │                       │   ├── NNJobRunnerTest.java
│   │           │                       │   └── NNMapReduceTest.java
│   │           │                       └── operations/
│   │           │                           └── options/
│   │           │                               └── PropertyManagementConverterTest.java
│   │           └── resources/
│   │               ├── META-INF/
│   │               │   └── services/
│   │               │       └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   │               └── log4j.properties
│   ├── pom.xml
│   ├── pyspark/
│   │   ├── .gitignore
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── python/
│   │               ├── geowave_pyspark/
│   │               │   ├── __init__.py
│   │               │   └── types.py
│   │               └── setup.py
│   └── spark/
│       ├── pom.xml
│       └── src/
│           └── main/
│               ├── java/
│               │   └── org/
│               │       └── locationtech/
│               │           └── geowave/
│               │               └── analytic/
│               │                   └── spark/
│               │                       ├── AnalyticOperationCLIProvider.java
│               │                       ├── GeoWaveIndexedRDD.java
│               │                       ├── GeoWaveRDD.java
│               │                       ├── GeoWaveRDDLoader.java
│               │                       ├── GeoWaveRasterRDD.java
│               │                       ├── GeoWaveRegistrator.java
│               │                       ├── GeoWaveSparkConf.java
│               │                       ├── RDDOptions.java
│               │                       ├── RDDUtils.java
│               │                       ├── kde/
│               │                       │   ├── KDERunner.java
│               │                       │   └── operations/
│               │                       │       ├── KDESparkCommand.java
│               │                       │       └── KDESparkOptions.java
│               │                       ├── kmeans/
│               │                       │   ├── KMeansHullGenerator.java
│               │                       │   ├── KMeansRunner.java
│               │                       │   ├── KMeansUtils.java
│               │                       │   └── operations/
│               │                       │       ├── KMeansSparkOptions.java
│               │                       │       └── KmeansSparkCommand.java
│               │                       ├── resize/
│               │                       │   ├── RasterTileResizeSparkRunner.java
│               │                       │   └── ResizeSparkCommand.java
│               │                       ├── sparksql/
│               │                       │   ├── GeoWaveSpatialEncoders.java
│               │                       │   ├── SimpleFeatureDataFrame.java
│               │                       │   ├── SimpleFeatureDataType.java
│               │                       │   ├── SimpleFeatureMapper.java
│               │                       │   ├── SqlQueryRunner.java
│               │                       │   ├── SqlResultsWriter.java
│               │                       │   ├── operations/
│               │                       │   │   ├── SparkSqlCommand.java
│               │                       │   │   └── SparkSqlOptions.java
│               │                       │   ├── udf/
│               │                       │   │   ├── BufferOperation.java
│               │                       │   │   ├── GeomContains.java
│               │                       │   │   ├── GeomCovers.java
│               │                       │   │   ├── GeomCrosses.java
│               │                       │   │   ├── GeomDisjoint.java
│               │                       │   │   ├── GeomDistance.java
│               │                       │   │   ├── GeomEquals.java
│               │                       │   │   ├── GeomFromWKT.java
│               │                       │   │   ├── GeomFunction.java
│               │                       │   │   ├── GeomFunctionRegistry.java
│               │                       │   │   ├── GeomIntersects.java
│               │                       │   │   ├── GeomOverlaps.java
│               │                       │   │   ├── GeomTouches.java
│               │                       │   │   ├── GeomWithin.java
│               │                       │   │   ├── GeomWithinDistance.java
│               │                       │   │   └── UDFRegistrySPI.java
│               │                       │   ├── udt/
│               │                       │   │   ├── AbstractGeometryUDT.java
│               │                       │   │   ├── GeometryUDT.java
│               │                       │   │   ├── LineStringUDT.java
│               │                       │   │   ├── MultiLineStringUDT.java
│               │                       │   │   ├── MultiPointUDT.java
│               │                       │   │   ├── MultiPolygonUDT.java
│               │                       │   │   ├── PointUDT.java
│               │                       │   │   └── PolygonUDT.java
│               │                       │   └── util/
│               │                       │       ├── GeomReader.java
│               │                       │       ├── GeomWriter.java
│               │                       │       └── SchemaConverter.java
│               │                       └── spatial/
│               │                           ├── JoinOptions.java
│               │                           ├── JoinStrategy.java
│               │                           ├── SpatialJoin.java
│               │                           ├── SpatialJoinRunner.java
│               │                           ├── TieredSpatialJoin.java
│               │                           └── operations/
│               │                               ├── SpatialJoinCmdOptions.java
│               │                               └── SpatialJoinCommand.java
│               └── resources/
│                   └── META-INF/
│                       └── services/
│                           └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
├── core/
│   ├── cli/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── locationtech/
│   │       │   │           └── geowave/
│   │       │   │               └── core/
│   │       │   │                   └── cli/
│   │       │   │                       ├── Constants.java
│   │       │   │                       ├── GeoWaveMain.java
│   │       │   │                       ├── VersionUtils.java
│   │       │   │                       ├── annotations/
│   │       │   │                       │   ├── GeowaveOperation.java
│   │       │   │                       │   └── PrefixParameter.java
│   │       │   │                       ├── api/
│   │       │   │                       │   ├── Command.java
│   │       │   │                       │   ├── DefaultOperation.java
│   │       │   │                       │   ├── DefaultPluginOptions.java
│   │       │   │                       │   ├── Operation.java
│   │       │   │                       │   ├── OperationParams.java
│   │       │   │                       │   ├── PluginOptions.java
│   │       │   │                       │   ├── ServiceEnabledCommand.java
│   │       │   │                       │   └── ServiceStatus.java
│   │       │   │                       ├── converters/
│   │       │   │                       │   ├── GeoWaveBaseConverter.java
│   │       │   │                       │   ├── OptionalPasswordConverter.java
│   │       │   │                       │   ├── PasswordConverter.java
│   │       │   │                       │   └── RequiredFieldConverter.java
│   │       │   │                       ├── exceptions/
│   │       │   │                       │   ├── DuplicateEntryException.java
│   │       │   │                       │   └── TargetNotFoundException.java
│   │       │   │                       ├── operations/
│   │       │   │                       │   ├── ExplainCommand.java
│   │       │   │                       │   ├── GeoWaveTopLevelSection.java
│   │       │   │                       │   ├── HelpCommand.java
│   │       │   │                       │   ├── TopLevelOperationProvider.java
│   │       │   │                       │   ├── config/
│   │       │   │                       │   │   ├── ConfigOperationProvider.java
│   │       │   │                       │   │   ├── ConfigSection.java
│   │       │   │                       │   │   ├── ListCommand.java
│   │       │   │                       │   │   ├── SetCommand.java
│   │       │   │                       │   │   ├── options/
│   │       │   │                       │   │   │   └── ConfigOptions.java
│   │       │   │                       │   │   └── security/
│   │       │   │                       │   │       ├── NewTokenCommand.java
│   │       │   │                       │   │       ├── crypto/
│   │       │   │                       │   │       │   ├── BaseEncryption.java
│   │       │   │                       │   │       │   └── GeoWaveEncryption.java
│   │       │   │                       │   │       └── utils/
│   │       │   │                       │   │           └── SecurityUtils.java
│   │       │   │                       │   └── util/
│   │       │   │                       │       ├── UtilOperationProvider.java
│   │       │   │                       │       └── UtilSection.java
│   │       │   │                       ├── parser/
│   │       │   │                       │   ├── CommandLineOperationParams.java
│   │       │   │                       │   ├── ManualOperationParams.java
│   │       │   │                       │   └── OperationParser.java
│   │       │   │                       ├── prefix/
│   │       │   │                       │   ├── JCommanderPrefixTranslator.java
│   │       │   │                       │   ├── JCommanderPropertiesTransformer.java
│   │       │   │                       │   ├── JCommanderTranslationMap.java
│   │       │   │                       │   ├── JavassistUtils.java
│   │       │   │                       │   ├── PrefixedJCommander.java
│   │       │   │                       │   └── TranslationEntry.java
│   │       │   │                       ├── spi/
│   │       │   │                       │   ├── CLIOperationProviderSpi.java
│   │       │   │                       │   ├── DefaultConfigProviderSpi.java
│   │       │   │                       │   ├── OperationEntry.java
│   │       │   │                       │   └── OperationRegistry.java
│   │       │   │                       └── utils/
│   │       │   │                           ├── ConsoleTablePrinter.java
│   │       │   │                           ├── FileUtils.java
│   │       │   │                           ├── FirstElementListComparator.java
│   │       │   │                           ├── JCommanderParameterUtils.java
│   │       │   │                           ├── PropertiesUtils.java
│   │       │   │                           ├── URLUtils.java
│   │       │   │                           └── ValueConverter.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── locationtech/
│   │                       └── geowave/
│   │                           └── core/
│   │                               └── cli/
│   │                                   ├── VersionUtilsTest.java
│   │                                   ├── api/
│   │                                   │   └── ServiceEnableCommandTest.java
│   │                                   ├── operations/
│   │                                   │   ├── ExplainCommandTest.java
│   │                                   │   ├── HelpCommandTest.java
│   │                                   │   └── config/
│   │                                   │       ├── SetCommandTest.java
│   │                                   │       ├── options/
│   │                                   │       │   └── ConfigOptionsTest.java
│   │                                   │       └── security/
│   │                                   │           └── SecurityUtilsTest.java
│   │                                   ├── parser/
│   │                                   │   └── OperationParserTest.java
│   │                                   ├── prefix/
│   │                                   │   ├── JCommanderPrefixTranslatorTest.java
│   │                                   │   ├── JCommanderPropertiesTransformerTest.java
│   │                                   │   ├── JCommanderTranslationMapTest.java
│   │                                   │   ├── JavassistUtilsTest.java
│   │                                   │   ├── PrefixedJCommanderTest.java
│   │                                   │   └── TranslationEntryTest.java
│   │                                   └── spi/
│   │                                       └── OperationRegistryTest.java
│   ├── geotime/
│   │   ├── .gitignore
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── locationtech/
│   │       │   │           └── geowave/
│   │       │   │               └── core/
│   │       │   │                   └── geotime/
│   │       │   │                       ├── GeoTimePersistableRegistry.java
│   │       │   │                       ├── adapter/
│   │       │   │                       │   ├── GeometryFieldMapper.java
│   │       │   │                       │   ├── GeotimeRegisteredIndexFieldMappers.java
│   │       │   │                       │   ├── LatLonFieldMapper.java
│   │       │   │                       │   ├── SpatialFieldDescriptor.java
│   │       │   │                       │   ├── SpatialFieldDescriptorBuilder.java
│   │       │   │                       │   ├── SpatialFieldMapper.java
│   │       │   │                       │   ├── TemporalFieldDescriptor.java
│   │       │   │                       │   ├── TemporalFieldDescriptorBuilder.java
│   │       │   │                       │   ├── TemporalIntervalFieldMapper.java
│   │       │   │                       │   ├── TemporalLongFieldMapper.java
│   │       │   │                       │   ├── TimeInstantFieldMapper.java
│   │       │   │                       │   ├── TimeRangeFieldMapper.java
│   │       │   │                       │   └── annotation/
│   │       │   │                       │       ├── GeoWaveSpatialField.java
│   │       │   │                       │       ├── GeoWaveTemporalField.java
│   │       │   │                       │       ├── SpatialAnnotatedFieldDescriptorBuilder.java
│   │       │   │                       │       └── TemporalAnnotatedFieldDescriptorBuilder.java
│   │       │   │                       ├── binning/
│   │       │   │                       │   ├── ComplexGeometryBinningOption.java
│   │       │   │                       │   ├── GeohashBinningHelper.java
│   │       │   │                       │   ├── H3BinningHelper.java
│   │       │   │                       │   ├── S2BinningHelper.java
│   │       │   │                       │   ├── SpatialBinningHelper.java
│   │       │   │                       │   └── SpatialBinningType.java
│   │       │   │                       ├── index/
│   │       │   │                       │   ├── CommonSpatialOptions.java
│   │       │   │                       │   ├── SpatialAttributeIndexProvider.java
│   │       │   │                       │   ├── SpatialDimensionalityTypeProvider.java
│   │       │   │                       │   ├── SpatialIndexFilter.java
│   │       │   │                       │   ├── SpatialOptions.java
│   │       │   │                       │   ├── SpatialTemporalDimensionalityTypeProvider.java
│   │       │   │                       │   ├── SpatialTemporalOptions.java
│   │       │   │                       │   ├── TemporalAttributeIndexProvider.java
│   │       │   │                       │   ├── TemporalDimensionalityTypeProvider.java
│   │       │   │                       │   ├── TemporalOptions.java
│   │       │   │                       │   ├── api/
│   │       │   │                       │   │   ├── SpatialIndexBuilder.java
│   │       │   │                       │   │   ├── SpatialTemporalIndexBuilder.java
│   │       │   │                       │   │   └── TemporalIndexBuilder.java
│   │       │   │                       │   └── dimension/
│   │       │   │                       │       ├── LatitudeDefinition.java
│   │       │   │                       │       ├── LongitudeDefinition.java
│   │       │   │                       │       ├── SimpleTimeDefinition.java
│   │       │   │                       │       ├── SimpleTimeIndexStrategy.java
│   │       │   │                       │       ├── TemporalBinningStrategy.java
│   │       │   │                       │       └── TimeDefinition.java
│   │       │   │                       ├── store/
│   │       │   │                       │   ├── GeotoolsFeatureDataAdapter.java
│   │       │   │                       │   ├── InternalGeotoolsDataAdapterWrapper.java
│   │       │   │                       │   ├── InternalGeotoolsFeatureDataAdapter.java
│   │       │   │                       │   ├── dimension/
│   │       │   │                       │   │   ├── BaseCustomCRSSpatialDimension.java
│   │       │   │                       │   │   ├── CustomCRSBoundedSpatialDimension.java
│   │       │   │                       │   │   ├── CustomCRSBoundedSpatialDimensionX.java
│   │       │   │                       │   │   ├── CustomCRSBoundedSpatialDimensionY.java
│   │       │   │                       │   │   ├── CustomCRSSpatialDimension.java
│   │       │   │                       │   │   ├── CustomCRSSpatialField.java
│   │       │   │                       │   │   ├── CustomCRSUnboundedSpatialDimension.java
│   │       │   │                       │   │   ├── CustomCRSUnboundedSpatialDimensionX.java
│   │       │   │                       │   │   ├── CustomCRSUnboundedSpatialDimensionY.java
│   │       │   │                       │   │   ├── CustomCrsIndexModel.java
│   │       │   │                       │   │   ├── LatitudeField.java
│   │       │   │                       │   │   ├── LongitudeField.java
│   │       │   │                       │   │   ├── SpatialField.java
│   │       │   │                       │   │   └── TimeField.java
│   │       │   │                       │   ├── field/
│   │       │   │                       │   │   ├── CalendarArraySerializationProvider.java
│   │       │   │                       │   │   ├── CalendarSerializationProvider.java
│   │       │   │                       │   │   ├── DateArraySerializationProvider.java
│   │       │   │                       │   │   ├── DateSerializationProvider.java
│   │       │   │                       │   │   ├── GeometryArraySerializationProvider.java
│   │       │   │                       │   │   ├── GeometrySerializationProvider.java
│   │       │   │                       │   │   ├── IntervalArraySerializationProvider.java
│   │       │   │                       │   │   └── IntervalSerializationProvider.java
│   │       │   │                       │   ├── query/
│   │       │   │                       │   │   ├── AbstractVectorConstraints.java
│   │       │   │                       │   │   ├── BaseVectorQueryBuilder.java
│   │       │   │                       │   │   ├── ExplicitCQLQuery.java
│   │       │   │                       │   │   ├── ExplicitSpatialQuery.java
│   │       │   │                       │   │   ├── ExplicitSpatialTemporalQuery.java
│   │       │   │                       │   │   ├── ExplicitTemporalQuery.java
│   │       │   │                       │   │   ├── IndexOnlySpatialQuery.java
│   │       │   │                       │   │   ├── OptimalCQLQuery.java
│   │       │   │                       │   │   ├── ScaledTemporalRange.java
│   │       │   │                       │   │   ├── SpatialQuery.java
│   │       │   │                       │   │   ├── SpatialTemporalConstraintsBuilderImpl.java
│   │       │   │                       │   │   ├── SpatialTemporalQuery.java
│   │       │   │                       │   │   ├── TemporalConstraints.java
│   │       │   │                       │   │   ├── TemporalConstraintsSet.java
│   │       │   │                       │   │   ├── TemporalQuery.java
│   │       │   │                       │   │   ├── TemporalRange.java
│   │       │   │                       │   │   ├── VectorQueryBuilderImpl.java
│   │       │   │                       │   │   ├── VectorQueryConstraintsFactoryImpl.java
│   │       │   │                       │   │   ├── aggregate/
│   │       │   │                       │   │   │   ├── BaseOptimalVectorAggregation.java
│   │       │   │                       │   │   │   ├── BoundingBoxAggregation.java
│   │       │   │                       │   │   │   ├── CommonIndexBoundingBoxAggregation.java
│   │       │   │                       │   │   │   ├── CommonIndexTimeRangeAggregation.java
│   │       │   │                       │   │   │   ├── OptimalVectorBoundingBoxAggregation.java
│   │       │   │                       │   │   │   ├── OptimalVectorTimeRangeAggregation.java
│   │       │   │                       │   │   │   ├── SpatialBinningStrategy.java
│   │       │   │                       │   │   │   ├── SpatialCommonIndexedBinningStrategy.java
│   │       │   │                       │   │   │   ├── SpatialFieldBinningStrategy.java
│   │       │   │                       │   │   │   ├── SpatialSimpleFeatureBinningStrategy.java
│   │       │   │                       │   │   │   ├── TimeRangeAggregation.java
│   │       │   │                       │   │   │   ├── VectorAggregationQueryBuilderImpl.java
│   │       │   │                       │   │   │   ├── VectorBoundingBoxAggregation.java
│   │       │   │                       │   │   │   └── VectorTimeRangeAggregation.java
│   │       │   │                       │   │   ├── api/
│   │       │   │                       │   │   │   ├── SpatialTemporalConstraintsBuilder.java
│   │       │   │                       │   │   │   ├── VectorAggregationQueryBuilder.java
│   │       │   │                       │   │   │   ├── VectorQueryBuilder.java
│   │       │   │                       │   │   │   └── VectorQueryConstraintsFactory.java
│   │       │   │                       │   │   ├── filter/
│   │       │   │                       │   │   │   ├── CQLQueryFilter.java
│   │       │   │                       │   │   │   ├── SpatialQueryFilter.java
│   │       │   │                       │   │   │   └── expression/
│   │       │   │                       │   │   │       ├── CQLToGeoWaveConversionException.java
│   │       │   │                       │   │   │       ├── CQLToGeoWaveFilterVisitor.java
│   │       │   │                       │   │   │       ├── spatial/
│   │       │   │                       │   │   │       │   ├── BBox.java
│   │       │   │                       │   │   │       │   ├── BinarySpatialPredicate.java
│   │       │   │                       │   │   │       │   ├── Crosses.java
│   │       │   │                       │   │   │       │   ├── Disjoint.java
│   │       │   │                       │   │   │       │   ├── FilterGeometry.java
│   │       │   │                       │   │   │       │   ├── Intersects.java
│   │       │   │                       │   │   │       │   ├── Overlaps.java
│   │       │   │                       │   │   │       │   ├── PreparedFilterGeometry.java
│   │       │   │                       │   │   │       │   ├── SpatialContains.java
│   │       │   │                       │   │   │       │   ├── SpatialEqualTo.java
│   │       │   │                       │   │   │       │   ├── SpatialExpression.java
│   │       │   │                       │   │   │       │   ├── SpatialFieldValue.java
│   │       │   │                       │   │   │       │   ├── SpatialLiteral.java
│   │       │   │                       │   │   │       │   ├── SpatialNotEqualTo.java
│   │       │   │                       │   │   │       │   ├── TextToSpatialExpression.java
│   │       │   │                       │   │   │       │   ├── Touches.java
│   │       │   │                       │   │   │       │   ├── UnpreparedFilterGeometry.java
│   │       │   │                       │   │   │       │   └── Within.java
│   │       │   │                       │   │   │       └── temporal/
│   │       │   │                       │   │   │           ├── After.java
│   │       │   │                       │   │   │           ├── Before.java
│   │       │   │                       │   │   │           ├── BeforeOrDuring.java
│   │       │   │                       │   │   │           ├── BinaryTemporalPredicate.java
│   │       │   │                       │   │   │           ├── During.java
│   │       │   │                       │   │   │           ├── DuringOrAfter.java
│   │       │   │                       │   │   │           ├── TemporalBetween.java
│   │       │   │                       │   │   │           ├── TemporalEqualTo.java
│   │       │   │                       │   │   │           ├── TemporalExpression.java
│   │       │   │                       │   │   │           ├── TemporalFieldValue.java
│   │       │   │                       │   │   │           ├── TemporalLiteral.java
│   │       │   │                       │   │   │           ├── TemporalNotEqualTo.java
│   │       │   │                       │   │   │           └── TimeOverlaps.java
│   │       │   │                       │   │   └── gwql/
│   │       │   │                       │   │       ├── BboxFunction.java
│   │       │   │                       │   │       ├── DateCastableType.java
│   │       │   │                       │   │       ├── GWQLSpatialTemporalExtensions.java
│   │       │   │                       │   │       ├── GeometryCastableType.java
│   │       │   │                       │   │       ├── SpatialPredicates.java
│   │       │   │                       │   │       ├── TemporalOperators.java
│   │       │   │                       │   │       └── TemporalPredicates.java
│   │       │   │                       │   └── statistics/
│   │       │   │                       │       ├── AbstractBoundingBoxValue.java
│   │       │   │                       │       ├── AbstractTimeRangeValue.java
│   │       │   │                       │       ├── BoundingBoxStatistic.java
│   │       │   │                       │       ├── GeotimeRegisteredStatistics.java
│   │       │   │                       │       ├── SpatialTemporalStatisticQueryBuilder.java
│   │       │   │                       │       ├── TimeRangeStatistic.java
│   │       │   │                       │       └── binning/
│   │       │   │                       │           ├── SpatialFieldValueBinningStrategy.java
│   │       │   │                       │           └── TimeRangeFieldValueBinningStrategy.java
│   │       │   │                       └── util/
│   │       │   │                           ├── DWithinFilterVisitor.java
│   │       │   │                           ├── ExtractAttributesFilter.java
│   │       │   │                           ├── ExtractGeometryFilterVisitor.java
│   │       │   │                           ├── ExtractGeometryFilterVisitorResult.java
│   │       │   │                           ├── ExtractTimeFilterVisitor.java
│   │       │   │                           ├── FilterToCQLTool.java
│   │       │   │                           ├── GeometryUtils.java
│   │       │   │                           ├── HasDWithinFilterVisitor.java
│   │       │   │                           ├── IndexOptimizationUtils.java
│   │       │   │                           ├── SimpleFeatureUserDataConfiguration.java
│   │       │   │                           ├── SpatialIndexUtils.java
│   │       │   │                           ├── TWKBReader.java
│   │       │   │                           ├── TWKBUtils.java
│   │       │   │                           ├── TWKBWriter.java
│   │       │   │                           ├── TimeDescriptors.java
│   │       │   │                           └── TimeUtils.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   │       │               ├── org.locationtech.geowave.core.store.data.field.FieldSerializationProviderSpi
│   │       │               ├── org.locationtech.geowave.core.store.index.AttributeIndexProviderSpi
│   │       │               ├── org.locationtech.geowave.core.store.index.IndexFieldMapperRegistrySPI
│   │       │               ├── org.locationtech.geowave.core.store.query.gwql.GWQLExtensionRegistrySpi
│   │       │               ├── org.locationtech.geowave.core.store.spi.DimensionalityTypeProviderSpi
│   │       │               └── org.locationtech.geowave.core.store.statistics.StatisticsRegistrySPI
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── locationtech/
│   │           │           └── geowave/
│   │           │               └── core/
│   │           │                   └── geotime/
│   │           │                       ├── TestGeoTimePersistableRegistry.java
│   │           │                       ├── adapter/
│   │           │                       │   ├── SpatialFieldDescriptorTest.java
│   │           │                       │   ├── SpatialFieldMapperTest.java
│   │           │                       │   └── annotation/
│   │           │                       │       └── SpatialTemporalAnnotationsTest.java
│   │           │                       ├── binning/
│   │           │                       │   └── SpatialBinningTypeTest.java
│   │           │                       ├── index/
│   │           │                       │   ├── dimension/
│   │           │                       │   │   ├── LongitudeDefinitionTest.java
│   │           │                       │   │   ├── TemporalBinningStrategyTest.java
│   │           │                       │   │   └── TimeDefinitionTest.java
│   │           │                       │   └── sfc/
│   │           │                       │       └── hilbert/
│   │           │                       │           ├── HilbertSFCTest.java
│   │           │                       │           ├── PrimitiveHilbertSFCTest.java
│   │           │                       │           └── tiered/
│   │           │                       │               └── TieredSFCIndexStrategyTest.java
│   │           │                       ├── store/
│   │           │                       │   ├── data/
│   │           │                       │   │   └── PersistenceEncodingTest.java
│   │           │                       │   ├── field/
│   │           │                       │   │   └── GeoTimeReaderWriterTest.java
│   │           │                       │   ├── query/
│   │           │                       │   │   ├── BasicQueryTest.java
│   │           │                       │   │   ├── SpatialQueryTest.java
│   │           │                       │   │   ├── SpatialTemporalQueryTest.java
│   │           │                       │   │   ├── TemporalConstraintsTest.java
│   │           │                       │   │   ├── TemporalRangeTest.java
│   │           │                       │   │   ├── aggregate/
│   │           │                       │   │   │   ├── AbstractVectorAggregationTest.java
│   │           │                       │   │   │   ├── CompositeAggregationTest.java
│   │           │                       │   │   │   ├── GeohashBinningStrategyTest.java
│   │           │                       │   │   │   ├── VectorBoundingBoxAggregationTest.java
│   │           │                       │   │   │   ├── VectorCountAggregationTest.java
│   │           │                       │   │   │   └── VectorMathAggregationTest.java
│   │           │                       │   │   ├── filter/
│   │           │                       │   │   │   └── expression/
│   │           │                       │   │   │       ├── CQLToGeoWaveFilterTest.java
│   │           │                       │   │   │       └── SpatialTemporalFilterExpressionTest.java
│   │           │                       │   │   └── gwql/
│   │           │                       │   │       └── GWQLParserTest.java
│   │           │                       │   └── statistics/
│   │           │                       │       └── BoundingBoxStatisticTest.java
│   │           │                       └── util/
│   │           │                           ├── GeometryUtilsTest.java
│   │           │                           └── TWKBTest.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── services/
│   │                       └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   ├── index/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── locationtech/
│   │       │   │           └── geowave/
│   │       │   │               └── core/
│   │       │   │                   └── index/
│   │       │   │                       ├── ByteArray.java
│   │       │   │                       ├── ByteArrayRange.java
│   │       │   │                       ├── ByteArrayUtils.java
│   │       │   │                       ├── CompoundIndexStrategy.java
│   │       │   │                       ├── Coordinate.java
│   │       │   │                       ├── CoordinateRange.java
│   │       │   │                       ├── CustomIndexStrategy.java
│   │       │   │                       ├── FloatCompareUtils.java
│   │       │   │                       ├── GeoWaveSerializationException.java
│   │       │   │                       ├── HierarchicalNumericIndexStrategy.java
│   │       │   │                       ├── IndexConstraints.java
│   │       │   │                       ├── IndexData.java
│   │       │   │                       ├── IndexDimensionHint.java
│   │       │   │                       ├── IndexMetaData.java
│   │       │   │                       ├── IndexPersistableRegistry.java
│   │       │   │                       ├── IndexStrategy.java
│   │       │   │                       ├── IndexUtils.java
│   │       │   │                       ├── InsertionIds.java
│   │       │   │                       ├── Mergeable.java
│   │       │   │                       ├── MultiDimensionalCoordinateRanges.java
│   │       │   │                       ├── MultiDimensionalCoordinateRangesArray.java
│   │       │   │                       ├── MultiDimensionalCoordinates.java
│   │       │   │                       ├── MultiDimensionalIndexData.java
│   │       │   │                       ├── NullNumericIndexStrategy.java
│   │       │   │                       ├── NumericIndexStrategy.java
│   │       │   │                       ├── NumericIndexStrategyWrapper.java
│   │       │   │                       ├── PartitionIndexStrategy.java
│   │       │   │                       ├── PartitionIndexStrategyWrapper.java
│   │       │   │                       ├── QueryRanges.java
│   │       │   │                       ├── SPIServiceRegistry.java
│   │       │   │                       ├── SinglePartitionInsertionIds.java
│   │       │   │                       ├── SinglePartitionQueryRanges.java
│   │       │   │                       ├── SortedIndexStrategy.java
│   │       │   │                       ├── StringUtils.java
│   │       │   │                       ├── VarintUtils.java
│   │       │   │                       ├── dimension/
│   │       │   │                       │   ├── BasicDimensionDefinition.java
│   │       │   │                       │   ├── NumericDimensionDefinition.java
│   │       │   │                       │   └── UnboundedDimensionDefinition.java
│   │       │   │                       ├── lexicoder/
│   │       │   │                       │   ├── ByteLexicoder.java
│   │       │   │                       │   ├── DoubleLexicoder.java
│   │       │   │                       │   ├── FloatLexicoder.java
│   │       │   │                       │   ├── IntegerLexicoder.java
│   │       │   │                       │   ├── Lexicoders.java
│   │       │   │                       │   ├── LongLexicoder.java
│   │       │   │                       │   ├── NumberLexicoder.java
│   │       │   │                       │   └── ShortLexicoder.java
│   │       │   │                       ├── numeric/
│   │       │   │                       │   ├── BasicNumericDataset.java
│   │       │   │                       │   ├── BinnedNumericDataset.java
│   │       │   │                       │   ├── MultiDimensionalNumericData.java
│   │       │   │                       │   ├── NumericData.java
│   │       │   │                       │   ├── NumericRange.java
│   │       │   │                       │   └── NumericValue.java
│   │       │   │                       ├── persist/
│   │       │   │                       │   ├── InternalPersistableRegistry.java
│   │       │   │                       │   ├── Persistable.java
│   │       │   │                       │   ├── PersistableFactory.java
│   │       │   │                       │   ├── PersistableList.java
│   │       │   │                       │   ├── PersistableRegistrySpi.java
│   │       │   │                       │   └── PersistenceUtils.java
│   │       │   │                       ├── sfc/
│   │       │   │                       │   ├── BasicSFCIndexStrategy.java
│   │       │   │                       │   ├── RangeDecomposition.java
│   │       │   │                       │   ├── SFCDimensionDefinition.java
│   │       │   │                       │   ├── SFCFactory.java
│   │       │   │                       │   ├── SpaceFillingCurve.java
│   │       │   │                       │   ├── binned/
│   │       │   │                       │   │   └── BinnedSFCUtils.java
│   │       │   │                       │   ├── hilbert/
│   │       │   │                       │   │   ├── HilbertSFC.java
│   │       │   │                       │   │   ├── HilbertSFCOperations.java
│   │       │   │                       │   │   ├── PrimitiveHilbertSFCOperations.java
│   │       │   │                       │   │   └── UnboundedHilbertSFCOperations.java
│   │       │   │                       │   ├── tiered/
│   │       │   │                       │   │   ├── SingleTierSubStrategy.java
│   │       │   │                       │   │   ├── TieredSFCIndexFactory.java
│   │       │   │                       │   │   └── TieredSFCIndexStrategy.java
│   │       │   │                       │   ├── xz/
│   │       │   │                       │   │   ├── XZHierarchicalIndexFactory.java
│   │       │   │                       │   │   ├── XZHierarchicalIndexStrategy.java
│   │       │   │                       │   │   └── XZOrderSFC.java
│   │       │   │                       │   └── zorder/
│   │       │   │                       │       ├── ZOrderSFC.java
│   │       │   │                       │       └── ZOrderUtils.java
│   │       │   │                       ├── simple/
│   │       │   │                       │   ├── HashKeyIndexStrategy.java
│   │       │   │                       │   ├── RoundRobinKeyIndexStrategy.java
│   │       │   │                       │   ├── SimpleByteIndexStrategy.java
│   │       │   │                       │   ├── SimpleDoubleIndexStrategy.java
│   │       │   │                       │   ├── SimpleFloatIndexStrategy.java
│   │       │   │                       │   ├── SimpleIntegerIndexStrategy.java
│   │       │   │                       │   ├── SimpleLongIndexStrategy.java
│   │       │   │                       │   ├── SimpleNumericIndexStrategy.java
│   │       │   │                       │   └── SimpleShortIndexStrategy.java
│   │       │   │                       └── text/
│   │       │   │                           ├── BasicTextDataset.java
│   │       │   │                           ├── CaseSensitivity.java
│   │       │   │                           ├── EnumIndexStrategy.java
│   │       │   │                           ├── EnumSearch.java
│   │       │   │                           ├── ExplicitTextSearch.java
│   │       │   │                           ├── MultiDimensionalTextData.java
│   │       │   │                           ├── TextConstraints.java
│   │       │   │                           ├── TextData.java
│   │       │   │                           ├── TextIndexEntryConverter.java
│   │       │   │                           ├── TextIndexStrategy.java
│   │       │   │                           ├── TextIndexType.java
│   │       │   │                           ├── TextIndexUtils.java
│   │       │   │                           ├── TextRange.java
│   │       │   │                           ├── TextSearch.java
│   │       │   │                           ├── TextSearchPredicate.java
│   │       │   │                           ├── TextSearchType.java
│   │       │   │                           └── TextValue.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── locationtech/
│   │           │           └── geowave/
│   │           │               └── core/
│   │           │                   └── index/
│   │           │                       ├── ByteArrayRangeTest.java
│   │           │                       ├── ByteArrayUtilsTest.java
│   │           │                       ├── CompoundIndexStrategyTest.java
│   │           │                       ├── PersistenceUtilsTest.java
│   │           │                       ├── StringUtilsTest.java
│   │           │                       ├── TestIndexPersistableRegistry.java
│   │           │                       ├── VarintUtilsTest.java
│   │           │                       ├── dimension/
│   │           │                       │   └── BasicDimensionDefinitionTest.java
│   │           │                       ├── lexicoder/
│   │           │                       │   ├── AbstractLexicoderTest.java
│   │           │                       │   ├── ByteLexicoderTest.java
│   │           │                       │   ├── DoubleLexicoderTest.java
│   │           │                       │   ├── FloatLexicoderTest.java
│   │           │                       │   ├── IntegerLexicoderTest.java
│   │           │                       │   ├── LongLexicoderTest.java
│   │           │                       │   └── ShortLexicoderTest.java
│   │           │                       ├── sfc/
│   │           │                       │   ├── data/
│   │           │                       │   │   ├── BasicNumericDatasetTest.java
│   │           │                       │   │   ├── NumericRangeTest.java
│   │           │                       │   │   └── NumericValueTest.java
│   │           │                       │   ├── xz/
│   │           │                       │   │   └── XZOrderSFCTest.java
│   │           │                       │   └── zorder/
│   │           │                       │       └── ZOrderSFCTest.java
│   │           │                       └── simple/
│   │           │                           ├── HashKeyIndexStrategyTest.java
│   │           │                           ├── RoundRobinKeyIndexStrategyTest.java
│   │           │                           └── SimpleNumericIndexStrategyTest.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── services/
│   │                       └── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   ├── ingest/
│   │   ├── .gitignore
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── avro/
│   │       │   │   └── wholefile.avsc
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── locationtech/
│   │       │   │           └── geowave/
│   │       │   │               └── core/
│   │       │   │                   └── ingest/
│   │       │   │                       ├── HdfsIngestHandler.java
│   │       │   │                       ├── S3IngestHandler.java
│   │       │   │                       ├── URLIngestUtils.java
│   │       │   │                       ├── avro/
│   │       │   │                       │   ├── AbstractStageWholeFileToAvro.java
│   │       │   │                       │   ├── GenericAvroSerializer.java
│   │       │   │                       │   ├── GeoWaveAvroFormatPlugin.java
│   │       │   │                       │   ├── GeoWaveAvroPluginBase.java
│   │       │   │                       │   └── GeoWaveAvroSchemaProvider.java
│   │       │   │                       ├── hdfs/
│   │       │   │                       │   ├── HdfsFile.java
│   │       │   │                       │   ├── StageRunData.java
│   │       │   │                       │   ├── StageToHdfsDriver.java
│   │       │   │                       │   └── mapreduce/
│   │       │   │                       │       ├── AbstractLocalIngestWithMapper.java
│   │       │   │                       │       ├── AbstractMapReduceIngest.java
│   │       │   │                       │       ├── ByteBufferBackedInputStream.java
│   │       │   │                       │       ├── IngestFromHdfsDriver.java
│   │       │   │                       │       ├── IngestFromHdfsPlugin.java
│   │       │   │                       │       ├── IngestMapper.java
│   │       │   │                       │       ├── IngestPersistableRegistry.java
│   │       │   │                       │       ├── IngestReducer.java
│   │       │   │                       │       ├── IngestWithMapper.java
│   │       │   │                       │       ├── IngestWithMapperJobRunner.java
│   │       │   │                       │       ├── IngestWithReducer.java
│   │       │   │                       │       ├── IngestWithReducerJobRunner.java
│   │       │   │                       │       ├── IntermediateKeyValueMapper.java
│   │       │   │                       │       ├── KeyValueData.java
│   │       │   │                       │       └── MapReduceCommandLineOptions.java
│   │       │   │                       ├── kafka/
│   │       │   │                       │   ├── IngestFromKafkaDriver.java
│   │       │   │                       │   ├── KafkaCommandLineArgument.java
│   │       │   │                       │   ├── KafkaCommandLineOptions.java
│   │       │   │                       │   ├── KafkaConsumerCommandLineOptions.java
│   │       │   │                       │   ├── KafkaIngestRunData.java
│   │       │   │                       │   ├── KafkaProducerCommandLineOptions.java
│   │       │   │                       │   ├── PropertyReference.java
│   │       │   │                       │   ├── StageKafkaData.java
│   │       │   │                       │   └── StageToKafkaDriver.java
│   │       │   │                       ├── local/
│   │       │   │                       │   └── LocalFileIngestCLIDriver.java
│   │       │   │                       ├── operations/
│   │       │   │                       │   ├── AddTypeCommand.java
│   │       │   │                       │   ├── ConfigAWSCommand.java
│   │       │   │                       │   ├── IngestOperationProvider.java
│   │       │   │                       │   ├── IngestSection.java
│   │       │   │                       │   ├── KafkaToGeoWaveCommand.java
│   │       │   │                       │   ├── ListIngestPluginsCommand.java
│   │       │   │                       │   ├── LocalToGeoWaveCommand.java
│   │       │   │                       │   ├── LocalToHdfsCommand.java
│   │       │   │                       │   ├── LocalToKafkaCommand.java
│   │       │   │                       │   ├── LocalToMapReduceToGeoWaveCommand.java
│   │       │   │                       │   ├── MapReduceToGeoWaveCommand.java
│   │       │   │                       │   ├── SparkToGeoWaveCommand.java
│   │       │   │                       │   └── options/
│   │       │   │                       │       └── IngestFormatPluginOptions.java
│   │       │   │                       ├── spark/
│   │       │   │                       │   ├── SparkCommandLineOptions.java
│   │       │   │                       │   └── SparkIngestDriver.java
│   │       │   │                       └── spi/
│   │       │   │                           ├── IngestFormatPluginProviderSpi.java
│   │       │   │                           └── IngestFormatPluginRegistry.java
│   │       │   └── resources/
│   │       │       └── META-INF/
│   │       │           └── services/
│   │       │               ├── java.nio.file.spi.FileSystemProvider
│   │       │               ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │       │               ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   │       │               ├── org.locationtech.geowave.core.store.ingest.IngestUrlHandlerSpi
│   │       │               └── org.locationtech.geowave.core.store.ingest.LocalFileIngestPluginRegistrySpi
│   │       └── test/
│   │           └── java/
│   │               └── org/
│   │                   └── locationtech/
│   │                       └── geowave/
│   │                           └── ingest/
│   │                               └── s3/
│   │                                   └── DefaultGeoWaveAWSCredentialsProviderTest.java
│   ├── mapreduce/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── locationtech/
│   │           │           └── geowave/
│   │           │               └── mapreduce/
│   │           │                   ├── AbstractGeoWaveJobRunner.java
│   │           │                   ├── BaseMapReduceDataStore.java
│   │           │                   ├── GeoWaveConfiguratorBase.java
│   │           │                   ├── GeoWaveKey.java
│   │           │                   ├── GeoWaveMapper.java
│   │           │                   ├── GeoWaveReducer.java
│   │           │                   ├── GeoWaveWritableInputMapper.java
│   │           │                   ├── GeoWaveWritableInputReducer.java
│   │           │                   ├── GeoWaveWritableOutputMapper.java
│   │           │                   ├── GeoWaveWritableOutputReducer.java
│   │           │                   ├── HadoopDataAdapter.java
│   │           │                   ├── HadoopWritableSerializationTool.java
│   │           │                   ├── HadoopWritableSerializer.java
│   │           │                   ├── JobContextAdapterIndexMappingStore.java
│   │           │                   ├── JobContextAdapterStore.java
│   │           │                   ├── JobContextIndexStore.java
│   │           │                   ├── JobContextInternalAdapterStore.java
│   │           │                   ├── MapReduceDataStore.java
│   │           │                   ├── MapReduceDataStoreOperations.java
│   │           │                   ├── MapReduceUtils.java
│   │           │                   ├── NativeMapContext.java
│   │           │                   ├── NativeReduceContext.java
│   │           │                   ├── URLClassloaderUtils.java
│   │           │                   ├── VFSClassLoaderTransformer.java
│   │           │                   ├── copy/
│   │           │                   │   ├── StoreCopyJobRunner.java
│   │           │                   │   ├── StoreCopyMapper.java
│   │           │                   │   └── StoreCopyReducer.java
│   │           │                   ├── dedupe/
│   │           │                   │   ├── GeoWaveDedupeCombiner.java
│   │           │                   │   ├── GeoWaveDedupeJobRunner.java
│   │           │                   │   ├── GeoWaveDedupeMapper.java
│   │           │                   │   └── GeoWaveDedupeReducer.java
│   │           │                   ├── hdfs/
│   │           │                   │   └── HdfsUrlStreamHandlerFactory.java
│   │           │                   ├── input/
│   │           │                   │   ├── AsyncInputFormatIteratorWrapper.java
│   │           │                   │   ├── GeoWaveInputConfigurator.java
│   │           │                   │   ├── GeoWaveInputFormat.java
│   │           │                   │   ├── GeoWaveInputKey.java
│   │           │                   │   └── InputFormatIteratorWrapper.java
│   │           │                   ├── operations/
│   │           │                   │   ├── ConfigHDFSCommand.java
│   │           │                   │   ├── CopyCommand.java
│   │           │                   │   ├── CopyCommandOptions.java
│   │           │                   │   ├── HdfsHostPortConverter.java
│   │           │                   │   └── MapReduceOperationProvider.java
│   │           │                   ├── output/
│   │           │                   │   ├── GeoWaveOutputFormat.java
│   │           │                   │   └── GeoWaveOutputKey.java
│   │           │                   ├── s3/
│   │           │                   │   ├── DefaultGeoWaveAWSCredentialsProvider.java
│   │           │                   │   ├── GeoWaveAmazonS3Factory.java
│   │           │                   │   ├── S3Params.java
│   │           │                   │   ├── S3ParamsExtractor.java
│   │           │                   │   ├── S3URLConnection.java
│   │           │                   │   ├── S3URLStreamHandler.java
│   │           │                   │   └── S3URLStreamHandlerFactory.java
│   │           │                   └── splits/
│   │           │                       ├── GeoWaveInputSplit.java
│   │           │                       ├── GeoWaveRecordReader.java
│   │           │                       ├── GeoWaveRowRange.java
│   │           │                       ├── IntermediateSplitInfo.java
│   │           │                       ├── RangeLocationPair.java
│   │           │                       ├── RecordReaderParams.java
│   │           │                       ├── SplitInfo.java
│   │           │                       └── SplitsProvider.java
│   │           └── resources/
│   │               └── META-INF/
│   │                   └── services/
│   │                       ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │                       └── org.locationtech.geowave.core.store.spi.ClassLoaderTransformerSpi
│   ├── pom.xml
│   └── store/
│       ├── .gitignore
│       ├── pom.xml
│       └── src/
│           ├── main/
│           │   ├── antlr4/
│           │   │   └── org/
│           │   │       └── locationtech/
│           │   │           └── geowave/
│           │   │               └── core/
│           │   │                   └── store/
│           │   │                       └── query/
│           │   │                           └── gwql/
│           │   │                               └── parse/
│           │   │                                   └── GWQL.g4
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── locationtech/
│           │   │           └── geowave/
│           │   │               └── core/
│           │   │                   └── store/
│           │   │                       ├── AdapterMapping.java
│           │   │                       ├── AdapterToIndexMapping.java
│           │   │                       ├── BaseDataStoreFactory.java
│           │   │                       ├── BaseDataStoreFamily.java
│           │   │                       ├── BaseDataStoreOptions.java
│           │   │                       ├── BaseStoreFactory.java
│           │   │                       ├── CloseableIterator.java
│           │   │                       ├── CloseableIteratorWrapper.java
│           │   │                       ├── DataStoreOptions.java
│           │   │                       ├── DataStoreProperty.java
│           │   │                       ├── EntryVisibilityHandler.java
│           │   │                       ├── GenericFactory.java
│           │   │                       ├── GenericStoreFactory.java
│           │   │                       ├── GeoWaveStoreFinder.java
│           │   │                       ├── PropertyStore.java
│           │   │                       ├── StoreFactoryFamilySpi.java
│           │   │                       ├── StoreFactoryHelper.java
│           │   │                       ├── StoreFactoryOptions.java
│           │   │                       ├── StorePersistableRegistry.java
│           │   │                       ├── adapter/
│           │   │                       │   ├── AbstractAdapterPersistenceEncoding.java
│           │   │                       │   ├── AbstractDataTypeAdapter.java
│           │   │                       │   ├── AdapterIndexMappingStore.java
│           │   │                       │   ├── AdapterPersistenceEncoding.java
│           │   │                       │   ├── AdapterStore.java
│           │   │                       │   ├── AdapterStoreWrapper.java
│           │   │                       │   ├── AsyncPersistenceEncoding.java
│           │   │                       │   ├── BaseFieldDescriptor.java
│           │   │                       │   ├── BasicDataTypeAdapter.java
│           │   │                       │   ├── BinaryDataAdapter.java
│           │   │                       │   ├── FieldDescriptor.java
│           │   │                       │   ├── FieldDescriptorBuilder.java
│           │   │                       │   ├── FitToIndexPersistenceEncoding.java
│           │   │                       │   ├── FullAsyncPersistenceEncoding.java
│           │   │                       │   ├── IndexDependentDataAdapter.java
│           │   │                       │   ├── IndexedAdapterPersistenceEncoding.java
│           │   │                       │   ├── InternalAdapterStore.java
│           │   │                       │   ├── InternalAdapterUtils.java
│           │   │                       │   ├── InternalDataAdapter.java
│           │   │                       │   ├── InternalDataAdapterImpl.java
│           │   │                       │   ├── LazyReadPersistenceEncoding.java
│           │   │                       │   ├── MapRowBuilder.java
│           │   │                       │   ├── PartialAsyncPersistenceEncoding.java
│           │   │                       │   ├── PersistentAdapterStore.java
│           │   │                       │   ├── RowMergingDataAdapter.java
│           │   │                       │   ├── SimpleAbstractDataAdapter.java
│           │   │                       │   ├── SimpleRowTransform.java
│           │   │                       │   ├── SingletonFieldRowBuilder.java
│           │   │                       │   ├── TransientAdapterStore.java
│           │   │                       │   ├── annotation/
│           │   │                       │   │   ├── AnnotatedFieldDescriptorBuilder.java
│           │   │                       │   │   ├── BaseAnnotatedFieldDescriptorBuilder.java
│           │   │                       │   │   ├── GeoWaveDataType.java
│           │   │                       │   │   ├── GeoWaveField.java
│           │   │                       │   │   └── GeoWaveFieldAnnotation.java
│           │   │                       │   ├── exceptions/
│           │   │                       │   │   └── AdapterException.java
│           │   │                       │   └── statistics/
│           │   │                       │       └── histogram/
│           │   │                       │           ├── ByteUtils.java
│           │   │                       │           ├── FixedBinNumericHistogram.java
│           │   │                       │           ├── MinimalBinDistanceHistogram.java
│           │   │                       │           ├── NumericHistogram.java
│           │   │                       │           ├── NumericHistogramFactory.java
│           │   │                       │           └── TDigestNumericHistogram.java
│           │   │                       ├── api/
│           │   │                       │   ├── Aggregation.java
│           │   │                       │   ├── AggregationQuery.java
│           │   │                       │   ├── AggregationQueryBuilder.java
│           │   │                       │   ├── AttributeIndex.java
│           │   │                       │   ├── BinConstraints.java
│           │   │                       │   ├── BinningStrategy.java
│           │   │                       │   ├── DataStore.java
│           │   │                       │   ├── DataStoreFactory.java
│           │   │                       │   ├── DataTypeAdapter.java
│           │   │                       │   ├── DataTypeStatistic.java
│           │   │                       │   ├── FieldStatistic.java
│           │   │                       │   ├── Index.java
│           │   │                       │   ├── IndexFieldMapper.java
│           │   │                       │   ├── IndexStatistic.java
│           │   │                       │   ├── IngestOptions.java
│           │   │                       │   ├── Query.java
│           │   │                       │   ├── QueryBuilder.java
│           │   │                       │   ├── QueryConstraintsFactory.java
│           │   │                       │   ├── RowBuilder.java
│           │   │                       │   ├── Statistic.java
│           │   │                       │   ├── StatisticBinningStrategy.java
│           │   │                       │   ├── StatisticQuery.java
│           │   │                       │   ├── StatisticQueryBuilder.java
│           │   │                       │   ├── StatisticValue.java
│           │   │                       │   ├── VisibilityHandler.java
│           │   │                       │   ├── WriteResults.java
│           │   │                       │   └── Writer.java
│           │   │                       ├── base/
│           │   │                       │   ├── AbstractBaseRowQuery.java
│           │   │                       │   ├── BaseConstraintsQuery.java
│           │   │                       │   ├── BaseDataIndexWriter.java
│           │   │                       │   ├── BaseDataStore.java
│           │   │                       │   ├── BaseDataStoreUtils.java
│           │   │                       │   ├── BaseFilteredIndexQuery.java
│           │   │                       │   ├── BaseIndexWriter.java
│           │   │                       │   ├── BaseInsertionIdQuery.java
│           │   │                       │   ├── BaseQuery.java
│           │   │                       │   ├── BaseQueryOptions.java
│           │   │                       │   ├── BaseRowPrefixQuery.java
│           │   │                       │   ├── CastIterator.java
│           │   │                       │   ├── DataStoreCallbackManager.java
│           │   │                       │   ├── GeoWaveValueStore.java
│           │   │                       │   ├── IntermediaryReadEntryInfo.java
│           │   │                       │   ├── IntermediaryWriteEntryInfo.java
│           │   │                       │   └── dataidx/
│           │   │                       │       ├── BatchDataIndexRetrieval.java
│           │   │                       │       ├── BatchDataIndexRetrievalIteratorHelper.java
│           │   │                       │       ├── BatchIndexRetrievalImpl.java
│           │   │                       │       ├── DataIndexRetrieval.java
│           │   │                       │       ├── DataIndexRetrievalImpl.java
│           │   │                       │       ├── DataIndexUtils.java
│           │   │                       │       ├── DefaultDataIndexRowDeleterWrapper.java
│           │   │                       │       └── DefaultDataIndexRowWriterWrapper.java
│           │   │                       ├── callback/
│           │   │                       │   ├── DeleteCallback.java
│           │   │                       │   ├── DeleteCallbackList.java
│           │   │                       │   ├── DeleteOtherIndicesCallback.java
│           │   │                       │   ├── DuplicateDeletionCallback.java
│           │   │                       │   ├── IngestCallback.java
│           │   │                       │   ├── IngestCallbackList.java
│           │   │                       │   ├── ScanCallback.java
│           │   │                       │   └── ScanCallbackList.java
│           │   │                       ├── cli/
│           │   │                       │   ├── CLIUtils.java
│           │   │                       │   ├── VisibilityOptions.java
│           │   │                       │   ├── index/
│           │   │                       │   │   ├── AddIndexCommand.java
│           │   │                       │   │   ├── CompactIndexCommand.java
│           │   │                       │   │   ├── IndexOperationProvider.java
│           │   │                       │   │   ├── IndexSection.java
│           │   │                       │   │   ├── ListIndexPluginsCommand.java
│           │   │                       │   │   ├── ListIndicesCommand.java
│           │   │                       │   │   └── RemoveIndexCommand.java
│           │   │                       │   ├── query/
│           │   │                       │   │   ├── CSVQueryOutputFormat.java
│           │   │                       │   │   ├── ConsoleQueryOutputFormat.java
│           │   │                       │   │   ├── GWQLQuery.java
│           │   │                       │   │   ├── QueryOperationProvider.java
│           │   │                       │   │   └── QueryOutputFormatSpi.java
│           │   │                       │   ├── stats/
│           │   │                       │   │   ├── AbstractStatsCommand.java
│           │   │                       │   │   ├── AddStatCommand.java
│           │   │                       │   │   ├── CompactStatsCommand.java
│           │   │                       │   │   ├── ListStatTypesCommand.java
│           │   │                       │   │   ├── ListStatsCommand.java
│           │   │                       │   │   ├── RecalculateStatsCommand.java
│           │   │                       │   │   ├── RemoveStatCommand.java
│           │   │                       │   │   ├── StatsCommandLineOptions.java
│           │   │                       │   │   ├── StatsOperationProvider.java
│           │   │                       │   │   └── StatsSection.java
│           │   │                       │   ├── store/
│           │   │                       │   │   ├── AbstractRemoveCommand.java
│           │   │                       │   │   ├── AddStoreCommand.java
│           │   │                       │   │   ├── ClearStoreCommand.java
│           │   │                       │   │   ├── CopyConfigStoreCommand.java
│           │   │                       │   │   ├── CopyStoreCommand.java
│           │   │                       │   │   ├── DataStorePluginOptions.java
│           │   │                       │   │   ├── DescribeStoreCommand.java
│           │   │                       │   │   ├── ListStorePluginsCommand.java
│           │   │                       │   │   ├── ListStoresCommand.java
│           │   │                       │   │   ├── RemoveStoreCommand.java
│           │   │                       │   │   ├── StoreLoader.java
│           │   │                       │   │   ├── StoreOperationProvider.java
│           │   │                       │   │   ├── StoreSection.java
│           │   │                       │   │   └── VersionCommand.java
│           │   │                       │   └── type/
│           │   │                       │       ├── DescribeTypeCommand.java
│           │   │                       │       ├── ListTypesCommand.java
│           │   │                       │       ├── RemoveTypeCommand.java
│           │   │                       │       ├── TypeOperationProvider.java
│           │   │                       │       └── TypeSection.java
│           │   │                       ├── config/
│           │   │                       │   ├── ConfigOption.java
│           │   │                       │   └── ConfigUtils.java
│           │   │                       ├── data/
│           │   │                       │   ├── CommonIndexedPersistenceEncoding.java
│           │   │                       │   ├── DataReader.java
│           │   │                       │   ├── DataWriter.java
│           │   │                       │   ├── DeferredReadCommonIndexedPersistenceEncoding.java
│           │   │                       │   ├── IndexedPersistenceEncoding.java
│           │   │                       │   ├── MultiFieldPersistentDataset.java
│           │   │                       │   ├── PersistenceEncoding.java
│           │   │                       │   ├── PersistentDataset.java
│           │   │                       │   ├── PersistentValue.java
│           │   │                       │   ├── SingleFieldPersistentDataset.java
│           │   │                       │   ├── UnreadFieldDataList.java
│           │   │                       │   ├── field/
│           │   │                       │   │   ├── ArrayReader.java
│           │   │                       │   │   ├── ArrayWriter.java
│           │   │                       │   │   ├── FieldReader.java
│           │   │                       │   │   ├── FieldSerializationProviderSpi.java
│           │   │                       │   │   ├── FieldUtils.java
│           │   │                       │   │   ├── FieldWriter.java
│           │   │                       │   │   ├── PersistableReader.java
│           │   │                       │   │   ├── PersistableWriter.java
│           │   │                       │   │   └── base/
│           │   │                       │   │       ├── BigDecimalArraySerializationProvider.java
│           │   │                       │   │       ├── BigDecimalSerializationProvider.java
│           │   │                       │   │       ├── BigIntegerArraySerializationProvider.java
│           │   │                       │   │       ├── BigIntegerSerializationProvider.java
│           │   │                       │   │       ├── BooleanArraySerializationProvider.java
│           │   │                       │   │       ├── BooleanSerializationProvider.java
│           │   │                       │   │       ├── ByteArraySerializationProvider.java
│           │   │                       │   │       ├── ByteSerializationProvider.java
│           │   │                       │   │       ├── DoubleArraySerializationProvider.java
│           │   │                       │   │       ├── DoubleSerializationProvider.java
│           │   │                       │   │       ├── FloatArraySerializationProvider.java
│           │   │                       │   │       ├── FloatSerializationProvider.java
│           │   │                       │   │       ├── IntegerArraySerializationProvider.java
│           │   │                       │   │       ├── IntegerSerializationProvider.java
│           │   │                       │   │       ├── LongArraySerializationProvider.java
│           │   │                       │   │       ├── LongSerializationProvider.java
│           │   │                       │   │       ├── PrimitiveBooleanArraySerializationProvider.java
│           │   │                       │   │       ├── PrimitiveByteArraySerializationProvider.java
│           │   │                       │   │       ├── PrimitiveDoubleArraySerializationProvider.java
│           │   │                       │   │       ├── PrimitiveFloatArraySerializationProvider.java
│           │   │                       │   │       ├── PrimitiveIntArraySerializationProvider.java
│           │   │                       │   │       ├── PrimitiveLongArraySerializationProvider.java
│           │   │                       │   │       ├── PrimitiveShortArraySerializationProvider.java
│           │   │                       │   │       ├── ShortArraySerializationProvider.java
│           │   │                       │   │       ├── ShortSerializationProvider.java
│           │   │                       │   │       ├── StringArraySerializationProvider.java
│           │   │                       │   │       └── StringSerializationProvider.java
│           │   │                       │   └── visibility/
│           │   │                       │       ├── FallbackVisibilityHandler.java
│           │   │                       │       ├── FieldLevelVisibilityHandler.java
│           │   │                       │       ├── FieldMappedVisibilityHandler.java
│           │   │                       │       ├── GlobalVisibilityHandler.java
│           │   │                       │       ├── JsonFieldLevelVisibilityHandler.java
│           │   │                       │       ├── UnconstrainedVisibilityHandler.java
│           │   │                       │       ├── VisibilityComposer.java
│           │   │                       │       └── VisibilityExpression.java
│           │   │                       ├── dimension/
│           │   │                       │   ├── AbstractNumericDimensionField.java
│           │   │                       │   ├── BasicNumericDimensionField.java
│           │   │                       │   └── NumericDimensionField.java
│           │   │                       ├── entities/
│           │   │                       │   ├── GeoWaveKey.java
│           │   │                       │   ├── GeoWaveKeyImpl.java
│           │   │                       │   ├── GeoWaveMetadata.java
│           │   │                       │   ├── GeoWaveRow.java
│           │   │                       │   ├── GeoWaveRowImpl.java
│           │   │                       │   ├── GeoWaveRowIteratorTransformer.java
│           │   │                       │   ├── GeoWaveRowMergingIterator.java
│           │   │                       │   ├── GeoWaveRowMergingTransform.java
│           │   │                       │   ├── GeoWaveValue.java
│           │   │                       │   ├── GeoWaveValueImpl.java
│           │   │                       │   └── MergeableGeoWaveRow.java
│           │   │                       ├── flatten/
│           │   │                       │   ├── BitmaskUtils.java
│           │   │                       │   ├── BitmaskedPairComparator.java
│           │   │                       │   ├── FlattenedDataSet.java
│           │   │                       │   ├── FlattenedFieldInfo.java
│           │   │                       │   ├── FlattenedUnreadData.java
│           │   │                       │   └── FlattenedUnreadDataSingleRow.java
│           │   │                       ├── index/
│           │   │                       │   ├── AttributeDimensionalityTypeProvider.java
│           │   │                       │   ├── AttributeIndexImpl.java
│           │   │                       │   ├── AttributeIndexOptions.java
│           │   │                       │   ├── AttributeIndexProviderSpi.java
│           │   │                       │   ├── BaseIndexBuilder.java
│           │   │                       │   ├── BasicIndexModel.java
│           │   │                       │   ├── CommonIndexModel.java
│           │   │                       │   ├── CompositeConstraints.java
│           │   │                       │   ├── CoreRegisteredIndexFieldMappers.java
│           │   │                       │   ├── CustomAttributeIndex.java
│           │   │                       │   ├── CustomIndex.java
│           │   │                       │   ├── CustomNameIndex.java
│           │   │                       │   ├── FilterableConstraints.java
│           │   │                       │   ├── IndexBuilder.java
│           │   │                       │   ├── IndexFieldMapperPersistableRegistry.java
│           │   │                       │   ├── IndexFieldMapperRegistry.java
│           │   │                       │   ├── IndexFieldMapperRegistrySPI.java
│           │   │                       │   ├── IndexFilter.java
│           │   │                       │   ├── IndexImpl.java
│           │   │                       │   ├── IndexPluginOptions.java
│           │   │                       │   ├── IndexStore.java
│           │   │                       │   ├── NoOpIndexFieldMapper.java
│           │   │                       │   ├── NullIndex.java
│           │   │                       │   ├── NumericAttributeIndexProvider.java
│           │   │                       │   ├── TextAttributeIndexProvider.java
│           │   │                       │   └── writer/
│           │   │                       │       ├── IndependentAdapterIndexWriter.java
│           │   │                       │       └── IndexCompositeWriter.java
│           │   │                       ├── ingest/
│           │   │                       │   ├── AbstractLocalFileDriver.java
│           │   │                       │   ├── AbstractLocalFileIngestDriver.java
│           │   │                       │   ├── BaseDataStoreIngestDriver.java
│           │   │                       │   ├── DataAdapterProvider.java
│           │   │                       │   ├── GeoWaveData.java
│           │   │                       │   ├── IndexProvider.java
│           │   │                       │   ├── IngestFormatOptions.java
│           │   │                       │   ├── IngestOptionsBuilderImpl.java
│           │   │                       │   ├── IngestPluginBase.java
│           │   │                       │   ├── IngestTask.java
│           │   │                       │   ├── IngestUrlHandlerSpi.java
│           │   │                       │   ├── IngestUtils.java
│           │   │                       │   ├── LocalFileIngestPlugin.java
│           │   │                       │   ├── LocalFileIngestPluginRegistrySpi.java
│           │   │                       │   ├── LocalIngestRunData.java
│           │   │                       │   ├── LocalInputCommandLineOptions.java
│           │   │                       │   ├── LocalPluginBase.java
│           │   │                       │   └── LocalPluginFileVisitor.java
│           │   │                       ├── memory/
│           │   │                       │   ├── MemoryAdapterIndexMappingStore.java
│           │   │                       │   ├── MemoryAdapterStore.java
│           │   │                       │   ├── MemoryDataStoreOperations.java
│           │   │                       │   ├── MemoryFactoryHelper.java
│           │   │                       │   ├── MemoryIndexStore.java
│           │   │                       │   ├── MemoryMetadataFilteringIterator.java
│           │   │                       │   ├── MemoryPersistentAdapterStore.java
│           │   │                       │   ├── MemoryRequiredOptions.java
│           │   │                       │   ├── MemoryStoreFactoryFamily.java
│           │   │                       │   └── MemoryStoreUtils.java
│           │   │                       ├── metadata/
│           │   │                       │   ├── AbstractGeoWavePersistence.java
│           │   │                       │   ├── AdapterIndexMappingStoreFactory.java
│           │   │                       │   ├── AdapterIndexMappingStoreImpl.java
│           │   │                       │   ├── AdapterStoreFactory.java
│           │   │                       │   ├── AdapterStoreImpl.java
│           │   │                       │   ├── DataStatisticsStoreFactory.java
│           │   │                       │   ├── DataStatisticsStoreImpl.java
│           │   │                       │   ├── IndexStoreFactory.java
│           │   │                       │   ├── IndexStoreImpl.java
│           │   │                       │   ├── InternalAdapterStoreFactory.java
│           │   │                       │   ├── InternalAdapterStoreImpl.java
│           │   │                       │   ├── MetadataIterators.java
│           │   │                       │   ├── PropertyStoreFactory.java
│           │   │                       │   └── PropertyStoreImpl.java
│           │   │                       ├── operations/
│           │   │                       │   ├── BaseReaderParams.java
│           │   │                       │   ├── BaseReaderParamsBuilder.java
│           │   │                       │   ├── DataIndexReaderParams.java
│           │   │                       │   ├── DataIndexReaderParamsBuilder.java
│           │   │                       │   ├── DataStoreOperations.java
│           │   │                       │   ├── DataStoreOperationsFactory.java
│           │   │                       │   ├── Deleter.java
│           │   │                       │   ├── MetadataDeleter.java
│           │   │                       │   ├── MetadataQuery.java
│           │   │                       │   ├── MetadataReader.java
│           │   │                       │   ├── MetadataType.java
│           │   │                       │   ├── MetadataWriter.java
│           │   │                       │   ├── ParallelDecoder.java
│           │   │                       │   ├── QueryAndDeleteByRow.java
│           │   │                       │   ├── RangeReaderParams.java
│           │   │                       │   ├── RangeReaderParamsBuilder.java
│           │   │                       │   ├── ReaderParams.java
│           │   │                       │   ├── ReaderParamsBuilder.java
│           │   │                       │   ├── RowDeleter.java
│           │   │                       │   ├── RowReader.java
│           │   │                       │   ├── RowReaderWrapper.java
│           │   │                       │   ├── RowWriter.java
│           │   │                       │   ├── SimpleParallelDecoder.java
│           │   │                       │   ├── config/
│           │   │                       │   │   └── IndexDefaultConfigProvider.java
│           │   │                       │   └── remote/
│           │   │                       │       └── options/
│           │   │                       │           └── BasicIndexOptions.java
│           │   │                       ├── query/
│           │   │                       │   ├── BaseQuery.java
│           │   │                       │   ├── BaseQueryBuilder.java
│           │   │                       │   ├── BaseQueryBuilderImpl.java
│           │   │                       │   ├── QueryBuilderImpl.java
│           │   │                       │   ├── aggregate/
│           │   │                       │   │   ├── AdapterAndIndexBasedAggregation.java
│           │   │                       │   │   ├── AggregationQueryBuilderImpl.java
│           │   │                       │   │   ├── BinningAggregation.java
│           │   │                       │   │   ├── BinningAggregationOptions.java
│           │   │                       │   │   ├── CommonIndexAggregation.java
│           │   │                       │   │   ├── CompositeAggregation.java
│           │   │                       │   │   ├── CountAggregation.java
│           │   │                       │   │   ├── FieldMathAggregation.java
│           │   │                       │   │   ├── FieldMaxAggregation.java
│           │   │                       │   │   ├── FieldMinAggregation.java
│           │   │                       │   │   ├── FieldNameParam.java
│           │   │                       │   │   ├── FieldSumAggregation.java
│           │   │                       │   │   ├── MergingAggregation.java
│           │   │                       │   │   ├── OptimalCountAggregation.java
│           │   │                       │   │   └── OptimalFieldAggregation.java
│           │   │                       │   ├── constraints/
│           │   │                       │   │   ├── AdapterAndIndexBasedQueryConstraints.java
│           │   │                       │   │   ├── BasicOrderedConstraintQuery.java
│           │   │                       │   │   ├── BasicQuery.java
│           │   │                       │   │   ├── BasicQueryByClass.java
│           │   │                       │   │   ├── Constraints.java
│           │   │                       │   │   ├── CoordinateRangeQuery.java
│           │   │                       │   │   ├── CoordinateRangeUtils.java
│           │   │                       │   │   ├── CustomQueryConstraints.java
│           │   │                       │   │   ├── CustomQueryConstraintsWithFilter.java
│           │   │                       │   │   ├── DataIdQuery.java
│           │   │                       │   │   ├── DataIdRangeQuery.java
│           │   │                       │   │   ├── EverythingQuery.java
│           │   │                       │   │   ├── ExplicitFilteredQuery.java
│           │   │                       │   │   ├── FilteredEverythingQuery.java
│           │   │                       │   │   ├── InsertionIdQuery.java
│           │   │                       │   │   ├── OptimalExpressionQuery.java
│           │   │                       │   │   ├── PrefixIdQuery.java
│           │   │                       │   │   ├── QueryConstraints.java
│           │   │                       │   │   ├── QueryConstraintsFactoryImpl.java
│           │   │                       │   │   ├── SimpleNumericQuery.java
│           │   │                       │   │   └── TypeConstraintQuery.java
│           │   │                       │   ├── filter/
│           │   │                       │   │   ├── AdapterIdQueryFilter.java
│           │   │                       │   │   ├── BasicQueryFilter.java
│           │   │                       │   │   ├── ClientVisibilityFilter.java
│           │   │                       │   │   ├── CoordinateRangeQueryFilter.java
│           │   │                       │   │   ├── DataIdQueryFilter.java
│           │   │                       │   │   ├── DataIdRangeQueryFilter.java
│           │   │                       │   │   ├── DedupeFilter.java
│           │   │                       │   │   ├── ExpressionQueryFilter.java
│           │   │                       │   │   ├── FilterList.java
│           │   │                       │   │   ├── FixedResolutionSubsampleQueryFilter.java
│           │   │                       │   │   ├── InsertionIdQueryFilter.java
│           │   │                       │   │   ├── PrefixIdQueryFilter.java
│           │   │                       │   │   ├── QueryFilter.java
│           │   │                       │   │   └── expression/
│           │   │                       │   │       ├── And.java
│           │   │                       │   │       ├── Between.java
│           │   │                       │   │       ├── BinaryPredicate.java
│           │   │                       │   │       ├── BooleanExpression.java
│           │   │                       │   │       ├── BooleanFieldValue.java
│           │   │                       │   │       ├── BooleanLiteral.java
│           │   │                       │   │       ├── ComparableExpression.java
│           │   │                       │   │       ├── ComparisonOperator.java
│           │   │                       │   │       ├── Exclude.java
│           │   │                       │   │       ├── Expression.java
│           │   │                       │   │       ├── FieldValue.java
│           │   │                       │   │       ├── Filter.java
│           │   │                       │   │       ├── FilterConstraints.java
│           │   │                       │   │       ├── FilterRange.java
│           │   │                       │   │       ├── GenericEqualTo.java
│           │   │                       │   │       ├── GenericExpression.java
│           │   │                       │   │       ├── GenericFieldValue.java
│           │   │                       │   │       ├── GenericLiteral.java
│           │   │                       │   │       ├── GenericNotEqualTo.java
│           │   │                       │   │       ├── Include.java
│           │   │                       │   │       ├── IndexFieldConstraints.java
│           │   │                       │   │       ├── InvalidFilterException.java
│           │   │                       │   │       ├── IsNotNull.java
│           │   │                       │   │       ├── IsNull.java
│           │   │                       │   │       ├── Literal.java
│           │   │                       │   │       ├── MultiFilterOperator.java
│           │   │                       │   │       ├── Not.java
│           │   │                       │   │       ├── Or.java
│           │   │                       │   │       ├── Predicate.java
│           │   │                       │   │       ├── numeric/
│           │   │                       │   │       │   ├── Abs.java
│           │   │                       │   │       │   ├── Add.java
│           │   │                       │   │       │   ├── Divide.java
│           │   │                       │   │       │   ├── MathExpression.java
│           │   │                       │   │       │   ├── Multiply.java
│           │   │                       │   │       │   ├── NumericBetween.java
│           │   │                       │   │       │   ├── NumericComparisonOperator.java
│           │   │                       │   │       │   ├── NumericExpression.java
│           │   │                       │   │       │   ├── NumericFieldConstraints.java
│           │   │                       │   │       │   ├── NumericFieldValue.java
│           │   │                       │   │       │   ├── NumericLiteral.java
│           │   │                       │   │       │   └── Subtract.java
│           │   │                       │   │       └── text/
│           │   │                       │   │           ├── Concat.java
│           │   │                       │   │           ├── Contains.java
│           │   │                       │   │           ├── EndsWith.java
│           │   │                       │   │           ├── StartsWith.java
│           │   │                       │   │           ├── TextBetween.java
│           │   │                       │   │           ├── TextBinaryPredicate.java
│           │   │                       │   │           ├── TextComparisonOperator.java
│           │   │                       │   │           ├── TextExpression.java
│           │   │                       │   │           ├── TextFieldConstraints.java
│           │   │                       │   │           ├── TextFieldValue.java
│           │   │                       │   │           ├── TextFilterRange.java
│           │   │                       │   │           └── TextLiteral.java
│           │   │                       │   ├── gwql/
│           │   │                       │   │   ├── AdapterEntryResultSet.java
│           │   │                       │   │   ├── AggregationSelector.java
│           │   │                       │   │   ├── CastableType.java
│           │   │                       │   │   ├── ColumnSelector.java
│           │   │                       │   │   ├── ErrorListener.java
│           │   │                       │   │   ├── GWQLCoreExtensions.java
│           │   │                       │   │   ├── GWQLExtensionRegistry.java
│           │   │                       │   │   ├── GWQLExtensionRegistrySpi.java
│           │   │                       │   │   ├── GWQLParseException.java
│           │   │                       │   │   ├── GWQLParseHelper.java
│           │   │                       │   │   ├── QLFunction.java
│           │   │                       │   │   ├── Result.java
│           │   │                       │   │   ├── ResultSet.java
│           │   │                       │   │   ├── Selector.java
│           │   │                       │   │   ├── SingletonResultSet.java
│           │   │                       │   │   ├── function/
│           │   │                       │   │   │   ├── aggregation/
│           │   │                       │   │   │   │   ├── AggregationFunction.java
│           │   │                       │   │   │   │   ├── CountFunction.java
│           │   │                       │   │   │   │   ├── MathAggregationFunction.java
│           │   │                       │   │   │   │   ├── MaxFunction.java
│           │   │                       │   │   │   │   ├── MinFunction.java
│           │   │                       │   │   │   │   └── SumFunction.java
│           │   │                       │   │   │   ├── expression/
│           │   │                       │   │   │   │   ├── AbsFunction.java
│           │   │                       │   │   │   │   ├── ConcatFunction.java
│           │   │                       │   │   │   │   └── ExpressionFunction.java
│           │   │                       │   │   │   ├── operator/
│           │   │                       │   │   │   │   └── OperatorFunction.java
│           │   │                       │   │   │   └── predicate/
│           │   │                       │   │   │       ├── PredicateFunction.java
│           │   │                       │   │   │       └── TextPredicates.java
│           │   │                       │   │   ├── statement/
│           │   │                       │   │   │   ├── DeleteStatement.java
│           │   │                       │   │   │   ├── SelectStatement.java
│           │   │                       │   │   │   └── Statement.java
│           │   │                       │   │   └── type/
│           │   │                       │   │       ├── NumberCastableType.java
│           │   │                       │   │       └── TextCastableType.java
│           │   │                       │   └── options/
│           │   │                       │       ├── AggregateTypeQueryOptions.java
│           │   │                       │       ├── CommonQueryOptions.java
│           │   │                       │       ├── DataTypeQueryOptions.java
│           │   │                       │       ├── FilterByTypeQueryOptions.java
│           │   │                       │       ├── IndexQueryOptions.java
│           │   │                       │       ├── QueryAllIndices.java
│           │   │                       │       ├── QueryAllTypes.java
│           │   │                       │       └── QuerySingleIndex.java
│           │   │                       ├── server/
│           │   │                       │   ├── BasicOptionProvider.java
│           │   │                       │   ├── RowMergingAdapterOptionProvider.java
│           │   │                       │   ├── ServerOpConfig.java
│           │   │                       │   ├── ServerOpHelper.java
│           │   │                       │   └── ServerSideOperations.java
│           │   │                       ├── spi/
│           │   │                       │   ├── ClassLoaderTransformerSpi.java
│           │   │                       │   ├── DimensionalityTypeOptions.java
│           │   │                       │   ├── DimensionalityTypeProviderSpi.java
│           │   │                       │   └── DimensionalityTypeRegistry.java
│           │   │                       ├── statistics/
│           │   │                       │   ├── CoreRegisteredStatistics.java
│           │   │                       │   ├── DataStatisticsStore.java
│           │   │                       │   ├── DefaultStatisticsProvider.java
│           │   │                       │   ├── InternalStatisticsHelper.java
│           │   │                       │   ├── StatisticId.java
│           │   │                       │   ├── StatisticType.java
│           │   │                       │   ├── StatisticUpdateCallback.java
│           │   │                       │   ├── StatisticUpdateHandler.java
│           │   │                       │   ├── StatisticValueReader.java
│           │   │                       │   ├── StatisticValueWriter.java
│           │   │                       │   ├── StatisticsDeleteCallback.java
│           │   │                       │   ├── StatisticsIngestCallback.java
│           │   │                       │   ├── StatisticsPersistableRegistry.java
│           │   │                       │   ├── StatisticsRegistry.java
│           │   │                       │   ├── StatisticsRegistrySPI.java
│           │   │                       │   ├── StatisticsValueIterator.java
│           │   │                       │   ├── adapter/
│           │   │                       │   │   ├── CountStatistic.java
│           │   │                       │   │   └── DataTypeStatisticType.java
│           │   │                       │   ├── binning/
│           │   │                       │   │   ├── BinningStrategyUtils.java
│           │   │                       │   │   ├── CompositeBinningStrategy.java
│           │   │                       │   │   ├── DataTypeBinningStrategy.java
│           │   │                       │   │   ├── FieldValueBinningStrategy.java
│           │   │                       │   │   ├── NumericRangeFieldValueBinningStrategy.java
│           │   │                       │   │   └── PartitionBinningStrategy.java
│           │   │                       │   ├── field/
│           │   │                       │   │   ├── BloomFilterStatistic.java
│           │   │                       │   │   ├── CountMinSketchStatistic.java
│           │   │                       │   │   ├── FieldStatisticId.java
│           │   │                       │   │   ├── FieldStatisticType.java
│           │   │                       │   │   ├── FixedBinNumericHistogramStatistic.java
│           │   │                       │   │   ├── HyperLogLogStatistic.java
│           │   │                       │   │   ├── NumericHistogramStatistic.java
│           │   │                       │   │   ├── NumericMeanStatistic.java
│           │   │                       │   │   ├── NumericRangeStatistic.java
│           │   │                       │   │   ├── NumericStatsStatistic.java
│           │   │                       │   │   ├── Stats.java
│           │   │                       │   │   └── StatsAccumulator.java
│           │   │                       │   ├── index/
│           │   │                       │   │   ├── DifferingVisibilityCountStatistic.java
│           │   │                       │   │   ├── DuplicateEntryCountStatistic.java
│           │   │                       │   │   ├── FieldVisibilityCountStatistic.java
│           │   │                       │   │   ├── IndexMetaDataSetStatistic.java
│           │   │                       │   │   ├── IndexStatisticType.java
│           │   │                       │   │   ├── MaxDuplicatesStatistic.java
│           │   │                       │   │   ├── PartitionsStatistic.java
│           │   │                       │   │   └── RowRangeHistogramStatistic.java
│           │   │                       │   ├── query/
│           │   │                       │   │   ├── AbstractStatisticQuery.java
│           │   │                       │   │   ├── AbstractStatisticQueryBuilder.java
│           │   │                       │   │   ├── BinConstraintsImpl.java
│           │   │                       │   │   ├── DataTypeStatisticQuery.java
│           │   │                       │   │   ├── DataTypeStatisticQueryBuilder.java
│           │   │                       │   │   ├── FieldStatisticQuery.java
│           │   │                       │   │   ├── FieldStatisticQueryBuilder.java
│           │   │                       │   │   ├── IndexStatisticQuery.java
│           │   │                       │   │   └── IndexStatisticQueryBuilder.java
│           │   │                       │   └── visibility/
│           │   │                       │       ├── DefaultStatisticVisibility.java
│           │   │                       │       └── FieldDependentStatisticVisibility.java
│           │   │                       └── util/
│           │   │                           ├── AsyncNativeEntryIteratorWrapper.java
│           │   │                           ├── ClasspathUtils.java
│           │   │                           ├── CompoundHierarchicalIndexStrategyWrapper.java
│           │   │                           ├── DataAdapterAndIndexCache.java
│           │   │                           ├── DataStoreUtils.java
│           │   │                           ├── GenericTypeResolver.java
│           │   │                           ├── GeoWaveRowIteratorFactory.java
│           │   │                           ├── IteratorWrapper.java
│           │   │                           ├── MergingEntryIterator.java
│           │   │                           ├── NativeEntryIteratorWrapper.java
│           │   │                           ├── NativeEntryTransformer.java
│           │   │                           ├── RewritingMergingEntryIterator.java
│           │   │                           ├── RowConsumer.java
│           │   │                           └── SecondaryIndexEntryIteratorWrapper.java
│           │   └── resources/
│           │       └── META-INF/
│           │           └── services/
│           │               ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│           │               ├── org.locationtech.geowave.core.cli.spi.DefaultConfigProviderSpi
│           │               ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│           │               ├── org.locationtech.geowave.core.store.cli.query.QueryOutputFormatSpi
│           │               ├── org.locationtech.geowave.core.store.data.field.FieldSerializationProviderSpi
│           │               ├── org.locationtech.geowave.core.store.index.AttributeIndexProviderSpi
│           │               ├── org.locationtech.geowave.core.store.index.IndexFieldMapperRegistrySPI
│           │               ├── org.locationtech.geowave.core.store.query.gwql.GWQLExtensionRegistrySpi
│           │               ├── org.locationtech.geowave.core.store.spi.DimensionalityTypeProviderSpi
│           │               └── org.locationtech.geowave.core.store.statistics.StatisticsRegistrySPI
│           └── test/
│               ├── java/
│               │   └── org/
│               │       └── locationtech/
│               │           └── geowave/
│               │               └── core/
│               │                   └── store/
│               │                       ├── DataStorePropertyTest.java
│               │                       ├── TestStorePersistableRegistry.java
│               │                       ├── adapter/
│               │                       │   ├── AbstractDataTypeAdapterTest.java
│               │                       │   ├── BasicDataTypeAdapterTest.java
│               │                       │   ├── FieldDescriptorTest.java
│               │                       │   ├── IndexFieldMapperTest.java
│               │                       │   ├── MockComponents.java
│               │                       │   ├── MockRegisteredIndexFieldMappers.java
│               │                       │   └── statistics/
│               │                       │       └── histogram/
│               │                       │           ├── ByteUtilsTest.java
│               │                       │           └── NumericHistogramTest.java
│               │                       ├── api/
│               │                       │   ├── DataStoreAddTest.java
│               │                       │   └── DataStoreRemoveTest.java
│               │                       ├── data/
│               │                       │   ├── field/
│               │                       │   │   └── BasicReaderWriterTest.java
│               │                       │   └── visibility/
│               │                       │       ├── JsonFieldLevelVisibilityHandlerTest.java
│               │                       │       └── VisibilityExpressionTest.java
│               │                       ├── flatten/
│               │                       │   └── BitmaskUtilsTest.java
│               │                       ├── memory/
│               │                       │   ├── MemoryDataStoreTest.java
│               │                       │   └── MemoryStoreUtilsTest.java
│               │                       ├── query/
│               │                       │   ├── BasicQueryByClassTest.java
│               │                       │   ├── aggregate/
│               │                       │   │   ├── AbstractAggregationTest.java
│               │                       │   │   ├── AbstractCommonIndexAggregationTest.java
│               │                       │   │   ├── BinningAggregationOptionsTest.java
│               │                       │   │   ├── BinningAggregationTest.java
│               │                       │   │   └── CountAggregationTest.java
│               │                       │   ├── filter/
│               │                       │   │   ├── DistributedQueryFilterTest.java
│               │                       │   │   └── expression/
│               │                       │   │       ├── FilterExpressionTest.java
│               │                       │   │       └── FilterRangeTest.java
│               │                       │   └── gwql/
│               │                       │       ├── AbstractGWQLTest.java
│               │                       │       ├── DeleteStatementTest.java
│               │                       │       ├── GWQLParserTest.java
│               │                       │       └── SelectStatementTest.java
│               │                       └── statistics/
│               │                           └── index/
│               │                               ├── PartitionsStatisticTest.java
│               │                               └── RowRangeHistogramStatisticTest.java
│               └── resources/
│                   └── META-INF/
│                       └── services/
│                           ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│                           └── org.locationtech.geowave.core.store.index.IndexFieldMapperRegistrySPI
├── deploy/
│   ├── Jenkinsfile
│   ├── packaging/
│   │   ├── docker/
│   │   │   ├── .gitignore
│   │   │   ├── README.md
│   │   │   ├── build-args-matrix.sh.example
│   │   │   ├── build-rpm/
│   │   │   │   ├── build-rpm.sh
│   │   │   │   ├── build-services-rpm.sh
│   │   │   │   ├── deploy-geowave-to-hdfs.sh.template
│   │   │   │   └── fpm_scripts/
│   │   │   │       ├── gwgeoserver_logrotate
│   │   │   │       ├── gwgrpc.environment
│   │   │   │       ├── gwgrpc.rsyslog
│   │   │   │       ├── gwgrpc.service
│   │   │   │       ├── gwgrpc_logrotate
│   │   │   │       ├── gwgrpc_post_install.sh
│   │   │   │       ├── gwgrpc_post_uninstall.sh
│   │   │   │       ├── gwtomcat
│   │   │   │       ├── gwtomcat.service
│   │   │   │       ├── gwtomcat_logrotate
│   │   │   │       ├── gwtomcat_post_install.sh
│   │   │   │       ├── gwtomcat_post_uninstall.sh
│   │   │   │       ├── gwtomcat_pre_uninstall.sh
│   │   │   │       └── gwtomcat_tools.sh.template
│   │   │   ├── build-src/
│   │   │   │   ├── build-geowave-common.sh
│   │   │   │   └── build-geowave-vendor.sh
│   │   │   ├── docker-build-rpms.sh
│   │   │   ├── geowave-centos7-java7-build.dockerfile
│   │   │   ├── geowave-centos7-java8-build.dockerfile
│   │   │   ├── geowave-centos7-publish.dockerfile
│   │   │   ├── geowave-centos7-rpm-build.dockerfile
│   │   │   ├── init.sh
│   │   │   ├── publish/
│   │   │   │   ├── publish-common-rpm.sh
│   │   │   │   └── publish-vendor-rpm.sh
│   │   │   └── pull-s3-caches.sh
│   │   ├── emr/
│   │   │   ├── README.md
│   │   │   ├── generate-emr-scripts.sh
│   │   │   └── template/
│   │   │       ├── accumulo/
│   │   │       │   ├── DATASTORE_BOOTSTRAP_TOKEN
│   │   │       │   ├── DATASTORE_CONFIGURE_GEOWAVE_TOKEN
│   │   │       │   ├── DATASTORE_LIB_TOKEN
│   │   │       │   ├── DATASTORE_PARAMS_TOKEN
│   │   │       │   └── DATASTORE_PUPPET_TOKEN
│   │   │       ├── bootstrap-geowave.sh.template
│   │   │       ├── bootstrap-zeppelin.sh.template
│   │   │       ├── cassandra/
│   │   │       │   ├── DATASTORE_BOOTSTRAP_TOKEN
│   │   │       │   └── DATASTORE_PARAMS_TOKEN
│   │   │       ├── configure-zeppelin.sh.template
│   │   │       ├── geowave-install-lib.sh.template
│   │   │       ├── hbase/
│   │   │       │   ├── DATASTORE_PARAMS_TOKEN
│   │   │       │   └── DATASTORE_PUPPET_TOKEN
│   │   │       ├── jupyter/
│   │   │       │   ├── bootstrap-jupyter.sh.template
│   │   │       │   ├── bootstrap-jupyterhub.sh.template
│   │   │       │   ├── create-configure-kernel.sh.template
│   │   │       │   ├── gw-base.yml
│   │   │       │   ├── install-conda.sh
│   │   │       │   ├── jupyterhub_config.py
│   │   │       │   └── pre-spawn.sh
│   │   │       └── quickstart/
│   │   │           ├── QUICKSTART_BOOTSTRAP_TOKEN
│   │   │           ├── geowave-env.sh.template
│   │   │           ├── ingest-and-kde-gdelt.sh.template
│   │   │           └── setup-geoserver-geowave-workspace.sh
│   │   ├── puppet/
│   │   │   └── geowave/
│   │   │       └── manifests/
│   │   │           ├── accumulo.pp
│   │   │           ├── app.pp
│   │   │           ├── gwgeoserver.pp
│   │   │           ├── gwgrpc.pp
│   │   │           ├── gwtomcat_server.pp
│   │   │           ├── gwtomcat_service.pp
│   │   │           ├── hbase.pp
│   │   │           ├── init.pp
│   │   │           ├── params.pp
│   │   │           ├── repo.pp
│   │   │           └── restservices.pp
│   │   ├── rpm/
│   │   │   ├── .gitignore
│   │   │   ├── centos/
│   │   │   │   └── 7/
│   │   │   │       ├── .gitignore
│   │   │   │       ├── SOURCES/
│   │   │   │       │   ├── bash_profile.sh
│   │   │   │       │   ├── default.xml
│   │   │   │       │   ├── geowave-tools.sh
│   │   │   │       │   ├── namespace.xml
│   │   │   │       │   └── workspace.xml
│   │   │   │       ├── SPECS/
│   │   │   │       │   ├── geowave-common.spec
│   │   │   │       │   └── geowave-vendor.spec
│   │   │   │       └── rpm.sh
│   │   │   ├── repo-dev/
│   │   │   │   ├── SOURCES/
│   │   │   │   │   └── geowave-dev.repo
│   │   │   │   ├── SPECS/
│   │   │   │   │   └── geowave-dev.spec
│   │   │   │   └── rpm.sh
│   │   │   ├── repo-release/
│   │   │   │   ├── SOURCES/
│   │   │   │   │   └── geowave.repo
│   │   │   │   ├── SPECS/
│   │   │   │   │   └── geowave-release.spec
│   │   │   │   └── rpm.sh
│   │   │   └── rpm-functions.sh
│   │   ├── sandbox/
│   │   │   ├── generate-sandbox-scripts.sh
│   │   │   └── template/
│   │   │       └── quickstart/
│   │   │           └── geowave-env.sh.template
│   │   └── standalone/
│   │       └── standalone-installer.install4j
│   ├── pom.xml
│   ├── scripts/
│   │   └── clean-up.py
│   └── src/
│       └── main/
│           └── resources/
│               ├── GeoWaveLabels.properties
│               ├── build.properties
│               └── log4j2.properties
├── dev-resources/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── resources/
│               ├── assemblies/
│               │   ├── default-installer-main.xml
│               │   └── default-installer-plugin.xml
│               ├── eclipse/
│               │   ├── eclipse-cleanup.xml
│               │   └── eclipse-formatter.xml
│               └── findbugs/
│                   └── findbugs-exclude.xml
├── docs/
│   ├── .gitignore
│   ├── content/
│   │   ├── commands/
│   │   │   ├── 000-header.adoc
│   │   │   ├── 005-commands-and-flags.adoc
│   │   │   ├── 010-config-commands.adoc
│   │   │   ├── 011-store-commands.adoc
│   │   │   ├── 012-index-commands.adoc
│   │   │   ├── 013-type-commands.adoc
│   │   │   ├── 014-stat-commands.adoc
│   │   │   ├── 015-ingest-commands.adoc
│   │   │   ├── 017-query-command.adoc
│   │   │   ├── 020-analytic-commands.adoc
│   │   │   ├── 025-vector-commands.adoc
│   │   │   ├── 030-raster-commands.adoc
│   │   │   ├── 035-geoserver-commands.adoc
│   │   │   ├── 040-util-commands.adoc
│   │   │   ├── 041-util-migrate.adoc
│   │   │   ├── 045-util-standalone-commands.adoc
│   │   │   ├── 050-util-accumulo-commands.adoc
│   │   │   ├── 050-util-osm-commands.adoc
│   │   │   ├── 055-util-python-commands.adoc
│   │   │   ├── 060-util-landsat-commands.adoc
│   │   │   ├── 065-util-grpc-commands.adoc
│   │   │   ├── 070-util-filesystem-commands.adoc
│   │   │   └── manpages/
│   │   │       ├── analytic/
│   │   │       │   ├── geowave-dbscan.txt
│   │   │       │   ├── geowave-kde.txt
│   │   │       │   ├── geowave-kdespark.txt
│   │   │       │   ├── geowave-kmeansjump.txt
│   │   │       │   ├── geowave-kmeansparallel.txt
│   │   │       │   ├── geowave-kmeansspark.txt
│   │   │       │   ├── geowave-nn.txt
│   │   │       │   ├── geowave-spatialjoin.txt
│   │   │       │   └── geowave-sql.txt
│   │   │       ├── config/
│   │   │       │   ├── geowave-aws.txt
│   │   │       │   ├── geowave-geoserver.txt
│   │   │       │   ├── geowave-hdfs.txt
│   │   │       │   ├── geowave-list.txt
│   │   │       │   ├── geowave-newcryptokey.txt
│   │   │       │   └── geowave-set.txt
│   │   │       ├── geoserver/
│   │   │       │   ├── geowave-addcs.txt
│   │   │       │   ├── geowave-addcv.txt
│   │   │       │   ├── geowave-addds.txt
│   │   │       │   ├── geowave-addfl.txt
│   │   │       │   ├── geowave-addlayer.txt
│   │   │       │   ├── geowave-addstyle.txt
│   │   │       │   ├── geowave-addws.txt
│   │   │       │   ├── geowave-getcs.txt
│   │   │       │   ├── geowave-getcv.txt
│   │   │       │   ├── geowave-getds.txt
│   │   │       │   ├── geowave-getfl.txt
│   │   │       │   ├── geowave-getsa.txt
│   │   │       │   ├── geowave-getstyle.txt
│   │   │       │   ├── geowave-listcs.txt
│   │   │       │   ├── geowave-listcv.txt
│   │   │       │   ├── geowave-listds.txt
│   │   │       │   ├── geowave-listfl.txt
│   │   │       │   ├── geowave-liststyles.txt
│   │   │       │   ├── geowave-listws.txt
│   │   │       │   ├── geowave-rmcs.txt
│   │   │       │   ├── geowave-rmcv.txt
│   │   │       │   ├── geowave-rmds.txt
│   │   │       │   ├── geowave-rmfl.txt
│   │   │       │   ├── geowave-rmstyle.txt
│   │   │       │   ├── geowave-rmws.txt
│   │   │       │   ├── geowave-rungs.txt
│   │   │       │   └── geowave-setls.txt
│   │   │       ├── index/
│   │   │       │   ├── geowave-addindex.txt
│   │   │       │   ├── geowave-compactindex.txt
│   │   │       │   ├── geowave-listindex.txt
│   │   │       │   ├── geowave-listindexplugins.txt
│   │   │       │   └── geowave-rmindex.txt
│   │   │       ├── ingest/
│   │   │       │   ├── geowave-kafkaToGW.txt
│   │   │       │   ├── geowave-listplugins.txt
│   │   │       │   ├── geowave-localToGW.txt
│   │   │       │   ├── geowave-localToHdfs.txt
│   │   │       │   ├── geowave-localToKafka.txt
│   │   │       │   ├── geowave-localToMrGW.txt
│   │   │       │   ├── geowave-mrToGW.txt
│   │   │       │   └── geowave-sparkToGW.txt
│   │   │       ├── query/
│   │   │       │   └── geowave-query.txt
│   │   │       ├── raster/
│   │   │       │   ├── geowave-installgdal.txt
│   │   │       │   ├── geowave-resizemr.txt
│   │   │       │   └── geowave-resizespark.txt
│   │   │       ├── stat/
│   │   │       │   ├── geowave-addstat.txt
│   │   │       │   ├── geowave-compactstats.txt
│   │   │       │   ├── geowave-liststats.txt
│   │   │       │   ├── geowave-liststattypes.txt
│   │   │       │   ├── geowave-recalcstats.txt
│   │   │       │   └── geowave-rmstat.txt
│   │   │       ├── store/
│   │   │       │   ├── geowave-addstore.txt
│   │   │       │   ├── geowave-clear.txt
│   │   │       │   ├── geowave-copy.txt
│   │   │       │   ├── geowave-copymr.txt
│   │   │       │   ├── geowave-copystorecfg.txt
│   │   │       │   ├── geowave-describestore.txt
│   │   │       │   ├── geowave-liststoreplugins.txt
│   │   │       │   ├── geowave-liststores.txt
│   │   │       │   ├── geowave-rmstore.txt
│   │   │       │   └── geowave-version.txt
│   │   │       ├── type/
│   │   │       │   ├── geowave-addtype.txt
│   │   │       │   ├── geowave-describetype.txt
│   │   │       │   ├── geowave-listtypes.txt
│   │   │       │   └── geowave-rmtype.txt
│   │   │       ├── util/
│   │   │       │   ├── accumulo/
│   │   │       │   │   ├── geowave-presplitpartitionid.txt
│   │   │       │   │   ├── geowave-runserver.txt
│   │   │       │   │   ├── geowave-splitequalinterval.txt
│   │   │       │   │   ├── geowave-splitnumrecords.txt
│   │   │       │   │   └── geowave-splitquantile.txt
│   │   │       │   ├── bigtable/
│   │   │       │   │   └── geowave-runbigtable.txt
│   │   │       │   ├── cassandra/
│   │   │       │   │   └── geowave-runcassandra.txt
│   │   │       │   ├── dynamodb/
│   │   │       │   │   └── geowave-rundynamodb.txt
│   │   │       │   ├── filesystem/
│   │   │       │   │   └── geowave-filesystem-listformats.txt
│   │   │       │   ├── grpc/
│   │   │       │   │   ├── geowave-grpc-start.txt
│   │   │       │   │   └── geowave-grpc-stop.txt
│   │   │       │   ├── hbase/
│   │   │       │   │   └── geowave-runhbase.txt
│   │   │       │   ├── kudu/
│   │   │       │   │   └── geowave-runkudu.txt
│   │   │       │   ├── landsat/
│   │   │       │   │   ├── geowave-analyze.txt
│   │   │       │   │   ├── geowave-download.txt
│   │   │       │   │   ├── geowave-ingest.txt
│   │   │       │   │   ├── geowave-ingestraster.txt
│   │   │       │   │   └── geowave-ingestvector.txt
│   │   │       │   ├── migrate/
│   │   │       │   │   └── geowave-util-migrate.txt
│   │   │       │   ├── osm/
│   │   │       │   │   ├── geowave-ingest.txt
│   │   │       │   │   └── geowave-stage.txt
│   │   │       │   ├── python/
│   │   │       │   │   └── geowave-python-rungateway.txt
│   │   │       │   └── redis/
│   │   │       │       └── geowave-runredis.txt
│   │   │       └── vector/
│   │   │           ├── geowave-cqldelete.txt
│   │   │           ├── geowave-localexport.txt
│   │   │           └── geowave-mrexport.txt
│   │   ├── devguide/
│   │   │   ├── 000-header.adoc
│   │   │   ├── 005-introduction.adoc
│   │   │   ├── 010-development-setup.adoc
│   │   │   ├── 015-building.adoc
│   │   │   ├── 020-packaging.adoc
│   │   │   ├── 025-contributions.adoc
│   │   │   ├── 030-architecture.adoc
│   │   │   ├── 035-statistics.adoc
│   │   │   ├── 040-ingest.adoc
│   │   │   ├── 045-query.adoc
│   │   │   ├── 050-services.adoc
│   │   │   ├── 075-programmatic-api.adoc
│   │   │   ├── 100-appendices.adoc
│   │   │   ├── 102-extending-geowave.adoc
│   │   │   ├── 105-appendix-documentation.adoc
│   │   │   ├── 105-appendix-project-descriptions.adoc
│   │   │   ├── 110-appendix-maven-artifacts.adoc
│   │   │   ├── 115-appendix-python-api.adoc
│   │   │   ├── 120-appendix-jace.adoc
│   │   │   └── 125-appendix-theory.adoc
│   │   ├── docs-common/
│   │   │   ├── 00-attrs.adoc
│   │   │   ├── 900-version.adoc
│   │   │   └── docinfo.html
│   │   ├── downloads/
│   │   │   ├── 001-imports.adoc
│   │   │   ├── 002-navbar.adoc
│   │   │   ├── 003-container.adoc
│   │   │   └── 004-scripts.adoc
│   │   ├── geowave-index/
│   │   │   ├── 001-imports.adoc
│   │   │   ├── 002-navbar.adoc
│   │   │   ├── 003-container.adoc
│   │   │   ├── docinfo.html
│   │   │   ├── js/
│   │   │   │   ├── geowave.js
│   │   │   │   └── versions.js
│   │   │   ├── site.webmanifest
│   │   │   └── stylesheets/
│   │   │       ├── blank.css
│   │   │       ├── font-awesome.css
│   │   │       ├── geowave-boostrap-theme.css
│   │   │       ├── geowave-docs.css
│   │   │       └── geowave.css
│   │   ├── installation-guide/
│   │   │   ├── 000-header.adoc
│   │   │   ├── 005-standalone.adoc
│   │   │   └── 010-rpm.adoc
│   │   ├── overview/
│   │   │   ├── 000-header.adoc
│   │   │   ├── 005-introduction.adoc
│   │   │   ├── 010-overview.adoc
│   │   │   ├── 015-screenshots.adoc
│   │   │   └── 020-deeper.adoc
│   │   ├── quickstart/
│   │   │   ├── 000-header.adoc
│   │   │   ├── 005-preparation.adoc
│   │   │   ├── 010-vector-demo.adoc
│   │   │   ├── 015-raster-demo.adoc
│   │   │   └── 020-further-documentation.adoc
│   │   ├── quickstart-emr/
│   │   │   ├── aws-env/
│   │   │   │   ├── 000-quickstart-guide-intro.adoc
│   │   │   │   ├── 007-quickstart-guide-scripts.adoc
│   │   │   │   ├── 010-quickstart-guide-CLI.adoc
│   │   │   │   ├── 015-quickstart-guide-GUI.adoc
│   │   │   │   ├── 020-quickstart-guide-GUI-step-1.adoc
│   │   │   │   ├── 025-quickstart-guide-GUI-step-2.adoc
│   │   │   │   ├── 030-quickstart-guide-GUI-step-3.adoc
│   │   │   │   ├── 035-quickstart-guide-GUI-step-4.adoc
│   │   │   │   ├── 036-quickstart-guide-enable-jupyter.adoc
│   │   │   │   ├── 037-quickstart-steps-overview.adoc
│   │   │   │   └── 110-appendices.adoc
│   │   │   ├── interact-cluster/
│   │   │   │   └── 001-hw-quickstart-guide-interact.adoc
│   │   │   ├── jupyter/
│   │   │   │   └── 000-jupyter-main-page.adoc
│   │   │   ├── quickstart-emr/
│   │   │   │   ├── 000-header.adoc
│   │   │   │   ├── 005-environment-setup.adoc
│   │   │   │   ├── 010-preparation.adoc
│   │   │   │   ├── 015-vector-demo.adoc
│   │   │   │   ├── 020-raster-demo.adoc
│   │   │   │   ├── 025-notebook-examples.adoc
│   │   │   │   └── 030-further-documentation.adoc
│   │   │   ├── spatial-join/
│   │   │   │   └── 000-join-main-page.adoc
│   │   │   └── zeppelin/
│   │   │       └── 000-zeppelin-main-page.adoc
│   │   └── userguide/
│   │       ├── 000-header.adoc
│   │       ├── 005-introduction.adoc
│   │       ├── 010-cli.adoc
│   │       ├── 015-datastores.adoc
│   │       ├── 020-indices.adoc
│   │       ├── 025-ingest.adoc
│   │       ├── 030-queries.adoc
│   │       ├── 031-statistics.adoc
│   │       ├── 035-analytics.adoc
│   │       ├── 045-geoserver.adoc
│   │       ├── 100-appendices.adoc
│   │       ├── 101-migrating.adoc
│   │       ├── 105-accumulo-config.adoc
│   │       ├── 110-visibility-management.adoc
│   │       ├── 115-appendix-security.adoc
│   │       └── 120-puppet.adoc
│   └── pom.xml
├── examples/
│   ├── README.md
│   ├── data/
│   │   ├── notebooks/
│   │   │   ├── jupyter/
│   │   │   │   ├── geowave-gdelt.ipynb
│   │   │   │   ├── geowave-gpx.ipynb
│   │   │   │   ├── geowave-spatial-join.ipynb
│   │   │   │   └── pygw-showcase.ipynb
│   │   │   └── zeppelin/
│   │   │       ├── GDELT-Quick-Start.json
│   │   │       ├── GeoWave-GPX-Demo.json
│   │   │       └── README.md
│   │   └── slds/
│   │       ├── DistributedRender.sld
│   │       ├── KDEColorMap.sld
│   │       └── SubsamplePoints.sld
│   └── java-api/
│       ├── pom.xml
│       └── src/
│           ├── main/
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── locationtech/
│           │   │           └── geowave/
│           │   │               └── examples/
│           │   │                   ├── ExamplePersistableRegistry.java
│           │   │                   ├── adapter/
│           │   │                   │   ├── BasicDataTypeAdapterExample.java
│           │   │                   │   └── CustomAdapterExample.java
│           │   │                   ├── aggregation/
│           │   │                   │   └── binning/
│           │   │                   │       └── SpatialBinningAggregationExample.java
│           │   │                   ├── index/
│           │   │                   │   └── CustomIndexExample.java
│           │   │                   ├── ingest/
│           │   │                   │   ├── SimpleIngest.java
│           │   │                   │   ├── bulk/
│           │   │                   │   │   ├── GeonamesDataFileInputFormat.java
│           │   │                   │   │   ├── GeonamesSimpleFeatureType.java
│           │   │                   │   │   └── SimpleFeatureToAccumuloKeyValueMapper.java
│           │   │                   │   └── plugin/
│           │   │                   │       ├── CustomIngestFormat.java
│           │   │                   │       ├── CustomIngestPlugin.java
│           │   │                   │       └── CustomIngestPluginExample.java
│           │   │                   ├── query/
│           │   │                   │   ├── CQLQueryExample.java
│           │   │                   │   ├── SpatialQueryExample.java
│           │   │                   │   └── SpatialTemporalQueryExample.java
│           │   │                   ├── spark/
│           │   │                   │   └── GeoWaveRDDExample.java
│           │   │                   └── stats/
│           │   │                       ├── CustomStatisticExample.java
│           │   │                       ├── ExampleRegisteredStatistics.java
│           │   │                       ├── SpatialBinningStatisticExample.java
│           │   │                       └── WordCountStatistic.java
│           │   └── resources/
│           │       ├── META-INF/
│           │       │   └── services/
│           │       │       ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│           │       │       ├── org.locationtech.geowave.core.ingest.spi.IngestFormatPluginProviderSpi
│           │       │       └── org.locationtech.geowave.core.store.statistics.StatisticsRegistrySPI
│           │       ├── geonames.txt
│           │       └── stateCapitals.csv
│           └── test/
│               ├── java/
│               │   └── org/
│               │       └── locationtech/
│               │           └── geowave/
│               │               └── examples/
│               │                   └── ingest/
│               │                       ├── BulkIngestInputGenerationTest.java
│               │                       └── SimpleIngestTest.java
│               └── resources/
│                   ├── hbase.properties
│                   └── org/
│                       └── locationtech/
│                           └── geowave/
│                               └── examples/
│                                   └── ingest/
│                                       └── geonames/
│                                           ├── barbados/
│                                           │   └── BB.txt
│                                           └── readme.txt
├── extensions/
│   ├── adapters/
│   │   ├── auth/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── locationtech/
│   │   │       │   │           └── geowave/
│   │   │       │   │               └── adapter/
│   │   │       │   │                   └── auth/
│   │   │       │   │                       ├── AuthorizationEntry.java
│   │   │       │   │                       ├── AuthorizationFactorySPI.java
│   │   │       │   │                       ├── AuthorizationSPI.java
│   │   │       │   │                       ├── AuthorizationSet.java
│   │   │       │   │                       ├── EmptyAuthorizationFactory.java
│   │   │       │   │                       ├── EmptyAuthorizationProvider.java
│   │   │       │   │                       ├── JsonFileAuthorizationFactory.java
│   │   │       │   │                       └── JsonFileAuthorizationProvider.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.locationtech.geowave.adapter.auth.AuthorizationFactorySPI
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── adapter/
│   │   │           │                   └── auth/
│   │   │           │                       └── JsonFileAuthorizationAdapterTest.java
│   │   │           └── resources/
│   │   │               └── jsonAuthfile.json
│   │   ├── raster/
│   │   │   ├── .gitignore
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── locationtech/
│   │   │       │   │           └── geowave/
│   │   │       │   │               └── adapter/
│   │   │       │   │                   └── raster/
│   │   │       │   │                       ├── FitToIndexGridCoverage.java
│   │   │       │   │                       ├── ImageWorkerPredefineStats.java
│   │   │       │   │                       ├── RasterAdapterPersistableRegistry.java
│   │   │       │   │                       ├── RasterUtils.java
│   │   │       │   │                       ├── Resolution.java
│   │   │       │   │                       ├── adapter/
│   │   │       │   │                       │   ├── ClientMergeableRasterTile.java
│   │   │       │   │                       │   ├── GridCoverageWritable.java
│   │   │       │   │                       │   ├── InternalRasterDataAdapter.java
│   │   │       │   │                       │   ├── MosaicPropertyGenerator.java
│   │   │       │   │                       │   ├── RasterDataAdapter.java
│   │   │       │   │                       │   ├── RasterRegisteredIndexFieldMappers.java
│   │   │       │   │                       │   ├── RasterTile.java
│   │   │       │   │                       │   ├── RasterTileReader.java
│   │   │       │   │                       │   ├── RasterTileSpatialFieldMapper.java
│   │   │       │   │                       │   ├── RasterTileWriter.java
│   │   │       │   │                       │   ├── ServerMergeableRasterTile.java
│   │   │       │   │                       │   ├── SourceThresholdFixMosaicDescriptor.java
│   │   │       │   │                       │   ├── SourceThresholdMosaicDescriptor.java
│   │   │       │   │                       │   ├── merge/
│   │   │       │   │                       │   │   ├── MultiAdapterServerMergeStrategy.java
│   │   │       │   │                       │   │   ├── RasterTileMergeStrategy.java
│   │   │       │   │                       │   │   ├── RasterTileRowTransform.java
│   │   │       │   │                       │   │   ├── ServerMergeStrategy.java
│   │   │       │   │                       │   │   ├── SimpleAbstractMergeStrategy.java
│   │   │       │   │                       │   │   ├── SingleAdapterServerMergeStrategy.java
│   │   │       │   │                       │   │   └── nodata/
│   │   │       │   │                       │   │       ├── NoDataByFilter.java
│   │   │       │   │                       │   │       ├── NoDataBySampleIndex.java
│   │   │       │   │                       │   │       ├── NoDataMergeStrategy.java
│   │   │       │   │                       │   │       ├── NoDataMetadata.java
│   │   │       │   │                       │   │       └── NoDataMetadataFactory.java
│   │   │       │   │                       │   └── warp/
│   │   │       │   │                       │       ├── WarpNearestOpImage.java
│   │   │       │   │                       │       ├── WarpOpImage.java
│   │   │       │   │                       │       └── WarpRIF.java
│   │   │       │   │                       ├── operations/
│   │   │       │   │                       │   ├── DeletePyramidLevelCommand.java
│   │   │       │   │                       │   ├── InstallGdalCommand.java
│   │   │       │   │                       │   ├── RasterOperationCLIProvider.java
│   │   │       │   │                       │   ├── RasterSection.java
│   │   │       │   │                       │   ├── ResizeMRCommand.java
│   │   │       │   │                       │   └── options/
│   │   │       │   │                       │       └── RasterTileResizeCommandLineOptions.java
│   │   │       │   │                       ├── plugin/
│   │   │       │   │                       │   ├── GeoWaveGTRasterFormat.java
│   │   │       │   │                       │   ├── GeoWaveGTRasterFormatFactory.java
│   │   │       │   │                       │   ├── GeoWaveRasterConfig.java
│   │   │       │   │                       │   ├── GeoWaveRasterReader.java
│   │   │       │   │                       │   ├── GeoWaveRasterReaderState.java
│   │   │       │   │                       │   └── gdal/
│   │   │       │   │                       │       ├── GDALGeoTiffFormat.java
│   │   │       │   │                       │       ├── GDALGeoTiffFormatFactory.java
│   │   │       │   │                       │       ├── GDALGeoTiffReader.java
│   │   │       │   │                       │       └── InstallGdal.java
│   │   │       │   │                       ├── resize/
│   │   │       │   │                       │   ├── RasterTileResizeCombiner.java
│   │   │       │   │                       │   ├── RasterTileResizeHelper.java
│   │   │       │   │                       │   ├── RasterTileResizeJobRunner.java
│   │   │       │   │                       │   ├── RasterTileResizeMapper.java
│   │   │       │   │                       │   └── RasterTileResizeReducer.java
│   │   │       │   │                       ├── stats/
│   │   │       │   │                       │   ├── HistogramConfig.java
│   │   │       │   │                       │   ├── RasterBoundingBoxStatistic.java
│   │   │       │   │                       │   ├── RasterFootprintStatistic.java
│   │   │       │   │                       │   ├── RasterHistogramStatistic.java
│   │   │       │   │                       │   ├── RasterOverviewStatistic.java
│   │   │       │   │                       │   ├── RasterRegisteredStatistics.java
│   │   │       │   │                       │   └── RasterStatisticQueryBuilder.java
│   │   │       │   │                       └── util/
│   │   │       │   │                           ├── DataBufferPersistenceUtils.java
│   │   │       │   │                           ├── SampleModelPersistenceUtils.java
│   │   │       │   │                           └── ZipUtils.java
│   │   │       │   ├── protobuf/
│   │   │       │   │   ├── DataBuffer.proto
│   │   │       │   │   └── SampleModel.proto
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               ├── org.geotools.coverage.grid.io.GridFormatFactorySpi
│   │   │       │               ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   │       │               ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   │   │       │               ├── org.locationtech.geowave.core.store.index.IndexFieldMapperRegistrySPI
│   │   │       │               └── org.locationtech.geowave.core.store.statistics.StatisticsRegistrySPI
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── locationtech/
│   │   │                       └── geowave/
│   │   │                           └── adapter/
│   │   │                               └── raster/
│   │   │                                   ├── RasterUtilsTest.java
│   │   │                                   └── WebMercatorRasterTest.java
│   │   └── vector/
│   │       ├── .gitignore
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── avro/
│   │           │   │   └── AvroSimpleFeature.avsc
│   │           │   ├── java/
│   │           │   │   └── org/
│   │           │   │       ├── geotools/
│   │           │   │       │   ├── feature/
│   │           │   │       │   │   └── simple/
│   │           │   │       │   │       └── OptimizedSimpleFeatureBuilder.java
│   │           │   │       │   ├── process/
│   │           │   │       │   │   └── function/
│   │           │   │       │   │       └── DistributedRenderProcessUtils.java
│   │           │   │       │   └── renderer/
│   │           │   │       │       └── lite/
│   │           │   │       │           └── DistributedRenderer.java
│   │           │   │       └── locationtech/
│   │           │   │           └── geowave/
│   │           │   │               └── adapter/
│   │           │   │                   └── vector/
│   │           │   │                       ├── FeatureAdapterPersistableRegistry.java
│   │           │   │                       ├── FeatureDataAdapter.java
│   │           │   │                       ├── FeatureRowBuilder.java
│   │           │   │                       ├── FeatureWritable.java
│   │           │   │                       ├── GeoWaveAvroFeatureUtils.java
│   │           │   │                       ├── cli/
│   │           │   │                       │   ├── VectorCLIProvider.java
│   │           │   │                       │   └── VectorSection.java
│   │           │   │                       ├── delete/
│   │           │   │                       │   └── CQLDelete.java
│   │           │   │                       ├── export/
│   │           │   │                       │   ├── VectorExportMapper.java
│   │           │   │                       │   ├── VectorExportOptions.java
│   │           │   │                       │   ├── VectorLocalExportCommand.java
│   │           │   │                       │   ├── VectorLocalExportOptions.java
│   │           │   │                       │   ├── VectorMRExportCommand.java
│   │           │   │                       │   ├── VectorMRExportJobRunner.java
│   │           │   │                       │   └── VectorMRExportOptions.java
│   │           │   │                       ├── field/
│   │           │   │                       │   └── SimpleFeatureSerializationProvider.java
│   │           │   │                       ├── index/
│   │           │   │                       │   ├── ChooseBestMatchIndexQueryStrategy.java
│   │           │   │                       │   ├── ChooseHeuristicMatchIndexQueryStrategy.java
│   │           │   │                       │   ├── ChooseLocalityPreservingQueryStrategy.java
│   │           │   │                       │   ├── IndexQueryStrategySPI.java
│   │           │   │                       │   ├── SimpleFeaturePrimaryIndexConfiguration.java
│   │           │   │                       │   ├── SimpleFeatureSecondaryIndexConfiguration.java
│   │           │   │                       │   └── VectorTextIndexEntryConverter.java
│   │           │   │                       ├── ingest/
│   │           │   │                       │   ├── AbstractSimpleFeatureIngestFormat.java
│   │           │   │                       │   ├── AbstractSimpleFeatureIngestPlugin.java
│   │           │   │                       │   ├── CQLFilterOptionProvider.java
│   │           │   │                       │   ├── DataSchemaOptionProvider.java
│   │           │   │                       │   ├── FeatureSerializationOptionProvider.java
│   │           │   │                       │   ├── GeometrySimpOptionProvider.java
│   │           │   │                       │   ├── MinimalSimpleFeatureIngestFormat.java
│   │           │   │                       │   ├── MinimalSimpleFeatureIngestPlugin.java
│   │           │   │                       │   ├── SerializableSimpleFeatureIngestOptions.java
│   │           │   │                       │   ├── SimpleFeatureIngestOptions.java
│   │           │   │                       │   └── TypeNameOptionProvider.java
│   │           │   │                       ├── plugin/
│   │           │   │                       │   ├── DecimationProcess.java
│   │           │   │                       │   ├── DistributedRenderProcess.java
│   │           │   │                       │   ├── GeoWaveDataStoreComponents.java
│   │           │   │                       │   ├── GeoWaveFeatureCollection.java
│   │           │   │                       │   ├── GeoWaveFeatureReader.java
│   │           │   │                       │   ├── GeoWaveFeatureSource.java
│   │           │   │                       │   ├── GeoWaveFeatureWriter.java
│   │           │   │                       │   ├── GeoWaveGSProcessFactory.java
│   │           │   │                       │   ├── GeoWaveGTDataStore.java
│   │           │   │                       │   ├── GeoWaveGTDataStoreFactory.java
│   │           │   │                       │   ├── GeoWaveGTPluginUtils.java
│   │           │   │                       │   ├── GeoWavePluginConfig.java
│   │           │   │                       │   ├── GeoWavePluginException.java
│   │           │   │                       │   ├── GeoWaveQueryCaps.java
│   │           │   │                       │   ├── InternalProcessFactory.java
│   │           │   │                       │   ├── QueryIssuer.java
│   │           │   │                       │   ├── SubsampleProcess.java
│   │           │   │                       │   ├── lock/
│   │           │   │                       │   │   ├── AbstractLockingManagement.java
│   │           │   │                       │   │   ├── AuthorizedLock.java
│   │           │   │                       │   │   ├── LockingManagement.java
│   │           │   │                       │   │   ├── LockingManagementFactory.java
│   │           │   │                       │   │   ├── MemoryLockManager.java
│   │           │   │                       │   │   └── MemoryLockManagerFactory.java
│   │           │   │                       │   └── transaction/
│   │           │   │                       │       ├── AbstractTransactionManagement.java
│   │           │   │                       │       ├── GeoWaveAutoCommitTransactionState.java
│   │           │   │                       │       ├── GeoWaveEmptyTransaction.java
│   │           │   │                       │       ├── GeoWaveTransaction.java
│   │           │   │                       │       ├── GeoWaveTransactionManagement.java
│   │           │   │                       │       ├── GeoWaveTransactionManagementState.java
│   │           │   │                       │       ├── GeoWaveTransactionState.java
│   │           │   │                       │       ├── MemoryTransactionsAllocator.java
│   │           │   │                       │       ├── StatisticsCache.java
│   │           │   │                       │       └── TransactionsAllocator.java
│   │           │   │                       ├── query/
│   │           │   │                       │   ├── GeoJsonQueryOutputFormat.java
│   │           │   │                       │   ├── ShapefileQueryOutputFormat.java
│   │           │   │                       │   └── aggregation/
│   │           │   │                       │       └── VectorCountAggregation.java
│   │           │   │                       ├── render/
│   │           │   │                       │   ├── AsyncQueueFeatureCollection.java
│   │           │   │                       │   ├── DistributedRenderAggregation.java
│   │           │   │                       │   ├── DistributedRenderCallback.java
│   │           │   │                       │   ├── DistributedRenderMapOutputFormat.java
│   │           │   │                       │   ├── DistributedRenderOptions.java
│   │           │   │                       │   ├── DistributedRenderResult.java
│   │           │   │                       │   ├── DistributedRenderWMSFacade.java
│   │           │   │                       │   ├── InternalDistributedRenderProcess.java
│   │           │   │                       │   ├── PersistableComposite.java
│   │           │   │                       │   └── PersistableRenderedImage.java
│   │           │   │                       └── util/
│   │           │   │                           ├── DateUtilities.java
│   │           │   │                           ├── FeatureDataUtils.java
│   │           │   │                           ├── FeatureGeometryUtils.java
│   │           │   │                           ├── FeatureTranslatingIterator.java
│   │           │   │                           ├── PolygonAreaCalculator.java
│   │           │   │                           ├── QueryIndexHelper.java
│   │           │   │                           ├── SimpleFeatureUserDataConfigurationSet.java
│   │           │   │                           └── SimpleFeatureWrapper.java
│   │           │   ├── protobuf/
│   │           │   │   └── CqlHBaseQueryFilters.proto
│   │           │   └── resources/
│   │           │       ├── META-INF/
│   │           │       │   └── services/
│   │           │       │       ├── org.geotools.data.DataStoreFactorySpi
│   │           │       │       ├── org.geotools.process.ProcessFactory
│   │           │       │       ├── org.locationtech.geowave.adapter.vector.index.IndexQueryStrategySPI
│   │           │       │       ├── org.locationtech.geowave.adapter.vector.plugin.lock.LockingManagementFactory
│   │           │       │       ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │           │       │       ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   │           │       │       └── org.locationtech.geowave.core.store.cli.query.QueryOutputFormatSpi
│   │           │       └── applicationContext.xml
│   │           └── test/
│   │               ├── java/
│   │               │   └── org/
│   │               │       └── locationtech/
│   │               │           └── geowave/
│   │               │               └── adapter/
│   │               │                   └── vector/
│   │               │                       ├── BaseDataStoreTest.java
│   │               │                       ├── FeatureDataAdapterTest.java
│   │               │                       ├── FeatureWritableTest.java
│   │               │                       ├── index/
│   │               │                       │   ├── ChooseBestMatchIndexQueryStrategyTest.java
│   │               │                       │   ├── ChooseHeuristicMatchQueryStrategyTest.java
│   │               │                       │   └── ChooseLocalityPreservingQueryStrategyTest.java
│   │               │                       ├── plugin/
│   │               │                       │   ├── ExtractGeometryFilterVisitorTest.java
│   │               │                       │   ├── ExtractTimeFilterVisitorTest.java
│   │               │                       │   ├── GeoToolsAttributesSubsetTest.java
│   │               │                       │   ├── GeoWaveFeatureReaderTest.java
│   │               │                       │   ├── GeoWaveFeatureSourceTest.java
│   │               │                       │   ├── GeoWavePluginConfigTest.java
│   │               │                       │   ├── WFSBoundedQueryTest.java
│   │               │                       │   ├── WFSBoundedSpatialQueryTest.java
│   │               │                       │   ├── WFSSpatialTest.java
│   │               │                       │   ├── WFSTemporalQueryTest.java
│   │               │                       │   ├── WFSTransactionTest.java
│   │               │                       │   └── lock/
│   │               │                       │       └── MemoryLockManagerTest.java
│   │               │                       ├── query/
│   │               │                       │   ├── CqlQueryFilterIteratorTest.java
│   │               │                       │   ├── TemporalRangeTest.java
│   │               │                       │   └── cql/
│   │               │                       │       ├── CQLQueryFilterTest.java
│   │               │                       │       ├── CQLQueryTest.java
│   │               │                       │       └── FilterToCQLToolTest.java
│   │               │                       ├── stats/
│   │               │                       │   ├── CountMinSketchStatisticsTest.java
│   │               │                       │   ├── FixedBinNumericHistogramStatisticTest.java
│   │               │                       │   ├── HyperLogLogStaticticsTest.java
│   │               │                       │   └── NumericHistogramStatisticsTest.java
│   │               │                       └── util/
│   │               │                           ├── FeatureDataUtilsTest.java
│   │               │                           ├── QueryIndexHelperTest.java
│   │               │                           └── TimeDescriptorsTest.java
│   │               └── resources/
│   │                   └── statsFile.json
│   ├── cli/
│   │   ├── accumulo-embed/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── datastore/
│   │   │           │                   └── accumulo/
│   │   │           │                       └── cli/
│   │   │           │                           ├── AccumuloMiniCluster.java
│   │   │           │                           ├── AccumuloMiniClusterShell.java
│   │   │           │                           ├── AccumuloRunServerCommand.java
│   │   │           │                           ├── EmbeddedAccumuloOperationProvider.java
│   │   │           │                           ├── MiniAccumuloClusterFactory.java
│   │   │           │                           └── MiniAccumuloUtils.java
│   │   │           └── resources/
│   │   │               └── META-INF/
│   │   │                   └── services/
│   │   │                       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   ├── bigtable-embed/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── datastore/
│   │   │           │                   └── bigtable/
│   │   │           │                       └── cli/
│   │   │           │                           ├── BigtableEmulator.java
│   │   │           │                           ├── BigtableOperationProvider.java
│   │   │           │                           ├── BigtableSection.java
│   │   │           │                           ├── RunBigtableEmulator.java
│   │   │           │                           └── RunBigtableEmulatorOptions.java
│   │   │           └── resources/
│   │   │               └── META-INF/
│   │   │                   └── services/
│   │   │                       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   ├── cassandra-embed/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── datastore/
│   │   │           │                   └── cassandra/
│   │   │           │                       └── cli/
│   │   │           │                           ├── CassandraOperationProvider.java
│   │   │           │                           ├── CassandraSection.java
│   │   │           │                           ├── CassandraServer.java
│   │   │           │                           └── RunCassandraServer.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── services/
│   │   │               │       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   │               └── cassandra-default.yaml
│   │   ├── debug/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── cli/
│   │   │           │                   └── debug/
│   │   │           │                       ├── AbstractGeoWaveQuery.java
│   │   │           │                       ├── BBOXQuery.java
│   │   │           │                       ├── CQLQuery.java
│   │   │           │                       ├── ClientSideCQLQuery.java
│   │   │           │                       ├── DebugOperationsProvider.java
│   │   │           │                       ├── DebugSection.java
│   │   │           │                       ├── FullTableScan.java
│   │   │           │                       ├── MinimalFullTable.java
│   │   │           │                       └── SparkQuery.java
│   │   │           └── resources/
│   │   │               └── META-INF/
│   │   │                   └── services/
│   │   │                       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   ├── dynamodb-embed/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── datastore/
│   │   │           │                   └── dynamodb/
│   │   │           │                       └── cli/
│   │   │           │                           ├── DynamoDBLocal.java
│   │   │           │                           ├── DynamoDBOperationProvider.java
│   │   │           │                           ├── DynamoDBSection.java
│   │   │           │                           ├── RunDynamoDBLocal.java
│   │   │           │                           └── RunDynamoDBLocalOptions.java
│   │   │           └── resources/
│   │   │               └── META-INF/
│   │   │                   └── services/
│   │   │                       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   ├── geoserver/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── locationtech/
│   │   │       │   │           └── geowave/
│   │   │       │   │               └── cli/
│   │   │       │   │                   └── geoserver/
│   │   │       │   │                       ├── ConfigGeoServerCommand.java
│   │   │       │   │                       ├── GeoServerCommand.java
│   │   │       │   │                       ├── GeoServerConfig.java
│   │   │       │   │                       ├── GeoServerOperationProvider.java
│   │   │       │   │                       ├── GeoServerRemoveCommand.java
│   │   │       │   │                       ├── GeoServerRestClient.java
│   │   │       │   │                       ├── GeoServerSSLConfigurationOptions.java
│   │   │       │   │                       ├── GeoServerSection.java
│   │   │       │   │                       ├── SSLOptionAnnotation.java
│   │   │       │   │                       ├── StoreSSLConfigurationOptions.java
│   │   │       │   │                       ├── constants/
│   │   │       │   │                       │   └── GeoServerConstants.java
│   │   │       │   │                       ├── coverage/
│   │   │       │   │                       │   ├── CoverageOperationProvider.java
│   │   │       │   │                       │   ├── CoverageSection.java
│   │   │       │   │                       │   ├── GeoServerAddCoverageCommand.java
│   │   │       │   │                       │   ├── GeoServerGetCoverageCommand.java
│   │   │       │   │                       │   ├── GeoServerListCoveragesCommand.java
│   │   │       │   │                       │   └── GeoServerRemoveCoverageCommand.java
│   │   │       │   │                       ├── cvstore/
│   │   │       │   │                       │   ├── CoverageStoreOperationProvider.java
│   │   │       │   │                       │   ├── CoverageStoreSection.java
│   │   │       │   │                       │   ├── GeoServerAddCoverageStoreCommand.java
│   │   │       │   │                       │   ├── GeoServerGetCoverageStoreCommand.java
│   │   │       │   │                       │   ├── GeoServerListCoverageStoresCommand.java
│   │   │       │   │                       │   └── GeoServerRemoveCoverageStoreCommand.java
│   │   │       │   │                       ├── datastore/
│   │   │       │   │                       │   ├── DatastoreOperationProvider.java
│   │   │       │   │                       │   ├── DatastoreSection.java
│   │   │       │   │                       │   ├── GeoServerAddDatastoreCommand.java
│   │   │       │   │                       │   ├── GeoServerGetDatastoreCommand.java
│   │   │       │   │                       │   ├── GeoServerGetStoreAdapterCommand.java
│   │   │       │   │                       │   ├── GeoServerListDatastoresCommand.java
│   │   │       │   │                       │   └── GeoServerRemoveDatastoreCommand.java
│   │   │       │   │                       ├── featurelayer/
│   │   │       │   │                       │   ├── FeatureLayerOperationProvider.java
│   │   │       │   │                       │   ├── FeatureLayerSection.java
│   │   │       │   │                       │   ├── GeoServerAddFeatureLayerCommand.java
│   │   │       │   │                       │   ├── GeoServerGetFeatureLayerCommand.java
│   │   │       │   │                       │   ├── GeoServerListFeatureLayersCommand.java
│   │   │       │   │                       │   └── GeoServerRemoveFeatureLayerCommand.java
│   │   │       │   │                       ├── layer/
│   │   │       │   │                       │   ├── GeoServerAddLayerCommand.java
│   │   │       │   │                       │   ├── LayerOperationProvider.java
│   │   │       │   │                       │   └── LayerSection.java
│   │   │       │   │                       ├── style/
│   │   │       │   │                       │   ├── GeoServerAddStyleCommand.java
│   │   │       │   │                       │   ├── GeoServerGetStyleCommand.java
│   │   │       │   │                       │   ├── GeoServerListStylesCommand.java
│   │   │       │   │                       │   ├── GeoServerRemoveStyleCommand.java
│   │   │       │   │                       │   ├── GeoServerSetLayerStyleCommand.java
│   │   │       │   │                       │   ├── StyleOperationProvider.java
│   │   │       │   │                       │   └── StyleSection.java
│   │   │       │   │                       └── workspace/
│   │   │       │   │                           ├── GeoServerAddWorkspaceCommand.java
│   │   │       │   │                           ├── GeoServerListWorkspacesCommand.java
│   │   │       │   │                           ├── GeoServerRemoveWorkspaceCommand.java
│   │   │       │   │                           ├── WorkspaceOperationProvider.java
│   │   │       │   │                           └── WorkspaceSection.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── locationtech/
│   │   │                       └── geowave/
│   │   │                           └── cli/
│   │   │                               └── geoserver/
│   │   │                                   └── GeoServerRestClientTest.java
│   │   ├── geoserver-embed/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── cli/
│   │   │           │                   └── geoserver/
│   │   │           │                       ├── RunGeoServer.java
│   │   │           │                       ├── RunGeoServerOperationProvider.java
│   │   │           │                       └── RunGeoServerOptions.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── services/
│   │   │               │       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   │               └── log4j-geoserver.properties
│   │   ├── hbase-embed/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── datastore/
│   │   │           │                   └── hbase/
│   │   │           │                       └── cli/
│   │   │           │                           ├── GeoWaveHBaseUtility.java
│   │   │           │                           ├── HBaseMiniCluster.java
│   │   │           │                           ├── HBaseMiniClusterClassLoader.java
│   │   │           │                           ├── HBaseSection.java
│   │   │           │                           ├── HBaseTestVisibilityLabelServiceImpl.java
│   │   │           │                           ├── RunHBaseServer.java
│   │   │           │                           ├── RunHBaseServerOperationProvider.java
│   │   │           │                           ├── RunHBaseServerOptions.java
│   │   │           │                           └── ZookeeperMiniCluster.java
│   │   │           └── resources/
│   │   │               ├── META-INF/
│   │   │               │   └── services/
│   │   │               │       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   │               └── hbase.properties
│   │   ├── kudu-embed/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── datastore/
│   │   │           │                   └── kudu/
│   │   │           │                       └── cli/
│   │   │           │                           ├── KuduLocal.java
│   │   │           │                           ├── KuduOperationProvider.java
│   │   │           │                           ├── KuduSection.java
│   │   │           │                           ├── RunKuduLocal.java
│   │   │           │                           └── RunKuduLocalOptions.java
│   │   │           └── resources/
│   │   │               └── META-INF/
│   │   │                   └── services/
│   │   │                       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   ├── landsat8/
│   │   │   ├── README.md
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── locationtech/
│   │   │       │   │           └── geowave/
│   │   │       │   │               └── format/
│   │   │       │   │                   └── landsat8/
│   │   │       │   │                       ├── AnalyzeRunner.java
│   │   │       │   │                       ├── BandFeatureIterator.java
│   │   │       │   │                       ├── DownloadRunner.java
│   │   │       │   │                       ├── IngestRunner.java
│   │   │       │   │                       ├── Landsat8AnalyzeCommand.java
│   │   │       │   │                       ├── Landsat8BandConverterSpi.java
│   │   │       │   │                       ├── Landsat8BasicCommandLineOptions.java
│   │   │       │   │                       ├── Landsat8DownloadCommand.java
│   │   │       │   │                       ├── Landsat8DownloadCommandLineOptions.java
│   │   │       │   │                       ├── Landsat8IngestCommand.java
│   │   │       │   │                       ├── Landsat8IngestRasterCommand.java
│   │   │       │   │                       ├── Landsat8IngestVectorCommand.java
│   │   │       │   │                       ├── Landsat8OperationProvider.java
│   │   │       │   │                       ├── Landsat8RasterIngestCommandLineOptions.java
│   │   │       │   │                       ├── Landsat8Section.java
│   │   │       │   │                       ├── PropertyIgnoringFilterVisitor.java
│   │   │       │   │                       ├── RasterIngestRunner.java
│   │   │       │   │                       ├── SceneFeatureIterator.java
│   │   │       │   │                       ├── VectorIngestRunner.java
│   │   │       │   │                       ├── VectorOverrideCommandLineOptions.java
│   │   │       │   │                       ├── WRS2GeometryStore.java
│   │   │       │   │                       ├── index/
│   │   │       │   │                       │   ├── Landsat8PersistableRegistry.java
│   │   │       │   │                       │   └── Landsat8TemporalBinningStrategy.java
│   │   │       │   │                       └── qa/
│   │   │       │   │                           └── QABandToIceMaskConverter.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               ├── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   │       │               ├── org.locationtech.geowave.core.index.persist.PersistableRegistrySpi
│   │   │       │               └── org.locationtech.geowave.format.landsat.Landsat8BandConverterSpi
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── format/
│   │   │           │                   └── landsat8/
│   │   │           │                       ├── AnalyzeRunnerTest.java
│   │   │           │                       ├── DownloadRunnerTest.java
│   │   │           │                       ├── IngestRunnerTest.java
│   │   │           │                       ├── RasterIngestRunnerTest.java
│   │   │           │                       ├── SceneFeatureIteratorTest.java
│   │   │           │                       ├── Tests.java
│   │   │           │                       ├── VectorIngestRunnerTest.java
│   │   │           │                       └── WRS2GeometryStoreTest.java
│   │   │           └── resources/
│   │   │               └── geowave-config.properties
│   │   ├── osm/
│   │   │   ├── .gitignore
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── avro/
│   │   │       │   │   ├── LongArray.avsc
│   │   │       │   │   └── OsmAvro.avsc
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── locationtech/
│   │   │       │   │           └── geowave/
│   │   │       │   │               └── cli/
│   │   │       │   │                   └── osm/
│   │   │       │   │                       ├── accumulo/
│   │   │       │   │                       │   └── osmschema/
│   │   │       │   │                       │       ├── ColumnFamily.java
│   │   │       │   │                       │       ├── ColumnQualifier.java
│   │   │       │   │                       │       ├── Constants.java
│   │   │       │   │                       │       └── Schema.java
│   │   │       │   │                       ├── mapreduce/
│   │   │       │   │                       │   ├── Convert/
│   │   │       │   │                       │   │   ├── OSMConversionMapper.java
│   │   │       │   │                       │   │   ├── OSMConversionRunner.java
│   │   │       │   │                       │   │   ├── OsmProvider/
│   │   │       │   │                       │   │   │   └── OsmProvider.java
│   │   │       │   │                       │   │   └── SimpleFeatureGenerator.java
│   │   │       │   │                       │   └── Ingest/
│   │   │       │   │                       │       ├── OSMMapperBase.java
│   │   │       │   │                       │       ├── OSMNodeMapper.java
│   │   │       │   │                       │       ├── OSMRelationMapper.java
│   │   │       │   │                       │       ├── OSMRunner.java
│   │   │       │   │                       │       └── OSMWayMapper.java
│   │   │       │   │                       ├── operations/
│   │   │       │   │                       │   ├── IngestOSMToGeoWaveCommand.java
│   │   │       │   │                       │   ├── OSMOperationProvider.java
│   │   │       │   │                       │   ├── OSMSection.java
│   │   │       │   │                       │   ├── StageOSMToHDFSCommand.java
│   │   │       │   │                       │   └── options/
│   │   │       │   │                       │       └── OSMIngestCommandArgs.java
│   │   │       │   │                       ├── osmfeature/
│   │   │       │   │                       │   ├── FeatureConfigParser.java
│   │   │       │   │                       │   └── types/
│   │   │       │   │                       │       ├── attributes/
│   │   │       │   │                       │       │   ├── AttributeDefinition.java
│   │   │       │   │                       │       │   ├── AttributeType.java
│   │   │       │   │                       │       │   └── AttributeTypes.java
│   │   │       │   │                       │       └── features/
│   │   │       │   │                       │           ├── FeatureDefinition.java
│   │   │       │   │                       │           ├── FeatureDefinitionSet.java
│   │   │       │   │                       │           └── FeatureType.java
│   │   │       │   │                       ├── parser/
│   │   │       │   │                       │   ├── OsmPbfParser.java
│   │   │       │   │                       │   ├── OsmPbfParserOptions.java
│   │   │       │   │                       │   └── OsmXmlLoader.java
│   │   │       │   │                       └── types/
│   │   │       │   │                           └── TypeUtils.java
│   │   │       │   └── resources/
│   │   │       │       └── META-INF/
│   │   │       │           └── services/
│   │   │       │               └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   │       └── test/
│   │   │           ├── data/
│   │   │           │   └── test_mapping.json
│   │   │           └── java/
│   │   │               └── org/
│   │   │                   └── locationtech/
│   │   │                       └── geowave/
│   │   │                           └── cli/
│   │   │                               └── osm/
│   │   │                                   ├── ColumnQualifierTest.java
│   │   │                                   └── osmfeature/
│   │   │                                       └── FeatureConfigParserTest.java
│   │   ├── redis-embed/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── org/
│   │   │           │       └── locationtech/
│   │   │           │           └── geowave/
│   │   │           │               └── datastore/
│   │   │           │                   └── redis/
│   │   │           │                       └── cli/
│   │   │           │                           ├── RedisOperationProvider.java
│   │   │           │                           ├── RedisSection.java
│   │   │           │                           ├── RunRedisServer.java
│   │   │           │                           └── RunRedisServerOptions.java
│   │   │           └── resources/
│   │   │               └── META-INF/
│   │   │                   └── services/
│   │   │                       └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │   └── sentinel2/
│   │       ├── README.md
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── org/
│   │           │   │       └── locationtech/
│   │           │   │           └── geowave/
│   │           │   │               └── format/
│   │           │   │                   └── sentinel2/
│   │           │   │                       ├── AnalyzeRunner.java
│   │           │   │                       ├── BandFeatureIterator.java
│   │           │   │                       ├── DownloadRunner.java
│   │           │   │                       ├── IngestRunner.java
│   │           │   │                       ├── PropertyIgnoringFilterVisitor.java
│   │           │   │                       ├── RasterBandData.java
│   │           │   │                       ├── RasterIngestRunner.java
│   │           │   │                       ├── SceneFeatureIterator.java
│   │           │   │                       ├── Sentinel2AnalyzeCommand.java
│   │           │   │                       ├── Sentinel2BandConverterSpi.java
│   │           │   │                       ├── Sentinel2BasicCommandLineOptions.java
│   │           │   │                       ├── Sentinel2DownloadCommand.java
│   │           │   │                       ├── Sentinel2DownloadCommandLineOptions.java
│   │           │   │                       ├── Sentinel2ImageryProvider.java
│   │           │   │                       ├── Sentinel2ImageryProvidersCommand.java
│   │           │   │                       ├── Sentinel2IngestCommand.java
│   │           │   │                       ├── Sentinel2IngestRasterCommand.java
│   │           │   │                       ├── Sentinel2IngestVectorCommand.java
│   │           │   │                       ├── Sentinel2OperationProvider.java
│   │           │   │                       ├── Sentinel2RasterIngestCommandLineOptions.java
│   │           │   │                       ├── Sentinel2Section.java
│   │           │   │                       ├── VectorIngestRunner.java
│   │           │   │                       ├── VectorOverrideCommandLineOptions.java
│   │           │   │                       ├── amazon/
│   │           │   │                       │   └── AmazonImageryProvider.java
│   │           │   │                       └── theia/
│   │           │   │                           └── TheiaImageryProvider.java
│   │           │   └── resources/
│   │           │       └── META-INF/
│   │           │           └── services/
│   │           │               └── org.locationtech.geowave.core.cli.spi.CLIOperationProviderSpi
│   │           └── test/
│   │               ├── java/
│   │               │   └── org/
│   │               │       └── locationtech/
│   │               │           └── geowave/
│   │               │               └── format/
│   │               │                   └── sentinel2/
│   │               │                       ├── AnalyzeRunnerTest.java
│   │               │                       ├── DownloadRunnerTest.java
│   │               │                       ├── IngestRunnerTest.java
│   │               │                       ├── RasterIngestRunnerTest.java
│   │               │                       ├── SceneFeatureIteratorTest.java
│   │               │                       ├── Tests.java
│   │               │                       └── VectorIngestRunnerTest.java
│   │               └── resources/
│   │                   ├── auth_theia.txt
│   │                   └── geowave-config.properties
│   ├── datastores/
│   │   ├── accumulo/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── org/
│   │   │       │   │       └── locationtech/
│   │   │       │   │           └── geowave/
│   │   │       │   │               └── datastore/
│   │   │       │   │                   └── accumulo/
│   │   │       │   │                       ├── AccumuloDataStore.java
│   │   │       │   │                       ├── AccumuloDataStoreFactory.java
│   │   │       │   │                       ├── AccumuloFactoryHelper.java
│   │   │       │   │                       ├── AccumuloRow.java
│   │   │       │   │                       ├── AccumuloStoreFactoryFamily.java
│   │   │       │   │                       ├── IteratorConfig.java
│   │   │       │   │                       ├── MergingCombiner.java
│   │   │       │   │                       ├── MergingVisibilityCombiner.java
│   │   │       │   │                       ├── RowMergingCombiner.java
│   │   │       │   │                       ├── RowMergingVisibilityCombiner.java
│   │   │       │   │                       ├── cli/
│   │   │       │   │                       │   ├── AbstractSplitsCommand.java
│   │   │       │   │                       │   ├── AccumuloOperationProvider.java
│   │   │       │   │                       │   ├── AccumuloSection.java
│   │   │       │   │                       │   ├── PreSplitPartitionIdCommand.java
│   │   │       │   │                       │   ├── SplitEqualIntervalCommand.java
│   │   │       │   │                       │   ├── SplitNumRecordsCommand.java
│   │   │       │   │                       │   └── SplitQuantileCommand.java
│   │   │       │   │                       ├── config/
│   │   │       │   │                       │   ├── AccumuloOptions.java
│   │   │       │   │                       │   └── AccumuloRequiredOptions.java
│   │   │       │   │                       ├── iterators/
│   │   │       │   │                       │   ├── AggregationIterator.java
│   │   │       │   │                       │   ├── AttributeSubsettingIterator.java
│   │   │       │   │                       │   ├── ExceptionHandlingFilter.java
│   │   │       │   │                       │   ├── ExceptionHandlingSkippingIterator.java
│   │   │       │   │                       │   ├── ExceptionHandlingTransformingIterator.java
│   │   │       │   │                       │   ├── FixedCardinalitySkippingIterator.java
│   │   │       │   │                       │   ├── NumericIndexStrategyFilterIterator.java
│   │   │       │   │                       │   ├── QueryFilterIterator.java
│   │   │       │   │                       │   ├── SecondaryIndexQueryFilterIterator.java
│   │   │       │   │         
Download .txt
Showing preview only (1,929K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (21915 symbols across 2483 files)

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/AdapterWithObjectWritable.java
  class AdapterWithObjectWritable (line 19) | public class AdapterWithObjectWritable implements Writable {
    method setObject (line 24) | public void setObject(final ObjectWritable data) {
    method getObjectWritable (line 28) | public ObjectWritable getObjectWritable() {
    method setObjectWritable (line 32) | protected void setObjectWritable(final ObjectWritable objectWritable) {
    method getInternalAdapterId (line 36) | public Short getInternalAdapterId() {
    method setInternalAdapterId (line 40) | public void setInternalAdapterId(final short internalAdapterId) {
    method getDataId (line 44) | public ByteArray getDataId() {
    method setDataId (line 48) | public void setDataId(final ByteArray dataId) {
    method readFields (line 52) | @Override
    method write (line 68) | @Override
    method fillWritableWithAdapter (line 82) | public static void fillWritableWithAdapter(
    method fromWritableWithAdapter (line 93) | public static Object fromWritableWithAdapter(
    method toString (line 104) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/AnalyticFeature.java
  class AnalyticFeature (line 29) | public class AnalyticFeature {
    method createGeometryFeature (line 32) | public static SimpleFeature createGeometryFeature(
    method createFeatureAdapter (line 74) | public static FeatureDataAdapter createFeatureAdapter(
    method createGeometryFeatureAdapter (line 106) | public static FeatureDataAdapter createGeometryFeatureAdapter(
    type ClusterFeatureAttribute (line 120) | public static enum ClusterFeatureAttribute {
      method ClusterFeatureAttribute (line 133) | ClusterFeatureAttribute(final String name, final Class<?> type) {
      method attrName (line 138) | public String attrName() {
      method getType (line 142) | public Class<?> getType() {

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/AnalyticItemWrapper.java
  type AnalyticItemWrapper (line 19) | public interface AnalyticItemWrapper<T> {
    method getID (line 20) | public String getID();
    method getWrappedItem (line 22) | public T getWrappedItem();
    method getAssociationCount (line 24) | public long getAssociationCount();
    method resetAssociatonCount (line 26) | public void resetAssociatonCount();
    method incrementAssociationCount (line 28) | public void incrementAssociationCount(long increment);
    method getIterationID (line 30) | public int getIterationID();
    method getName (line 32) | public String getName();
    method getExtraDimensions (line 34) | public String[] getExtraDimensions();
    method getDimensionValues (line 36) | public double[] getDimensionValues();
    method getGeometry (line 38) | public Geometry getGeometry();
    method getCost (line 40) | public double getCost();
    method setCost (line 42) | public void setCost(double cost);
    method getGroupID (line 44) | public String getGroupID();
    method setGroupID (line 46) | public void setGroupID(String groupID);
    method setZoomLevel (line 48) | public void setZoomLevel(int level);
    method getZoomLevel (line 50) | public int getZoomLevel();
    method setBatchID (line 52) | public void setBatchID(String batchID);
    method getBatchID (line 54) | public String getBatchID();

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/AnalyticItemWrapperFactory.java
  type AnalyticItemWrapperFactory (line 21) | public interface AnalyticItemWrapperFactory<T> {
    method create (line 25) | public AnalyticItemWrapper<T> create(T item);
    method createNextItem (line 30) | public AnalyticItemWrapper<T> createNextItem(
    method initialize (line 37) | public void initialize(final JobContext context, Class<?> scope, Logge...

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/AnalyticPersistableRegistry.java
  class AnalyticPersistableRegistry (line 18) | public class AnalyticPersistableRegistry implements
    method getSupportedPersistables (line 21) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/GeoObjectDimensionValues.java
  class GeoObjectDimensionValues (line 19) | public class GeoObjectDimensionValues implements Persistable {
    method GeoObjectDimensionValues (line 27) | public GeoObjectDimensionValues(final int extraValuesCount) {
    method GeoObjectDimensionValues (line 31) | public GeoObjectDimensionValues() {}
    method GeoObjectDimensionValues (line 33) | public GeoObjectDimensionValues(
    method add (line 48) | public void add(final GeoObjectDimensionValues association) {
    method set (line 59) | public void set(
    method getCount (line 73) | public long getCount() {
    method setCount (line 77) | public void setCount(final long count) {
    method getX (line 81) | public double getX() {
    method setX (line 85) | public void setX(final double x) {
    method getY (line 89) | public double getY() {
    method setY (line 93) | public void setY(final double y) {
    method getZ (line 97) | public double getZ() {
    method setZ (line 101) | public void setZ(final double z) {
    method getDistance (line 105) | public double getDistance() {
    method setDistance (line 109) | public void setDistance(final double distance) {
    method toBinary (line 113) | @Override
    method fromBinary (line 132) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/GeometryCalculations.java
  class GeometryCalculations (line 28) | public class GeometryCalculations {
    method GeometryCalculations (line 35) | public GeometryCalculations(final CoordinateReferenceSystem crs) {
    method buildSurroundingGeometries (line 53) | public List<Geometry> buildSurroundingGeometries(
    method handleBoundaries (line 85) | private void handleBoundaries(

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/GeometryDataSetGenerator.java
  class GeometryDataSetGenerator (line 46) | public class GeometryDataSetGenerator {
    method GeometryDataSetGenerator (line 59) | public GeometryDataSetGenerator(
    method isIncludePolygons (line 68) | public boolean isIncludePolygons() {
    method setIncludePolygons (line 72) | public void setIncludePolygons(final boolean includePolygons) {
    method getCorner (line 76) | public SimpleFeature getCorner() {
    method getBoundingRegion (line 80) | public Geometry getBoundingRegion() {
    method createRange (line 109) | private double[] createRange(
    method gridCellBounds (line 127) | private Pair<double[], double[]> gridCellBounds(
    method writeToGeoWave (line 149) | public void writeToGeoWave(final DataStore dataStore, final List<Simpl...
    method generatePointSet (line 168) | public List<SimpleFeature> generatePointSet(
    method generatePointSet (line 182) | public List<SimpleFeature> generatePointSet(
    method generatePointSet (line 196) | public List<SimpleFeature> generatePointSet(
    method addRandomNoisePoints (line 265) | public List<SimpleFeature> addRandomNoisePoints(
    method init (line 276) | private void init() {
    method isFarEnough (line 295) | private boolean isFarEnough(
    method computeMinDistance (line 314) | private double computeMinDistance(
    method createNewFeature (line 338) | private SimpleFeature createNewFeature(final double[] minAxis, final d...
    method getFactory (line 375) | public GeometryFactory getFactory() {
    method constrain (line 386) | private void constrain(
    method createFeatureWithGeometry (line 397) | private SimpleFeature createFeatureWithGeometry(final Geometry geometr...
    method getBuilder (line 502) | private static SimpleFeatureBuilder getBuilder(final String name) thro...
    class CurvedDensityDataGeneratorTool (line 516) | public static class CurvedDensityDataGeneratorTool {
      method CurvedDensityDataGeneratorTool (line 520) | private CurvedDensityDataGeneratorTool() {}
      method generatePoints (line 522) | public static final List<Point> generatePoints(
      method generatePoints (line 556) | private static final List<Point> generatePoints(
      method toCoordinate (line 582) | public static Coordinate toCoordinate(final Vector2D vec) {
      method toVec (line 586) | public static Vector2D toVec(final Coordinate coor) {

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/GeometryHullTool.java
  class GeometryHullTool (line 38) | public class GeometryHullTool {
    method connect (line 44) | public void connect(final List<Geometry> geometries) {}
    method getDistanceFnForCoordinate (line 46) | public DistanceFn<Coordinate> getDistanceFnForCoordinate() {
    method setDistanceFnForCoordinate (line 50) | public void setDistanceFnForCoordinate(final DistanceFn<Coordinate> di...
    method getConcaveThreshold (line 54) | protected double getConcaveThreshold() {
    method setConcaveThreshold (line 61) | protected void setConcaveThreshold(final double concaveThreshold) {
    class Edge (line 65) | protected static class Edge implements Comparable<Edge> {
      method Edge (line 72) | public Edge(final Coordinate start, final Coordinate end, final doub...
      method getPoints (line 79) | public TreeSet<NeighborData<Coordinate>> getPoints() {
      method compareTo (line 86) | @Override
      method hashCode (line 91) | @Override
      method connectLast (line 100) | public void connectLast(final Edge last) {
      method equals (line 105) | @Override
      method toString (line 134) | @Override
    method createEdgeWithSideEffects (line 140) | private Edge createEdgeWithSideEffects(
    method createHullFromGeometry (line 158) | public Geometry createHullFromGeometry(
    method concaveHullParkOhMethod (line 228) | public Geometry concaveHullParkOhMethod(
    method concaveHull (line 328) | public Geometry concaveHull(
    method intersectAnotherEdge (line 418) | public static boolean intersectAnotherEdge(final Edge newEdge, final E...
    method edgesIntersect (line 430) | public static boolean edgesIntersect(final Edge e1, final Edge e2) {
    method isCandidateCloserToAnotherEdge (line 434) | private static boolean isCandidateCloserToAnotherEdge(
    method reassemble (line 451) | private static Coordinate[] reassemble(final Edge lastEdge) {
    method isInside (line 463) | protected boolean isInside(final Coordinate coor, final Coordinate[] h...
    method connect (line 478) | public Geometry connect(final Geometry shape1, final Geometry shape2) {
    method connect (line 493) | protected Geometry connect(
    method walk (line 582) | private Pair<Integer, Integer> walk(
    method clockwise (line 615) | public static boolean clockwise(final Coordinate[] set) {
    method calcSmallestAngle (line 623) | public static double calcSmallestAngle(
    method calcAngle (line 634) | public static double calcAngle(
    method calcDistanceSegment (line 656) | public static double[] calcDistanceSegment(
    method calcDistance (line 682) | public static double calcDistance(
    method getClosestPoints (line 690) | public static Pair<Integer, Integer> getClosestPoints(
    method takeBiggestStep (line 714) | private int takeBiggestStep(
    type DirectionFactory (line 747) | private interface DirectionFactory {
      method createLeftFootDirection (line 748) | Direction createLeftFootDirection(int start, int max);
      method createRightFootDirection (line 750) | Direction createRightFootDirection(int start, int max);
    type Direction (line 753) | private interface Direction extends Iterator<Integer> {
      method getStart (line 754) | public int getStart();
      method angleChange (line 756) | public double angleChange(double angle);
    class IncreaseDirection (line 759) | private class IncreaseDirection implements Direction {
      method getStart (line 767) | @Override
      method IncreaseDirection (line 772) | public IncreaseDirection(final int start, final int max, final boole...
      method IncreaseDirection (line 781) | public IncreaseDirection(final int start, final int stop, final int ...
      method next (line 790) | @Override
      method hasNext (line 797) | @Override
      method getNext (line 802) | protected int getNext(final int n) {
      method remove (line 806) | @Override
      method angleChange (line 809) | @Override
    class DecreaseDirection (line 815) | private class DecreaseDirection extends IncreaseDirection implements D...
      method DecreaseDirection (line 817) | public DecreaseDirection(final int start, final int max, final boole...
      method DecreaseDirection (line 821) | public DecreaseDirection(final int start, final int stop, final int ...
      method getNext (line 825) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/IndependentJobRunner.java
  type IndependentJobRunner (line 14) | public interface IndependentJobRunner {
    method run (line 15) | public int run(PropertyManagement properties) throws Exception;
    method getParameters (line 17) | public Collection<ParameterEnum<?>> getParameters();

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/Projection.java
  type Projection (line 21) | public interface Projection<T> {
    method getProjection (line 22) | public Geometry getProjection(T anItem);
    method initialize (line 24) | public void initialize(JobContext context, Class<?> scope) throws IOEx...
    method setup (line 26) | public void setup(

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/PropertyManagement.java
  class PropertyManagement (line 56) | public class PropertyManagement implements Serializable {
    method PropertyManagement (line 67) | public PropertyManagement() {
    method PropertyManagement (line 76) | public PropertyManagement(
    method PropertyManagement (line 92) | public PropertyManagement(final ParameterEnum<?>[] names, final Object...
    method PropertyManagement (line 102) | public PropertyManagement(final PropertyManagement pm) {
    method get (line 107) | public Serializable get(final ParameterEnum<?> propertyName) {
    method store (line 111) | public synchronized <T> void store(
    method store (line 132) | public synchronized void store(final ParameterEnum<?> property, final ...
    method storeIfEmpty (line 150) | public synchronized Serializable storeIfEmpty(
    method copy (line 161) | public synchronized void copy(
    method storeAll (line 169) | public synchronized void storeAll(final ParameterEnum<?>[] names, fina...
    method setConfig (line 182) | public void setConfig(
    method getClassInstance (line 201) | @SuppressWarnings("unchecked")
    method hasProperty (line 232) | public synchronized boolean hasProperty(final ParameterEnum<?> propert...
    method getPropertyAsString (line 236) | public String getPropertyAsString(final ParameterEnum<?> property) {
    method getProperty (line 244) | public Object getProperty(final ParameterEnum<?> property) throws Exce...
    method getProperty (line 259) | public <T> T getProperty(final ParameterEnum<?> property, final Proper...
    method getPropertyAsBytes (line 266) | public byte[] getPropertyAsBytes(final ParameterEnum<?> property) {
    method getPropertyAsString (line 277) | public String getPropertyAsString(final ParameterEnum<?> property, fin...
    method getPropertyAsBoolean (line 283) | public Boolean getPropertyAsBoolean(final ParameterEnum<?> property, f...
    method getPropertyAsInt (line 292) | public Integer getPropertyAsInt(final ParameterEnum<?> property, final...
    method getPropertyAsDouble (line 304) | public Double getPropertyAsDouble(final ParameterEnum<?> property, fin...
    method getPropertyAsRange (line 316) | public NumericRange getPropertyAsRange(
    method getPropertyAsClass (line 343) | public Class<?> getPropertyAsClass(final ParameterEnum<?> property) {
    method getPropertyAsClass (line 363) | public <T> Class<T> getPropertyAsClass(final ParameterEnum<?> property...
    method getPropertyAsClass (line 387) | public <T> Class<? extends T> getPropertyAsClass(
    method validate (line 411) | private <T> Class<T> validate(final Class<T> classToValidate, final Cl...
    method getPropertyAsQuery (line 419) | public Query<?> getPropertyAsQuery(final ParameterEnum property) throw...
    method getPropertyAsPath (line 427) | public Path getPropertyAsPath(final ParameterEnum<?> property) throws ...
    method getPropertyAsPersistable (line 435) | public Persistable getPropertyAsPersistable(final ParameterEnum<?> pro...
    method setJobConfiguration (line 444) | public void setJobConfiguration(final Configuration configuration, fin...
    method dump (line 453) | public void dump() {
    method addConverter (line 470) | public synchronized void addConverter(final PropertyConverter<?> conve...
    method toBytes (line 474) | private static byte[] toBytes(final Persistable persistableObject)
    method fromBytes (line 479) | private static Persistable fromBytes(final byte[] data) throws Instant...
    method validate (line 484) | private Object validate(final ParameterEnum propertyName, final Object...
    method convertIfNecessary (line 505) | @SuppressWarnings("unchecked")
    type PropertyConverter (line 528) | public interface PropertyConverter<T> extends Serializable {
      method convert (line 529) | public Serializable convert(T ob) throws Exception;
      method convert (line 531) | public T convert(Serializable ob) throws Exception;
      method baseClass (line 533) | public Class<T> baseClass();
    type PropertyGroup (line 536) | public interface PropertyGroup<T extends Serializable> extends Seriali...
      method convert (line 537) | public T convert(CommandLine commandLine) throws ParseException;
      method getParameter (line 539) | public ParameterEnum getParameter();
    class QueryConverter (line 542) | public static class QueryConverter implements PropertyConverter<Query> {
      method convert (line 547) | @Override
      method convert (line 560) | @Override
      method baseClass (line 570) | @Override
    class PathConverter (line 576) | public static class PathConverter implements PropertyConverter<Path> {
      method convert (line 580) | @Override
      method convert (line 585) | @Override
      method baseClass (line 590) | @Override
    class ByteConverter (line 596) | public static class ByteConverter implements PropertyConverter<byte[]> {
      method convert (line 599) | @Override
      method convert (line 604) | @Override
      method baseClass (line 609) | @Override
    class IntegerConverter (line 615) | public static class IntegerConverter implements PropertyConverter<Inte...
      method convert (line 618) | @Override
      method convert (line 623) | @Override
      method baseClass (line 628) | @Override
    class DoubleConverter (line 634) | public static class DoubleConverter implements PropertyConverter<Doubl...
      method convert (line 638) | @Override
      method convert (line 643) | @Override
      method baseClass (line 648) | @Override
    class PersistableConverter (line 654) | public static class PersistableConverter implements PropertyConverter<...
      method convert (line 659) | @Override
      method convert (line 672) | @Override
      method baseClass (line 681) | @Override
    method containsPropertyValue (line 687) | private boolean containsPropertyValue(final ParameterEnum<?> property) {
    method getPropertyValue (line 692) | private Serializable getPropertyValue(final ParameterEnum<?> property) {

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/ScopedJobConfiguration.java
  class ScopedJobConfiguration (line 17) | public class ScopedJobConfiguration {
    method ScopedJobConfiguration (line 25) | public ScopedJobConfiguration(final Configuration jobConfiguration, fi...
    method ScopedJobConfiguration (line 31) | public ScopedJobConfiguration(
    method getInt (line 41) | public int getInt(final Enum<?> property, final int defaultValue) {
    method getString (line 50) | public String getString(final Enum<?> property, final String defaultVa...
    method getInstance (line 58) | public <T> T getInstance(
    method getDouble (line 80) | public double getDouble(final Enum<?> property, final double defaultVa...
    method getBytes (line 88) | public byte[] getBytes(final Enum<?> property) {

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/SerializableAdapterStore.java
  class SerializableAdapterStore (line 23) | public class SerializableAdapterStore implements TransientAdapterStore, ...
    method SerializableAdapterStore (line 32) | public SerializableAdapterStore() {}
    method SerializableAdapterStore (line 34) | public SerializableAdapterStore(final TransientAdapterStore adapterSto...
    method getAdapterStore (line 39) | private TransientAdapterStore getAdapterStore() {
    method addAdapter (line 46) | @Override
    method getAdapter (line 51) | @Override
    method adapterExists (line 56) | @Override
    method getAdapters (line 61) | @Override
    method removeAll (line 66) | @Override
    method writeObject (line 71) | private void writeObject(final java.io.ObjectOutputStream out) throws ...
    method readObject (line 80) | private void readObject(final java.io.ObjectInputStream in)
    method removeAdapter (line 89) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/ShapefileTool.java
  class ShapefileTool (line 35) | public class ShapefileTool {
    method createFeatureType (line 38) | private static SimpleFeatureType createFeatureType(final String typeNa...
    method writeShape (line 54) | @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
    method writeShape (line 106) | @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/SimpleFeatureItemWrapperFactory.java
  class SimpleFeatureItemWrapperFactory (line 20) | public class SimpleFeatureItemWrapperFactory implements AnalyticItemWrap...
    method create (line 22) | @Override
    method initialize (line 27) | @Override
    class SimpleFeatureAnalyticItemWrapper (line 31) | public static class SimpleFeatureAnalyticItemWrapper implements
      method SimpleFeatureAnalyticItemWrapper (line 36) | public SimpleFeatureAnalyticItemWrapper(final SimpleFeature item) {
      method getID (line 40) | @Override
      method getWrappedItem (line 45) | @Override
      method getAssociationCount (line 50) | @Override
      method getIterationID (line 56) | @Override
      method getGroupID (line 61) | @Override
      method setGroupID (line 66) | @Override
      method resetAssociatonCount (line 71) | @Override
      method incrementAssociationCount (line 76) | @Override
      method toString (line 83) | @Override
      method getCost (line 96) | @Override
      method setCost (line 102) | @Override
      method getName (line 108) | @Override
      method getExtraDimensions (line 113) | @Override
      method getDimensionValues (line 118) | @Override
      method getGeometry (line 123) | @Override
      method setZoomLevel (line 128) | @Override
      method getZoomLevel (line 133) | @Override
      method setBatchID (line 138) | @Override
      method getBatchID (line 143) | @Override
    method getAttribute (line 149) | private static String getAttribute(final SimpleFeature feature, final ...
    method getIntAttribute (line 154) | private static int getIntAttribute(
    method createNextItem (line 168) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/SimpleFeatureProjection.java
  class SimpleFeatureProjection (line 18) | public class SimpleFeatureProjection implements Projection<SimpleFeature> {
    method getProjection (line 20) | @Override
    method initialize (line 25) | @Override
    method setup (line 28) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/CentroidItemWrapperFactory.java
  class CentroidItemWrapperFactory (line 26) | public class CentroidItemWrapperFactory<T> implements AnalyticItemWrappe...
    method create (line 32) | @Override
    method initialize (line 37) | @Override
    method getItemFactory (line 49) | public AnalyticItemWrapperFactory<T> getItemFactory() {
    method setItemFactory (line 53) | public void setItemFactory(final AnalyticItemWrapperFactory<T> itemFac...
    class CentroidItemWrapper (line 57) | public class CentroidItemWrapper implements AnalyticItemWrapper<T> {
      method CentroidItemWrapper (line 61) | public CentroidItemWrapper(final T item) {
      method getID (line 78) | @Override
      method getWrappedItem (line 83) | @Override
      method getAssociationCount (line 88) | @Override
      method getIterationID (line 93) | @Override
      method getGroupID (line 99) | @Override
      method setGroupID (line 104) | @Override
      method resetAssociatonCount (line 107) | @Override
      method incrementAssociationCount (line 110) | @Override
      method getCost (line 113) | @Override
      method setCost (line 118) | @Override
      method getName (line 121) | @Override
      method getExtraDimensions (line 126) | @Override
      method getDimensionValues (line 131) | @Override
      method getGeometry (line 136) | @Override
      method setZoomLevel (line 141) | @Override
      method getZoomLevel (line 144) | @Override
      method setBatchID (line 149) | @Override
      method getBatchID (line 152) | @Override
    method createNextItem (line 163) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/CentroidManager.java
  type CentroidManager (line 24) | public interface CentroidManager<T> {
    method createNextCentroid (line 29) | public AnalyticItemWrapper<T> createNextCentroid(
    method getCentroidById (line 36) | public AnalyticItemWrapper<T> getCentroidById(final String id, final S...
    method delete (line 39) | public void delete(final String[] dataIds) throws IOException;
    method getAllCentroidGroups (line 41) | public List<String> getAllCentroidGroups() throws IOException;
    method getCentroidsForGroup (line 43) | public List<AnalyticItemWrapper<T>> getCentroidsForGroup(final String ...
    method getCentroidsForGroup (line 45) | public List<AnalyticItemWrapper<T>> getCentroidsForGroup(
    method processForAllGroups (line 49) | public int processForAllGroups(CentroidProcessingFn<T> fn) throws IOEx...
    type CentroidProcessingFn (line 51) | public static interface CentroidProcessingFn<T> {
      method processGroup (line 52) | public int processGroup(final String groupID, final List<AnalyticIte...
    method getCentroid (line 55) | public AnalyticItemWrapper<T> getCentroid(final String id);
    method clear (line 57) | public void clear();
    method getDataTypeName (line 59) | public String getDataTypeName();
    method getIndexName (line 61) | public String getIndexName();

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/CentroidManagerGeoWave.java
  class CentroidManagerGeoWave (line 79) | public class CentroidManagerGeoWave<T> implements CentroidManager<T> {
    method CentroidManagerGeoWave (line 101) | public CentroidManagerGeoWave(
    method CentroidManagerGeoWave (line 123) | public CentroidManagerGeoWave(final PropertyManagement properties) thr...
    method CentroidManagerGeoWave (line 130) | public CentroidManagerGeoWave(final JobContext context, final Class<?>...
    method CentroidManagerGeoWave (line 134) | public CentroidManagerGeoWave(final JobContext context, final Class<?>...
    method init (line 139) | private void init(final JobContext context, final Class<?> scope, fina...
    method createNextCentroid (line 193) | @Override
    method clear (line 206) | @Override
    method delete (line 211) | @Override
    method getAllCentroidGroups (line 224) | @Override
    method getCentroidsForGroup (line 245) | @Override
    method getCentroidsForGroup (line 251) | @Override
    method getCentroidById (line 268) | @Override
    method loadCentroids (line 279) | private List<AnalyticItemWrapper<T>> loadCentroids(final String batchI...
    method getCentroid (line 304) | @Override
    method getRawCentroids (line 321) | @SuppressWarnings("unchecked")
    method transferBatch (line 349) | @SuppressWarnings("unchecked")
    method processForAllGroups (line 368) | @Override
    method getParameters (line 387) | public static Collection<ParameterEnum<?>> getParameters() {
    method setParameters (line 391) | public static void setParameters(
    method getIndexName (line 398) | @Override
    method getBatchId (line 403) | public String getBatchId() {
    method getFeatureConverter (line 407) | private ToSimpleFeatureConverter<T> getFeatureConverter(
    type ToSimpleFeatureConverter (line 417) | private interface ToSimpleFeatureConverter<T> {
      method getFeatureType (line 418) | SimpleFeatureType getFeatureType();
      method toSimpleFeature (line 420) | SimpleFeature toSimpleFeature(AnalyticItemWrapper<T> item);
    method createFeatureType (line 423) | private static SimpleFeatureType createFeatureType(
    method convert (line 446) | private static Geometry convert(
    class SimpleFeatureConverter (line 462) | private class SimpleFeatureConverter implements ToSimpleFeatureConvert...
      method SimpleFeatureConverter (line 468) | public SimpleFeatureConverter(
      method getFeatureType (line 482) | @Override
      method toSimpleFeature (line 487) | @Override
    class NonSimpleFeatureConverter (line 506) | private class NonSimpleFeatureConverter implements ToSimpleFeatureConv...
      method NonSimpleFeatureConverter (line 511) | public NonSimpleFeatureConverter(
      method getFeatureType (line 531) | @Override
      method toSimpleFeature (line 536) | @Override
    method toShapeFile (line 561) | public void toShapeFile(final String parentDir, final Class<? extends ...
    method getDataTypeName (line 611) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/CentroidPairing.java
  class CentroidPairing (line 13) | public class CentroidPairing<T> {
    method CentroidPairing (line 18) | public CentroidPairing() {}
    method CentroidPairing (line 20) | public CentroidPairing(
    method getCentroid (line 30) | public AnalyticItemWrapper<T> getCentroid() {
    method setCentroid (line 34) | public void setCentroid(final AnalyticItemWrapper<T> centroid) {
    method getPairedItem (line 38) | public AnalyticItemWrapper<T> getPairedItem() {
    method setPairedItem (line 42) | public void setPairedItem(final AnalyticItemWrapper<T> pairedItem) {
    method getDistance (line 46) | public double getDistance() {
    method setDistance (line 50) | public void setDistance(final double distance) {
    method hashCode (line 54) | @Override
    method equals (line 66) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/ClusteringUtils.java
  class ClusteringUtils (line 37) | public class ClusteringUtils {
    method createAdapter (line 43) | private static DataTypeAdapter<?> createAdapter(
    method getAdapters (line 65) | public static DataTypeAdapter[] getAdapters(final PropertyManagement p...
    method getIndices (line 77) | public static Index[] getIndices(final PropertyManagement propertyMana...
    method getGeoWaveRangesForQuery (line 100) | protected static QueryRanges getGeoWaveRangesForQuery(final Polygon po...
    method createIndex (line 114) | public static Index createIndex(final PropertyManagement propertyManag...
    method createAdapter (line 125) | public static DataTypeAdapter<?> createAdapter(final PropertyManagemen...

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/DistortionGroupManagement.java
  class DistortionGroupManagement (line 57) | public class DistortionGroupManagement {
    method DistortionGroupManagement (line 68) | public DistortionGroupManagement(final DataStorePluginOptions dataStor...
    class BatchIdFilter (line 78) | public static class BatchIdFilter implements QueryFilter {
      method BatchIdFilter (line 81) | public BatchIdFilter() {}
      method BatchIdFilter (line 83) | public BatchIdFilter(final String batchId) {
      method accept (line 88) | @Override
      method toBinary (line 95) | @Override
      method fromBinary (line 100) | @Override
    class BatchIdQuery (line 106) | public static class BatchIdQuery implements QueryConstraints {
      method BatchIdQuery (line 109) | public BatchIdQuery() {}
      method BatchIdQuery (line 111) | public BatchIdQuery(final String batchId) {
      method createFilters (line 116) | @Override
      method getIndexConstraints (line 121) | @Override
      method toBinary (line 126) | @Override
      method fromBinary (line 131) | @Override
    method retainBestGroups (line 137) | public <T> int retainBestGroups(
    class DistortionEntry (line 196) | public static class DistortionEntry implements Writable {
      method DistortionEntry (line 202) | public DistortionEntry() {}
      method DistortionEntry (line 204) | public DistortionEntry(
      method DistortionEntry (line 215) | private DistortionEntry(final byte[] dataId, final Double distortion...
      method getGroupId (line 224) | public String getGroupId() {
      method getClusterCount (line 228) | public Integer getClusterCount() {
      method getDistortionValue (line 232) | public Double getDistortionValue() {
      method getDataId (line 236) | private byte[] getDataId() {
      method write (line 240) | @Override
      method readFields (line 248) | @Override
    class DistortionGroup (line 257) | private static class DistortionGroup {
      method DistortionGroup (line 261) | public DistortionGroup(final String groupID) {
      method addPair (line 265) | public void addPair(final Integer count, final Double distortion) {
      method getGroupID (line 269) | public String getGroupID() {
      method bestCount (line 273) | public int bestCount() {
    class DistortionDataAdapter (line 296) | public static class DistortionDataAdapter implements DataTypeAdapter<D...
      method DistortionDataAdapter (line 303) | public DistortionDataAdapter() {
      method getTypeName (line 307) | @Override
      method getDataId (line 312) | @Override
      method getReader (line 317) | @Override
      method toBinary (line 325) | @Override
      method fromBinary (line 330) | @Override
      method getFieldValue (line 333) | @Override
      method getDataClass (line 338) | @Override
      method newRowBuilder (line 343) | @Override
      method getFieldDescriptors (line 369) | @Override
      method getFieldDescriptor (line 374) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/LongCentroid.java
  class LongCentroid (line 14) | public class LongCentroid implements AnalyticItemWrapper<Long> {
    method hashCode (line 21) | @Override
    method getIterationID (line 30) | @Override
    method equals (line 35) | @Override
    method LongCentroid (line 60) | public LongCentroid(final long val, final String groupID, final int co...
    method getGroupID (line 67) | @Override
    method getID (line 72) | @Override
    method getWrappedItem (line 77) | @Override
    method getAssociationCount (line 82) | @Override
    method resetAssociatonCount (line 87) | @Override
    method incrementAssociationCount (line 92) | @Override
    method getCost (line 97) | @Override
    method setCost (line 102) | @Override
    method toString (line 107) | @Override
    method getName (line 112) | @Override
    method getExtraDimensions (line 117) | @Override
    method getDimensionValues (line 122) | @Override
    method getGeometry (line 127) | @Override
    method setZoomLevel (line 133) | @Override
    method getZoomLevel (line 139) | @Override
    method setBatchID (line 145) | @Override
    method getBatchID (line 151) | @Override
    method setGroupID (line 157) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/NeighborData.java
  class NeighborData (line 14) | public class NeighborData<T> implements Comparable<NeighborData<T>> {
    method NeighborData (line 19) | public NeighborData() {}
    method NeighborData (line 21) | public NeighborData(final T element, final ByteArray id, final double ...
    method NeighborData (line 28) | public NeighborData(final NeighborData<T> element, final double distan...
    method getId (line 35) | public ByteArray getId() {
    method setId (line 39) | protected void setId(final ByteArray id) {
    method getDistance (line 43) | public double getDistance() {
    method setDistance (line 47) | public void setDistance(final double distance) {
    method getElement (line 51) | public T getElement() {
    method setElement (line 55) | protected void setElement(final T neighbor) {
    method hashCode (line 59) | @Override
    method equals (line 64) | @Override
    method compareTo (line 87) | @Override
    method toString (line 95) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/NestedGroupCentroidAssignment.java
  class NestedGroupCentroidAssignment (line 56) | public class NestedGroupCentroidAssignment<T> {
    method NestedGroupCentroidAssignment (line 62) | public NestedGroupCentroidAssignment(
    method NestedGroupCentroidAssignment (line 74) | public NestedGroupCentroidAssignment(
    method setZoomLevel (line 98) | public static void setZoomLevel(
    method setParentBatchID (line 108) | public static void setParentBatchID(
    method getParameters (line 115) | public static Collection<ParameterEnum<?>> getParameters() {
    method getCentroidsForGroup (line 128) | public List<AnalyticItemWrapper<T>> getCentroidsForGroup(final String ...
    method getGroupForLevel (line 134) | public String getGroupForLevel(final AnalyticItemWrapper<T> item) thro...
    method findCentroidForLevel (line 155) | public double findCentroidForLevel(
    method setParameters (line 194) | public static void setParameters(
    class GroupHolder (line 210) | private class GroupHolder {
      method getGroupID (line 213) | public String getGroupID() {
      method setGroupID (line 217) | public void setGroupID(final String groupID) {

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/exception/MatchingCentroidNotFoundException.java
  class MatchingCentroidNotFoundException (line 11) | public class MatchingCentroidNotFoundException extends Exception {
    method MatchingCentroidNotFoundException (line 16) | public MatchingCentroidNotFoundException() {
    method MatchingCentroidNotFoundException (line 20) | public MatchingCentroidNotFoundException(
    method MatchingCentroidNotFoundException (line 28) | public MatchingCentroidNotFoundException(final String arg0, final Thro...
    method MatchingCentroidNotFoundException (line 32) | public MatchingCentroidNotFoundException(final String arg0) {
    method MatchingCentroidNotFoundException (line 36) | public MatchingCentroidNotFoundException(final Throwable arg0) {

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/CoordinateCircleDistanceFn.java
  class CoordinateCircleDistanceFn (line 22) | public class CoordinateCircleDistanceFn implements DistanceFn<Coordinate> {
    method measure (line 38) | @Override
    method getCRS (line 60) | protected CoordinateReferenceSystem getCRS() {

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/CoordinateCosineDistanceFn.java
  class CoordinateCosineDistanceFn (line 13) | public class CoordinateCosineDistanceFn implements DistanceFn<Coordinate> {
    method measure (line 18) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/CoordinateEuclideanDistanceFn.java
  class CoordinateEuclideanDistanceFn (line 13) | public class CoordinateEuclideanDistanceFn implements DistanceFn<Coordin...
    method measure (line 18) | @Override
    method filter (line 26) | private static double filter(final double x) {

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/DistanceFn.java
  type DistanceFn (line 18) | public interface DistanceFn<T> extends Serializable {
    method measure (line 19) | double measure(T x, T y);

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/FeatureCentroidDistanceFn.java
  class FeatureCentroidDistanceFn (line 20) | public class FeatureCentroidDistanceFn implements DistanceFn<SimpleFeatu...
    method FeatureCentroidDistanceFn (line 27) | public FeatureCentroidDistanceFn() {}
    method FeatureCentroidDistanceFn (line 29) | public FeatureCentroidDistanceFn(final DistanceFn<Coordinate> coordina...
    method getCoordinateDistanceFunction (line 34) | public DistanceFn<Coordinate> getCoordinateDistanceFunction() {
    method setCoordinateDistanceFunction (line 38) | public void setCoordinateDistanceFunction(
    method getGeometry (line 43) | private Geometry getGeometry(final SimpleFeature x) {
    method measure (line 52) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/FeatureCentroidOrthodromicDistanceFn.java
  class FeatureCentroidOrthodromicDistanceFn (line 13) | public class FeatureCentroidOrthodromicDistanceFn extends FeatureCentroi...
    method FeatureCentroidOrthodromicDistanceFn (line 18) | public FeatureCentroidOrthodromicDistanceFn() {

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/FeatureDistanceFn.java
  class FeatureDistanceFn (line 22) | public class FeatureDistanceFn implements DistanceFn<SimpleFeature> {
    method FeatureDistanceFn (line 29) | public FeatureDistanceFn() {}
    method FeatureDistanceFn (line 31) | public FeatureDistanceFn(final DistanceFn<Coordinate> coordinateDistan...
    method getCoordinateDistanceFunction (line 36) | public DistanceFn<Coordinate> getCoordinateDistanceFunction() {
    method setCoordinateDistanceFunction (line 40) | public void setCoordinateDistanceFunction(
    method getGeometry (line 45) | private Geometry getGeometry(final SimpleFeature x) {
    method measure (line 54) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/FeatureGeometryDistanceFn.java
  class FeatureGeometryDistanceFn (line 21) | public class FeatureGeometryDistanceFn implements DistanceFn<SimpleFeatu...
    method FeatureGeometryDistanceFn (line 28) | public FeatureGeometryDistanceFn() {}
    method FeatureGeometryDistanceFn (line 30) | public FeatureGeometryDistanceFn(final DistanceFn<Coordinate> coordina...
    method getCoordinateDistanceFunction (line 35) | public DistanceFn<Coordinate> getCoordinateDistanceFunction() {
    method setCoordinateDistanceFunction (line 39) | public void setCoordinateDistanceFunction(
    method getGeometry (line 44) | private Geometry getGeometry(final SimpleFeature x) {
    method measure (line 53) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/GeometryCentroidDistanceFn.java
  class GeometryCentroidDistanceFn (line 19) | public class GeometryCentroidDistanceFn implements DistanceFn<Geometry> {
    method GeometryCentroidDistanceFn (line 26) | public GeometryCentroidDistanceFn() {}
    method GeometryCentroidDistanceFn (line 28) | public GeometryCentroidDistanceFn(final DistanceFn<Coordinate> coordin...
    method getCoordinateDistanceFunction (line 33) | public DistanceFn<Coordinate> getCoordinateDistanceFunction() {
    method setCoordinateDistanceFunction (line 37) | public void setCoordinateDistanceFunction(
    method measure (line 42) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/extract/CentroidExtractor.java
  type CentroidExtractor (line 18) | public interface CentroidExtractor<T> {
    method getCentroid (line 23) | public Point getCentroid(T anObject);

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/extract/DimensionExtractor.java
  type DimensionExtractor (line 18) | public interface DimensionExtractor<T> extends java.io.Serializable {
    method getDimensions (line 20) | public double[] getDimensions(T anObject);
    method getDimensionNames (line 26) | public String[] getDimensionNames();
    method getGeometry (line 32) | public Geometry getGeometry(T anObject);
    method getGroupID (line 38) | public String getGroupID(T anObject);

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/extract/EmptyDimensionExtractor.java
  class EmptyDimensionExtractor (line 13) | public abstract class EmptyDimensionExtractor<T> implements DimensionExt...
    method getDimensions (line 22) | @Override
    method getDimensionNames (line 27) | @Override
    method getGeometry (line 32) | @Override
    method getGroupID (line 35) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/extract/SimpleFeatureCentroidExtractor.java
  class SimpleFeatureCentroidExtractor (line 19) | public class SimpleFeatureCentroidExtractor implements CentroidExtractor...
    method getCentroid (line 20) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/extract/SimpleFeatureGeometryExtractor.java
  class SimpleFeatureGeometryExtractor (line 18) | public class SimpleFeatureGeometryExtractor extends EmptyDimensionExtrac...
    method getGeometry (line 26) | @Override
    method getSRID (line 34) | protected static int getSRID(final SimpleFeature geometryFeature) {
    method getFirst (line 47) | protected static final <T> ReferenceIdentifier getFirst(
    method getGroupID (line 62) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/extract/SimpleFeatureInteriorPointExtractor.java
  class SimpleFeatureInteriorPointExtractor (line 19) | public class SimpleFeatureInteriorPointExtractor extends SimpleFeatureCe...
    method getCentroid (line 21) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/extract/TimeDimensionExtractor.java
  class TimeDimensionExtractor (line 18) | public class TimeDimensionExtractor extends SimpleFeatureGeometryExtract...
    method getDimensions (line 26) | @Override
    method getDimensionNames (line 47) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/kmeans/AssociationNotification.java
  type AssociationNotification (line 19) | public interface AssociationNotification<T> {
    method notify (line 20) | public void notify(CentroidPairing<T> pairing);

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/kmeans/CentroidAssociationFn.java
  class CentroidAssociationFn (line 19) | public class CentroidAssociationFn<T> {
    method getDistanceFunction (line 22) | public DistanceFn<T> getDistanceFunction() {
    method setDistanceFunction (line 26) | public void setDistanceFunction(final DistanceFn<T> distanceFunction) {
    method compute (line 30) | public double compute(
    method compute (line 46) | public double compute(

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/kmeans/serial/AnalyticStats.java
  type AnalyticStats (line 11) | public interface AnalyticStats {
    type StatValue (line 12) | public static enum StatValue {
    method notify (line 16) | public void notify(StatValue stat, double amount);
    method reset (line 18) | public void reset();

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/kmeans/serial/KMeansParallelInitialize.java
  class KMeansParallelInitialize (line 22) | public class KMeansParallelInitialize<T> {
    method getCentroidAssociationFn (line 29) | public CentroidAssociationFn<T> getCentroidAssociationFn() {
    method setCentroidAssociationFn (line 33) | public void setCentroidAssociationFn(final CentroidAssociationFn<T> ce...
    method getPsi (line 37) | public double getPsi() {
    method setPsi (line 41) | public void setPsi(final double psi) {
    method getSampler (line 45) | public Sampler<T> getSampler() {
    method getCentroidFactory (line 49) | public AnalyticItemWrapperFactory<T> getCentroidFactory() {
    method setCentroidFactory (line 53) | public void setCentroidFactory(final AnalyticItemWrapperFactory<T> cen...
    method getStats (line 57) | public AnalyticStats getStats() {
    method runLocal (line 61) | public Pair<List<CentroidPairing<T>>, List<AnalyticItemWrapper<T>>> ru...

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/kmeans/serial/StatsMap.java
  class StatsMap (line 16) | public class StatsMap implements AnalyticStats {
    method notify (line 20) | @Override
    method getStats (line 30) | public List<Double> getStats(final StatValue stat) {
    method reset (line 34) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/kryo/FeatureSerializer.java
  class FeatureSerializer (line 25) | public class FeatureSerializer extends Serializer<SimpleFeature> {
    method read (line 28) | @Override
    method write (line 41) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/kryo/GridCoverageWritableSerializer.java
  class GridCoverageWritableSerializer (line 24) | public class GridCoverageWritableSerializer extends Serializer<GridCover...
    method read (line 27) | @Override
    method write (line 43) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/kryo/PersistableSerializer.java
  class PersistableSerializer (line 18) | public class PersistableSerializer extends Serializer<Persistable> {
    method read (line 20) | @Override
    method write (line 36) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/model/IndexModelBuilder.java
  type IndexModelBuilder (line 13) | public interface IndexModelBuilder extends java.io.Serializable {
    method buildModel (line 14) | public CommonIndexModel buildModel();

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/model/SpatialIndexModelBuilder.java
  class SpatialIndexModelBuilder (line 16) | public class SpatialIndexModelBuilder implements IndexModelBuilder {
    method buildModel (line 23) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/DefaultNeighborList.java
  class DefaultNeighborList (line 17) | public class DefaultNeighborList<NNTYPE> implements NeighborList<NNTYPE> {
    method add (line 20) | @Override
    method infer (line 32) | @Override
    method clear (line 40) | @Override
    method iterator (line 45) | @Override
    method size (line 50) | @Override
    class DefaultNeighborListFactory (line 55) | public static class DefaultNeighborListFactory<NNTYPE> implements Neig...
      method buildNeighborList (line 56) | @Override
    method isEmpty (line 62) | @Override
    method get (line 67) | public NNTYPE get(final ByteArray key) {

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/DistanceProfile.java
  class DistanceProfile (line 12) | public class DistanceProfile<CONTEXT_TYPE> {
    method DistanceProfile (line 16) | public DistanceProfile() {}
    method DistanceProfile (line 18) | public DistanceProfile(final double distance, final CONTEXT_TYPE conte...
    method getDistance (line 24) | public double getDistance() {
    method setDistance (line 28) | public void setDistance(final double distance) {
    method getContext (line 33) | public CONTEXT_TYPE getContext() {
    method setContext (line 37) | public void setContext(final CONTEXT_TYPE context) {
    method toString (line 41) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/DistanceProfileGenerateFn.java
  type DistanceProfileGenerateFn (line 11) | public interface DistanceProfileGenerateFn<CONTEXT, ITEM> {
    method computeProfile (line 15) | public DistanceProfile<CONTEXT> computeProfile(ITEM item1, ITEM item2);

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/NNProcessor.java
  class NNProcessor (line 51) | public class NNProcessor<PARTITION_VALUE, STORE_VALUE> {
    method NNProcessor (line 75) | public NNProcessor(
    method add (line 89) | private PartitionData add(final PartitionData pd, final ByteArray item...
    method remove (line 119) | public void remove(final ByteArray id) {
    method add (line 137) | public void add(final ByteArray id, final boolean isPrimary, final PAR...
    type CompleteNotifier (line 170) | public interface CompleteNotifier<STORE_VALUE> {
      method complete (line 171) | public void complete(ByteArray id, STORE_VALUE value, NeighborList<S...
    method size (line 175) | public int size() {
    method trimSmallPartitions (line 183) | public boolean trimSmallPartitions(final int size) {
    method process (line 203) | public void process(
    method getUpperBoundPerPartition (line 299) | public int getUpperBoundPerPartition() {
    method setUpperBoundPerPartition (line 303) | public void setUpperBoundPerPartition(final int upperBoundPerPartition) {

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/NeighborIndex.java
  class NeighborIndex (line 21) | public class NeighborIndex<NNTYPE> {
    method NeighborIndex (line 27) | public NeighborIndex(final NeighborListFactory<NNTYPE> listFactory) {
    method init (line 41) | public NeighborList<NNTYPE> init(final ByteArray id, final NNTYPE valu...
    method add (line 50) | public void add(
    method empty (line 63) | public void empty(final ByteArray id) {
    method addToList (line 67) | private void addToList(

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/NeighborList.java
  type NeighborList (line 14) | public interface NeighborList<NNTYPE> extends Iterable<Entry<ByteArray, ...
    type InferType (line 15) | public enum InferType {
    method add (line 24) | public boolean add(DistanceProfile<?> distanceProfile, ByteArray id, N...
    method infer (line 29) | public InferType infer(final ByteArray id, final NNTYPE value);
    method clear (line 32) | public void clear();
    method size (line 34) | public int size();
    method isEmpty (line 36) | public boolean isEmpty();

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/NeighborListFactory.java
  type NeighborListFactory (line 13) | public interface NeighborListFactory<NNTYPE> {
    method buildNeighborList (line 14) | public NeighborList<NNTYPE> buildNeighborList(ByteArray cnterId, NNTYP...

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/NullList.java
  class NullList (line 16) | public class NullList<NNTYPE> implements NeighborList<NNTYPE> {
    method add (line 18) | @Override
    method infer (line 26) | @Override
    method clear (line 31) | @Override
    method iterator (line 34) | @Override
    method size (line 39) | @Override
    method isEmpty (line 44) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/TypeConverter.java
  type TypeConverter (line 18) | public interface TypeConverter<TYPE> {
    method convert (line 19) | public TYPE convert(ByteArray id, Object o);

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/BasicParameterHelper.java
  class BasicParameterHelper (line 20) | public class BasicParameterHelper implements ParameterHelper<Object> {
    method BasicParameterHelper (line 30) | public BasicParameterHelper(
    method getBaseClass (line 42) | @Override
    method setValue (line 47) | @Override
    method setParameter (line 52) | private static final void setParameter(
    method getValue (line 89) | @Override
    method getValue (line 115) | @Override
    method setValue (line 125) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/CentroidParameters.java
  class CentroidParameters (line 14) | public class CentroidParameters {
    type Centroid (line 15) | public enum Centroid implements ParameterEnum {
      method Centroid (line 31) | private Centroid(
      method self (line 40) | @Override
      method getHelper (line 45) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/ClusteringParameters.java
  class ClusteringParameters (line 11) | public class ClusteringParameters {
    type Clustering (line 13) | public enum Clustering implements ParameterEnum {
      method Clustering (line 25) | private Clustering(
      method self (line 34) | @Override
      method getHelper (line 39) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/CommonParameters.java
  class CommonParameters (line 15) | public class CommonParameters {
    type Common (line 16) | public enum Common implements ParameterEnum {
      method Common (line 29) | Common(
      method self (line 38) | @Override
      method getHelper (line 43) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/ExtractParameters.java
  class ExtractParameters (line 14) | public class ExtractParameters {
    type Extract (line 15) | public enum Extract implements ParameterEnum {
      method Extract (line 29) | private Extract(
      method self (line 38) | @Override
      method getHelper (line 43) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/FormatConfiguration.java
  type FormatConfiguration (line 15) | public interface FormatConfiguration {
    method setup (line 17) | public void setup(PropertyManagement runTimeProperties, Configuration ...
    method getFormatClass (line 20) | public Class<?> getFormatClass();
    method isDataWritable (line 27) | public boolean isDataWritable();
    method setDataIsWritable (line 29) | public void setDataIsWritable(boolean isWritable);
    method getParameters (line 31) | public Collection<ParameterEnum<?>> getParameters();

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/GlobalParameters.java
  class GlobalParameters (line 11) | public class GlobalParameters {
    type Global (line 12) | public enum Global implements ParameterEnum<Object> {
      method Global (line 19) | private Global(
      method self (line 27) | @Override
      method getHelper (line 32) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/GroupParameterEnum.java
  type GroupParameterEnum (line 14) | public interface GroupParameterEnum extends ParameterEnum {
    method fillOptions (line 15) | public void fillOptions(Set<Option> options);

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/HullParameters.java
  class HullParameters (line 15) | public class HullParameters {
    type Hull (line 16) | public enum Hull implements ParameterEnum {
      method Hull (line 36) | private Hull(
      method self (line 45) | @Override
      method getHelper (line 50) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/InputParameters.java
  class InputParameters (line 13) | public class InputParameters {
    type Input (line 14) | public enum Input implements ParameterEnum<Object> {
      method Input (line 20) | private Input(
      method self (line 29) | @Override
      method getHelper (line 34) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/InputStoreParameterHelper.java
  class InputStoreParameterHelper (line 20) | public class InputStoreParameterHelper implements ParameterHelper<Persis...
    method getBaseClass (line 26) | @Override
    method setValue (line 31) | @Override
    method getValue (line 40) | @Override
    method getValue (line 53) | @Override
    method setValue (line 64) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/JumpParameters.java
  class JumpParameters (line 13) | public class JumpParameters {
    type Jump (line 14) | public enum Jump implements ParameterEnum {
      method Jump (line 23) | private Jump(
      method self (line 31) | @Override
      method getHelper (line 36) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/MapReduceParameters.java
  class MapReduceParameters (line 14) | public class MapReduceParameters {
    type MRConfig (line 16) | public enum MRConfig implements ParameterEnum {
      method MRConfig (line 29) | private MRConfig(
      method self (line 37) | @Override
      method getHelper (line 42) | @Override
    method getParameters (line 48) | public static final Collection<ParameterEnum<?>> getParameters() {

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/OutputParameters.java
  class OutputParameters (line 13) | public class OutputParameters {
    type Output (line 14) | public enum Output implements ParameterEnum<Object> {
      method Output (line 27) | private Output(
      method self (line 36) | @Override
      method getHelper (line 41) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/OutputStoreParameterHelper.java
  class OutputStoreParameterHelper (line 20) | public class OutputStoreParameterHelper implements ParameterHelper<Persi...
    method getBaseClass (line 26) | @Override
    method setValue (line 31) | @Override
    method getValue (line 40) | @Override
    method getValue (line 53) | @Override
    method setValue (line 64) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/ParameterEnum.java
  type ParameterEnum (line 13) | public interface ParameterEnum<T> extends Serializable {
    method getHelper (line 14) | public ParameterHelper<T> getHelper();
    method self (line 16) | public Enum<?> self();

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/ParameterHelper.java
  type ParameterHelper (line 16) | public interface ParameterHelper<T> extends Serializable {
    method getBaseClass (line 17) | public Class<T> getBaseClass();
    method getValue (line 19) | public T getValue(PropertyManagement propertyManagement);
    method setValue (line 21) | public void setValue(PropertyManagement propertyManagement, T value);
    method setValue (line 23) | public void setValue(Configuration config, Class<?> scope, T value);
    method getValue (line 25) | public T getValue(JobContext context, Class<?> scope, T defaultValue);

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/PartitionParameters.java
  class PartitionParameters (line 13) | public class PartitionParameters {
    type Partition (line 14) | public enum Partition implements ParameterEnum {
      method Partition (line 32) | private Partition(
      method self (line 41) | @Override
      method getHelper (line 46) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/SampleParameters.java
  class SampleParameters (line 14) | public class SampleParameters {
    type Sample (line 15) | public enum Sample implements ParameterEnum {
      method Sample (line 30) | private Sample(
      method self (line 39) | @Override
      method getHelper (line 44) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/param/StoreParameters.java
  class StoreParameters (line 11) | public class StoreParameters {
    type StoreParam (line 12) | public enum StoreParam implements ParameterEnum {
      method StoreParam (line 17) | private StoreParam(final ParameterHelper<?> helper) {
      method self (line 21) | @Override
      method getHelper (line 26) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/partitioner/AbstractPartitioner.java
  class AbstractPartitioner (line 48) | public abstract class AbstractPartitioner<T> implements Partitioner<T> {
    method AbstractPartitioner (line 56) | public AbstractPartitioner() {}
    method AbstractPartitioner (line 58) | public AbstractPartitioner(
    method AbstractPartitioner (line 66) | public AbstractPartitioner(final double[] distancePerDimension) {
    method getDistancePerDimension (line 71) | protected double[] getDistancePerDimension() {
    method getIndex (line 75) | protected Index getIndex() {
    method getCubeIdentifiers (line 79) | @Override
    method partition (line 101) | @Override
    class NumericDataHolder (line 134) | protected static class NumericDataHolder {
    method getNumericData (line 139) | protected abstract NumericDataHolder getNumericData(final T entry);
    method getRangesForPartition (line 141) | public MultiDimensionalNumericData getRangesForPartition(final Partiti...
    method addPartitions (line 147) | protected void addPartitions(
    method getDistances (line 162) | private static double[] getDistances(final ScopedJobConfiguration conf...
    method initialize (line 177) | @Override
    method initialize (line 182) | public void initialize(final ScopedJobConfiguration config) throws IOE...
    method setup (line 217) | @Override
    method initIndex (line 230) | protected void initIndex(
    method getParameters (line 269) | @Override
    method writeObject (line 278) | private void writeObject(final ObjectOutputStream stream) throws IOExc...
    method readObject (line 289) | private void readObject(final java.io.ObjectInputStream stream)
    method hashCode (line 301) | @Override
    method equals (line 313) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/partitioner/BoundaryPartitioner.java
  class BoundaryPartitioner (line 27) | public class BoundaryPartitioner extends OrthodromicDistancePartitioner<...
    method BoundaryPartitioner (line 34) | public BoundaryPartitioner() {
    method BoundaryPartitioner (line 38) | public BoundaryPartitioner(
    class EchoExtractor (line 47) | private static class EchoExtractor extends EmptyDimensionExtractor<Obj...
      method getGeometry (line 53) | @Override
      method getGroupID (line 58) | @Override
    method getCubeIdentifiers (line 64) | @Override
    method partition (line 81) | @Override
    method initialize (line 97) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/partitioner/OrthodromicDistancePartitioner.java
  class OrthodromicDistancePartitioner (line 61) | public class OrthodromicDistancePartitioner<T> extends AbstractPartition...
    method OrthodromicDistancePartitioner (line 78) | public OrthodromicDistancePartitioner() {}
    method OrthodromicDistancePartitioner (line 80) | public OrthodromicDistancePartitioner(
    method getNumericData (line 94) | @Override
    method getNumericData (line 112) | private MultiDimensionalNumericData getNumericData(
    method findLongitude (line 137) | private static int findLongitude(final CommonIndexModel indexModel) {
    method findLatitude (line 141) | private static int findLatitude(final CommonIndexModel indexModel) {
    method indexOf (line 145) | private static int indexOf(
    method getGeometries (line 157) | private List<Geometry> getGeometries(
    method getCalculator (line 168) | private GeometryCalculations getCalculator() {
    method initIndex (line 185) | @Override
    method initialize (line 207) | @Override
    method initialize (line 212) | public void initialize(final Configuration configuration, final Class<...
    method initialize (line 217) | @Override
    method getParameters (line 247) | @Override
    method setup (line 259) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/partitioner/Partitioner.java
  type Partitioner (line 38) | public interface Partitioner<T> extends Serializable {
    method initialize (line 40) | public void initialize(final JobContext context, final Class<?> scope)...
    method getCubeIdentifiers (line 42) | public List<PartitionData> getCubeIdentifiers(final T entry);
    method partition (line 44) | public void partition(T entry, PartitionDataCallback callback) throws ...
    method getParameters (line 46) | public Collection<ParameterEnum<?>> getParameters();
    method setup (line 48) | public void setup(
    type PartitionDataCallback (line 53) | public static interface PartitionDataCallback {
      method partitionWith (line 54) | void partitionWith(PartitionData data) throws Exception;
    class PartitionData (line 62) | public static class PartitionData implements Serializable, Writable {
      method getPartitionKey (line 71) | public ByteArray getPartitionKey() {
      method getSortKey (line 75) | public ByteArray getSortKey() {
      method getCompositeKey (line 79) | public ByteArray getCompositeKey() {
      method getGroupId (line 84) | public ByteArray getGroupId() {
      method setGroupId (line 88) | public void setGroupId(final ByteArray groupId) {
      method isPrimary (line 92) | public boolean isPrimary() {
      method PartitionData (line 96) | public PartitionData() {}
      method PartitionData (line 98) | public PartitionData(
      method toString (line 108) | @Override
      method hashCode (line 121) | @Override
      method equals (line 130) | @Override
      method readFields (line 159) | @Override
      method write (line 180) | @Override
      method setPrimary (line 199) | public void setPrimary(final boolean isPrimary) {

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/sample/BahmanEtAlSampleProbabilityFn.java
  class BahmanEtAlSampleProbabilityFn (line 18) | public class BahmanEtAlSampleProbabilityFn implements SampleProbabilityFn {
    method getProbability (line 20) | @Override
    method requiresConstant (line 28) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/sample/RandomProbabilitySampleFn.java
  class RandomProbabilitySampleFn (line 13) | public class RandomProbabilitySampleFn implements SampleProbabilityFn {
    method getProbability (line 16) | @Override
    method requiresConstant (line 27) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/sample/SampleNotification.java
  type SampleNotification (line 11) | public interface SampleNotification<T> {
    method notify (line 12) | public void notify(T item, boolean partial);

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/sample/SampleProbabilityFn.java
  type SampleProbabilityFn (line 11) | public interface SampleProbabilityFn {
    method requiresConstant (line 12) | public boolean requiresConstant();
    method getProbability (line 14) | public double getProbability(double weight, double normalizingConstant...

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/sample/Sampler.java
  class Sampler (line 16) | public class Sampler<T> {
    method getSampleProbabilityFn (line 21) | public SampleProbabilityFn getSampleProbabilityFn() {
    method setSampleProbabilityFn (line 25) | public void setSampleProbabilityFn(final SampleProbabilityFn samplePro...
    method getSampleSize (line 29) | public int getSampleSize() {
    method setSampleSize (line 33) | public void setSampleSize(final int sampleSize) {
    method getPutLimit (line 37) | public int getPutLimit() {
    method setPutLimit (line 41) | public void setPutLimit(final int putLimit) {
    method sample (line 45) | public void sample(
    method notifyAll (line 78) | private void notifyAll(

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/sample/function/CentroidDistanceBasedSamplingRankFunction.java
  class CentroidDistanceBasedSamplingRankFunction (line 60) | public class CentroidDistanceBasedSamplingRankFunction<T> implements Sam...
    method setParameters (line 70) | public static void setParameters(
    method initialize (line 83) | @SuppressWarnings("unchecked")
    method rank (line 120) | @Override
    method getNormalizingConstant (line 148) | private double getNormalizingConstant(

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/sample/function/RandomSamplingRankFunction.java
  class RandomSamplingRankFunction (line 21) | public class RandomSamplingRankFunction<T> implements SamplingRankFuncti...
    method initialize (line 24) | @Override
    method rank (line 28) | @Override

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/sample/function/SamplingRankFunction.java
  type SamplingRankFunction (line 19) | public interface SamplingRankFunction<T> {
    method initialize (line 20) | public void initialize(final JobContext context, Class<?> scope, Logge...
    method rank (line 23) | public double rank(final int sampleSize, T value);

FILE: analytics/api/src/main/java/org/locationtech/geowave/analytic/store/PersistableStore.java
  class PersistableStore (line 20) | public class PersistableStore implements Persistable {
    method PersistableStore (line 25) | public PersistableStore() {}
    method PersistableStore (line 27) | public PersistableStore(final DataStorePluginOptions options) {
    method getDataStoreOptions (line 31) | public DataStorePluginOptions getDataStoreOptions() {
    method toBinary (line 35) | @Override
    method fromBinary (line 67) | @Override

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/AnalyticFeatureTest.java
  class AnalyticFeatureTest (line 31) | public class AnalyticFeatureTest {
    method testGeometryCreation (line 32) | @Test

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/GeometryCalculationsTest.java
  class GeometryCalculationsTest (line 26) | public class GeometryCalculationsTest {
    method test (line 28) | @Test

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/GeometryDataSetGeneratorTest.java
  class GeometryDataSetGeneratorTest (line 20) | public class GeometryDataSetGeneratorTest {
    method getBuilder (line 22) | private SimpleFeatureBuilder getBuilder() {
    method test (line 36) | @Test

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/GeometryGenerator.java
  class GeometryGenerator (line 19) | public class GeometryGenerator {
    type DistortationFn (line 20) | public static interface DistortationFn {
      method distort (line 21) | double distort();
    method generate (line 32) | public static Iterator<Geometry> generate(

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/GeometryHullToolTest.java
  class GeometryHullToolTest (line 35) | public class GeometryHullToolTest {
    method testDistance (line 41) | @Test
    method testAngles (line 96) | @Test
    method testConcaveHullBulkTest (line 197) | @Test
    method pickOneAndAugmentOne (line 225) | private Coordinate pickOneAndAugmentOne(final Coordinate[] list) {
    method testLRPolygons (line 257) | @Test
    method testRLPolygons (line 271) | @Test
    method testRandomConnect (line 287) | public void testRandomConnect() throws IOException {
    method reversed (line 342) | private Coordinate[] reversed(final Coordinate[] poly) {
    method interesectEdges (line 350) | @Test
    method testRLSamePolygons (line 362) | @Test
    method testPolygonConnection (line 378) | @Test
    method getHull (line 415) | private Geometry getHull(
    method writeToShapeFile (line 456) | private static void writeToShapeFile(final String name, final Geometry...
    method coversPoints (line 466) | private static boolean coversPoints(final Geometry coverer, final Geom...
    method testCreateHullFromGeometry (line 475) | @Test

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/PropertyManagementTest.java
  class PropertyManagementTest (line 37) | public class PropertyManagementTest {
    method testBulk (line 40) | @Test
    method testInt (line 49) | @Test
    method testClass (line 60) | @Test
    method testClassFailure (line 81) | @Test(expected = IllegalArgumentException.class)
    method testQuery (line 91) | @Test
    method testPath (line 125) | @Test
    class NonSerializableExample (line 136) | public static class NonSerializableExample {
    type MyLocalNSEnum (line 140) | enum MyLocalNSEnum implements ParameterEnum {
      method self (line 143) | @Override
      method getHelper (line 148) | @Override
    method testOtherConverter (line 187) | @Test
    method testStore (line 219) | @Test
    type MyLocalBoolEnum (line 246) | enum MyLocalBoolEnum implements ParameterEnum {
      method MyLocalBoolEnum (line 252) | MyLocalBoolEnum(
      method self (line 260) | @Override
      method getHelper (line 265) | @Override
    method testStoreWithEmbedded (line 271) | @Test

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/SerializableAdapterStoreTest.java
  class SerializableAdapterStoreTest (line 28) | public class SerializableAdapterStoreTest {
    method testSerialization (line 29) | @Test
    method checkSerialization (line 46) | private SerializableAdapterStore checkSerialization(final Serializable...

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/SimpleFeatureCentroidExractorTest.java
  class SimpleFeatureCentroidExractorTest (line 26) | public class SimpleFeatureCentroidExractorTest {
    method test (line 30) | @Test

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/clustering/CentroidManagerTest.java
  class CentroidManagerTest (line 40) | public class CentroidManagerTest {
    method ingest (line 44) | private void ingest(
    method testSampleRecall (line 55) | @Test

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/clustering/DistortionGroupManagementTest.java
  class DistortionGroupManagementTest (line 40) | public class DistortionGroupManagementTest {
    method ingest (line 51) | private <T> void ingest(final DataTypeAdapter<T> adapter, final Index ...
    method DistortionGroupManagementTest (line 60) | public DistortionGroupManagementTest() throws IOException {
    method addDistortion (line 78) | private void addDistortion(
    method setup (line 89) | @Before
    method test (line 312) | @Test

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/clustering/NestedGroupCentroidAssignmentTest.java
  class NestedGroupCentroidAssignmentTest (line 41) | public class NestedGroupCentroidAssignmentTest {
    method ingest (line 46) | private <T> void ingest(
    method test (line 57) | @Test

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/distance/CoordinateCircleDistanceFnTest.java
  class CoordinateCircleDistanceFnTest (line 16) | public class CoordinateCircleDistanceFnTest {
    method test (line 18) | @Test

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/distance/FeatureDistanceFnTest.java
  class FeatureDistanceFnTest (line 24) | public class FeatureDistanceFnTest {
    method setup (line 30) | @Before
    method testPoint (line 40) | @Test
    method testPointWithPoly (line 47) | @Test
    method testPolyWithPoly (line 62) | @Test
    method testIntersectingPoly (line 85) | @Test
    method testBounds (line 126) | private void testBounds(final double distance, final double lower, fin...
    method createFeature (line 130) | private SimpleFeature createFeature(final Geometry geometry) {

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/kmeans/CentroidAssociationFnTest.java
  class CentroidAssociationFnTest (line 22) | public class CentroidAssociationFnTest {
    method test (line 41) | @Test

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/kmeans/KMeansParallelInitializeTest.java
  class KMeansParallelInitializeTest (line 35) | public class KMeansParallelInitializeTest {
    method setup (line 39) | @Before
    method getBuilder (line 48) | private SimpleFeatureBuilder getBuilder() {
    method test (line 62) | @Test
    method isMonotonic (line 101) | private boolean isMonotonic(final StatsMap stats) {

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/kryo/FeatureSerializationTest.java
  class FeatureSerializationTest (line 30) | public class FeatureSerializationTest {
    method test (line 32) | @Test

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/nn/NNProcessorTest.java
  class NNProcessorTest (line 35) | public class NNProcessorTest {
    method setupResults (line 38) | @Before
    method buildProcessor (line 50) | NNProcessor<Integer, Integer> buildProcessor() {
    method testNormalOp (line 103) | @Test
    method testRemoveOp (line 125) | @Test
    method testTrimOp (line 140) | @Test
    method runProcess (line 172) | private void runProcess(
    method partition (line 196) | private static ByteArray partition(final Integer v) {
    method addToProcess (line 200) | private void addToProcess(final NNProcessor<Integer, Integer> processo...

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/partitioner/BoundaryDistancePartitionerTest.java
  class BoundaryDistancePartitionerTest (line 38) | public class BoundaryDistancePartitionerTest {
    method test (line 49) | @Test
    method hasNPrimary (line 150) | private boolean hasNPrimary(final List<PartitionData> data, final int ...

FILE: analytics/api/src/test/java/org/locationtech/geowave/analytic/partitioner/OrthodromicDistancePartitionerTest.java
  class OrthodromicDistancePartitionerTest (line 42) | public class OrthodromicDistancePartitionerTest {
    method test (line 53) | @Test
    method hasOnePrimary (line 180) | private boolean hasOnePrimary(final List<PartitionData> data) {

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/CountofDoubleWritable.java
  class CountofDoubleWritable (line 23) | public class CountofDoubleWritable implements Writable, WritableComparab...
    method CountofDoubleWritable (line 28) | public CountofDoubleWritable() {}
    method CountofDoubleWritable (line 30) | public CountofDoubleWritable(final double value, final double count) {
    method readFields (line 34) | @Override
    method write (line 40) | @Override
    method set (line 46) | public void set(final double value, final double count) {
    method getValue (line 51) | public double getValue() {
    method getCount (line 55) | public double getCount() {
    method equals (line 60) | @Override
    method hashCode (line 68) | @Override
    method compareTo (line 73) | @Override
    method toString (line 80) | @Override
    class Comparator (line 86) | public static class Comparator extends WritableComparator implements S...
      method Comparator (line 90) | public Comparator() {
      method compare (line 94) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/DoubleOutputFormat.java
  class DoubleOutputFormat (line 23) | public class DoubleOutputFormat<K, V> extends FileOutputFormat<K, V> {
    class DoubleRecordWriter (line 24) | protected static class DoubleRecordWriter<K, V> extends RecordWriter<K...
      method DoubleRecordWriter (line 27) | public DoubleRecordWriter(final DataOutputStream out) {
      method write (line 32) | @Override
      method close (line 39) | @Override
    method getRecordWriter (line 45) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/GeoWaveAnalyticJobRunner.java
  class GeoWaveAnalyticJobRunner (line 57) | public abstract class GeoWaveAnalyticJobRunner extends Configured implem...
    method getInputFormatConfiguration (line 70) | public FormatConfiguration getInputFormatConfiguration() {
    method setInputFormatConfiguration (line 74) | public void setInputFormatConfiguration(final FormatConfiguration inpu...
    method getOutputFormatConfiguration (line 78) | public FormatConfiguration getOutputFormatConfiguration() {
    method setOutputFormatConfiguration (line 82) | public void setOutputFormatConfiguration(final FormatConfiguration out...
    method getMapReduceIntegrater (line 86) | public MapReduceIntegration getMapReduceIntegrater() {
    method setMapReduceIntegrater (line 90) | public void setMapReduceIntegrater(final MapReduceIntegration mapReduc...
    method getReducerCount (line 94) | public int getReducerCount() {
    method setReducerCount (line 98) | public void setReducerCount(final int reducerCount) {
    method GeoWaveAnalyticJobRunner (line 102) | public GeoWaveAnalyticJobRunner() {}
    method getLogger (line 104) | protected static Logger getLogger() {
    method getScope (line 108) | public Class<?> getScope() {
    method getDataStore (line 112) | public DataStore getDataStore(final PropertyManagement runTimeProperti...
    method getAdapterStore (line 119) | public PersistentAdapterStore getAdapterStore(final PropertyManagement...
    method getInternalAdapterStore (line 127) | public InternalAdapterStore getInternalAdapterStore(final PropertyMana...
    method getIndexStore (line 135) | public IndexStore getIndexStore(final PropertyManagement runTimeProper...
    method run (line 142) | @Override
    method addDataAdapter (line 190) | public static void addDataAdapter(
    method addIndex (line 200) | public static void addIndex(final Configuration config, final Index in...
    method run (line 204) | @SuppressWarnings("rawtypes")
    method getJobName (line 244) | protected abstract String getJobName();
    method getCounterValue (line 246) | public long getCounterValue(final Enum<?> counterEnum) {
    method configure (line 250) | public abstract void configure(final Job job) throws Exception;
    method getParameters (line 252) | @Override
    method run (line 270) | @Override
    method getAdapter (line 275) | protected InternalDataAdapter<?> getAdapter(
    method checkIndex (line 306) | protected String checkIndex(

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/GeoWaveInputFormatConfiguration.java
  class GeoWaveInputFormatConfiguration (line 27) | public class GeoWaveInputFormatConfiguration implements FormatConfigurat...
    method GeoWaveInputFormatConfiguration (line 33) | public GeoWaveInputFormatConfiguration() {}
    method setup (line 35) | @Override
    method addDataAdapter (line 84) | public void addDataAdapter(final DataTypeAdapter<?> adapter) {
    method addIndex (line 88) | public void addIndex(final Index index) {
    method getFormatClass (line 92) | @Override
    method isDataWritable (line 97) | @Override
    method setDataIsWritable (line 102) | @Override
    method getParameters (line 107) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/GeoWaveOutputFormatConfiguration.java
  class GeoWaveOutputFormatConfiguration (line 22) | public class GeoWaveOutputFormatConfiguration implements FormatConfigura...
    method setup (line 26) | @Override
    method getFormatClass (line 35) | @Override
    method isDataWritable (line 40) | @Override
    method setDataIsWritable (line 45) | @Override
    method getParameters (line 50) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/GroupIDText.java
  class GroupIDText (line 13) | public class GroupIDText extends Text {
    method set (line 15) | public void set(final String groupID, final String id) {
    method getGroupID (line 19) | public String getGroupID() {
    method getID (line 25) | public String getID() {

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/HadoopOptions.java
  class HadoopOptions (line 27) | public class HadoopOptions {
    method HadoopOptions (line 34) | public HadoopOptions(final PropertyManagement runTimeProperties) throw...
    method HadoopOptions (line 74) | public HadoopOptions(
    method getHdfsHostPort (line 83) | public String getHdfsHostPort() {
    method getBasePath (line 87) | public Path getBasePath() {
    method getJobTrackerOrResourceManagerHostPort (line 91) | public String getJobTrackerOrResourceManagerHostPort() {
    method getConfiguration (line 95) | public Configuration getConfiguration() {

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/MapReduceIntegration.java
  type MapReduceIntegration (line 18) | public interface MapReduceIntegration {
    method submit (line 19) | public int submit(
    method waitForCompletion (line 24) | public Counters waitForCompletion(Job job) throws InterruptedException...
    method getJob (line 26) | public Job getJob(Tool tool) throws IOException;
    method getConfiguration (line 28) | public Configuration getConfiguration(final PropertyManagement runTime...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/MapReduceJobController.java
  class MapReduceJobController (line 29) | public class MapReduceJobController implements MapReduceJobRunner, Indep...
    method MapReduceJobController (line 36) | public MapReduceJobController() {}
    method init (line 38) | protected void init(final MapReduceJobRunner[] runners, final PostOper...
    method getRunners (line 43) | public MapReduceJobRunner[] getRunners() {
    type PostOperationTask (line 47) | public static interface PostOperationTask {
      method runTask (line 48) | public void runTask(Configuration config, MapReduceJobRunner runner);
    method runTask (line 52) | @Override
    method run (line 56) | @Override
    method getParameters (line 75) | @Override
    method run (line 89) | @Override
    method getConfiguration (line 94) | public static Configuration getConfiguration(final PropertyManagement ...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/MapReduceJobRunner.java
  type MapReduceJobRunner (line 14) | public interface MapReduceJobRunner {
    method run (line 15) | public int run(final Configuration config, final PropertyManagement ru...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/SequenceFileInputFormatConfiguration.java
  class SequenceFileInputFormatConfiguration (line 21) | public class SequenceFileInputFormatConfiguration implements FormatConfi...
    method SequenceFileInputFormatConfiguration (line 25) | public SequenceFileInputFormatConfiguration() {
    method SequenceFileInputFormatConfiguration (line 29) | public SequenceFileInputFormatConfiguration(final Path inputPath) {
    method setup (line 33) | @Override
    method getFormatClass (line 45) | @Override
    method isDataWritable (line 50) | @Override
    method setDataIsWritable (line 55) | @Override
    method getParameters (line 58) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/SequenceFileOutputFormatConfiguration.java
  class SequenceFileOutputFormatConfiguration (line 21) | public class SequenceFileOutputFormatConfiguration implements FormatConf...
    method SequenceFileOutputFormatConfiguration (line 25) | public SequenceFileOutputFormatConfiguration() {
    method SequenceFileOutputFormatConfiguration (line 29) | public SequenceFileOutputFormatConfiguration(final Path outputPath) {
    method setup (line 33) | @Override
    method getFormatClass (line 46) | @Override
    method isDataWritable (line 51) | @Override
    method setDataIsWritable (line 56) | @Override
    method getParameters (line 59) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/ToolRunnerMapReduceIntegration.java
  class ToolRunnerMapReduceIntegration (line 19) | public class ToolRunnerMapReduceIntegration implements MapReduceIntegrat...
    method getJob (line 21) | @Override
    method submit (line 26) | @Override
    method waitForCompletion (line 34) | @Override
    method getConfiguration (line 41) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/ConvexHullMapReduce.java
  class ConvexHullMapReduce (line 64) | public class ConvexHullMapReduce {
    class ConvexHullMap (line 67) | public static class ConvexHullMap<T> extends
      method mapWritableValue (line 76) | @Override
      method mapNativeValue (line 91) | @Override
      method setup (line 108) | @SuppressWarnings("unchecked")
    class ConvexHullReducer (line 148) | public static class ConvexHullReducer<T> extends
      method reduceNativeValues (line 163) | @Override
      method compress (line 222) | private static <T> Geometry compress(
      method setup (line 240) | @SuppressWarnings("unchecked")

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/GroupAssignmentMapReduce.java
  class GroupAssignmentMapReduce (line 54) | public class GroupAssignmentMapReduce {
    class GroupAssignmentMapper (line 58) | public static class GroupAssignmentMapper extends
      method mapNativeValue (line 68) | @Override
      method cleanup (line 107) | @Override
      method setup (line 117) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/InputToOutputKeyReducer.java
  class InputToOutputKeyReducer (line 25) | public class InputToOutputKeyReducer extends GeoWaveWritableInputReducer...
    method reduceNativeValues (line 31) | @Override
    method setup (line 43) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/SimpleFeatureOutputReducer.java
  class SimpleFeatureOutputReducer (line 58) | public class SimpleFeatureOutputReducer extends GeoWaveReducer {
    method reduceNativeValues (line 67) | @Override
    method getSimpleFeature (line 88) | private SimpleFeature getSimpleFeature(final GeoWaveInputKey key, fina...
    method setup (line 111) | @SuppressWarnings("unchecked")

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/AnalyticJobRunner.java
  class AnalyticJobRunner (line 17) | public abstract class AnalyticJobRunner extends Configured implements To...
    method runJob (line 18) | @SuppressWarnings("deprecation")
    method configure (line 31) | protected abstract void configure(Job job) throws Exception;
    method run (line 33) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/ClusteringRunner.java
  type ClusteringRunner (line 15) | public interface ClusteringRunner extends MapReduceJobRunner, Independen...
    method setInputFormatConfiguration (line 16) | public void setInputFormatConfiguration(FormatConfiguration formatConf...
    method setZoomLevel (line 18) | public void setZoomLevel(int zoomLevel);

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/ConvexHullJobRunner.java
  class ConvexHullJobRunner (line 37) | public class ConvexHullJobRunner extends GeoWaveAnalyticJobRunner {
    method ConvexHullJobRunner (line 41) | public ConvexHullJobRunner() {
    method setZoomLevel (line 45) | public void setZoomLevel(final int zoomLevel) {
    method configure (line 49) | @Override
    method getScope (line 60) | @Override
    method run (line 65) | @Override
    method getParameters (line 105) | @Override
    method getJobName (line 132) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/GeoWaveAnalyticExtractJobRunner.java
  class GeoWaveAnalyticExtractJobRunner (line 51) | public class GeoWaveAnalyticExtractJobRunner extends GeoWaveDedupeJobRun...
    method GeoWaveAnalyticExtractJobRunner (line 58) | public GeoWaveAnalyticExtractJobRunner() {
    method getNumReduceTasks (line 62) | @Override
    method getHdfsOutputBase (line 67) | @Override
    method configure (line 72) | @Override
    method createAdapter (line 112) | private FeatureDataAdapter createAdapter(
    method getHdfsOutputPath (line 125) | @Override
    method getReducer (line 130) | @Override
    method run (line 136) | @Override
    method getParameters (line 240) | @Override
    method run (line 260) | @Override
    method runOperation (line 265) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/GeoWaveInputLoadJobRunner.java
  class GeoWaveInputLoadJobRunner (line 38) | public class GeoWaveInputLoadJobRunner extends GeoWaveAnalyticJobRunner ...
    method GeoWaveInputLoadJobRunner (line 41) | public GeoWaveInputLoadJobRunner() {
    method configure (line 47) | @Override
    method getScope (line 62) | @Override
    method run (line 67) | @Override
    method getParameters (line 99) | @Override
    method getJobName (line 112) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/GroupAssigmentJobRunner.java
  class GroupAssigmentJobRunner (line 36) | public class GroupAssigmentJobRunner extends GeoWaveAnalyticJobRunner {
    method GroupAssigmentJobRunner (line 39) | public GroupAssigmentJobRunner() {
    method setZoomLevel (line 43) | public void setZoomLevel(final int zoomLevel) {
    method configure (line 47) | @Override
    method getScope (line 57) | @Override
    method run (line 62) | @Override
    method getParameters (line 89) | @Override
    method getJobName (line 106) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/MultiLevelClusteringJobRunner.java
  class MultiLevelClusteringJobRunner (line 50) | public abstract class MultiLevelClusteringJobRunner extends MapReduceJob...
    method MultiLevelClusteringJobRunner (line 57) | public MultiLevelClusteringJobRunner() {
    method getClusteringRunner (line 61) | protected abstract ClusteringRunner getClusteringRunner();
    method getParameters (line 63) | @Override
    method run (line 78) | @Override
    method runJob (line 84) | private int runJob(final Configuration config, final PropertyManagemen...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/MultiLevelJumpKMeansClusteringJobRunner.java
  class MultiLevelJumpKMeansClusteringJobRunner (line 14) | public class MultiLevelJumpKMeansClusteringJobRunner extends MultiLevelC...
    method getClusteringRunner (line 16) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/MultiLevelKMeansClusteringJobRunner.java
  class MultiLevelKMeansClusteringJobRunner (line 14) | public class MultiLevelKMeansClusteringJobRunner extends MultiLevelClust...
    method getClusteringRunner (line 16) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/Cluster.java
  type Cluster (line 16) | public interface Cluster extends NeighborList<ClusterItem> {
    method merge (line 17) | public void merge(Cluster cluster);
    method getId (line 19) | public ByteArray getId();
    method getLinkedClusters (line 24) | public Set<ByteArray> getLinkedClusters();
    method currentLinkSetSize (line 26) | public int currentLinkSetSize();
    method invalidate (line 28) | public void invalidate();
    method finish (line 30) | public void finish();
    method isCompressed (line 32) | public boolean isCompressed();
    method getGeometry (line 34) | public Geometry getGeometry();

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/ClusterItem.java
  class ClusterItem (line 14) | public class ClusterItem {
    method ClusterItem (line 20) | public ClusterItem(
    method setCompressed (line 32) | public void setCompressed() {
    method isCompressed (line 36) | protected boolean isCompressed() {
    method getId (line 40) | protected String getId() {
    method getGeometry (line 44) | protected Geometry getGeometry() {
    method getCount (line 48) | protected long getCount() {
    method hashCode (line 52) | @Override
    method equals (line 60) | @Override
    method toString (line 82) | @Override
    method setGeometry (line 87) | public void setGeometry(final Geometry geometry) {
    method setCount (line 91) | public void setCount(final long count) {

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/ClusterItemDistanceFn.java
  class ClusterItemDistanceFn (line 22) | public class ClusterItemDistanceFn implements
    method initialValue (line 34) | @Override
    method ClusterItemDistanceFn (line 40) | public ClusterItemDistanceFn() {}
    method ClusterItemDistanceFn (line 42) | public ClusterItemDistanceFn(final DistanceFn<Coordinate> coordinateDi...
    method getCoordinateDistanceFunction (line 47) | public DistanceFn<Coordinate> getCoordinateDistanceFunction() {
    method setCoordinateDistanceFunction (line 51) | public void setCoordinateDistanceFunction(
    method measure (line 56) | @Override
    method computeProfile (line 69) | @Override
    class ClusterProfileContext (line 93) | public static class ClusterProfileContext {
      method getPoint1 (line 99) | public Coordinate getPoint1() {
      method setPoint1 (line 103) | public void setPoint1(final Coordinate point1) {
      method getItem1 (line 107) | public ClusterItem getItem1() {
      method setItem1 (line 111) | public void setItem1(final ClusterItem item1) {
      method getPoint2 (line 115) | public Coordinate getPoint2() {
      method setPoint2 (line 119) | public void setPoint2(final Coordinate point2) {
      method getItem2 (line 123) | public ClusterItem getItem2() {
      method setItem2 (line 127) | public void setItem2(final ClusterItem item2) {

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/ClusterNeighborList.java
  class ClusterNeighborList (line 19) | public class ClusterNeighborList implements NeighborList<ClusterItem> {
    method ClusterNeighborList (line 24) | public ClusterNeighborList(
    method getCluster (line 40) | public Cluster getCluster() {
    method iterator (line 44) | @Override
    method add (line 49) | @Override
    method infer (line 62) | @Override
    method clear (line 67) | @Override
    method size (line 72) | @Override
    method isEmpty (line 77) | @Override
    class ClusterNeighborListFactory (line 82) | public static class ClusterNeighborListFactory implements NeighborList...
      method ClusterNeighborListFactory (line 86) | public ClusterNeighborListFactory(
      method getIndex (line 94) | public Map<ByteArray, Cluster> getIndex() {
      method buildNeighborList (line 98) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/ClusterUnionList.java
  class ClusterUnionList (line 27) | public class ClusterUnionList extends DBScanClusterList implements Clust...
    method ClusterUnionList (line 31) | public ClusterUnionList(
    method addAndFetchCount (line 39) | @Override
    method merge (line 47) | @Override
    method isCompressed (line 55) | @Override
    method compress (line 60) | @Override
    class ClusterUnionListFactory (line 65) | public static class ClusterUnionListFactory implements NeighborListFac...
      method ClusterUnionListFactory (line 68) | public ClusterUnionListFactory(final Map<ByteArray, Cluster> index) {
      method buildNeighborList (line 73) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/DBScanClusterList.java
  class DBScanClusterList (line 36) | public abstract class DBScanClusterList implements Cluster {
    method getHullTool (line 54) | public static GeometryHullTool getHullTool() {
    method setMergeSize (line 58) | public static void setMergeSize(final int size) {
    method DBScanClusterList (line 62) | public DBScanClusterList(
    method addAndFetchCount (line 74) | protected abstract long addAndFetchCount(
    method add (line 79) | @Override
    method getIds (line 102) | protected List<ByteArray> getIds(final boolean allowUpdates) {
    method getLinkedClusters (line 109) | protected Set<ByteArray> getLinkedClusters(final boolean allowUpdates) {
    method incrementItemCount (line 116) | protected void incrementItemCount(final long amount) {
    method clear (line 126) | @Override
    method invalidate (line 132) | @Override
    method infer (line 149) | @Override
    method iterator (line 158) | @Override
    method currentLinkSetSize (line 163) | @Override
    method finish (line 168) | @Override
    method hashCode (line 173) | @Override
    method equals (line 181) | @Override
    method size (line 203) | @Override
    method isEmpty (line 208) | @Override
    method getGeometry (line 213) | @Override
    method isCompressed (line 218) | @Override
    method merge (line 221) | @Override
    method interpolateFactor (line 249) | protected double interpolateFactor(final Geometry areaBeingMerged) {
    method getId (line 274) | @Override
    method compress (line 279) | protected abstract Geometry compress();
    method getLinkedClusters (line 281) | @Override
    method union (line 286) | protected void union(final Geometry otherGeo) {
    method mergeLinks (line 311) | protected void mergeLinks(final boolean deleteNonLinks) {
    method buildClusterLists (line 329) | private void buildClusterLists(
    method toString (line 341) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/DBScanIterationsJobRunner.java
  class DBScanIterationsJobRunner (line 58) | public class DBScanIterationsJobRunner implements MapReduceJobRunner, In...
    method DBScanIterationsJobRunner (line 66) | public DBScanIterationsJobRunner() {
    method setInputFormatConfiguration (line 73) | public void setInputFormatConfiguration(final FormatConfiguration inpu...
    method setReducerCount (line 77) | public void setReducerCount(final int reducerCount) {
    method setZoomLevel (line 81) | protected void setZoomLevel(final int zoomLevel) {
    method run (line 85) | @Override
    method getParameters (line 288) | @Override
    method run (line 299) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/DBScanJobRunner.java
  class DBScanJobRunner (line 44) | public class DBScanJobRunner extends NNJobRunner {
    method configure (line 57) | @Override
    method setMemoryInMB (line 109) | public void setMemoryInMB(final long memInMB) {
    method setFirstIteration (line 113) | protected void setFirstIteration(final boolean firstIteration) {
    method run (line 117) | @Override
    method getParameters (line 170) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/DBScanMapReduce.java
  class DBScanMapReduce (line 83) | public class DBScanMapReduce {
    class DBScanMapReducer (line 86) | public abstract static class DBScanMapReducer<KEYOUT, VALUEOUT> extends
      method createSummary (line 90) | @Override
      method processNeighbors (line 95) | @Override
      method setup (line 121) | @Override
    class SimpleFeatureToClusterItemConverter (line 136) | public static class SimpleFeatureToClusterItemConverter implements Typ...
      method SimpleFeatureToClusterItemConverter (line 140) | public SimpleFeatureToClusterItemConverter(final Projection<SimpleFe...
      method convert (line 145) | @Override
    class DBScanMapHullReducer (line 159) | public static class DBScanMapHullReducer extends
      method calculateCondensingMinimum (line 169) | protected int calculateCondensingMinimum() {
      method calculateTossMinimum (line 173) | protected int calculateTossMinimum() {
      method preprocess (line 184) | @Override
      method processSummary (line 241) | @Override
      method createNeighborsListFactory (line 298) | @Override
      method setup (line 307) | @SuppressWarnings("unchecked")

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/PreProcessSingleItemClusterList.java
  class PreProcessSingleItemClusterList (line 22) | public class PreProcessSingleItemClusterList extends SingleItemClusterLi...
    method PreProcessSingleItemClusterList (line 24) | public PreProcessSingleItemClusterList(
    method mergeLinks (line 32) | @Override
    class PreProcessSingleItemClusterListFactory (line 45) | public static class PreProcessSingleItemClusterListFactory implements
      method PreProcessSingleItemClusterListFactory (line 49) | public PreProcessSingleItemClusterListFactory(final Map<ByteArray, C...
      method buildNeighborList (line 54) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/SingleItemClusterList.java
  class SingleItemClusterList (line 30) | public class SingleItemClusterList extends DBScanClusterList implements ...
    method SingleItemClusterList (line 35) | public SingleItemClusterList(
    method getClusterPoints (line 56) | protected Set<Coordinate> getClusterPoints(final boolean allowUpdates) {
    method clear (line 63) | @Override
    method addAndFetchCount (line 69) | @Override
    method merge (line 102) | @Override
    method isCompressed (line 125) | @Override
    method finish (line 130) | @Override
    method checkForCompression (line 136) | private void checkForCompression() {
    method compressAndUpdate (line 142) | private void compressAndUpdate() {
    method compress (line 148) | @Override
    class SingleItemClusterListFactory (line 159) | public static class SingleItemClusterListFactory implements NeighborLi...
      method SingleItemClusterListFactory (line 162) | public SingleItemClusterListFactory(final Map<ByteArray, Cluster> in...
      method buildNeighborList (line 167) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/CellCounter.java
  type CellCounter (line 11) | public interface CellCounter {
    method increment (line 12) | public void increment(long cellId, double weight);

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/CellSummationCombiner.java
  class CellSummationCombiner (line 16) | public class CellSummationCombiner extends
    method reduce (line 19) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/CellSummationReducer.java
  class CellSummationReducer (line 19) | public class CellSummationReducer extends
    method setup (line 26) | @Override
    method reduce (line 34) | @Override
    method collectStats (line 48) | protected void collectStats(final LongWritable key, final double sum, ...
    method cleanup (line 58) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/DoubleLevelPartitioner.java
  class DoubleLevelPartitioner (line 13) | public class DoubleLevelPartitioner extends LevelPartitioner<DoubleWrita...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/GaussianCellMapper.java
  class GaussianCellMapper (line 34) | public class GaussianCellMapper extends
    method setup (line 47) | @Override
    method populateLevelStore (line 80) | protected void populateLevelStore(
    method map (line 93) | @Override
    method incrementLevelStore (line 139) | protected void incrementLevelStore(
    class LevelStore (line 154) | public static class LevelStore {
      method LevelStore (line 159) | public LevelStore(final int numXPosts, final int numYPosts, final Ce...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/GaussianFilter.java
  class GaussianFilter (line 17) | public class GaussianFilter {
    class ValueRange (line 46) | public static class ValueRange {
      method ValueRange (line 50) | public ValueRange(final double min, final double max) {
      method getMin (line 55) | public double getMin() {
      method getMax (line 59) | public double getMax() {
    method incrementPt (line 67) | public static void incrementPt(
    method incrementPt (line 77) | public static void incrementPt(
    method incrementPtFast (line 97) | public static void incrementPtFast(
    method incrementPtFast (line 124) | public static void incrementPtFast(
    method incrementPtFast (line 162) | public static void incrementPtFast(
    method incrementBBox (line 202) | public static void incrementBBox(
    method getSigma (line 262) | protected static double getSigma(final int radius, final int order) {
    method getGaussianKernel (line 266) | protected static double[] getGaussianKernel(final double sigma, final ...
    method calculateGaussianKernel (line 270) | protected static double[] calculateGaussianKernel(final double sigma, ...
    method computePDF (line 280) | protected static double computePDF(final double mean, final double sig...
    method normalizeSumToOne (line 285) | protected static double[] normalizeSumToOne(final double[] kernel) {
    method getOffsets (line 297) | private static List<int[]> getOffsets(
    method calculateOffsets (line 331) | private static List<int[]> calculateOffsets(
    method getBlurFromOffset (line 355) | private static double getBlurFromOffset(
    method calculateBlurFromOffset (line 367) | private static double calculateBlurFromOffset(
    method getPositionsAndContributionPt (line 379) | private static List<BinPositionAndContribution> getPositionsAndContrib...
    method getPositionsAndContribution (line 413) | private static List<BinPositionAndContribution> getPositionsAndContrib...
    method getPosition (line 473) | private static long getPosition(final int[] positionPerDimension, fina...
    class BinPositionAndContribution (line 483) | private static class BinPositionAndContribution {
      method BinPositionAndContribution (line 487) | private BinPositionAndContribution(final long position, final double...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/IdentityMapper.java
  class IdentityMapper (line 16) | public class IdentityMapper extends
    method map (line 18) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/KDECommandLineOptions.java
  class KDECommandLineOptions (line 14) | public class KDECommandLineOptions {
    method getOutputIndex (line 64) | public String getOutputIndex() {
    method setOutputIndex (line 68) | public void setOutputIndex(final String outputIndex) {
    method KDECommandLineOptions (line 72) | public KDECommandLineOptions() {}
    method getIndexName (line 74) | public String getIndexName() {
    method setIndexName (line 78) | public void setIndexName(final String inputIndex) {
    method getFeatureType (line 82) | public String getFeatureType() {
    method getMinLevel (line 86) | public Integer getMinLevel() {
    method getMaxLevel (line 90) | public Integer getMaxLevel() {
    method getMinSplits (line 94) | public Integer getMinSplits() {
    method getMaxSplits (line 98) | public Integer getMaxSplits() {
    method getCoverageName (line 102) | public String getCoverageName() {
    method getHdfsHostPort (line 106) | public String getHdfsHostPort() {
    method getJobTrackerOrResourceManHostPort (line 110) | public String getJobTrackerOrResourceManHostPort() {
    method getTileSize (line 114) | public Integer getTileSize() {
    method getCqlFilter (line 118) | public String getCqlFilter() {
    method setFeatureType (line 122) | public void setFeatureType(final String featureType) {
    method setMinLevel (line 126) | public void setMinLevel(final Integer minLevel) {
    method setMaxLevel (line 130) | public void setMaxLevel(final Integer maxLevel) {
    method setMinSplits (line 134) | public void setMinSplits(final Integer minSplits) {
    method setMaxSplits (line 138) | public void setMaxSplits(final Integer maxSplits) {
    method setCoverageName (line 142) | public void setCoverageName(final String coverageName) {
    method setHdfsHostPort (line 146) | public void setHdfsHostPort(final String hdfsHostPort) {
    method setJobTrackerOrResourceManHostPort (line 150) | public void setJobTrackerOrResourceManHostPort(final String jobTracker...
    method setTileSize (line 154) | public void setTileSize(final Integer tileSize) {
    method setCqlFilter (line 158) | public void setCqlFilter(final String cqlFilter) {

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/KDEJobRunner.java
  class KDEJobRunner (line 76) | public class KDEJobRunner extends Configured implements Tool {
    method KDEJobRunner (line 96) | public KDEJobRunner(
    method runJob (line 110) | @SuppressWarnings("deprecation")
    method setupEntriesPerLevel (line 430) | protected void setupEntriesPerLevel(final Job job1, final Configuratio...
    method preJob1Setup (line 440) | protected void preJob1Setup(final Configuration conf) {}
    method postJob2Actions (line 442) | protected boolean postJob2Actions(
    method getJob2OutputFormatClass (line 449) | protected Class<? extends OutputFormat<?, ?>> getJob2OutputFormatClass...
    method getJob2OutputKeyClass (line 453) | protected Class<?> getJob2OutputKeyClass() {
    method getJob2OutputValueClass (line 457) | protected Class<?> getJob2OutputValueClass() {
    method getJob2Reducer (line 461) | protected Class<? extends Reducer<?, ?, ?, ?>> getJob2Reducer() {
    method getJob2Partitioner (line 465) | protected Class<? extends Partitioner<?, ?>> getJob2Partitioner() {
    method getJob2NumReducers (line 469) | protected int getJob2NumReducers(final int numLevels) {
    method getJob1Mapper (line 473) | protected Class<? extends Mapper<?, ?, ?, ?>> getJob1Mapper() {
    method getJob1Reducer (line 477) | protected Class<? extends Reducer<?, ?, ?, ?>> getJob1Reducer() {
    method getJob2Name (line 481) | protected String getJob2Name() {
    method getJob1Name (line 493) | protected String getJob1Name() {
    method setupJob2Output (line 505) | protected void setupJob2Output(
    method setup (line 523) | protected void setup(
    method main (line 538) | public static void main(final String[] args) throws Exception {
    method run (line 549) | @Override
    method addJobClasspathDependencies (line 554) | protected void addJobClasspathDependencies(final Job job, final Config...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/KDEReducer.java
  class KDEReducer (line 28) | public class KDEReducer extends
    class TileInfo (line 30) | private static final class TileInfo {
      method TileInfo (line 38) | public TileInfo(
      method hashCode (line 53) | @Override
      method equals (line 69) | @Override
    method reduce (line 123) | @Override
    method fromCellIndexToTileInfo (line 181) | @SuppressFBWarnings(
    method setup (line 216) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/LevelPartitioner.java
  class LevelPartitioner (line 14) | public abstract class LevelPartitioner<K> extends Partitioner<K, LongWri...
    method getPartition (line 15) | @Override
    method getPartition (line 20) | protected int getPartition(final long positiveCellId, final int numRed...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/MapContextCellCounter.java
  class MapContextCellCounter (line 18) | public class MapContextCellCounter implements CellCounter {
    method MapContextCellCounter (line 27) | public MapContextCellCounter(
    method increment (line 39) | @Override
    method getCellId (line 50) | protected long getCellId(final long cellId) {

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonAccumuloStatsReducer.java
  class ComparisonAccumuloStatsReducer (line 25) | public class ComparisonAccumuloStatsReducer extends
    method reduce (line 45) | @Override
    method fromIndexToLL_UR (line 79) | private Point2d[] fromIndexToLL_UR(final long index) {
    method setup (line 87) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonCellData.java
  class ComparisonCellData (line 17) | public class ComparisonCellData implements WritableComparable<Comparison...
    method ComparisonCellData (line 21) | public ComparisonCellData() {}
    method ComparisonCellData (line 23) | public ComparisonCellData(final double summerPercentile, final double ...
    method readFields (line 28) | @Override
    method write (line 34) | @Override
    method getSummerPercentile (line 40) | public double getSummerPercentile() {
    method getWinterPercentile (line 44) | public double getWinterPercentile() {
    method getCombinedPercentile (line 48) | public double getCombinedPercentile() {
    method compareTo (line 52) | @Override
    method equals (line 58) | @Override
    method hashCode (line 69) | @Override
    method applyCombinationFunction (line 75) | private static double applyCombinationFunction(

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonCellDataReducer.java
  class ComparisonCellDataReducer (line 17) | public class ComparisonCellDataReducer extends
    method reduce (line 24) | @Override
    method setup (line 39) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonCellLevelPartitioner.java
  class ComparisonCellLevelPartitioner (line 13) | public class ComparisonCellLevelPartitioner extends LevelPartitioner<Com...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonCellSummationReducer.java
  class ComparisonCellSummationReducer (line 14) | public class ComparisonCellSummationReducer extends CellSummationReducer {
    method collectStats (line 16) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonCombinedLevelPartitioner.java
  class ComparisonCombinedLevelPartitioner (line 15) | public class ComparisonCombinedLevelPartitioner extends Partitioner<Doub...
    method getPartition (line 16) | @Override
    method getPartition (line 24) | protected int getPartition(final long positiveCellId, final int numRed...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonCombiningStatsMapper.java
  class ComparisonCombiningStatsMapper (line 16) | public class ComparisonCombiningStatsMapper extends
    method map (line 19) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonCombiningStatsReducer.java
  class ComparisonCombiningStatsReducer (line 17) | public class ComparisonCombiningStatsReducer extends
    method setup (line 24) | @Override
    method reduce (line 32) | @Override
    method collectStats (line 50) | protected void collectStats(final long key, final Context context) {

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonCommandLineOptions.java
  class ComparisonCommandLineOptions (line 13) | public class ComparisonCommandLineOptions {
    method ComparisonCommandLineOptions (line 17) | public ComparisonCommandLineOptions() {}
    method ComparisonCommandLineOptions (line 19) | public ComparisonCommandLineOptions(final String timeAttribute) {
    method getTimeAttribute (line 23) | public String getTimeAttribute() {

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonDoubleLevelPartitioner.java
  class ComparisonDoubleLevelPartitioner (line 13) | public class ComparisonDoubleLevelPartitioner extends ComparisonLevelPar...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonGaussianCellMapper.java
  class ComparisonGaussianCellMapper (line 22) | public class ComparisonGaussianCellMapper extends GaussianCellMapper {
    method setup (line 27) | @Override
    method populateLevelStore (line 33) | @Override
    method incrementLevelStore (line 49) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonIdentityMapper.java
  class ComparisonIdentityMapper (line 15) | public class ComparisonIdentityMapper extends
    method map (line 18) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonLevelPartitioner.java
  class ComparisonLevelPartitioner (line 14) | public abstract class ComparisonLevelPartitioner<T> extends LevelPartiti...
    method getPartition (line 16) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonStatsJobRunner.java
  class ComparisonStatsJobRunner (line 39) | public class ComparisonStatsJobRunner extends KDEJobRunner {
    method ComparisonStatsJobRunner (line 42) | public ComparisonStatsJobRunner(
    method main (line 58) | public static void main(final String[] args) throws Exception {
    method preJob1Setup (line 91) | @Override
    method postJob2Actions (line 97) | @Override
    method getJob2OutputFormatClass (line 238) | @Override
    method getJob2OutputKeyClass (line 243) | @Override
    method getJob2OutputValueClass (line 248) | @Override
    method getJob2Reducer (line 253) | @Override
    method getJob2NumReducers (line 258) | @Override
    method getJob1Mapper (line 263) | @Override
    method getJob1Reducer (line 268) | @Override
    method getJob2Partitioner (line 273) | @Override
    method getJob2Name (line 278) | @Override
    method getJob1Name (line 291) | @Override
    method setupEntriesPerLevel (line 296) | @Override
    method setupJob2Output (line 311) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/NegativeCellIdCounter.java
  class NegativeCellIdCounter (line 14) | public class NegativeCellIdCounter extends MapContextCellCounter {
    method NegativeCellIdCounter (line 16) | public NegativeCellIdCounter(
    method getCellId (line 24) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kmeans/KMeansDistortionMapReduce.java
  class KMeansDistortionMapReduce (line 60) | public class KMeansDistortionMapReduce {
    class KMeansDistortionMapper (line 64) | public static class KMeansDistortionMapper extends
      method notify (line 74) | @Override
      method mapNativeValue (line 101) | @Override
      method setup (line 113) | @SuppressWarnings("unchecked")
    class KMeansDistorationCombiner (line 157) | public static class KMeansDistorationCombiner extends
      method reduce (line 161) | @Override
    class KMeansDistortionReduce (line 179) | public static class KMeansDistortionReduce extends
      method reduce (line 186) | @Override
      method setup (line 230) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kmeans/KMeansMapReduce.java
  class KMeansMapReduce (line 58) | public class KMeansMapReduce {
    class KMeansMapper (line 62) | public static class KMeansMapper extends GeoWaveWritableInputMapper<Gr...
      method notify (line 72) | @Override
      method mapNativeValue (line 86) | @Override
      method setup (line 99) | @Override
    class KMeansCombiner (line 145) | public static class KMeansCombiner extends
      method reduce (line 150) | @Override
    class KMeansReduce (line 168) | public static class KMeansReduce extends
      method reduce (line 175) | @Override
      method getFeatureForCentroid (line 233) | private AnalyticItemWrapper<Object> getFeatureForCentroid(final Stri...
      method setup (line 238) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kmeans/KSamplerMapReduce.java
  class KSamplerMapReduce (line 84) | public class KSamplerMapReduce {
    class SampleMap (line 87) | public static class SampleMap<T> extends
      method mapWritableValue (line 99) | @Override
      method mapNativeValue (line 114) | @Override
      method setup (line 139) | @Override
    class SampleReducer (line 187) | public static class SampleReducer<T> extends GeoWaveWritableInputReduc...
      method reduceNativeValues (line 198) | @Override
      method createCentroid (line 225) | private AnalyticItemWrapper<T> createCentroid(
      method setup (line 243) | @SuppressWarnings("unchecked")
    class SampleKeyPartitioner (line 295) | public static class SampleKeyPartitioner extends Partitioner<GeoWaveIn...
      method getPartition (line 296) | @Override
      method hash (line 306) | private int hash(final byte[] data) {
    class KeyManager (line 316) | private static class KeyManager {
      method getGroupAsString (line 319) | private static String getGroupAsString(final byte[] data) {
      method getGroup (line 323) | private static byte[] getGroup(final byte[] data) {
      method putData (line 330) | private byte[] putData(final String groupID, final double weight, fi...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kmeans/UpdateCentroidCostMapReduce.java
  class UpdateCentroidCostMapReduce (line 50) | public class UpdateCentroidCostMapReduce {
    class UpdateCentroidCostMap (line 54) | public static class UpdateCentroidCostMap extends
      method notify (line 63) | @Override
      method mapNativeValue (line 69) | @Override
      method setup (line 83) | @Override
    class UpdateCentroidCostCombiner (line 123) | public static class UpdateCentroidCostCombiner extends
      method reduce (line 127) | @Override
    class UpdateCentroidCostReducer (line 145) | public static class UpdateCentroidCostReducer extends
      method reduce (line 151) | @Override
      method getFeatureForCentroid (line 186) | private AnalyticItemWrapper<Object> getFeatureForCentroid(final Stri...
      method setup (line 191) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kmeans/runner/IterationCountCalculateRunner.java
  class IterationCountCalculateRunner (line 31) | public class IterationCountCalculateRunner<T> implements MapReduceJobRun...
    method IterationCountCalculateRunner (line 35) | public IterationCountCalculateRunner() {}
    method getIterationsCount (line 37) | public int getIterationsCount() {
    method setIterationsCount (line 41) | public void setIterationsCount(final int iterationsCount) {
    method run (line 45) | @Override
    method getIterations (line 53) | private int getIterations(final PropertyManagement propertyManagement)...
    method maxCost (line 74) | private double maxCost(final List<AnalyticItemWrapper<T>> centroids) {

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kmeans/runner/KMeansDistortionJobRunner.java
  class KMeansDistortionJobRunner (line 38) | public class KMeansDistortionJobRunner extends GeoWaveAnalyticJobRunner {
    method KMeansDistortionJobRunner (line 42) | public KMeansDistortionJobRunner() {
    method setDataStoreOptions (line 46) | public void setDataStoreOptions(final DataStorePluginOptions dataStore...
    method setCentroidsCount (line 50) | public void setCentroidsCount(final int k) {
    method configure (line 54) | @Override
    method getScope (line 81) | @Override
    method run (line 86) | @Override
    method getJobName (line 109) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kmeans/runner/KMeansIterationsJobRunner.java
  class KMeansIterationsJobRunner (line 44) | public class KMeansIterationsJobRunner<T> implements MapReduceJobRunner,...
    method KMeansIterationsJobRunner (line 50) | public KMeansIterationsJobRunner() {}
    method constructCentroidManager (line 52) | protected CentroidManager<T> constructCentroidManager(
    method setInputFormatConfiguration (line 58) | public void setInputFormatConfiguration(final FormatConfiguration inpu...
    method setReducerCount (line 62) | public void setReducerCount(final int reducerCount) {
    method run (line 66) | @SuppressWarnings("unchecked")
    method runJob (line 104) | protected int runJob(final Configuration config, final PropertyManagem...
    method checkForConvergence (line 122) | private boolean checkForConvergence(
    method computeCostAndCleanUp (line 150) | protected int computeCostAndCleanUp(
    method getParameters (line 210) | @Override
    method run (line 232) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kmeans/runner/KMeansJobRunner.java
  class KMeansJobRunner (line 28) | public class KMeansJobRunner extends GeoWaveAnalyticJobRunner implements...
    method KMeansJobRunner (line 30) | public KMeansJobRunner() {
    method setReducerCount (line 34) | @Override
    method configure (line 39) | @Override
    method getScope (line 51) | @Override
    method run (line 56) | @Override
    method getJobName (line 77) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kmeans/runner/KMeansJumpJobRunner.java
  class KMeansJumpJobRunner (line 53) | public class KMeansJumpJobRunner extends MapReduceJobController implemen...
    method KMeansJumpJobRunner (line 60) | public KMeansJumpJobRunner() {
    method setZoomLevel (line 70) | @Override
    method setInputFormatConfiguration (line 76) | @Override
    method run (line 82) | @Override
    method getParameters (line 180) | @Override
    class KMeansParallelJobRunnerDelegate (line 208) | private static class KMeansParallelJobRunnerDelegate implements MapRed...
      method run (line 213) | @Override
      method setZoomLevel (line 226) | public void setZoomLevel(final int zoomLevel) {
      method setInputFormatConfiguration (line 231) | public void setInputFormatConfiguration(final FormatConfiguration in...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kmeans/runner/KMeansParallelJobRunner.java
  class KMeansParallelJobRunner (line 46) | public class KMeansParallelJobRunner extends MapReduceJobController impl...
    method KMeansParallelJobRunner (line 56) | public KMeansParallelJobRunner() {
    method setZoomLevel (line 77) | @Override
    method setInputFormatConfiguration (line 83) | @Override
    method run (line 89) | @Override
    method runJob (line 95) | private int runJob(final Configuration config, final PropertyManagemen...
    method getParameters (line 124) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kmeans/runner/KMeansSingleSampleJobRunner.java
  class KMeansSingleSampleJobRunner (line 38) | public class KMeansSingleSampleJobRunner<T> extends MapReduceJobControll...
    method KMeansSingleSampleJobRunner (line 45) | public KMeansSingleSampleJobRunner() {
    method setZoomLevel (line 55) | @Override
    method setInputFormatConfiguration (line 61) | @Override
    method run (line 67) | @Override
    method runJob (line 73) | private int runJob(final Configuration config, final PropertyManagemen...
    method getParameters (line 99) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kmeans/runner/KSamplerJobRunner.java
  class KSamplerJobRunner (line 45) | public class KSamplerJobRunner extends GeoWaveAnalyticJobRunner implemen...
    method KSamplerJobRunner (line 50) | public KSamplerJobRunner() {
    method setSamplingRankFunctionClass (line 54) | public void setSamplingRankFunctionClass(
    method setZoomLevel (line 59) | public void setZoomLevel(final int zoomLevel) {
    method getScope (line 63) | @Override
    method configure (line 68) | @Override
    method getAdapter (line 80) | private InternalDataAdapter<?> getAdapter(final PropertyManagement run...
    method getIndex (line 96) | private Index getIndex(final PropertyManagement runTimeProperties) thr...
    method run (line 103) | @Override
    method getJobName (line 146) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kmeans/runner/RankSamplerJobRunner.java
  class RankSamplerJobRunner (line 25) | public class RankSamplerJobRunner extends KSamplerJobRunner implements M...
    method RankSamplerJobRunner (line 27) | public RankSamplerJobRunner() {
    method run (line 31) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kmeans/runner/SampleMultipleSetsJobRunner.java
  class SampleMultipleSetsJobRunner (line 52) | public class SampleMultipleSetsJobRunner<T> extends MapReduceJobControll...
    method SampleMultipleSetsJobRunner (line 67) | public SampleMultipleSetsJobRunner() {
    method stage1Setup (line 71) | private void stage1Setup() {
    method getCurrentCentroidCount (line 80) | public int getCurrentCentroidCount() {
    method stage2Setup (line 84) | private void stage2Setup(final PropertyManagement runTimeProperties) {
    method run (line 101) | @Override
    method getParameters (line 160) | @Override
    method setInputFormatConfiguration (line 187) | public void setInputFormatConfiguration(final FormatConfiguration inpu...
    method setIterations (line 193) | private void setIterations(final int iterations) {
    method setZoomLevel (line 197) | public void setZoomLevel(final int zoomLevel) {

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kmeans/runner/StripWeakCentroidsRunner.java
  class StripWeakCentroidsRunner (line 30) | public class StripWeakCentroidsRunner<T> implements MapReduceJobRunner {
    method StripWeakCentroidsRunner (line 39) | public StripWeakCentroidsRunner() {}
    method setBreakStrategy (line 41) | public void setBreakStrategy(final BreakStrategy<T> breakStrategy) {
    method setRange (line 46) | public void setRange(final int minimum, final int maximum) {
    method getCurrentCentroidCount (line 56) | public int getCurrentCentroidCount() {
    method constructCentroidManager (line 60) | protected CentroidManager<T> constructCentroidManager(
    method run (line 66) | @Override
    class MaxChangeBreakStrategy (line 124) | public static class MaxChangeBreakStrategy<T> implements BreakStrategy...
      method getBreakPoint (line 125) | @Override
      method getInitialMaximum (line 167) | protected double getInitialMaximum(final StandardDeviation stats, fi...
    class ChangeFromLast (line 172) | private static class ChangeFromLast implements Comparable<ChangeFromLa...
      method ChangeFromLast (line 176) | public ChangeFromLast(final int position, final double chg) {
      method toString (line 182) | @Override
      method compareTo (line 187) | @Override
      method equals (line 192) | @Override
      method hashCode (line 203) | @Override
    class StableChangeBreakStrategy (line 209) | public static class StableChangeBreakStrategy<T> implements BreakStrat...
      method getBreakPoint (line 210) | @Override
      method getInitialMaximum (line 268) | protected double getInitialMaximum(final StandardDeviation stats, fi...
    class TailMaxBreakStrategy (line 273) | public static class TailMaxBreakStrategy<T> extends MaxChangeBreakStra...
      method getInitialMaximum (line 275) | @Override
    class TailStableChangeBreakStrategy (line 281) | public static class TailStableChangeBreakStrategy<T> extends StableCha...
      method getInitialMaximum (line 284) | @Override
    type BreakStrategy (line 290) | public interface BreakStrategy<T> {
      method getBreakPoint (line 291) | public int getBreakPoint(List<AnalyticItemWrapper<T>> centroids);

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kmeans/runner/UpdateCentroidCostJobRunner.java
  class UpdateCentroidCostJobRunner (line 28) | public class UpdateCentroidCostJobRunner extends GeoWaveAnalyticJobRunne...
    method UpdateCentroidCostJobRunner (line 31) | public UpdateCentroidCostJobRunner() {
    method getScope (line 35) | @Override
    method run (line 40) | @Override
    method configure (line 58) | @Override
    method getJobName (line 71) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/nn/GeoWaveExtractNNJobRunner.java
  class GeoWaveExtractNNJobRunner (line 21) | public class GeoWaveExtractNNJobRunner extends NNJobRunner {
    method GeoWaveExtractNNJobRunner (line 23) | public GeoWaveExtractNNJobRunner() {
    method getParameters (line 30) | @Override
    method run (line 38) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/nn/NNData.java
  class NNData (line 11) | public class NNData<T> implements Comparable<NNData<T>> {
    method NNData (line 15) | public NNData() {}
    method NNData (line 17) | public NNData(final T neighbor, final double distance) {
    method getDistance (line 23) | public double getDistance() {
    method setDistance (line 27) | public void setDistance(final double distance) {
    method getNeighbor (line 31) | protected T getNeighbor() {
    method setNeighbor (line 35) | protected void setNeighbor(final T neighbor) {
    method hashCode (line 39) | @Override
    method equals (line 50) | @Override
    method compareTo (line 76) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/nn/NNJobRunner.java
  class NNJobRunner (line 29) | public class NNJobRunner extends GeoWaveAnalyticJobRunner {
    method configure (line 31) | @Override
    method getScope (line 42) | @Override
    method run (line 47) | @Override
    method getParameters (line 86) | @Override
    method getJobName (line 103) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/nn/NNMapReduce.java
  class NNMapReduce (line 94) | public class NNMapReduce {
    class NNMapper (line 98) | public static class NNMapper<T> extends
      method map (line 106) | @Override
      method setup (line 141) | @SuppressWarnings("unchecked")
    class NNReducer (line 164) | public abstract static class NNReducer<VALUEIN, KEYOUT, VALUEOUT, PART...
      method convert (line 174) | @SuppressWarnings("unchecked")
      method reduce (line 184) | @Override
      method createNeighborsListFactory (line 228) | public NeighborListFactory<VALUEIN> createNeighborsListFactory(
      method preprocess (line 233) | protected void preprocess(
      method createSummary (line 239) | protected abstract PARTITION_SUMMARY createSummary();
      method processSummary (line 244) | protected abstract void processSummary(
      method createSetForNeighbors (line 251) | protected Set<VALUEIN> createSetForNeighbors(final boolean isSetForP...
      method processNeighbors (line 255) | protected abstract void processNeighbors(
      method setup (line 263) | @SuppressWarnings("unchecked")
      class LocalDistanceProfileGenerateFn (line 313) | protected class LocalDistanceProfileGenerateFn implements
        method computeProfile (line 319) | @Override
    class NNSimpleFeatureIDOutputReducer (line 327) | public static class NNSimpleFeatureIDOutputReducer extends
      method processNeighbors (line 334) | @Override
      method createSummary (line 366) | @Override
      method processSummary (line 371) | @Override
    class PartitionDataWritable (line 380) | public static class PartitionDataWritable implements
      method PartitionDataWritable (line 386) | public PartitionDataWritable() {}
      method setPartitionData (line 388) | protected void setPartitionData(final PartitionData partitionData) {
      method getPartitionData (line 392) | public PartitionData getPartitionData() {
      method PartitionDataWritable (line 396) | public PartitionDataWritable(final PartitionData partitionData) {
      method readFields (line 400) | @Override
      method write (line 406) | @Override
      method compareTo (line 411) | @Override
      method toString (line 427) | @Override
      method hashCode (line 432) | @Override
      method equals (line 440) | @Override
    class PassthruPartitioner (line 463) | public static class PassthruPartitioner<T> implements Partitioner<T> {
      method initialize (line 468) | @Override
      method getCubeIdentifiers (line 475) | @Override
      method partition (line 480) | @Override
      method getParameters (line 485) | @Override
      method setup (line 490) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/operations/AnalyticOperationCLIProvider.java
  class AnalyticOperationCLIProvider (line 13) | public class AnalyticOperationCLIProvider implements CLIOperationProvide...
    method getOperations (line 23) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/operations/AnalyticSection.java
  class AnalyticSection (line 16) | @GeowaveOperation(name = "analytic", parentOperation = GeoWaveTopLevelSe...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/operations/DBScanCommand.java
  class DBScanCommand (line 35) | @GeowaveOperation(name = "dbscan", parentOperation = AnalyticSection.class)
    method execute (line 50) | @Override
    method runAsync (line 61) | @Override
    method getParameters (line 66) | public List<String> getParameters() {
    method setParameters (line 70) | public void setParameters(final String storeName) {
    method getCommonOptions (line 75) | public CommonOptions getCommonOptions() {
    method setCommonOptions (line 79) | public void setCommonOptions(final CommonOptions commonOptions) {
    method getDbScanOptions (line 83) | public DBScanOptions getDbScanOptions() {
    method setDbScanOptions (line 87) | public void setDbScanOptions(final DBScanOptions dbScanOptions) {
    method getInputStoreOptions (line 91) | public DataStorePluginOptions getInputStoreOptions() {
    method computeResults (line 95) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/operations/KdeCommand.java
  class KdeCommand (line 32) | @GeowaveOperation(name = "kde", parentOperation = AnalyticSection.class)
    method execute (line 47) | @Override
    method runAsync (line 52) | @Override
    method createRunner (line 57) | public KDEJobRunner createRunner(final OperationParams params) throws ...
    method getParameters (line 104) | public List<String> getParameters() {
    method setParameters (line 108) | public void setParameters(final String inputStore, final String output...
    method getKdeOptions (line 114) | public KDECommandLineOptions getKdeOptions() {
    method setKdeOptions (line 118) | public void setKdeOptions(final KDECommandLineOptions kdeOptions) {
    method getInputStoreOptions (line 122) | public DataStorePluginOptions getInputStoreOptions() {
    method getOutputStoreOptions (line 126) | public DataStorePluginOptions getOutputStoreOptions() {
    method computeResults (line 130) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/operations/KmeansJumpCommand.java
  class KmeansJumpCommand (line 37) | @GeowaveOperation(name = "kmeansjump", parentOperation = AnalyticSection...
    method execute (line 55) | @Override
    method getParameters (line 98) | public List<String> getParameters() {
    method setParameters (line 102) | public void setParameters(final String storeName) {
    method getCommonOptions (line 107) | public CommonOptions getCommonOptions() {
    method setCommonOptions (line 111) | public void setCommonOptions(final CommonOptions commonOptions) {
    method getKmeansCommonOptions (line 115) | public KMeansCommonOptions getKmeansCommonOptions() {
    method setKmeansCommonOptions (line 119) | public void setKmeansCommonOptions(final KMeansCommonOptions kmeansCom...
    method getKmeansJumpOptions (line 123) | public KMeansJumpOptions getKmeansJumpOptions() {
    method setKmeansJumpOptions (line 127) | public void setKmeansJumpOptions(final KMeansJumpOptions kmeansJumpOpt...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/operations/KmeansParallelCommand.java
  class KmeansParallelCommand (line 37) | @GeowaveOperation(name = "kmeansparallel", parentOperation = AnalyticSec...
    method execute (line 55) | @Override
    method getParameters (line 97) | public List<String> getParameters() {
    method setParameters (line 101) | public void setParameters(final String storeName) {
    method getCommonOptions (line 106) | public CommonOptions getCommonOptions() {
    method setCommonOptions (line 110) | public void setCommonOptions(final CommonOptions commonOptions) {
    method getKmeansCommonOptions (line 114) | public KMeansCommonOptions getKmeansCommonOptions() {
    method setKmeansCommonOptions (line 118) | public void setKmeansCommonOptions(final KMeansCommonOptions kmeansCom...
    method getInputStoreOptions (line 122) | public DataStorePluginOptions getInputStoreOptions() {
    method getKmeansParallelOptions (line 126) | public KMeansParallelOptions getKmeansParallelOptions() {
    method setKmeansParallelOptions (line 130) | public void setKmeansParallelOptions(final KMeansParallelOptions kmean...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/operations/NearestNeighborCommand.java
  class NearestNeighborCommand (line 35) | @GeowaveOperation(name = "nn", parentOperation = AnalyticSection.class)
    method execute (line 50) | @Override
    method runAsync (line 56) | @Override
    method getParameters (line 61) | public List<String> getParameters() {
    method setParameters (line 65) | public void setParameters(final String storeName) {
    method getCommonOptions (line 70) | public CommonOptions getCommonOptions() {
    method setCommonOptions (line 74) | public void setCommonOptions(final CommonOptions commonOptions) {
    method getNnOptions (line 78) | public NearestNeighborOptions getNnOptions() {
    method setNnOptions (line 82) | public void setNnOptions(final NearestNeighborOptions nnOptions) {
    method getInputStoreOptions (line 86) | public DataStorePluginOptions getInputStoreOptions() {
    method computeResults (line 90) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/operations/options/CommonOptions.java
  class CommonOptions (line 27) | public class CommonOptions {
    method getCommonDistanceFunctionClass (line 103) | public String getCommonDistanceFunctionClass() {
    method setCommonDistanceFunctionClass (line 107) | public void setCommonDistanceFunctionClass(final String commonDistance...
    method getQueryOptions (line 111) | public QueryOptionsCommand getQueryOptions() {
    method setQueryOptions (line 115) | public void setQueryOptions(final QueryOptionsCommand extractQueryOpti...
    method getExtractMaxInputSplit (line 119) | public String getExtractMaxInputSplit() {
    method setExtractMaxInputSplit (line 123) | public void setExtractMaxInputSplit(final String extractMaxInputSplit) {
    method getExtractMinInputSplit (line 127) | public String getExtractMinInputSplit() {
    method setExtractMinInputSplit (line 131) | public void setExtractMinInputSplit(final String extractMinInputSplit) {
    method getExtractQuery (line 135) | public String getExtractQuery() {
    method setExtractQuery (line 139) | public void setExtractQuery(final String extractQuery) {
    method getOutputOutputFormat (line 143) | public String getOutputOutputFormat() {
    method setOutputOutputFormat (line 147) | public void setOutputOutputFormat(final String outputOutputFormat) {
    method getOutputReducerCount (line 151) | public String getOutputReducerCount() {
    method setOutputReducerCount (line 155) | public void setOutputReducerCount(final String outputReducerCount) {
    method getInputFormatClass (line 159) | public String getInputFormatClass() {
    method setInputFormatClass (line 163) | public void setInputFormatClass(final String inputFormatClass) {
    method getInputHdfsPath (line 167) | public String getInputHdfsPath() {
    method setInputHdfsPath (line 171) | public void setInputHdfsPath(final String inputHdfsPath) {
    method buildQuery (line 178) | public Query<?> buildQuery() {
    method getMapReduceConfigFile (line 192) | public String getMapReduceConfigFile() {
    method setMapReduceConfigFile (line 196) | public void setMapReduceConfigFile(final String mapReduceConfigFile) {
    method getMapReduceHdfsBaseDir (line 200) | public String getMapReduceHdfsBaseDir() {
    method setMapReduceHdfsBaseDir (line 204) | public void setMapReduceHdfsBaseDir(final String mapReduceHdfsBaseDir) {
    method getMapReduceHdfsHostPort (line 208) | public String getMapReduceHdfsHostPort() {
    method setMapReduceHdfsHostPort (line 212) | public void setMapReduceHdfsHostPort(final String mapReduceHdfsHostPor...
    method getMapReduceJobtrackerHostPort (line 216) | public String getMapReduceJobtrackerHostPort() {
    method setMapReduceJobtrackerHostPort (line 220) | public void setMapReduceJobtrackerHostPort(final String mapReduceJobtr...
    method getMapReduceYarnResourceManager (line 224) | public String getMapReduceYarnResourceManager() {
    method setMapReduceYarnResourceManager (line 228) | public void setMapReduceYarnResourceManager(final String mapReduceYarn...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/operations/options/DBScanOptions.java
  class DBScanOptions (line 23) | public class DBScanOptions {
    method getPartitioningDistanceThresholds (line 121) | public String getPartitioningDistanceThresholds() {
    method setPartitioningDistanceThresholds (line 125) | public void setPartitioningDistanceThresholds(final String clusteringD...
    method getPartitioningGeometricDistanceUnit (line 129) | public String getPartitioningGeometricDistanceUnit() {
    method setPartitioningGeometricDistanceUnit (line 133) | public void setPartitioningGeometricDistanceUnit(final String clusteri...
    method getClusteringMaxIterations (line 137) | public String getClusteringMaxIterations() {
    method setClusteringMaxIterations (line 141) | public void setClusteringMaxIterations(final String clusteringMaxItera...
    method getClusteringMinimumSize (line 145) | public String getClusteringMinimumSize() {
    method setClusteringMinimumSize (line 149) | public void setClusteringMinimumSize(final String clusteringMinimumSiz...
    method getGlobalBatchId (line 153) | public String getGlobalBatchId() {
    method setGlobalBatchId (line 157) | public void setGlobalBatchId(final String globalBatchId) {
    method getHullDataTypeId (line 161) | public String getHullDataTypeId() {
    method setHullDataTypeId (line 165) | public void setHullDataTypeId(final String hullDataTypeId) {
    method getHullProjectionClass (line 169) | public String getHullProjectionClass() {
    method setHullProjectionClass (line 173) | public void setHullProjectionClass(final String hullProjectionClass) {
    method getOutputDataNamespaceUri (line 177) | public String getOutputDataNamespaceUri() {
    method setOutputDataNamespaceUri (line 181) | public void setOutputDataNamespaceUri(final String outputDataNamespace...
    method getOutputDataTypeId (line 185) | public String getOutputDataTypeId() {
    method setOutputDataTypeId (line 189) | public void setOutputDataTypeId(final String outputDataTypeId) {
    method getOutputIndexId (line 193) | public String getOutputIndexId() {
    method setOutputIndexId (line 197) | public void setOutputIndexId(final String outputIndexId) {
    method getPartitionMaxMemberSelection (line 201) | public String getPartitionMaxMemberSelection() {
    method setPartitionMaxMemberSelection (line 205) | public void setPartitionMaxMemberSelection(final String partitionMaxMe...
    method getPartitionPartitionerClass (line 209) | public String getPartitionPartitionerClass() {
    method setPartitionPartitionerClass (line 213) | public void setPartitionPartitionerClass(final String partitionPartiti...
    method getPartitionPartitionDecreaseRate (line 217) | public String getPartitionPartitionDecreaseRate() {
    method setPartitionPartitionDecreaseRate (line 221) | public void setPartitionPartitionDecreaseRate(final String partitionPa...
    method getPartitionMaxDistance (line 225) | public String getPartitionMaxDistance() {
    method setPartitionMaxDistance (line 229) | public void setPartitionMaxDistance(final String partitionMaxDistance) {
    method getPartitionPartitionPrecision (line 233) | public String getPartitionPartitionPrecision() {
    method setPartitionPartitionPrecision (line 237) | public void setPartitionPartitionPrecision(final String partitionParti...
    method getPartitionSecondaryPartitionerClass (line 241) | public String getPartitionSecondaryPartitionerClass() {
    method setPartitionSecondaryPartitionerClass (line 245) | public void setPartitionSecondaryPartitionerClass(
    method getOutputHdfsOutputPath (line 250) | public String getOutputHdfsOutputPath() {
    method setOutputHdfsOutputPath (line 254) | public void setOutputHdfsOutputPath(final String outputHdfsOutputPath) {

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/operations/options/KMeansCommonOptions.java
  class KMeansCommonOptions (line 25) | public class KMeansCommonOptions {
    method getCentroidExtractorClass (line 138) | public String getCentroidExtractorClass() {
    method setCentroidExtractorClass (line 142) | public void setCentroidExtractorClass(final String centroidExtractorCl...
    method getCentroidIndexId (line 146) | public String getCentroidIndexId() {
    method setCentroidIndexId (line 150) | public void setCentroidIndexId(final String centroidIndexId) {
    method getCentroidWrapperFactoryClass (line 154) | public String getCentroidWrapperFactoryClass() {
    method setCentroidWrapperFactoryClass (line 158) | public void setCentroidWrapperFactoryClass(final String centroidWrappe...
    method getCentroidZoomLevel (line 162) | public String getCentroidZoomLevel() {
    method setCentroidZoomLevel (line 166) | public void setCentroidZoomLevel(final String centroidZoomLevel) {
    method getClusteringConverganceTolerance (line 170) | public String getClusteringConverganceTolerance() {
    method setClusteringConverganceTolerance (line 174) | public void setClusteringConverganceTolerance(final String clusteringC...
    method getClusteringMaxIterations (line 178) | public String getClusteringMaxIterations() {
    method setClusteringMaxIterations (line 182) | public void setClusteringMaxIterations(final String clusteringMaxItera...
    method getClusteringMaxReducerCount (line 186) | public String getClusteringMaxReducerCount() {
    method setClusteringMaxReducerCount (line 190) | public void setClusteringMaxReducerCount(final String clusteringMaxRed...
    method getClusteringZoomLevels (line 194) | public String getClusteringZoomLevels() {
    method setClusteringZoomLevels (line 198) | public void setClusteringZoomLevels(final String clusteringZoomLevels) {
    method getCommonDimensionExtractClass (line 202) | public String getCommonDimensionExtractClass() {
    method setCommonDimensionExtractClass (line 206) | public void setCommonDimensionExtractClass(final String commonDimensio...
    method getExtractDataNamespaceUri (line 210) | public String getExtractDataNamespaceUri() {
    method setExtractDataNamespaceUri (line 214) | public void setExtractDataNamespaceUri(final String extractDataNamespa...
    method getExtractDimensionExtractClass (line 218) | public String getExtractDimensionExtractClass() {
    method setExtractDimensionExtractClass (line 222) | public void setExtractDimensionExtractClass(final String extractDimens...
    method getExtractOutputDataTypeId (line 226) | public String getExtractOutputDataTypeId() {
    method setExtractOutputDataTypeId (line 230) | public void setExtractOutputDataTypeId(final String extractOutputDataT...
    method getExtractReducerCount (line 234) | public String getExtractReducerCount() {
    method setExtractReducerCount (line 238) | public void setExtractReducerCount(final String extractReducerCount) {
    method getGlobalBatchId (line 242) | public String getGlobalBatchId() {
    method setGlobalBatchId (line 246) | public void setGlobalBatchId(final String globalBatchId) {
    method getGlobalParentBatchId (line 250) | public String getGlobalParentBatchId() {
    method setGlobalParentBatchId (line 254) | public void setGlobalParentBatchId(final String globalParentBatchId) {
    method getHullDataNamespaceUri (line 258) | public String getHullDataNamespaceUri() {
    method setHullDataNamespaceUri (line 262) | public void setHullDataNamespaceUri(final String hullDataNamespaceUri) {
    method getHullDataTypeId (line 266) | public String getHullDataTypeId() {
    method setHullDataTypeId (line 270) | public void setHullDataTypeId(final String hullDataTypeId) {
    method getHullIndexId (line 274) | public String getHullIndexId() {
    method setHullIndexId (line 278) | public void setHullIndexId(final String hullIndexId) {
    method getHullProjectionClass (line 282) | public String getHullProjectionClass() {
    method setHullProjectionClass (line 286) | public void setHullProjectionClass(final String hullProjectionClass) {
    method getHullReducerCount (line 290) | public String getHullReducerCount() {
    method setHullReducerCount (line 294) | public void setHullReducerCount(final String hullReducerCount) {
    method getHullWrapperFactoryClass (line 298) | public String getHullWrapperFactoryClass() {
    method setHullWrapperFactoryClass (line 302) | public void setHullWrapperFactoryClass(final String hullWrapperFactory...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/operations/options/KMeansJumpOptions.java
  class KMeansJumpOptions (line 20) | public class KMeansJumpOptions {
    method getJumpKplusplusMin (line 48) | public String getJumpKplusplusMin() {
    method setJumpKplusplusMin (line 52) | public void setJumpKplusplusMin(final String jumpKplusplusMin) {
    method getJumpRangeOfCentroids (line 56) | public NumericRange getJumpRangeOfCentroids() {
    method setJumpRangeOfCentroids (line 60) | public void setJumpRangeOfCentroids(final NumericRange jumpRangeOfCent...
    method getSampleSampleRankFunction (line 64) | public String getSampleSampleRankFunction() {
    method setSampleSampleRankFunction (line 68) | public void setSampleSampleRankFunction(final String sampleSampleRankF...
    method getSampleSampleSize (line 72) | public String getSampleSampleSize() {
    method setSampleSampleSize (line 76) | public void setSampleSampleSize(final String sampleSampleSize) {
    class NumericRangeConverter (line 80) | public static class NumericRangeConverter implements IStringConverter<...
      method convert (line 82) | @Override

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/operations/options/KMeansParallelOptions.java
  class KMeansParallelOptions (line 15) | public class KMeansParallelOptions {
    method getSampleMaxSampleSize (line 37) | public String getSampleMaxSampleSize() {
    method setSampleMaxSampleSize (line 41) | public void setSampleMaxSampleSize(final String sampleMaxSampleSize) {
    method getSampleMinSampleSize (line 45) | public String getSampleMinSampleSize() {
    method setSampleMinSampleSize (line 49) | public void setSampleMinSampleSize(final String sampleMinSampleSize) {
    method getSampleSampleIterations (line 53) | public String getSampleSampleIterations() {
    method setSampleSampleIterations (line 57) | public void setSampleSampleIterations(final String sampleSampleIterati...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/operations/options/NearestNeighborOptions.java
  class NearestNeighborOptions (line 17) | public class NearestNeighborOptions {
    method getOutputHdfsOutputPath (line 67) | public String getOutputHdfsOutputPath() {
    method setOutputHdfsOutputPath (line 71) | public void setOutputHdfsOutputPath(final String outputHdfsOutputPath) {
    method getPartitionMaxMemberSelection (line 75) | public String getPartitionMaxMemberSelection() {
    method setPartitionMaxMemberSelection (line 79) | public void setPartitionMaxMemberSelection(final String partitionMaxMe...
    method getPartitionPartitionerClass (line 83) | public String getPartitionPartitionerClass() {
    method setPartitionPartitionerClass (line 87) | public void setPartitionPartitionerClass(final String partitionPartiti...
    method getPartitionMaxDistance (line 91) | public String getPartitionMaxDistance() {
    method setPartitionMaxDistance (line 95) | public void setPartitionMaxDistance(final String partitionMaxDistance) {
    method getPartitionSecondaryPartitionerClass (line 99) | public String getPartitionSecondaryPartitionerClass() {
    method setPartitionSecondaryPartitionerClass (line 103) | public void setPartitionSecondaryPartitionerClass(
    method getPartitionPartitionPrecision (line 108) | public String getPartitionPartitionPrecision() {
    method setPartitionPartitionPrecision (line 112) | public void setPartitionPartitionPrecision(final String partitionParti...
    method getPartitioningDistanceThresholds (line 116) | public String getPartitioningDistanceThresholds() {
    method setPartitioningDistanceThresholds (line 120) | public void setPartitioningDistanceThresholds(final String partitionin...
    method getPartitioningGeometricDistanceUnit (line 124) | public String getPartitioningGeometricDistanceUnit() {
    method setPartitioningGeometricDistanceUnit (line 128) | public void setPartitioningGeometricDistanceUnit(final String partitio...

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/operations/options/PropertyManagementConverter.java
  class PropertyManagementConverter (line 36) | public class PropertyManagementConverter {
    method PropertyManagementConverter (line 41) | public PropertyManagementConverter(final PropertyManagement properties) {
    method getProperties (line 45) | public PropertyManagement getProperties() {
    method readProperties (line 54) | public void readProperties(final Object object) {
    method handleEnum (line 119) | @SuppressWarnings("unchecked")

FILE: analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/operations/options/QueryOptionsCommand.java
  class QueryOptionsCommand (line 13) | public class QueryOptionsCommand {
    method QueryOptionsCommand (line 31) | public QueryOptionsCommand() {}
    method getAuthorizations (line 33) | public String[] getAuthorizations() {
    method setAuthorizations (line 37) | public void setAuthorizations(final String[] authorizations) {
    method getTypeNames (line 41) | public String[] getTypeNames() {
    method setTypeNames (line 45) | public void setTypeNames(final String[] typeNames) {
    method getIndexName (line 49) | public String getIndexName() {
    method setIndexName (line 53) | public void setIndexName(final String indexName) {

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/TestMapReducePersistableRegistry.java
  class TestMapReducePersistableRegistry (line 15) | public class TestMapReducePersistableRegistry implements
    method getSupportedPersistables (line 18) | @Override

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/ConvexHullJobRunnerTest.java
  class ConvexHullJobRunnerTest (line 54) | public class ConvexHullJobRunnerTest {
    method init (line 60) | @Before
    method test (line 170) | @Test

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/GroupAssigmentJobRunnerTest.java
  class GroupAssigmentJobRunnerTest (line 54) | public class GroupAssigmentJobRunnerTest {
    method init (line 61) | @Before
    method test (line 171) | @Test

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/dbscan/DBScanMapReduceTest.java
  class DBScanMapReduceTest (line 54) | public class DBScanMapReduceTest {
    method setUp (line 65) | @Before
    method createTestFeature (line 112) | private SimpleFeature createTestFeature(final String name, final Coord...
    method serializations (line 128) | private void serializations() {
    method testReducer (line 138) | @Test
    method getReducerDataFromMapperInput (line 211) | private List<Pair<PartitionDataWritable, List<AdapterWithObjectWritabl...
    method getListFor (line 221) | private List<AdapterWithObjectWritable> getListFor(
    method getPartitionDataFor (line 234) | private PartitionData getPartitionDataFor(
    method round (line 247) | private double round(final double value) {
    method test8With4 (line 251) | @Test
    method testScale (line 283) | @Test

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/kmeans/KMeansDistortionMapReduceTest.java
  class KMeansDistortionMapReduceTest (line 64) | public class KMeansDistortionMapReduceTest {
    method setUp (line 88) | @Before
    method ingest (line 177) | private void ingest(
    method serializations (line 189) | private void serializations() {
    method testMapper (line 199) | @Test
    method testReducer (line 233) | @Test

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/kmeans/KSamplerMapReduceTest.java
  class KSamplerMapReduceTest (line 56) | public class KSamplerMapReduceTest {
    method KSamplerMapReduceTest (line 67) | public KSamplerMapReduceTest() {}
    class TestSamplingMidRankFunction (line 69) | public static class TestSamplingMidRankFunction implements SamplingRan...
      method rank (line 71) | @Override
      method initialize (line 77) | @Override
    class TestSamplingNoRankFunction (line 82) | public static class TestSamplingNoRankFunction implements SamplingRank...
      method initialize (line 83) | @Override
      method rank (line 87) | @Override
    method setUp (line 94) | @Before
    method serializations (line 223) | private void serializations() {
    method testMapperWithMidRankedKey (line 232) | @Test
    method testMapperWithZeroRank (line 275) | @Test
    method testReducer (line 313) | @Test

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/kmeans/SimpleFeatureImplSerialization.java
  class SimpleFeatureImplSerialization (line 23) | public class SimpleFeatureImplSerialization implements Serialization<Sim...
    method accept (line 25) | @Override
    method getDeserializer (line 30) | @Override
    method getSerializer (line 35) | @Override
    class SFDeserializer (line 40) | public class SFDeserializer implements Deserializer<SimpleFeatureImpl> {
      method open (line 45) | @Override
      method deserialize (line 51) | @Override
      method close (line 58) | @Override
    class SFSerializer (line 64) | private static class SFSerializer implements Serializer<SimpleFeatureI...
      method open (line 69) | @Override
      method serialize (line 75) | @Override
      method close (line 82) | @Override

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/kmeans/TestObject.java
  class TestObject (line 17) | public class TestObject implements Serializable {
    method TestObject (line 29) | public TestObject() {
    method TestObject (line 33) | public TestObject(final Geometry geo, final String id, final String gr...
    method TestObject (line 41) | public TestObject(final Coordinate coor, final String id) {
    method getLevel (line 48) | public int getLevel() {
    method setLevel (line 52) | public void setLevel(final int level) {
    method getName (line 56) | public String getName() {
    method setName (line 60) | public void setName(final String name) {
    method getGroupID (line 64) | public String getGroupID() {
    method hashCode (line 68) | @Override
    method equals (line 77) | @Override

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/kmeans/TestObjectDataAdapter.java
  class TestObjectDataAdapter (line 24) | public class TestObjectDataAdapter implements HadoopDataAdapter<TestObje...
    method TestObjectDataAdapter (line 42) | public TestObjectDataAdapter() {
    method getTypeName (line 46) | @Override
    method getDataId (line 51) | @Override
    method newRowBuilder (line 56) | @Override
    method createWritableSerializer (line 94) | @Override
    class TestObjectHadoopSerializer (line 99) | private class TestObjectHadoopSerializer implements
      method toWritable (line 102) | @Override
      method fromWritable (line 107) | @Override
    method getFieldValue (line 113) | @Override
    method getDataClass (line 126) | @Override
    method getFieldDescriptors (line 131) | @Override
    method getFieldDescriptor (line 136) | @Override
    method toBinary (line 141) | @Override
    method fromBinary (line 146) | @Override

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/kmeans/TestObjectDimExtractor.java
  class TestObjectDimExtractor (line 15) | public class TestObjectDimExtractor extends EmptyDimensionExtractor<Test...
    method getGroupID (line 22) | @Override
    method getGeometry (line 27) | @Override

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/kmeans/TestObjectDistanceFn.java
  class TestObjectDistanceFn (line 16) | public class TestObjectDistanceFn implements DistanceFn<TestObject> {
    method getGeometry (line 24) | private Geometry getGeometry(final TestObject x) {
    method measure (line 28) | @Override

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/kmeans/TestObjectExtractor.java
  class TestObjectExtractor (line 14) | public class TestObjectExtractor implements CentroidExtractor<TestObject> {
    method getCentroid (line 15) | @Override

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/kmeans/TestObjectItemWrapperFactory.java
  class TestObjectItemWrapperFactory (line 19) | public class TestObjectItemWrapperFactory implements AnalyticItemWrapper...
    method create (line 21) | @Override
    method initialize (line 26) | @Override
    method createNextItem (line 30) | @Override
    class TestObjectItemWrapper (line 44) | static class TestObjectItemWrapper implements AnalyticItemWrapper<Test...
      method TestObjectItemWrapper (line 48) | public TestObjectItemWrapper(final TestObject item) {
      method getID (line 53) | @Override
      method getGroupID (line 58) | @Override
      method getWrappedItem (line 63) | @Override
      method getAssociationCount (line 68) | @Override
      method resetAssociatonCount (line 74) | @Override
      method incrementAssociationCount (line 80) | @Override
      method getIterationID (line 86) | @Override
      method getName (line 92) | @Override
      method getExtraDimensions (line 97) | @Override
      method getDimensionValues (line 102) | @Override
      method getGeometry (line 107) | @Override
      method getCost (line 112) | @Override
      method setCost (line 117) | @Override
      method setZoomLevel (line 123) | @Override
      method getZoomLevel (line 128) | @Override
      method setBatchID (line 133) | @Override
      method getBatchID (line 139) | @Override
      method setGroupID (line 145) | @Override

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/kmeans/TestObjectSerialization.java
  class TestObjectSerialization (line 21) | public class TestObjectSerialization implements Serialization<TestObject> {
    method accept (line 23) | @Override
    method getDeserializer (line 28) | @Override
    method getSerializer (line 33) | @Override
    class TODeserializer (line 38) | public class TODeserializer implements Deserializer<TestObject> {
      method open (line 43) | @Override
      method deserialize (line 49) | @Override
      method close (line 56) | @Override
    class TOSerializer (line 62) | private static class TOSerializer implements Serializer<TestObject> {
      method open (line 67) | @Override
      method serialize (line 73) | @Override
      method close (line 80) | @Override

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/kmeans/TestObjectWritable.java
  class TestObjectWritable (line 17) | public class TestObjectWritable implements Writable {
    method TestObjectWritable (line 21) | public TestObjectWritable() {}
    method TestObjectWritable (line 23) | public TestObjectWritable(final TestObject obj) {
    method getObj (line 28) | public TestObject getObj() {
    method setObj (line 32) | public void setObj(final TestObject obj) {
    method readFields (line 36) | @Override
    method write (line 48) | @Override
    method hashCode (line 57) | @Override
    method equals (line 65) | @Override

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/kmeans/runner/KMeansIterationsJobRunnerTest.java
  class KMeansIterationsJobRunnerTest (line 45) | public class KMeansIterationsJobRunnerTest {
    method setup (line 58) | @Before
    method testRun (line 74) | @Test
    class KMeansIterationsJobRunnerForTest (line 104) | public static class KMeansIterationsJobRunnerForTest extends
      method constructCentroidManager (line 126) | @Override
      method runJob (line 229) | @Override

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/kmeans/runner/StripWeakCentroidsRunnerTest.java
  class StripWeakCentroidsRunnerTest (line 33) | public class StripWeakCentroidsRunnerTest {
    method testStable (line 34) | @Test
    method testStable1 (line 41) | @Test
    method testStableUniform (line 53) | @Test
    method testMaxDense (line 65) | @Test
    method testMaxUniform (line 77) | @Test
    method testCliffMean (line 89) | @Test
    method testCliff (line 96) | @Test
    class StripWeakCentroidsRunnerForTest (line 102) | private static class StripWeakCentroidsRunnerForTest extends StripWeak...
      method StripWeakCentroidsRunnerForTest (line 107) | StripWeakCentroidsRunnerForTest(final int min, final int max) {
      method constructCentroidManager (line 114) | @Override
      method load (line 193) | private List<AnalyticItemWrapper<Long>> load() {
    class StripWeakCentroidsRunnerForTestOne (line 207) | private static class StripWeakCentroidsRunnerForTestOne extends StripW...
      method StripWeakCentroidsRunnerForTestOne (line 212) | StripWeakCentroidsRunnerForTestOne() {
      method constructCentroidManager (line 216) | @Override

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/nn/NNJobRunnerTest.java
  class NNJobRunnerTest (line 44) | public class NNJobRunnerTest {
    method init (line 50) | @Before
    method test (line 154) | @Test

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/nn/NNMapReduceTest.java
  class NNMapReduceTest (line 53) | public class NNMapReduceTest {
    method setUp (line 61) | @Before
    method createTestFeature (line 115) | private SimpleFeature createTestFeature(final Coordinate coord) {
    method serializations (line 131) | private void serializations() {
    method testMapper (line 141) | @Test
    method testWritable (line 208) | @Test
    method find (line 237) | private Text find(final List<Pair<Text, Text>> outputSet, final String...
    method getReducerDataFromMapperInput (line 246) | private List<Pair<PartitionDataWritable, List<AdapterWithObjectWritabl...
    method getListFor (line 256) | private List<AdapterWithObjectWritable> getListFor(
    method intersects (line 269) | private boolean intersects(final List<PartitionData> setOne, final Lis...
    method getPartitionDataFor (line 280) | private List<PartitionData> getPartitionDataFor(

FILE: analytics/mapreduce/src/test/java/org/locationtech/geowave/analytic/mapreduce/operations/options/PropertyManagementConverterTest.java
  class PropertyManagementConverterTest (line 16) | public class PropertyManagementConverterTest {
    method testConverter (line 18) | @Test

FILE: analytics/pyspark/src/main/python/geowave_pyspark/types.py
  class AbstractGeometryUDT (line 16) | class AbstractGeometryUDT(UserDefinedType):
    method sqlType (line 18) | def sqlType(cls):
    method module (line 22) | def module(cls):
    method scalaUDT (line 26) | def scalaUDT(cls):
    method serialize (line 29) | def serialize(self, obj):
    method deserialize (line 32) | def deserialize(self, datum):
  class PointUDT (line 35) | class PointUDT(AbstractGeometryUDT):
  class LineStringUDT (line 39) | class LineStringUDT(AbstractGeometryUDT):
  class PolygonUDT (line 43) | class PolygonUDT(AbstractGeometryUDT):
  class MultiPointUDT (line 47) | class MultiPointUDT(AbstractGeometryUDT):
  class MultiLineStringUDT (line 51) | class MultiLineStringUDT(AbstractGeometryUDT):
  class MultiPolygonUDT (line 55) | class MultiPolygonUDT(AbstractGeometryUDT):
  class GeometryUDT (line 59) | class GeometryUDT(AbstractGeometryUDT):
  function _serialize_to_wkb (line 63) | def _serialize_to_wkb(data):
  function _deserialize_from_wkb (line 69) | def _deserialize_from_wkb(data):

FILE: analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/AnalyticOperationCLIProvider.java
  class AnalyticOperationCLIProvider (line 19) | public class AnalyticOperationCLIProvider implements CLIOperationProvide...
    method getOperations (line 29) | @Override

FILE: analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/GeoWaveIndexedRDD.java
  class GeoWaveIndexedRDD (line 33) | public class GeoWaveIndexedRDD implements Serializable {
    method GeoWaveIndexedRDD (line 47) | public GeoWaveIndexedRDD(
    method reset (line 54) | public void reset() {
    method reindex (line 59) | public void reindex(final Broadcast<? extends NumericIndexStrategy> ne...
    method getIndexedFeatureRDD (line 68) | public JavaPairRDD<ByteArray, Tuple2<GeoWaveInputKey, SimpleFeature>> ...
    method getIndexedFeatureRDD (line 72) | public JavaPairRDD<ByteArray, Tuple2<GeoWaveInputKey, SimpleFeature>> ...
    method getIndexedGeometryRDD (line 148) | public JavaPairRDD<ByteArray, Tuple2<GeoWaveInputKey, Geometry>> getIn...
    method getIndexedGeometryRDD (line 152) | public JavaPairRDD<ByteArray, Tuple2<GeoWaveInputKey, Geometry>> getIn...
    method getIndexStrategy (line 225) | public Broadcast<NumericIndexStrategy> getIndexStrategy() {
    method getGeoWaveRDD (line 229) | public GeoWaveRDD getGeoWaveRDD() {
    method verifyParameters (line 233) | private boolean verifyParameters() {

FILE: analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/GeoWaveRDD.java
  class GeoWaveRDD (line 16) | public class GeoWaveRDD implements Serializable {
    method GeoWaveRDD (line 23) | public GeoWaveRDD() {}
    method GeoWaveRDD (line 25) | public GeoWaveRDD(final JavaPairRDD<GeoWaveInputKey, SimpleFeature> ra...
    method getRawRDD (line 29) | public JavaPairRDD<GeoWaveInputKey, SimpleFeature> getRawRDD() {
    method setRawRDD (line 33) | public void setRawRDD(final JavaPairRDD<GeoWaveInputKey, SimpleFeature...
    method isLoaded (line 37) | public boolean isLoaded() {

FILE: analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/GeoWaveRDDLoader.java
  class GeoWaveRDDLoader (line 28) | public class GeoWaveRDDLoader {
    method loadRDD (line 31) | public static GeoWaveRDD loadRDD(final SparkContext sc, final DataStor...
    method loadRDD (line 37) | public static GeoWaveRDD loadRDD(
    method loadIndexedRDD (line 46) | public static GeoWaveIndexedRDD loadIndexedRDD(
    method loadIndexedRDD (line 63) | public static GeoWaveIndexedRDD loadIndexedRDD(
    method loadRawRDD (line 81) | public static JavaPairRDD<GeoWaveInputKey, SimpleFeature> loadRawRDD(
    method loadRawRasterRDD (line 140) | public static JavaPairRDD<GeoWaveInputKey, GridCoverage> loadRawRaster...

FILE: analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/GeoWaveRasterRDD.java
  class GeoWaveRasterRDD (line 16) | public class GeoWaveRasterRDD implements Serializable {
    method GeoWaveRasterRDD (line 23) | public GeoWaveRasterRDD() {}
    method GeoWaveRasterRDD (line 25) | public GeoWaveRasterRDD(final JavaPairRDD<GeoWaveInputKey, GridCoverag...
    method getRawRDD (line 29) | public JavaPairRDD<GeoWaveInputKey, GridCoverage> getRawRDD() {
    method setRawRDD (line 33) | public void setRawRDD(final JavaPairRDD<GeoWaveInputKey, GridCoverage>...
    method isLoaded (line 37) | public boolean isLoaded() {

FILE: analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/GeoWaveRegistrator.java
  class GeoWaveRegistrator (line 24) | public class GeoWaveRegistrator implements KryoRegistrator {
    method registerClasses (line 25) | @Override

FILE: analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/GeoWaveSparkConf.java
  class GeoWaveSparkConf (line 20) | public class GeoWaveSparkConf implements Serializable {
    method getDefaultConfig (line 30) | public static SparkConf getDefaultConfig() {
    method applyDefaultsToConfig (line 44) | public static SparkConf applyDefaultsToConfig(final SparkConf userConf) {
    method createDefaultSession (line 55) | public static SparkSession createDefaultSession() {
    method createDefaultSession (line 62) | public static SparkSession createDefaultSession(final SparkConf addonO...
    method createSessionFromParams (line 69) | public static SparkSession createSessionFromParams(
    method internalCreateSession (line 103) | private static SparkSession internalCreateSession(

FILE: analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/RDDOptions.java
  class RDDOptions (line 13) | public class RDDOptions {
    method RDDOptions (line 18) | public RDDOptions() {}
    method getQuery (line 20) | public Query<?> getQuery() {
    method setQuery (line 24) | public void setQuery(final Query<?> query) {
    method getMinSplits (line 28) | public int getMinSplits() {
    method setMinSplits (line 32) | public void setMinSplits(final int minSplits) {
    method getMaxSplits (line 36) | public int getMaxSplits() {
    method setMaxSplits (line 40) | public void setMaxSplits(final int maxSplits) {

FILE: analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/RDDUtils.java
  class RDDUtils (line 45) | public class RDDUtils {
    method writeRDDToGeoWave (line 54) | public static void writeRDDToGeoWave(
    method writeRDDToGeoWave (line 68) | public static void writeRDDToGeoWave(
    method rddFeatureCentroids (line 89) | public static JavaRDD<Point> rddFeatureCentroids(final GeoWaveRDD inpu...
    method rddFeatureVectors (line 102) | public static JavaRDD<Vector> rddFeatureVectors(final GeoWaveRDD input...
    method rddFeatureVectors (line 107) | public static JavaRDD<Vector> rddFeatureVectors(
    method trimIndexIds (line 158) | public static InsertionIds trimIndexIds(
    method writeToGeoWave (line 191) | private static void writeToGeoWave(
    method writeRasterToGeoWave (line 223) | public static void writeRasterToGeoWave(
    method broadcastIndexStrategy (line 255) | public static Broadcast<? extends NumericIndexStrategy> broadcastIndex...

FILE: analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/kde/KDERunner.java
  class KDERunner (line 73) | public class KDERunner {
    method KDERunner (line 104) | public KDERunner() {}
    method initContext (line 106) | private void initContext() {
    method close (line 124) | public void close() {
    method setTileSize (line 131) | public void setTileSize(final int tileSize) {
    method run (line 135) | public void run() throws IOException {
    class PartitionAndSortKey (line 319) | private static class PartitionAndSortKey implements Serializable {
      method PartitionAndSortKey (line 324) | public PartitionAndSortKey(final byte[] partitionKey, final byte[] s...
      method hashCode (line 330) | @Override
      method equals (line 339) | @Override
    method fromCellIndexToTileInfo (line 361) | @SuppressFBWarnings(
    method getInputDataStore (line 393) | public DataStorePluginOptions getInputDataStore() {
    method setInputDataStore (line 397) | public void setInputDataStore(final DataStorePluginOptions inputDataSt...
    method getOutputDataStore (line 401) | public DataStorePluginOptions getOutputDataStore() {
    method setOutputIndex (line 405) | public void setOutputIndex(final Index outputIndex) {
    method setOutputDataStore (line 409) | public void setOutputDataStore(final DataStorePluginOptions outputData...
    method setSparkSession (line 413) | public void setSparkSession(final SparkSession ss) {
    method setAppName (line 417) | public void setAppName(final String appName) {
    method setIndexName (line 421) | public void setIndexName(final String indexName) {
    method setMinLevel (line 425) | public void setMinLevel(final int minLevel) {
    method setMaxLevel (line 429) | public void setMaxLevel(final int maxLevel) {
    method setMaster (line 433) | public void setMaster(final String master) {
    method setHost (line 437) | public void setHost(final String host) {
    method setCqlFilter (line 441) | public void setCqlFilter(final String cqlFilter) {
    method setTypeName (line 445) | public void setTypeName(final String typeName) {
    method setCoverageName (line 449) | public void setCoverageName(final String coverageName) {
    method setSplits (line 453) | public void setSplits(final int min, final int max) {
    class GeoWaveCellMapper (line 458) | protected static class GeoWaveCellMapper implements
      method GeoWaveCellMapper (line 475) | protected GeoWaveCellMapper(
      method call (line 494) | @Override
    class MergeOverlappingTiles (line 551) | private static class MergeOverlappingTiles implements
      method MergeOverlappingTiles (line 562) | public MergeOverlappingTiles(final RasterDataAdapter newAdapter, fin...
      method readObject (line 569) | private void readObject(final ObjectInputStream aInputStream)
      method writeObject (line 580) | private void writeObject(final ObjectOutputStream aOutputStream) thr...
      method call (line 589) | @Override
    class TransformTileSize (line 625) | private static class TransformTileSize implements
      method TransformTileSize (line 635) | public TransformTileSize(final RasterDataAdapter newAdapter, final I...
      method readObject (line 642) | private void readObject(final ObjectInputStream aInputStream)
      method writeObject (line 653) | private void writeObject(final ObjectOutputStream aOutputStream) thr...
      method call (line 662) | @Override
    class TileInfo (line 677) | private static final class TileInfo {
      method TileInfo (line 685) | public TileInfo(
      method hashCode (line 700) | @Override
      method equals (line 716) | @Override

FILE: analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/kde/operations/KDESparkCommand.java
  class KDESparkCommand (line 33) | @GeowaveOperation(name = "kdespark", parentOperation = AnalyticSection.c...
    method execute (line 46) | @Override
    method computeResults (line 55) | @Override
    method getParameters (line 117) | public List<String> getParameters() {
    method setParameters (line 121) | public void setParameters(final String inputStoreName, final String ou...
    method getInputStoreOptions (line 127) | public DataStorePluginOptions getInputStoreOptions() {
    method getOutputStoreOptions (line 131) | public DataStorePluginOptions getOutputStoreOptions() {
    method getKDESparkOptions (line 135) | public KDESparkOptions getKDESparkOptions() {
    method setKDESparkOptions (line 139) | public void setKDESparkOptions(final KDESparkOptions kdeSparkOptions) {

FILE: analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/kde/operations/KDESparkOptions.java
  class KDESparkOptions (line 13) | public class KDESparkOptions {
    method getOutputIndex (line 57) | public String getOutputIndex() {
    method setOutputIndex (line 61) | public void setOutputIndex(final String outputIndex) {
    method getAppName (line 65) | public String getAppName() {
    method setAppName (line 69) | public void setAppName(final String appName) {
    method getTileSize (line 73) | public Integer getTileSize() {
    method setTileSize (line 77) | public void setTileSize(final Integer tileSize) {
    method getIndexName (line 81) | public String getIndexName() {
    method setIndexName (line 85) | public void setIndexName(final String indexName) {
    method getMinLevel (line 89) | public Integer getMinLevel() {
    method setMinLevel (line 93) | public void setMinLevel(final Integer minLevel) {
    method getMaxLevel (line 97) | public Integer getMaxLevel() {
    method setMaxLevel (line 101) | public void setMaxLevel(final Integer maxLevel) {
    method getHost (line 105) | public String getHost() {
    method setHost (line 109) | public void setHost(final String host) {
    method getMaster (line 113) | public String getMaster() {
    method setMaster (line 117) | public void setMaster(final String master) {
    method getCqlFilter (line 121) | public String getCqlFilter() {
    method setCqlFilter (line 125) | public void setCqlFilter(final String cqlFilter) {
    method getTypeName (line 129) | public String getTypeName() {
    method setTypeName (line 133) | public void setTypeName(final String typeName) {
    method getMinSplits (line 137) | public Integer getMinSplits() {
    method setMinSplits (line 141) | public void setMinSplits(final Integer minSplits) {
    method getMaxSplits (line 145) | public Integer getMaxSplits() {
    method setMaxSplits (line 149) | public void setMaxSplits(final Integer maxSplits) {
    method getCoverageName (line 153) | public String getCoverageName() {
    method setCoverageName (line 157) | public void setCoverageName(final String coverageName) {

FILE: analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/kmeans/KMeansHullGenerator.java
  class KMeansHullGenerator (line 23) | public class KMeansHullGenerator {
    method groupByIndex (line 26) | public static JavaPairRDD<Integer, Iterable<Vector>> groupByIndex(
    method generateHullsRDD (line 35) | public static JavaPairRDD<Integer, Geometry> generateHullsRDD(

FILE: analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/kmeans/KMeansRunner.java
  class KMeansRunner (line 47) | public class KMeansRunner {
    method KMeansRunner (line 79) | public KMeansRunner() {}
    method initContext (line 81) | private void initContext() {
    method close (line 100) | public void close() {
    method run (line 107) | public void run() throws IOException {
    method writeToOutputStore (line 219) | public void writeToOutputStore() {
    method isUseTime (line 239) | public Boolean isUseTime() {
    method setUseTime (line 243) | public void setUseTime(final Boolean useTime) {
    method getCentroidTypeName (line 247) | public String getCentroidTypeName() {
    method setCentroidTypeName (line 251) | public void setCentroidTypeName(final String centroidTypeName) {
    method getHullTypeName (line 255) | public String getHullTypeName() {
    method setHullTypeName (line 259) | public void setHullTypeName(final String hullTypeName) {
    method isGenerateHulls (line 263) | public Boolean isGenerateHulls() {
    method setGenerateHulls (line 267) | public void setGenerateHulls(final Boolean generateHulls) {
    method isComputeHullData (line 271) | public Boolean isComputeHullData() {
    method setComputeHullData (line 275) | public void setComputeHullData(final Boolean computeHullData) {
    method getInputCentroids (line 279) | public JavaRDD<Vector> getInputCentroids() {
    method getInputDataStore (line 283) | public DataStorePluginOptions getInputDataStore() {
    method setInputDataStore (line 287) | public void setInputDataStore(final DataStorePluginOptions inputDataSt...
    method getOutputDataStore (line 291) | public DataStorePluginOptions getOutputDataStore() {
    method setOutputDataStore (line 295) | public void setOutputDataStore(final DataStorePluginOptions outputData...
    method setSparkSession (line 299) | public void setSparkSession(final SparkSession ss) {
    method setNumClusters (line 303) | public void setNumClusters(final int numClusters) {
    method setNumIterations (line 307) | public void setNumIterations(final int numIterations) {
    method setEpsilon (line 311) | public void setEpsilon(final Double epsilon) {
    method getOutputModel (line 315) | public KMeansModel getOutputModel() {
    method setAppName (line 319) | public void setAppName(final String appName) {
    method setMaster (line 323) | public void setMaster(final String master) {
    method setHost (line 327) | public void setHost(final String host) {
    method setCqlFilter (line 331) | public void setCqlFilter(final String cqlFilter) {
    method setTypeName (line 335) | public void setTypeName(final String typeName) {
    method setTimeParams (line 339) | public void setTimeParams(final String timeField, final ScaledTemporal...
    method setSplits (line 344) | public void setSplits(final int min, final int max) {

FILE: analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/kmeans/KMeansUtils.java
  class KMeansUtils (line 47) | public class KMeansUtils {
    method writeClusterCentroids (line 50) | public static DataTypeAdapter writeClusterCentroids(
    method writeClusterHulls (line 119) | public static DataTypeAdapter writeClusterHulls(
    method setRunnerTimeParams (line 211) | public static ScaledTemporalRange setRunnerTimeParams(

FILE: analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/kmeans/operations/KMeansSparkOptions.java
  class KMeansSparkOptions (line 13) | public class KMeansSparkOptions {
    method KMeansSparkOptions (line 65) | public KMeansSparkOptions() {}
    method getAppName (line 67) | public String getAppName() {
    method setAppName (line 71) | public void setAppName(final String appName) {
    method getHost (line 75) | public String getHost() {
    method setHost (line 79) | public void setHost(final String host) {
    method getMaster (line 83) | public String getMaster() {
    method setMaster (line 87) | public void setMaster(final String master) {
    method getNumClusters (line 91) | public Integer getNumClusters() {
    method setNumClusters (line 95) | public void setNumClusters(final Integer numClusters) {
    method getNumIterations (line 99) | public Integer getNumIterations() {
    method setNumIterations (line 103) | public void setNumIterations(final Integer numIterations) {
    method getEpsilon (line 107) | public Double getEpsilon() {
    method setEpsilon (line 111) | public void setEpsilon(final Double epsilon) {
    method isUseTime (line 115) | public Boolean isUseTime() {
    method setUseTime (line 119) | public void setUseTime(final Boolean useTime) {
    method isGenerateHulls (line 123) | public Boolean isGenerateHulls() {
    method setGenerateHulls (line 127) | public void setGenerateHulls(final Boolean generateHulls) {
    method isComputeHullData (line 131) | public Boolean isComputeHullData() {
    method setComputeHullData (line 135) | public void setComputeHullData(final Boolean computeHullData) {
    method getCqlFilter (line 139) | public String getCqlFilter() {
    method setCqlFilter (line 143) | public void setCqlFilter(final String cqlFilter) {
    method getTypeName (line 147) | public String getTypeName() {
    method setTypeName (line 151) | public void setTypeName(final String typeName) {
    method getMinSplits (line 155) | public Integer getMinSplits() {
    method setMinSplits (line 159) | public void setMinSplits(final Integer mi
Copy disabled (too large) Download .json
Condensed preview — 3163 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (15,266K chars).
[
  {
    "path": ".gitattributes",
    "chars": 710,
    "preview": "# Handle line endings automatically for files detected as text\n# and leave all files detected as binary untouched.\n* tex"
  },
  {
    "path": ".github/workflows/publish.yml",
    "chars": 2266,
    "preview": "name: Publish\non: \n  push:\n    branches:\n      - master\nenv:\n  DEV_RESOURCES_VERSION: 1.7\n  MAVEN_OPTS: \"-XX:CompressedC"
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 7267,
    "preview": "name: Tests\non: [push, pull_request]\nenv:\n    DEV_RESOURCES_VERSION: 1.7\n    MAVEN_PROFILES: '\"\"'\n    IT_ONLY: true\n    "
  },
  {
    "path": ".gitignore",
    "chars": 171,
    "preview": "*.project\n*.classpath\n*.prefs\n*.settings\ntarget\n*.log\ndependency-reduced-pom.xml\n*.imls\n*.iml\n.idea/\n.DS_Store\nbin\ndocke"
  },
  {
    "path": ".utility/.maven.xml",
    "chars": 1142,
    "preview": "<settings xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://maven.apache.org/SETTINGS/1.0.0\" xsi:schem"
  },
  {
    "path": ".utility/build-dev-resources.sh",
    "chars": 127,
    "preview": "#!/bin/bash\nset -v\npushd dev-resources\n# Build the dev-resources jar\necho -e \"Building dev-resources...\"\nmvn clean insta"
  },
  {
    "path": ".utility/build-python-docs.sh",
    "chars": 766,
    "preview": "#!/bin/bash\n\n# Build and Run Java Gateway\nmvn -q package -P geowave-tools-singlejar -Dspotbugs.skip -DskipTests >/dev/nu"
  },
  {
    "path": ".utility/publish-artifacts.sh",
    "chars": 1582,
    "preview": "#!/bin/bash\nset -ev\n\necho -e \"Building javadocs...\\n\"\nmvn javadoc:javadoc -B -DskipTests -Dspotbugs.skip\n\necho $GPG_SECR"
  },
  {
    "path": ".utility/publish-docs.sh",
    "chars": 1572,
    "preview": "#!/bin/bash\n\n# Get the version from the build.properties file\nfilePath=deploy/target/classes/build.properties\nGEOWAVE_VE"
  },
  {
    "path": ".utility/retry",
    "chars": 436,
    "preview": "#!/usr/bin/env bash\n\nset -euo pipefail\n\nx() {\n    echo \"+ $*\" >&2\n    \"$@\"\n}\nif [[ -z \"${RETRY_TESTS}\" ]]; then\n    x \"$"
  },
  {
    "path": ".utility/run-python-tests.sh",
    "chars": 844,
    "preview": "#!/bin/bash\n\n# Build and Run Java Gateway\nmvn -q package -P geowave-tools-singlejar -Dfindbugs.skip=true -DskipTests=tru"
  },
  {
    "path": ".utility/run-tests.sh",
    "chars": 755,
    "preview": "#!/bin/bash\nset -ev\nchmod +x .utility/*.sh\n\n.utility/build-dev-resources.sh\nif [ \"$PYTHON_BUILD\" == \"true\" ]; then\n  ech"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 368,
    "preview": "Before your contribution can be accepted by the project, you need to create an Eclipse Foundation \naccount and electroni"
  },
  {
    "path": "LICENSE",
    "chars": 11339,
    "preview": "Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licens"
  },
  {
    "path": "NOTICE",
    "chars": 1103,
    "preview": "Copyright 2019-2020 Maxar Technologies Inc.\nCopyright 2016-2020 Prominent Edge\nCopyright 2019-2020 BlackLynx\nCopyright 2"
  },
  {
    "path": "README.md",
    "chars": 9372,
    "preview": "<p align=\"center\">\n\t<a href=\"http://locationtech.github.io/geowave/\">\n\t<img float=\"center\" width=\"65%\" src=\"https://raw"
  },
  {
    "path": "analytics/api/pom.xml",
    "chars": 2039,
    "preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocat"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/AdapterWithObjectWritable.java",
    "chars": 3583,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/AnalyticFeature.java",
    "chars": 5641,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/AnalyticItemWrapper.java",
    "chars": 1417,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/AnalyticItemWrapperFactory.java",
    "chars": 1281,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/AnalyticPersistableRegistry.java",
    "chars": 1626,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/GeoObjectDimensionValues.java",
    "chars": 3555,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/GeometryCalculations.java",
    "chars": 4710,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/GeometryDataSetGenerator.java",
    "chars": 20490,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/GeometryHullTool.java",
    "chars": 29303,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/IndependentJobRunner.java",
    "chars": 736,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/Projection.java",
    "chars": 1046,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/PropertyManagement.java",
    "chars": 24905,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/ScopedJobConfiguration.java",
    "chars": 3577,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/SerializableAdapterStore.java",
    "chars": 2886,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/ShapefileTool.java",
    "chars": 6246,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/SimpleFeatureItemWrapperFactory.java",
    "chars": 6361,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/SimpleFeatureProjection.java",
    "chars": 1236,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/CentroidItemWrapperFactory.java",
    "chars": 4903,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/CentroidManager.java",
    "chars": 2341,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/CentroidManagerGeoWave.java",
    "chars": 22749,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/CentroidPairing.java",
    "chars": 2662,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/ClusteringUtils.java",
    "chars": 5716,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/DistortionGroupManagement.java",
    "chars": 12485,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/LongCentroid.java",
    "chars": 3303,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/NeighborData.java",
    "chars": 2677,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/NestedGroupCentroidAssignment.java",
    "chars": 8820,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/clustering/exception/MatchingCentroidNotFoundException.java",
    "chars": 1176,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/CoordinateCircleDistanceFn.java",
    "chars": 2597,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/CoordinateCosineDistanceFn.java",
    "chars": 1055,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/CoordinateEuclideanDistanceFn.java",
    "chars": 1020,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/DistanceFn.java",
    "chars": 675,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/FeatureCentroidDistanceFn.java",
    "chars": 2018,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/FeatureCentroidOrthodromicDistanceFn.java",
    "chars": 839,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/FeatureDistanceFn.java",
    "chars": 2284,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/FeatureGeometryDistanceFn.java",
    "chars": 2182,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/distance/GeometryCentroidDistanceFn.java",
    "chars": 1656,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/extract/CentroidExtractor.java",
    "chars": 852,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/extract/DimensionExtractor.java",
    "chars": 1338,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/extract/EmptyDimensionExtractor.java",
    "chars": 1104,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/extract/SimpleFeatureCentroidExtractor.java",
    "chars": 1162,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/extract/SimpleFeatureGeometryExtractor.java",
    "chars": 2230,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/extract/SimpleFeatureInteriorPointExtractor.java",
    "chars": 1215,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/extract/TimeDimensionExtractor.java",
    "chars": 1797,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/kmeans/AssociationNotification.java",
    "chars": 791,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/kmeans/CentroidAssociationFn.java",
    "chars": 2151,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/kmeans/serial/AnalyticStats.java",
    "chars": 660,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/kmeans/serial/KMeansParallelInitialize.java",
    "chars": 3624,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/kmeans/serial/StatsMap.java",
    "chars": 1087,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/kryo/FeatureSerializer.java",
    "chars": 2198,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/kryo/GridCoverageWritableSerializer.java",
    "chars": 2133,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * See the NOTICE file distributed with this wo"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/kryo/PersistableSerializer.java",
    "chars": 1744,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/model/IndexModelBuilder.java",
    "chars": 662,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/model/SpatialIndexModelBuilder.java",
    "chars": 1079,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/DefaultNeighborList.java",
    "chars": 1862,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/DistanceProfile.java",
    "chars": 1281,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/DistanceProfileGenerateFn.java",
    "chars": 677,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/NNProcessor.java",
    "chars": 10906,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/NeighborIndex.java",
    "chars": 2954,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/NeighborList.java",
    "chars": 1204,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/NeighborListFactory.java",
    "chars": 670,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/NullList.java",
    "chars": 1227,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/nn/TypeConverter.java",
    "chars": 746,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/BasicParameterHelper.java",
    "chars": 5097,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/CentroidParameters.java",
    "chars": 2048,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/ClusteringParameters.java",
    "chars": 1648,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/CommonParameters.java",
    "chars": 1781,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/ExtractParameters.java",
    "chars": 1933,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/FormatConfiguration.java",
    "chars": 1122,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/GlobalParameters.java",
    "chars": 1192,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/GroupParameterEnum.java",
    "chars": 657,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/HullParameters.java",
    "chars": 2399,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/InputParameters.java",
    "chars": 1261,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/InputStoreParameterHelper.java",
    "chars": 2434,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/JumpParameters.java",
    "chars": 1405,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/MapReduceParameters.java",
    "chars": 1979,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/OutputParameters.java",
    "chars": 1734,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/OutputStoreParameterHelper.java",
    "chars": 2442,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/ParameterEnum.java",
    "chars": 642,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/ParameterHelper.java",
    "chars": 1044,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/PartitionParameters.java",
    "chars": 2054,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/SampleParameters.java",
    "chars": 2067,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/StoreParameters.java",
    "chars": 967,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/annotations/CentroidParameter.java",
    "chars": 1017,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/annotations/ClusteringParameter.java",
    "chars": 1025,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/annotations/CommonParameter.java",
    "chars": 1009,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/annotations/ExtractParameter.java",
    "chars": 1013,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/annotations/GlobalParameter.java",
    "chars": 1009,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/annotations/HullParameter.java",
    "chars": 1001,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/annotations/InputParameter.java",
    "chars": 1005,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/annotations/JumpParameter.java",
    "chars": 1001,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/annotations/MapReduceParameter.java",
    "chars": 1019,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/annotations/OutputParameter.java",
    "chars": 1009,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/annotations/PartitionParameter.java",
    "chars": 1021,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/param/annotations/SampleParameter.java",
    "chars": 1009,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/partitioner/AbstractPartitioner.java",
    "chars": 12398,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/partitioner/BoundaryPartitioner.java",
    "chars": 3653,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/partitioner/OrthodromicDistancePartitioner.java",
    "chars": 11084,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/partitioner/Partitioner.java",
    "chars": 6530,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/sample/BahmanEtAlSampleProbabilityFn.java",
    "chars": 1104,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/sample/RandomProbabilitySampleFn.java",
    "chars": 1071,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/sample/SampleNotification.java",
    "chars": 577,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/sample/SampleProbabilityFn.java",
    "chars": 657,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/sample/Sampler.java",
    "chars": 2808,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/sample/function/CentroidDistanceBasedSamplingRankFunction.java",
    "chars": 6695,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/sample/function/RandomSamplingRankFunction.java",
    "chars": 1258,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/sample/function/SamplingRankFunction.java",
    "chars": 959,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/java/org/locationtech/geowave/analytic/store/PersistableStore.java",
    "chars": 3430,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/main/resources/META-INF/services/org.locationtech.geowave.core.index.persist.PersistableRegistrySpi",
    "chars": 61,
    "preview": "org.locationtech.geowave.analytic.AnalyticPersistableRegistry"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/AnalyticFeatureTest.java",
    "chars": 3696,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/GeometryCalculationsTest.java",
    "chars": 3101,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/GeometryDataSetGeneratorTest.java",
    "chars": 1889,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/GeometryGenerator.java",
    "chars": 2753,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/GeometryHullToolTest.java",
    "chars": 18250,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/PropertyManagementTest.java",
    "chars": 11083,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/SerializableAdapterStoreTest.java",
    "chars": 2550,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/SimpleFeatureCentroidExractorTest.java",
    "chars": 2073,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/clustering/CentroidManagerTest.java",
    "chars": 7714,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/clustering/DistortionGroupManagementTest.java",
    "chars": 10890,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/clustering/NestedGroupCentroidAssignmentTest.java",
    "chars": 9280,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/distance/CoordinateCircleDistanceFnTest.java",
    "chars": 1412,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/distance/FeatureDistanceFnTest.java",
    "chars": 5207,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/kmeans/CentroidAssociationFnTest.java",
    "chars": 2857,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/kmeans/KMeansParallelInitializeTest.java",
    "chars": 4910,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/kryo/FeatureSerializationTest.java",
    "chars": 2571,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/nn/NNProcessorTest.java",
    "chars": 7300,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/partitioner/BoundaryDistancePartitionerTest.java",
    "chars": 5926,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/api/src/test/java/org/locationtech/geowave/analytic/partitioner/OrthodromicDistancePartitionerTest.java",
    "chars": 7208,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/.gitignore",
    "chars": 6,
    "preview": "/bin/\n"
  },
  {
    "path": "analytics/mapreduce/pom.xml",
    "chars": 1404,
    "preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocat"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/CountofDoubleWritable.java",
    "chars": 3100,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/DoubleOutputFormat.java",
    "chars": 2043,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/GeoWaveAnalyticJobRunner.java",
    "chars": 12434,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/GeoWaveInputFormatConfiguration.java",
    "chars": 4282,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/GeoWaveOutputFormatConfiguration.java",
    "chars": 2098,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/GroupIDText.java",
    "chars": 981,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/HadoopOptions.java",
    "chars": 3554,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/MapReduceIntegration.java",
    "chars": 1210,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/MapReduceJobController.java",
    "chars": 3578,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/MapReduceJobRunner.java",
    "chars": 750,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/SequenceFileInputFormatConfiguration.java",
    "chars": 2071,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/SequenceFileOutputFormatConfiguration.java",
    "chars": 2096,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/ToolRunnerMapReduceIntegration.java",
    "chars": 1675,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/ConvexHullMapReduce.java",
    "chars": 11704,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/GroupAssignmentMapReduce.java",
    "chars": 7013,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/InputToOutputKeyReducer.java",
    "chars": 2595,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/SimpleFeatureOutputReducer.java",
    "chars": 6615,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/AnalyticJobRunner.java",
    "chars": 1294,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/ClusteringRunner.java",
    "chars": 926,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/ConvexHullJobRunner.java",
    "chars": 5535,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/GeoWaveAnalyticExtractJobRunner.java",
    "chars": 10872,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/GeoWaveInputLoadJobRunner.java",
    "chars": 4779,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/GroupAssigmentJobRunner.java",
    "chars": 4478,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/MultiLevelClusteringJobRunner.java",
    "chars": 8534,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/MultiLevelJumpKMeansClusteringJobRunner.java",
    "chars": 830,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/clustering/runner/MultiLevelKMeansClusteringJobRunner.java",
    "chars": 838,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/Cluster.java",
    "chars": 1076,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/ClusterItem.java",
    "chars": 2173,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/ClusterItemDistanceFn.java",
    "chars": 4502,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/ClusterNeighborList.java",
    "chars": 3054,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/ClusterUnionList.java",
    "chars": 2525,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/DBScanClusterList.java",
    "chars": 9973,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/DBScanIterationsJobRunner.java",
    "chars": 12828,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/DBScanJobRunner.java",
    "chars": 7730,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/DBScanMapReduce.java",
    "chars": 15288,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/PreProcessSingleItemClusterList.java",
    "chars": 2399,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/dbscan/SingleItemClusterList.java",
    "chars": 5396,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/CellCounter.java",
    "chars": 580,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/CellSummationCombiner.java",
    "chars": 1104,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/CellSummationReducer.java",
    "chars": 2441,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/DoubleLevelPartitioner.java",
    "chars": 620,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/GaussianCellMapper.java",
    "chars": 6312,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/GaussianFilter.java",
    "chars": 26247,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/IdentityMapper.java",
    "chars": 1009,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/KDECommandLineOptions.java",
    "chars": 4354,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/KDEJobRunner.java",
    "chars": 23676,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/KDEReducer.java",
    "chars": 9583,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/LevelPartitioner.java",
    "chars": 972,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/MapContextCellCounter.java",
    "chars": 1754,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonAccumuloStatsReducer.java",
    "chars": 4600,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonCellData.java",
    "chars": 2444,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonCellDataReducer.java",
    "chars": 2135,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonCellLevelPartitioner.java",
    "chars": 669,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  },
  {
    "path": "analytics/mapreduce/src/main/java/org/locationtech/geowave/analytic/mapreduce/kde/compare/ComparisonCellSummationReducer.java",
    "chars": 1240,
    "preview": "/**\n * Copyright (c) 2013-2022 Contributors to the Eclipse Foundation\n *\n * <p> See the NOTICE file distributed with thi"
  }
]

// ... and 2963 more files (download for full content)

About this extraction

This page contains the full source code of the locationtech/geowave GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3163 files (13.7 MB), approximately 3.8M tokens, and a symbol index with 21915 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!