Interface ProjectionCollector<E,V,A,R>
- Type Parameters:
E
- The type of extracted values to accumulate before being transformed.V
- The type of values to accumulate obtained by transforming extracted values (E
).A
- The type of the temporary storage for accumulated values, before and after being transformed.R
- The type of the final result containing values of typeV
.
- All Known Subinterfaces:
ProjectionAccumulator<E,
V, A, R>
A variation on
Collector
suitable for projections on field values.
Compared to Collector
:
- There is no concept of parallel execution.
- All operations are expected to be non-blocking,
except for
transformAll(Object, FromDocumentValueConverter, FromDocumentValueConvertContext)
andfinish(Object)
. - Values to accumulate are expected to be
transformed
exactly once after accumulation, changing their type fromProjectionCollector
toProjectionCollector
. Clients are responsible for ensuring values to accumulate have been transformed upon callingfinish(Object)
.
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interface
Provides a collector for a given type of values to accumulate (T
). -
Method Summary
Modifier and TypeMethodDescriptionaccumulate
(A accumulated, E value) Folds a new value in the given accumulated container.default A
accumulateAll
(A accumulated, Collection<E> values) Folds a collection of new values in the given accumulated container.static <V> ProjectionCollector.Provider
<V, V[]> Creates the initial accumulated container.default R
empty()
Finishes the accumulation, converting the accumulated container into the final result.Retrieves the value at the given index.static <V> ProjectionCollector.Provider
<V, List<V>> list()
static <V> ProjectionCollector.Provider
<V, V> nullable()
static <V> ProjectionCollector.Provider
<V, Optional<V>> optional()
static <V> ProjectionCollector.Provider
<V, Set<V>> set()
static <V,
C> ProjectionCollector.Provider <V, C> int
static <V> ProjectionCollector.Provider
<V, SortedSet<V>> static <V> ProjectionCollector.Provider
<V, SortedSet<V>> sortedSet
(Comparator<? super V> comparator) Transforms the value at the given index, replacing it with the given transformed value.default A
transformAll
(A accumulated, FromDocumentValueConverter<? super E, ? extends V> converter, FromDocumentValueConvertContext context) Transforms all values with the given converter and the given context.
-
Method Details
-
nullable
- Type Parameters:
V
- The type of values to accumulate.- Returns:
- The projection collector capable of accumulating single-valued projections in an as-is form, i.e. the value is returned without any extra transformations.
-
optional
- Type Parameters:
V
- The type of values to accumulate.- Returns:
- The projection collector capable of accumulating single-valued projections and wrapping the values in an
Optional
.
-
simple
- Type Parameters:
V
- The type of values to accumulate.C
- The type of the resulting collection.- Parameters:
converter
- The function that defines how to convert a list of collected values to the final collection.- Returns:
- An collector based on a list as a temporary storage.
-
list
- Type Parameters:
V
- The type of values to accumulate.- Returns:
- The projection collector capable of accumulating multivalued projections as a
List
.
-
set
- Type Parameters:
V
- The type of values to accumulate.- Returns:
- The projection collector capable of accumulating multivalued projections as a
Set
.
-
sortedSet
- Type Parameters:
V
- The type of values to accumulate.- Returns:
- The projection collector capable of accumulating multivalued projections as a
SortedSet
.
-
sortedSet
- Type Parameters:
V
- The type of values to accumulate.- Parameters:
comparator
- The comparator which should be used by the sorted set.- Returns:
- The projection collector capable of accumulating multivalued projections as a
SortedSet
using a custom comparator.
-
array
- Type Parameters:
V
- The type of values to accumulate.- Parameters:
componentType
- The type of the array elements.- Returns:
- The projection collector capable of accumulating multivalued projections as an array.
-
createInitial
A createInitial()Creates the initial accumulated container.This operation should be non-blocking.
- Returns:
- The initial accumulated container,
to pass to the first call to
accumulate(Object, Object)
.
-
accumulate
Folds a new value in the given accumulated container.This operation should be non-blocking.
- Parameters:
accumulated
- The accumulated value so far. For the first call, this is a value returned bycreateInitial()
. For the next calls, this is the value returned by the previous call toaccumulate(Object, Object)
.value
- The value to accumulate.- Returns:
- The new accumulated value.
-
accumulateAll
Folds a collection of new values in the given accumulated container.This operation should be non-blocking.
- Parameters:
accumulated
- The accumulated value so far. For the first call, this is a value returned bycreateInitial()
. For the next calls, this is the value returned by the previous call toaccumulate(Object, Object)
.values
- The values to accumulate.- Returns:
- The new accumulated value.
-
size
- Parameters:
accumulated
- The accumulated value so far, returned by the last call toaccumulate(Object, Object)
.- Returns:
- The number of elements in the accumulated value.
-
get
Retrieves the value at the given index.This operation should be non-blocking.
- Parameters:
accumulated
- The accumulated value so far, returned by the last call toaccumulate(Object, Object)
.index
- The index of the value to retrieve.- Returns:
- The value at the given index.
-
transform
Transforms the value at the given index, replacing it with the given transformed value.This operation should be non-blocking.
- Parameters:
accumulated
- The accumulated value so far, returned by the last call toaccumulate(Object, Object)
.index
- The index of the value being transformed.transformed
- The transformed value.- Returns:
- The new accumulated value.
-
transformAll
default A transformAll(A accumulated, FromDocumentValueConverter<? super E, ? extends V> converter, FromDocumentValueConvertContext context) Transforms all values with the given converter and the given context.This operation may be blocking.
- Parameters:
accumulated
- The accumulated value so far, returned by the last call toaccumulate(Object, Object)
.converter
- The projection converter (fromF
toV
).context
- The context to be passed to the projection converter.- Returns:
- The new accumulated value.
-
finish
Finishes the accumulation, converting the accumulated container into the final result.This operation may be blocking.
- Parameters:
accumulated
- The temporary storage created bycreateInitial()
, then populated by successive calls toaccumulate(Object, Object)
, then transformed by a single call totransformAll(Object, FromDocumentValueConverter, FromDocumentValueConvertContext)
or by successive calls totransform(Object, int, Object)
.- Returns:
- The final result of the accumulation.
-
empty
- Returns:
- An "empty" final value, i.e. when a
final transformation
is applied tothe initial value
.
-