final Set<String> authorizationsSet = new HashSet<>(Arrays.asList(authorizations)); it = new CloseableIteratorWrapper<>( resultIterator, Iterators.filter(resultIterator, new Predicate<GeoWaveMetadata>() { } else { it = new CloseableIteratorWrapper<>( resultIterator, Iterators.filter(resultIterator, new Predicate<GeoWaveMetadata>() {
private CloseableIterator<GeoWaveValue[]> getData(final short adapterId, final byte[][] dataIds) { final RowReader<GeoWaveRow> rowReader = DataIndexUtils.getRowReader( operations, adapterStore, internalAdapterStore, fieldSubsets, aggregation, additionalAuthorizations, adapterId, dataIds); return new CloseableIteratorWrapper<>( rowReader, Iterators.transform(rowReader, r -> r.getFieldValues())); }
@Override public CloseableIterator<Index> getIndices() { final CloseableIterator<Index> it = persistentIndexStore.getIndices(); // cache any results return new CloseableIteratorWrapper<Index>( it, IteratorUtils.transformedIterator(it, new Transformer() { @Override public Object transform(final Object obj) { indexCache.put(((Index) obj).getName(), (Index) obj); return obj; } })); }
@Override public CloseableIterator<DataTypeAdapter<?>> getAdapters() { final CloseableIterator<InternalDataAdapter<?>> it = persistentAdapterStore.getAdapters(); // cache any results return new CloseableIteratorWrapper<DataTypeAdapter<?>>( it, IteratorUtils.transformedIterator(it, new Transformer() { @Override public Object transform(final Object obj) { if (obj instanceof DataTypeAdapter) { adapterCache.put(((DataTypeAdapter) obj).getTypeName(), (DataTypeAdapter) obj); } return obj; } })); }
public CloseableIterator<T> executeQuery(final List<RangeReadInfo> reads) { if (isSortFinalResultsBySortKey) { // order the reads by sort keys reads.sort(ScoreOrderComparator.SINGLETON); } final List<CloseableIterator<GeoWaveRow>> iterators = reads.stream().map(r -> { ByteArray partitionKey; if ((r.partitionKey == null) || (r.partitionKey.length == 0)) { partitionKey = EMPTY_PARTITION_KEY; } else { partitionKey = new ByteArray(r.partitionKey); } return setCache.get(partitionKey).iterator(r.sortKeyRange); }).collect(Collectors.toList()); return transformAndFilter(new CloseableIteratorWrapper<>(new Closeable() { @Override public void close() throws IOException { iterators.forEach(i -> i.close()); } }, Iterators.concat(iterators.iterator()))); }
@Override public CloseableIterator<InternalDataAdapter<?>> getAdapters() { final CloseableIterator<DataTypeAdapter<?>> it = adapterStore.getAdapters(); return new CloseableIteratorWrapper<>( it, Iterators.transform(it, new Function<DataTypeAdapter<?>, InternalDataAdapter<?>>() { @Override public InternalDataAdapter<?> apply(final DataTypeAdapter<?> adapter) { if (adapter instanceof InternalDataAdapter) { return (InternalDataAdapter<?>) adapter; } return new InternalDataAdapterWrapper<>( adapter, internalAdapterStore.getAdapterId(adapter.getTypeName())); } })); }
/** Mostly guava's concatenate method, but there is a need for a callback between iterators */ protected CloseableIterator<Pair<GeoWaveInputKey, T>> concatenateWithCallback( final List<Pair<RangeLocationPair, RowReader<GeoWaveRow>>> inputs, final NextRangeCallback nextRangeCallback, final Index index, final QueryFilter[] filters, final DataIndexRetrieval dataIndexRetrieval) { Preconditions.checkNotNull(inputs); return new CloseableIteratorWrapper<>(new Closeable() { @Override public void close() { for (final Pair<RangeLocationPair, RowReader<GeoWaveRow>> input : inputs) { input.getRight().close(); } } }, rowReaderToKeyValues( index, filters, dataIndexRetrieval, new ConcatenatedIteratorWithCallback(nextRangeCallback, inputs.iterator()))); }
return new CloseableIteratorWrapper<T>(new Closeable() { @Override public void close() throws IOException {
private CloseableIterator<T> transformAndFilter(final CloseableIterator<GeoWaveRow> result) { final Iterator<GeoWaveRow> iterator = Iterators.filter(result, filter); return new CloseableIteratorWrapper<>( result, rowTransformer.apply( sortByKeyIfRequired( isSortFinalResultsBySortKey, rowMerging ? new GeoWaveRowMergingIterator(iterator) : iterator))); }
return new CloseableIteratorWrapper<>(new Closeable() { @Override public void close() throws IOException {
return new CloseableIteratorWrapper<>(geowaveData, it);
@SuppressWarnings("unchecked") private CloseableIterator<T> wrapResults( final CloseableIterator<CassandraRow> results, final RangeReaderParams<T> readerParams) { final Set<String> authorizations = Sets.newHashSet(readerParams.getAdditionalAuthorizations()); final Iterator<GeoWaveRow> iterator = (Iterator) Iterators.filter(results, new ClientVisibilityFilter(authorizations)); return new CloseableIteratorWrapper<>( results, rowTransformer.apply( DataStoreUtils.isMergingIteratorRequired(readerParams, visibilityEnabled) ? new GeoWaveRowMergingIterator(iterator) : iterator)); }
public CloseableIterator<CassandraRow> getRows( final String tableName, final byte[][] dataIds, final Short internalAdapterId, final String... additionalAuthorizations) { final Set<ByteArray> dataIdsSet = new HashSet<>(dataIds.length); for (int i = 0; i < dataIds.length; i++) { dataIdsSet.add(new ByteArray(dataIds[i])); } final CloseableIterator<CassandraRow> everything = executeQuery( QueryBuilder.select().from( gwNamespace, getCassandraSafeName(tableName)).allowFiltering()); return new CloseableIteratorWrapper<>( everything, Iterators.filter(everything, new Predicate<GeoWaveRow>() { @Override public boolean apply(final GeoWaveRow input) { return dataIdsSet.contains(new ByteArray(input.getDataId())) && (input.getAdapterId() == internalAdapterId); } })); }
@Override public String[] getTypeNames() { final MetadataReader reader = getReader(false); if (reader == null) { return new String[0]; } final CloseableIterator<GeoWaveMetadata> results = reader.query(new MetadataQuery(null, INTERNAL_TO_EXTERNAL_ID)); try (CloseableIterator<String> it = new CloseableIteratorWrapper<>( results, Iterators.transform( results, input -> StringUtils.stringFromBinary(input.getValue())))) { return Iterators.toArray(it, String.class); } }
@SuppressWarnings("unchecked") private CloseableIterator<T> wrapResults( final Closeable closeable, final Iterator<GeoWaveRow> results, final RangeReaderParams<T> params, final GeoWaveRowIteratorTransformer<T> rowTransformer, final Set<String> authorizations, final boolean visibilityEnabled) { final Iterator<GeoWaveRow> iterator = Iterators.filter(results, new ClientVisibilityFilter(authorizations)); return new CloseableIteratorWrapper<>( closeable, rowTransformer.apply( sortBySortKeyIfRequired( params, DataStoreUtils.isMergingIteratorRequired(params, visibilityEnabled) ? new GeoWaveRowMergingIterator(iterator) : iterator))); }
new String[0])); }).collect(Collectors.toList()); return new RowReaderWrapper<>(new CloseableIteratorWrapper(new Closeable() { @Override public void close() {
@Override public short[] getAdapterIds() { final MetadataReader reader = getReader(false); if (reader == null) { return new short[0]; } final CloseableIterator<GeoWaveMetadata> results = reader.query(new MetadataQuery(null, EXTERNAL_TO_INTERNAL_ID)); try (CloseableIterator<Short> it = new CloseableIteratorWrapper<>( results, Iterators.transform( results, input -> ByteArrayUtils.byteArrayToShort(input.getValue())))) { return ArrayUtils.toPrimitive(Iterators.toArray(it, Short.class)); } } }
iterator = new CloseableIteratorWrapper<>(new Closeable() { @Override public void close() throws IOException {
issuer.getLimit(), issuer.getFilter(), new CloseableIteratorWrapper<>(new Closeable() { @Override public void close() throws IOException {
visibilityEnabled).results()).iterator(); final CloseableIterator<T>[] itArray = Iterators.toArray(it, CloseableIterator.class); return new CloseableIteratorWrapper<>(new Closeable() { AtomicBoolean closed = new AtomicBoolean(false);