Opraveno generování sestav, ve kterých je nutné lazy loadovat data.
This commit is contained in:
@@ -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() {
|
||||||
|
|||||||
Reference in New Issue
Block a user