Interface DataExtractor

All Known Implementing Classes:
DataExtractorImpl, JmixDataExtractor
Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface @NullMarked public interface DataExtractor
This class should load data using ReportQuery objects, convert data onto BandData object and build BandData object tree (link children and parent bands) The default implementation is DataExtractorImpl !Attention! Please make sure if you really need to change this behaviour against default implementation cause it might crash report generation logic
  • Method Details

    • extractData

      void extractData(Report report, Map<String,Object> params, BandData rootBand)
    • extractData

      default void extractData(Report report, Map<String,Object> params, BandData rootBand, Set<String> excludedBandNames)
      Same as extractData(Report, Map, BandData), but bands whose names are in excludedBandNames are not extracted (their data is supplied by other means, e.g. a streaming cursor). Their names are still registered as first-level definitions.

      The default implementation supports only an empty exclusion set and throws otherwise: silently extracting an excluded band would load the streaming band's whole dataset into memory and run its query twice. Implementations that should work with streaming reports must override this method (see DataExtractorImpl).

    • getPutEmptyRowIfNoDataSelected

      default boolean getPutEmptyRowIfNoDataSelected()