Package io.jmix.reportsui.runner.impl
Class UiReportRunnerImpl
java.lang.Object
io.jmix.reportsui.runner.impl.UiReportRunnerImpl
- All Implemented Interfaces:
UiReportRunner
@UIScope
@Component("report_UiReportRunner")
public class UiReportRunnerImpl
extends Object
implements UiReportRunner
-
Field Summary
Modifier and TypeFieldDescriptionprotected Dialogs
protected Downloader
protected org.springframework.beans.factory.ObjectProvider<FluentUiReportRunner>
protected Messages
protected MetadataTools
protected ReportRunner
protected ReportsClientProperties
protected ReportsUtils
protected ReportZipUtils
protected Screens
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionbyReportCode
(String reportCode) Creates an instance ofFluentUiReportRunner
for a report with specified code.byReportEntity
(Report report) Creates an instance ofFluentUiReportRunner
for specified report.protected boolean
containsVisibleInputParameters
(Report report) protected void
downloadZipArchive
(List<com.haulmont.yarg.reporting.ReportOutputDocument> outputDocuments) protected ReportTemplate
getDefaultTemplate
(Report report) protected ReportInputParameter
getInputParameter
(UiReportRunContext uiReportRunContext, String multiParamAlias) protected Report
getReportForPrinting
(Report report) protected String
getTemplateCode
(UiReportRunContext context) protected List<com.haulmont.yarg.reporting.ReportOutputDocument>
multiRunSync
(UiReportRunContext uiReportRunContext, String multiParamName, Collection<Object> multiParamValues) protected boolean
needToShowParamsDialog
(UiReportRunContext uiReportRunContext) protected void
openReportParamsDialog
(UiReportRunContext context, ReportInputParameter inputParameter, boolean bulkPrint) protected void
prepareContext
(UiReportRunContext context) void
runAndShow
(UiReportRunContext context) Runs the report based on the information from theUiReportRunContext
and shows the result.protected void
runInBackground
(UiReportRunContext context, Screen hostScreen) void
runMultipleReports
(UiReportRunContext context, String multiParamAlias, Collection multiParamValue) Runs a report for each object from the specified collection.protected <T> void
showDialog
(BackgroundTask<Integer, T> task) protected void
showResult
(com.haulmont.yarg.reporting.ReportOutputDocument document, UiReportRunContext context)
-
Field Details
-
reportRunner
-
screens
-
downloader
-
metadataTools
-
messages
-
dialogs
-
reportsClientProperties
-
reportZipUtils
-
reportsUtils
-
fluentUiReportRunners
@Autowired protected org.springframework.beans.factory.ObjectProvider<FluentUiReportRunner> fluentUiReportRunners
-
-
Constructor Details
-
UiReportRunnerImpl
public UiReportRunnerImpl()
-
-
Method Details
-
runAndShow
Description copied from interface:UiReportRunner
Runs the report based on the information from theUiReportRunContext
and shows the result. The run context may be created manually using the constructor or using theFluentUiReportRunner
.- Specified by:
runAndShow
in interfaceUiReportRunner
- Parameters:
context
- the object that contains all information required to run the report from UI
-
runMultipleReports
public void runMultipleReports(UiReportRunContext context, String multiParamAlias, Collection multiParamValue) Description copied from interface:UiReportRunner
Runs a report for each object from the specified collection. Objects in the collection should have the same type as an input parameter with specified alias. If the report has other parameters besides the specified one, values for these parameters are copied for each report run. As result, the ZIP archive with executed reports is downloaded.
For example, a report has an input parameter with alias "name" and the String type:UiReportRunContext context = new UiReportRunContext(report) .setOutputType(ReportOutputType.PDF); uiReportRunner.runMultipleReports(context, "name", namesList);
The report will be executed for each string from the "namesList" collection.- Specified by:
runMultipleReports
in interfaceUiReportRunner
- Parameters:
context
- the object that contains all information required to run the report from UImultiParamAlias
- alias of the parameter for which a value from the collection is used for report executionmultiParamValue
- collection of values
-
downloadZipArchive
protected void downloadZipArchive(List<com.haulmont.yarg.reporting.ReportOutputDocument> outputDocuments) -
multiRunSync
protected List<com.haulmont.yarg.reporting.ReportOutputDocument> multiRunSync(UiReportRunContext uiReportRunContext, String multiParamName, Collection<Object> multiParamValues) -
byReportCode
Description copied from interface:UiReportRunner
Creates an instance ofFluentUiReportRunner
for a report with specified code.
Usage examples:UiReportRunContext context = uiReportRunner.byReportCode("orders-report") .withTemplateCode("order-template") .withOutputNamePattern("Orders") .withParametersDialogShowMode(ParametersDialogShowMode.IF_REQUIRED) .inBackground(screen) .buildContext(); uiReportRunner.byReportCode("orders-report") .addParam("orders", ordersList) .withParametersDialogShowMode(ParametersDialogShowMode.NO) .runAndShow(); uiReportRunner.byReportCode("orders-report") .addParam("orders", ordersList) .withParametersDialogShowMode(ParametersDialogShowMode.YES) .runAndShow(); uiReportRunner.byReportCode("customer-orders-report") .addParam("minOrdersDate", date) .withOutputType(ReportOutputType.PDF) .withTemplateCode(""orders-template"") .runMultipleReports("customer", customersList);
- Specified by:
byReportCode
in interfaceUiReportRunner
- Parameters:
reportCode
- report code- Returns:
- instance of
FluentUiReportRunner
-
byReportEntity
Description copied from interface:UiReportRunner
Creates an instance ofFluentUiReportRunner
for specified report.
Usage examples:UiReportRunContext context = uiReportRunner.byReportEntity(report) .withTemplateCode("order-template") .withOutputNamePattern("Orders") .withParametersDialogShowMode(ParametersDialogShowMode.IF_REQUIRED) .inBackground(screen) .buildContext(); uiReportRunner.byReportEntity(report) .addParam("orders", ordersList) .withParametersDialogShowMode(ParametersDialogShowMode.NO) .runAndShow(); uiReportRunner.byReportEntity(report) .withTemplate(template) .addParam("orders", ordersList) .withParametersDialogShowMode(ParametersDialogShowMode.YES) .runAndShow(); uiReportRunner.byReportEntity(report) .addParam("minOrdersDate", date) .withOutputType(ReportOutputType.PDF) .withTemplateCode(""orders-template"") .runMultipleReports("customer", customersList);
- Specified by:
byReportEntity
in interfaceUiReportRunner
- Parameters:
report
- report entity- Returns:
- instance of
FluentUiReportRunner
-
runInBackground
-
showDialog
-
openReportParamsDialog
protected void openReportParamsDialog(UiReportRunContext context, @Nullable ReportInputParameter inputParameter, boolean bulkPrint) -
getReportForPrinting
-
showResult
protected void showResult(com.haulmont.yarg.reporting.ReportOutputDocument document, UiReportRunContext context) -
getTemplateCode
-
prepareContext
-
getDefaultTemplate
-
needToShowParamsDialog
-
getInputParameter
protected ReportInputParameter getInputParameter(UiReportRunContext uiReportRunContext, String multiParamAlias) -
containsVisibleInputParameters
-