Package io.jmix.reports.yarg.reporting
Class DataExtractorImpl
java.lang.Object
io.jmix.reports.yarg.reporting.DataExtractorImpl
- All Implemented Interfaces:
DataExtractor
- Direct Known Subclasses:
JmixDataExtractor
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected ExtractionContextFactoryprotected ExtractionControllerFactoryprotected ReportLoaderFactoryprotected boolean -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncreateBands(ReportBand definition, BandData parentBandData, Map<String, Object> params) protected ExtractionContextFactoryprotected ExtractionControllerFactoryvoidExtracts all band data of the report intorootBand.voidextractData(Report report, Map<String, Object> params, BandData rootBand, Set<String> excludedBandNames) Same asDataExtractor.extractData(Report, Map, BandData), but bands whose names are inexcludedBandNamesare not extracted (their data is supplied by other means, e.g.booleanvoidsetExtractionControllerFactory(ExtractionControllerFactory controllerFactory) voidsetPutEmptyRowIfNoDataSelected(boolean putEmptyRowIfNoDataSelected)
-
Field Details
-
loaderFactory
-
contextFactory
-
controllerFactory
-
putEmptyRowIfNoDataSelected
protected boolean putEmptyRowIfNoDataSelected
-
-
Constructor Details
-
DataExtractorImpl
-
-
Method Details
-
createContextFactory
-
createControllerFactory
-
extractData
Extracts all band data of the report intorootBand.Note for subclasses: this method delegates to
extractData(Report, Map, BandData, Set), which is the canonical override point. An override of only this 3-arg method is NOT invoked on the streaming report path (the engine calls the 4-arg variant directly) — override the 4-arg method to customize both paths.- Specified by:
extractDatain interfaceDataExtractor
-
extractData
public void extractData(Report report, Map<String, Object> params, BandData rootBand, Set<String> excludedBandNames) Description copied from interface:DataExtractorSame asDataExtractor.extractData(Report, Map, BandData), but bands whose names are inexcludedBandNamesare 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).- Specified by:
extractDatain interfaceDataExtractor
-
setPutEmptyRowIfNoDataSelected
public void setPutEmptyRowIfNoDataSelected(boolean putEmptyRowIfNoDataSelected) -
getPutEmptyRowIfNoDataSelected
public boolean getPutEmptyRowIfNoDataSelected()- Specified by:
getPutEmptyRowIfNoDataSelectedin interfaceDataExtractor
-
getExtractionControllerFactory
-
setExtractionControllerFactory
-
createBands
-