Interface RowAttributeLoader<T>

Type Parameters:
T - type of the loaded value
All Superinterfaces:
AttributeLoader<T>
All Known Subinterfaces:
AggregateAttributeLoader<T>, MultiRowAttributeLoader<T>, PropagateAttributeLoader<T>, ScanningAttributeLoader<T>, SingleRowAttributeLoader<T>
All Known Implementing Classes:
AbstractAggregateLoader, AbstractNaiveDistinctAggregateLoader, AbstractPropagateLoader, AbstractScanningLoader, AbstractSingleRowAttributeLoader, BaseSingleRowAttributeLoader, DelegatingAggregateAttributeLoader, DelegatingPropagateAttributeLoader, DelegatingRowAttributeLoader, DelegatingScanningAttributeLoader, InheritedValueLoader, LongSumLoader, NumberSumLoader, ReducingAggregateLoader, ScanningLongSumLoader, ScanningNumberSumLoader, SingleDependencyReducingAggregateLoader

@PublicSpi public interface RowAttributeLoader<T> extends AttributeLoader<T>

Common base interface for all row-based attribute loaders.

All row-based attribute loaders provide an attribute value based on a row in a forest. The values are stored in a per-forest value cache.

See Also:
  • Method Details

    • preload

      default void preload(@NotNull LongSet rowIds, @NotNull ItemForest forest, @NotNull AttributeContext context)

      Optional method to perform any bulk actions on a set of rows before the loading function is called for each row.

      The results of the preloading should be stored using AttributeContext.putObject(java.lang.Object, java.lang.Object). Do not store the preloading results as loader's instance fields! All loaders should be stateless.

      Note that this method may be called several times during a single loading operation, for arbitrary sets of rows, including those that were already pre-loaded. Be careful not to overwrite one execution's result with another's.

      The loader's dependencies may not be loaded at the time of the call. In fact, there's no way to access the dependency values.

      Note that rowIds will never contain the super-root row id (-1), even if the value for it is about to be loaded. See SuperRootRow for details about the super-root.

      Parameters:
      rowIds - set of row IDs for which attribute values are needed
      forest - forest for which attribute values are being loaded
      context - loading context
    • isWholeForestDependent

      default boolean isWholeForestDependent()

      Allows the loader to declare dependency on the whole forest. In that case, the value loaded might depend on the forest and dependencies for the current row. (No dependencies on other values.)

      The effect of such declaration is that the values of this attribute, as well as any other values depending on them, will be invalidated as soon as there's any forest or item changes.

      You should almost never override this method. Introducing a whole-forest attribute takes toll on application performance.

      Returns:
      true if the attribute is whole forest-dependent