Opraveno generování sestav, ve kterých je nutné lazy loadovat data.

multitenant
Josef Rokos 10 years ago
parent 09a6864710
commit 0a4ba55b82

@ -29,6 +29,7 @@ public class PredefinedGenerator implements Generator {
try { try {
JasperReport report = (JasperReport) JRLoader.loadObject(getReportFile()); JasperReport report = (JasperReport) JRLoader.loadObject(getReportFile());
JRProperties.setProperty("net.sf.jasperreports.default.pdf.encoding", "Cp1250"); JRProperties.setProperty("net.sf.jasperreports.default.pdf.encoding", "Cp1250");
loadLazyData();
bytes = JasperRunManager.runReportToPdf(report, definition.getParams(), new JRBeanCollectionDataSource(definition.getDataSet()));; bytes = JasperRunManager.runReportToPdf(report, definition.getParams(), new JRBeanCollectionDataSource(definition.getDataSet()));;
} catch (JRException e) { } catch (JRException e) {
throw new ReportException(e); throw new ReportException(e);
@ -40,5 +41,15 @@ public class PredefinedGenerator implements Generator {
protected File getReportFile() { protected File getReportFile() {
return new File(ctx.getRealPath("WEB-INF/reports") + "/" + definition.getReport().getJasperFile() + ".jasper"); return new File(ctx.getRealPath("WEB-INF/reports") + "/" + definition.getReport().getJasperFile() + ".jasper");
} }
private void loadLazyData() {
if (definition.getService() == null) {
return;
}
for (Object o : definition.getDataSet()) {
definition.getService().loadLazyData(o);
}
}
} }

@ -1,5 +1,7 @@
package info.bukova.isspst.reporting; package info.bukova.isspst.reporting;
import info.bukova.isspst.services.Service;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -17,6 +19,7 @@ public class ReportDefinition implements Serializable {
private Map<String, Object> params; private Map<String, Object> params;
private List<String> fieldsToPrint; private List<String> fieldsToPrint;
private String reportTitle; private String reportTitle;
private Service<Object> service;
public ReportDefinition() { public ReportDefinition() {
params = new HashMap<String, Object>(); params = new HashMap<String, Object>();
@ -87,6 +90,7 @@ public class ReportDefinition implements Serializable {
fieldsToPrint.clear(); fieldsToPrint.clear();
dataSet = null; dataSet = null;
reportTitle = ""; reportTitle = "";
service = null;
params.clear(); params.clear();
} }
@ -98,4 +102,12 @@ public class ReportDefinition implements Serializable {
this.reportTitle = reportTitle; this.reportTitle = reportTitle;
} }
public Service<Object> getService() {
return service;
}
public void setService(Service<Object> service) {
this.service = service;
}
} }

@ -325,6 +325,7 @@ public class ListViewModel<T extends DataModel> {
params.put("reports", service.getReports()); params.put("reports", service.getReports());
params.put("data", dataList); params.put("data", dataList);
params.put("singleObject", dataBean); params.put("singleObject", dataBean);
params.put("service", service);
Window win = (Window) Executions.createComponents("/app/reporting/reportDialog.zul", null, params); Window win = (Window) Executions.createComponents("/app/reporting/reportDialog.zul", null, params);
win.doModal(); win.doModal();
} }

@ -3,6 +3,7 @@ package info.bukova.isspst.ui.reporting;
import info.bukova.isspst.reporting.Report; import info.bukova.isspst.reporting.Report;
import info.bukova.isspst.reporting.ReportDefinition; import info.bukova.isspst.reporting.ReportDefinition;
import info.bukova.isspst.reporting.ReportType; import info.bukova.isspst.reporting.ReportType;
import info.bukova.isspst.services.Service;
import java.util.List; import java.util.List;
@ -27,7 +28,8 @@ public class ReportDialogVM {
@Init @Init
public void init(@ExecutionArgParam("reports") List<Report> reports, public void init(@ExecutionArgParam("reports") List<Report> reports,
@ExecutionArgParam("data") List<Object> data, @ExecutionArgParam("data") List<Object> data,
@ExecutionArgParam("singleObject") Object singleObject) { @ExecutionArgParam("singleObject") Object singleObject,
@ExecutionArgParam("service") Service<Object> service) {
this.reports = reports; this.reports = reports;
if (data != null && data.size() > 0 && data.get(0).getClass() != reportDefinition.gatDataClass()) { if (data != null && data.size() > 0 && data.get(0).getClass() != reportDefinition.gatDataClass()) {
@ -36,6 +38,7 @@ public class ReportDialogVM {
dataList = data; dataList = data;
this.singleObject = singleObject; this.singleObject = singleObject;
reportDefinition.setService(service);
} }
public List<Report> getReports() { public List<Report> getReports() {

Loading…
Cancel
Save