return new CloseableIterator.Wrapper<>(featureData.iterator());
trackBuilder.buildFeature(trackUuid))); return new CloseableIterator.Wrapper<>(geowaveData.iterator());
LOGGER.error("Failed to read gz entry: " + hfile.getOriginalFilePath(), e); return new CloseableIterator.Wrapper<>(featureData.iterator());
final AbstractGridFormat format = prioritizedFindFormat(input); if (format == null) { return new Wrapper(Collections.emptyIterator()); if (reader == null) { LOGGER.error("Unable to get reader instance, getReader returned null"); return new Wrapper(Collections.emptyIterator()); e); return new Wrapper(Collections.emptyIterator());
return new CloseableIterator.Wrapper(new Iterator<GeoWaveMetadata>() { final PeekingIterator<GeoWaveMetadata> peekingIt = Iterators.peekingIterator(itTransformed); return new CloseableIterator.Wrapper( Iterators.forArray(Iterators.toArray(itTransformed, GeoWaveMetadata.class)));
return new CloseableIterator.Wrapper<>( Iterators.singletonIterator(mergedAggregationResult));
return new CloseableIterator.Wrapper<>(featureData.iterator());
transformedIt); } else { return new CloseableIterator.Wrapper<>(transformedIt); LOGGER.warn("GeoWave metadata table not found", e); return new CloseableIterator.Wrapper<>(Collections.emptyIterator());
new CloseableIterator.Wrapper<>( Iterators.transform( rs.iterator(),
final CloseableIterator<GeoWaveMetadata> retVal; if (isStats) { retVal = new CloseableIterator.Wrapper<>(RedisUtils.groupByIds(results)); } else { retVal = new CloseableIterator.Wrapper<>(results.iterator());
@Override protected CloseableIterator<GeoWaveData<SimpleFeature>> toGeoWaveDataInternal( final AvroSimpleFeatureCollection featureCollection, final String[] indexNames, final String globalVisibility) { final AvroFeatureDefinition featureDefinition = featureCollection.getFeatureType(); final List<GeoWaveData<SimpleFeature>> retVal = new ArrayList<GeoWaveData<SimpleFeature>>(); SimpleFeatureType featureType; try { featureType = GeoWaveAvroFeatureUtils.avroFeatureDefinitionToGTSimpleFeatureType(featureDefinition); final FeatureDataAdapter adapter = new FeatureDataAdapter(featureType); final List<String> attributeTypes = featureDefinition.getAttributeTypes(); for (final AvroAttributeValues attributeValues : featureCollection.getSimpleFeatureCollection()) { try { final SimpleFeature simpleFeature = GeoWaveAvroFeatureUtils.avroSimpleFeatureToGTSimpleFeature( featureType, attributeTypes, attributeValues); retVal.add(new GeoWaveData<SimpleFeature>(adapter, indexNames, simpleFeature)); } catch (final Exception e) { LOGGER.warn("Unable to read simple feature from Avro", e); } } } catch (final ClassNotFoundException e) { LOGGER.warn("Unable to read simple feature type from Avro", e); } return new Wrapper<GeoWaveData<SimpleFeature>>(retVal.iterator()); }
@Override public CloseableIterator<GeoWaveData<Object>> toGeoWaveData( final AvroWholeFile input, final String[] indexNames, final String globalVisibility) { try (CloseableIterator<KeyValueData<Text, Stanag4676EventWritable>> intermediateData = toIntermediateMapReduceData(input)) { // this is much better done in the reducer of a map reduce job, // this aggregation by track UUID is not memory efficient final Map<Text, List<Stanag4676EventWritable>> trackUuidMap = new HashMap<>(); while (intermediateData.hasNext()) { final KeyValueData<Text, Stanag4676EventWritable> next = intermediateData.next(); List<Stanag4676EventWritable> trackEvents = trackUuidMap.get(next.getKey()); if (trackEvents == null) { trackEvents = new ArrayList<>(); trackUuidMap.put(next.getKey(), trackEvents); } trackEvents.add(next.getValue()); } final List<CloseableIterator<GeoWaveData<Object>>> iterators = new ArrayList<>(); for (final Entry<Text, List<Stanag4676EventWritable>> entry : trackUuidMap.entrySet()) { iterators.add( toGeoWaveData(entry.getKey(), indexNames, globalVisibility, entry.getValue())); } return new CloseableIterator.Wrapper<>(Iterators.concat(iterators.iterator())); } } }
private CloseableIterator<T> executeQuery(final List<RangeReadInfo> reads) { if (isSortFinalResultsBySortKey) { // order the reads by sort keys reads.sort(ScoreOrderComparator.SINGLETON); } final Iterator<ScoredEntry<GeoWaveRedisPersistedRow>> result = Iterators.concat(reads.stream().map(r -> { ByteArray partitionKey; if ((r.partitionKey == null) || (r.partitionKey.length == 0)) { partitionKey = EMPTY_PARTITION_KEY; } else { partitionKey = new ByteArray(r.partitionKey); } // if we don't have enough // precision we need to make // sure the end is inclusive return new PartitionIteratorWrapper( setCache.get(partitionKey).entryRange( r.startScore, true, r.endScore, r.endScore <= r.startScore), r.partitionKey); }).iterator()); return new CloseableIterator.Wrapper<>(transformAndFilter(result)); }
@Override protected CloseableIterator<GeoWaveData<SimpleFeature>> toGeoWaveDataInternal( final AvroTdrivePoint tdrivePoint, final String[] indexNames, final String globalVisibility) { final List<GeoWaveData<SimpleFeature>> featureData = new ArrayList<>(); // tdrivepointBuilder = new SimpleFeatureBuilder(tdrivepointType); tdrivepointBuilder.set( "geometry", GeometryUtils.GEOMETRY_FACTORY.createPoint( new Coordinate(tdrivePoint.getLongitude(), tdrivePoint.getLatitude()))); tdrivepointBuilder.set("taxiid", tdrivePoint.getTaxiid()); tdrivepointBuilder.set("pointinstance", tdrivePoint.getPointinstance()); tdrivepointBuilder.set("Timestamp", new Date(tdrivePoint.getTimestamp())); tdrivepointBuilder.set("Latitude", tdrivePoint.getLatitude()); tdrivepointBuilder.set("Longitude", tdrivePoint.getLongitude()); featureData.add( new GeoWaveData<SimpleFeature>( TdriveUtils.TDRIVE_POINT_FEATURE, indexNames, tdrivepointBuilder.buildFeature( tdrivePoint.getTaxiid() + "_" + tdrivePoint.getPointinstance()))); return new CloseableIterator.Wrapper<>(featureData.iterator()); }
public static CloseableIterator<Object> aggregate( final CloseableIterator<Object> it, final Aggregation<?, ?, Object> aggregationFunction) { if ((it != null) && it.hasNext()) { try { synchronized (aggregationFunction) { aggregationFunction.clearResult(); while (it.hasNext()) { final Object input = it.next(); if (input != null) { aggregationFunction.aggregate(input); } } } } finally { it.close(); } return new Wrapper(Iterators.singletonIterator(aggregationFunction.getResult())); } return new CloseableIterator.Empty(); }
private CloseableIterator<GridCoverage> queryForTiles( final RasterDataAdapter adapter, final QueryConstraints query, final double[] targetResolutionPerDimension) { final AdapterToIndexMapping adapterIndexMapping = geowaveAdapterIndexMappingStore.getIndicesForAdapter(getAdapterId(adapter.getTypeName())); final Index[] indices = adapterIndexMapping.getIndices(geowaveIndexStore); // just work on the first spatial only index that contains this adapter // ID // TODO consider the best strategy for handling temporal queries here for (final Index rasterIndex : indices) { if (SpatialDimensionalityTypeProvider.isSpatial(rasterIndex)) { return (CloseableIterator) geowaveDataStore.query( QueryBuilder.newBuilder().setAuthorizations( authorizationSPI.getAuthorizations()).addTypeName( adapter.getTypeName()).constraints(query).addHint( DataStoreUtils.TARGET_RESOLUTION_PER_DIMENSION_FOR_HIERARCHICAL_INDEX, targetResolutionPerDimension).build()); } } return new Wrapper(Collections.emptyIterator()); }
@Override public CloseableIterator<AvroGpxTrack> toAvroObjects(final URL input) { AvroGpxTrack track = null; if (metadata != null) { try { final long id = Long.parseLong(FilenameUtils.getBaseName(input.getPath())); track = metadata.remove(id); } catch (final NumberFormatException e) { LOGGER.info("OSM metadata found, but track file name is not a numeric ID"); } } if (track == null) { track = new AvroGpxTrack(); track.setTrackid(currentFreeTrackId.getAndIncrement()); } try { track.setGpxfile(ByteBuffer.wrap(IOUtils.toByteArray(input))); } catch (final IOException e) { LOGGER.warn("Unable to read GPX file: " + input.getPath(), e); } return new CloseableIterator.Wrapper<>(Iterators.singletonIterator(track)); }
public synchronized CloseableIterator<GeoWaveRow> dataIndexIterator(final byte[][] dataIds) { final RocksDB readDb = getReadDb(); if (readDb == null) { return new CloseableIterator.Empty<>(); } try { final List<byte[]> dataIdsList = Arrays.asList(dataIds); final Map<byte[], byte[]> dataIdxResults = readDb.multiGet(dataIdsList); return new CloseableIterator.Wrapper( dataIdsList.stream().map( dataId -> DataIndexUtils.deserializeDataIndexRow( dataId, adapterId, dataIdxResults.get(dataId), visibilityEnabled)).iterator()); } catch (final RocksDBException e) { LOGGER.error("Unable to get values by data ID", e); } return new CloseableIterator.Empty<>(); } }
protected CloseableIterator<InternalDataStatistics<?, ?, ?>> internalGetDataStatistics( final Short adapterId, final ByteArray primaryId, final String... authorizations) { final ByteArray secondaryId = adapterId == null ? null : shortToByteArrayId(adapterId); final Object cacheResult = getObjectFromCache(primaryId, secondaryId, authorizations); // if there's an exact match in the cache return a singleton if (cacheResult != null) { return new CloseableIterator.Wrapper<>( Iterators.singletonIterator((InternalDataStatistics<?, ?, ?>) cacheResult)); } // otherwise scan // TODO issue 1443 will enable prefix scans on the primary ID return internalGetObjects( new MetadataQuery( primaryId.getBytes(), secondaryId == null ? null : secondaryId.getBytes(), authorizations)); }
@Override public CloseableIterator<SimpleFeature> query(final Index index, final BasicQuery query) { final VectorAggregationQueryBuilder<DistributedRenderOptions, DistributedRenderResult> bldr = (VectorAggregationQueryBuilder) VectorAggregationQueryBuilder.newBuilder().indexName( index.getName()).setAuthorizations(transaction.composeAuthorizations()); bldr.aggregate( components.getAdapter().getTypeName(), new DistributedRenderAggregation(renderOptions)).constraints( OptimalCQLQuery.createOptimalQuery(filter, components.getAdapter(), index, query)); final DistributedRenderResult result = components.getDataStore().aggregate(bldr.build()); return new CloseableIterator.Wrapper( Iterators.singletonIterator( SimpleFeatureBuilder.build( GeoWaveFeatureCollection.getDistributedRenderFeatureType(), new Object[] {result, renderOptions}, "render"))); } }