diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageCreatedReports.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageCreatedReports.java index 9f81e969207..b94b2dbf372 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageCreatedReports.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageCreatedReports.java @@ -557,12 +557,16 @@ private void downloadPerformed(AjaxRequestTarget target, ReportOutputType report ajaxDownloadBehavior.initiate(target); } - private String getReportFileName(){ + private String getReportFileName() { + return getReportFileName(currentReport); + } + + public static String getReportFileName(ReportOutputType currentReport){ try { OperationResult result = new OperationResult(OPERATION_GET_REPORT_FILENAME); - ReportOutputType reportOutput = WebModelServiceUtils.loadObject(ReportOutputType.class, currentReport.getOid(), getPageBase(), - null, result).asObjectable(); - String fileName = reportOutput.getFilePath(); +// ReportOutputType reportOutput = WebModelServiceUtils.loadObject(ReportOutputType.class, currentReport.getOid(), getPageBase(), +// null, result).asObjectable(); + String fileName = currentReport.getFilePath(); if (fileName.contains("/")) { fileName = fileName.substring(fileName.lastIndexOf("/") + 1); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/handlers/ReportCreateHandlerPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/handlers/ReportCreateHandlerPanel.java index 7ce9f8e5f38..7d17a6646d8 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/handlers/ReportCreateHandlerPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/handlers/ReportCreateHandlerPanel.java @@ -39,6 +39,8 @@ */ public class ReportCreateHandlerPanel extends DefaultHandlerPanel { + private static final long serialVersionUID = 1L; + private static final String ID_DOWNLOAD_CONTAINER = "downloadContainer"; private static final String ID_DOWNLOAD = "download"; private static final String ID_REPORT_PARAMETERS_CONTAINER = "reportParametersContainer"; @@ -52,22 +54,27 @@ public ReportCreateHandlerPanel(String id, IModel model, } private void initLayout(final PageTaskEdit parentPage) { + + final ReportOutputType reportObject = getReportOutput(parentPage); + final AjaxDownloadBehaviorFromStream ajaxDownloadBehavior = new AjaxDownloadBehaviorFromStream() { + private static final long serialVersionUID = 1L; @Override protected InputStream initStream() { - String outputOid = getModelObject().getReportOutputOid(); - if (outputOid == null) { - return null; - } - Task task = parentPage.createSimpleTask(OPERATION_LOAD_REPORT_OUTPUT); - PrismObject reportObject = WebModelServiceUtils.loadObject(ReportOutputType.class, outputOid, parentPage, task, task.getResult()); + if (reportObject != null) { - return PageCreatedReports.createReport(reportObject.asObjectable(), this, parentPage); + return PageCreatedReports.createReport(reportObject, this, parentPage); } else { return null; } } + + + @Override + public String getFileName() { + return PageCreatedReports.getReportFileName(reportObject); + } }; parentPage.getForm().add(ajaxDownloadBehavior); @@ -79,6 +86,9 @@ protected InputStream initStream() { WebMarkupContainer downloadContainer = new WebMarkupContainer(ID_DOWNLOAD_CONTAINER); AjaxButton download = new AjaxButton(ID_DOWNLOAD) { + + private static final long serialVersionUID = 1L; + @Override public void onClick(AjaxRequestTarget target) { ajaxDownloadBehavior.initiate(target); @@ -86,11 +96,30 @@ public void onClick(AjaxRequestTarget target) { }; downloadContainer.add(download); downloadContainer.add(new VisibleEnableBehaviour() { + + private static final long serialVersionUID = 1L; + @Override public boolean isVisible() { - return getModelObject().getReportOutputOid() != null; + return getModelObject().getReportOutputOid() != null && reportObject != null; } }); add(downloadContainer); } + + private ReportOutputType getReportOutput(PageTaskEdit parentPage) { + String outputOid = getModelObject().getReportOutputOid(); + + if (outputOid == null) { + return null; + } + Task task = parentPage.createSimpleTask(OPERATION_LOAD_REPORT_OUTPUT); + PrismObject reportOutput = WebModelServiceUtils.loadObject(ReportOutputType.class, outputOid, parentPage, task, task.getResult()); + + if (reportOutput == null) { + return null; + } + return reportOutput.asObjectable(); + } + }