ReportSchedule reportSchedule =
(ReportSchedule) jobDataMap.get(ORStatics.REPORT_SCHEDULE);
reportSchedule.setScheduleDescription(context.getJobDetail().getDescription());
Report report = reportSchedule.getReport();
ReportUser user = reportSchedule.getUser();
Map<String,Object> reportParameters = reportSchedule.getReportParameters();
log.debug("Report: " + report.getName());
log.debug("User: " + user.getName());
JRVirtualizer virtualizer = null;
ReportLog reportLog = new ReportLog(user, report, new Date());
reportLog.setExportType(reportSchedule.getExportType());
reportLog.setRequestId(reportSchedule.getRequestId());
try
{
//
ReportUserAlert alert = reportSchedule.getAlert();
if (alert != null)
{
log.debug("Executing Alert Condition");
alert.setReport(report);
alert = alertProvider.executeAlert(alert, true);
if (!alert.isTriggered())
{
log.debug("Alert Not Triggered. Report not run.");
return;
}
log.debug("Alert Triggered. Running report.");
}
//
// add standard report parameters
reportParameters.put(ORStatics.USER_ID, user.getId());
reportParameters.put(ORStatics.EXTERNAL_ID, user.getExternalId());
reportParameters.put(ORStatics.USER_NAME, user.getName());
reportParameters.put(ORStatics.IMAGE_DIR, new File(directoryProvider.getReportImageDirectory()));
reportParameters.put(ORStatics.REPORT_DIR, new File(directoryProvider.getReportDirectory()));
//
reportLogProvider.insertReportLog(reportLog);
ReportEngineInput reportInput = new ReportEngineInput(report, reportParameters);
reportInput.setExportType(ExportType.findByCode(reportSchedule.getExportType()));
reportInput.setXmlInput(reportSchedule.getXmlInput());
reportInput.setLocale(reportSchedule.getLocale());
if (report.isJasperReport())
{
// add any charts
if (report.getReportChart() != null)
{
log.debug("Adding chart: " + report.getReportChart().getName());
ChartReportEngine chartEngine = new ChartReportEngine(
dataSourceProvider, directoryProvider, propertiesProvider);
ChartEngineOutput chartOutput = (ChartEngineOutput) chartEngine.generateReport(reportInput);
reportParameters.put("ChartImage", chartOutput.getContent());
}
if (report.isVirtualizationEnabled())
{
log.debug("Virtualization Enabled");
virtualizer = new JRFileVirtualizer(2, directoryProvider.getTempDirectory());
reportParameters.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);
}