From b368ca8bba04b48a0eb2df9faec99bc0aa912b10 Mon Sep 17 00:00:00 2001 From: skublik Date: Wed, 10 Jul 2019 10:15:21 +0200 Subject: [PATCH] fix for running of dashboard report --- .../web/page/admin/reports/PageReports.java | 41 ++++++++++++------- .../report/impl/ReportManagerImpl.java | 17 +++++++- 2 files changed, 41 insertions(+), 17 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageReports.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageReports.java index e7f2d42108c..012402746e9 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageReports.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageReports.java @@ -40,6 +40,7 @@ import com.evolveum.midpoint.web.page.admin.reports.component.RunReportPopupPanel; import com.evolveum.midpoint.web.session.UserProfileStorage; import com.evolveum.midpoint.web.util.OnePageParameterEncoder; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportEngineSelectionType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportParameterType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType; @@ -193,28 +194,38 @@ public boolean isHeaderMenuItem(){ return menu; } + + private void runConfirmPerformed(AjaxRequestTarget target, ReportType reportType, PrismContainer reportParam, + Task task, OperationResult result) { + try { - protected void runReportPerformed(AjaxRequestTarget target, ReportType report) { + getReportManager().runReport(reportType.asPrismObject(), reportParam, task, result); + } catch (Exception ex) { + result.recordFatalError(ex); + } finally { + result.computeStatusIfUnknown(); + } + + showResult(result); + target.add(getFeedbackPanel(), get(createComponentPath(ID_MAIN_FORM))); + hideMainPopup(target); + } + + protected void runReportPerformed(AjaxRequestTarget target, ReportType report) { + OperationResult result = new OperationResult(OPERATION_RUN_REPORT); + Task task = createSimpleTask(OPERATION_RUN_REPORT); + if(report.getReportEngine() != null && report.getReportEngine().equals(ReportEngineSelectionType.DASHBOARD)) { + runConfirmPerformed(target, report, null, task, result); + return; + } + RunReportPopupPanel runReportPopupPanel = new RunReportPopupPanel(getMainPopupBodyId(), report) { private static final long serialVersionUID = 1L; protected void runConfirmPerformed(AjaxRequestTarget target, ReportType reportType, PrismContainer reportParam) { - OperationResult result = new OperationResult(OPERATION_RUN_REPORT); - try { - - Task task = createSimpleTask(OPERATION_RUN_REPORT); - - getReportManager().runReport(reportType.asPrismObject(), reportParam, task, result); - } catch (Exception ex) { - result.recordFatalError(ex); - } finally { - result.computeStatusIfUnknown(); - } - - showResult(result); - target.add(getFeedbackPanel(), get(createComponentPath(ID_MAIN_FORM))); + PageReports.this.runConfirmPerformed(target, reportType, reportParam, task, result); hideMainPopup(target); }; diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportManagerImpl.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportManagerImpl.java index e72811e5ce8..2cfe0949c13 100644 --- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportManagerImpl.java +++ b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportManagerImpl.java @@ -134,7 +134,11 @@ private boolean isRaw(Collection> options) @Override public void runReport(PrismObject object, PrismContainer paramContainer, Task task, OperationResult parentResult) { - task.setHandlerUri(ReportJasperCreateTaskHandler.REPORT_CREATE_TASK_URI); + if(isDashboarReport(object)) { + task.setHandlerUri(ReportHTMLCreateTaskHandler.REPORT_HTML_CREATE_TASK_URI); + } else { + task.setHandlerUri(ReportJasperCreateTaskHandler.REPORT_CREATE_TASK_URI); + } task.setObjectRef(object.getOid(), ReportType.COMPLEX_TYPE); try { if (paramContainer != null && !paramContainer.isEmpty()){ @@ -150,7 +154,16 @@ public void runReport(PrismObject object, PrismContainer object) { + if(object.getRealValue() != null && object.getRealValue().getReportEngine() != null + && object.getRealValue().getReportEngine().equals(ReportEngineSelectionType.DASHBOARD)) { + return true; + } + return false; + } + + /** * Transforms change: * 1/ ReportOutputType DELETE to MODIFY some attribute to mark it for deletion. * 2/ ReportType ADD and MODIFY should compute jasper design and styles if necessary