Class ReducingAggregateLoader<T>

Object
AbstractAttributeLoader<T>
AbstractAggregateLoader<T>
ReducingAggregateLoader<T>
Type Parameters:
T - type of reduced values
All Implemented Interfaces:
AggregateAttributeLoader<T>, AttributeLoader<T>, MultiRowAttributeLoader<T>, ValueReducer<T>, RowAttributeLoader<T>
Direct Known Subclasses:
SingleDependencyReducingAggregateLoader

public abstract class ReducingAggregateLoader<T> extends AbstractAggregateLoader<T> implements ValueReducer<T>

A base class for aggregate loaders that calculate values using only the specified part of subtree. The part of subtree to use is defined by ReductionStrategy, which is specified by type parameter in the attribute specification.

Here and in other classes, the process of combining the current value with values calculated for partial subtree into one value is called reduction.

This class:
  1. checks for errors,
  2. filters out values for generator rows,
  3. passes values to the reduction strategy.
See Also:
  • Constructor Details

    • ReducingAggregateLoader

      public ReducingAggregateLoader(AttributeSpec<T> spec)
  • Method Details

    • loadValue

      public AttributeValue<T> loadValue(List<AttributeValue<T>> childrenValues, AggregateAttributeContext context)
      Description copied from interface: AggregateAttributeLoader

      Performs aggregate loading.

      If the value is missing or empty, the loader should return AttributeValue.undefined(). If for some reason this loader is not applicable for the given row, it should return null. (Note, however, that if multiple aggregate loaders work on the same attribute, it could be tricky and lead to unexpected results.)

      Note: children values may contain loop markers

      Specified by:
      loadValue in interface AggregateAttributeLoader<T>
      Parameters:
      childrenValues - the values of this attribute for all children rows, in the same order as the children rows
      context - loading context
      Returns:
      the calculated value
    • getSelfValue

      @NotNull protected abstract AttributeValue<T> getSelfValue(AggregateAttributeContext context)