protected void logReport(String caption, Report report, Map<String, Object> params) { StringBuilder parametersString = new StringBuilder(); for (Map.Entry<String, Object> entry : params.entrySet()) { parametersString.append("\n").append(entry.getKey()).append(":").append(entry.getValue()); } logger.info(format(caption, report.getName(), parametersString)); }
protected void logReport(String caption, Report report, Map<String, Object> params) { StringBuilder parametersString = new StringBuilder(); for (Map.Entry<String, Object> entry : params.entrySet()) { parametersString.append("\n").append(entry.getKey()).append(":").append(entry.getValue()); } logger.info(format(caption, report.getName(), parametersString)); }
@Override public String buildXml(Report report) { try { Document document = DocumentFactory.getInstance().createDocument(); Element root = document.addElement("report"); root.addAttribute("name", report.getName()); writeTemplates(report, root); writeInputParameters(report, root); writeValueFormats(report, root); writeRootBand(report, root); StringWriter stringWriter = new StringWriter(); new XMLWriter(stringWriter, OutputFormat.createPrettyPrint()).write(document); return stringWriter.toString(); } catch (IOException e) { throw new ReportingException(e); } }
@Override public String buildXml(Report report) { try { Document document = DocumentFactory.getInstance().createDocument(); Element root = document.addElement("report"); root.addAttribute("name", report.getName()); writeTemplates(report, root); writeInputParameters(report, root); writeValueFormats(report, root); writeRootBand(report, root); StringWriter stringWriter = new StringWriter(); new XMLWriter(stringWriter, OutputFormat.createPrettyPrint()).write(document); return stringWriter.toString(); } catch (IOException e) { throw new ReportingException(e); } }
protected ReportOutputDocument runReport(Report report, ReportTemplate reportTemplate, ReportOutputType outputType, Map<String, Object> params, OutputStream outputStream) { try { Preconditions.checkNotNull(report, "\"report\" parameter can not be null"); Preconditions.checkNotNull(reportTemplate, "\"reportTemplate\" can not be null"); Preconditions.checkNotNull(params, "\"params\" can not be null"); Preconditions.checkNotNull(outputStream, "\"outputStream\" can not be null"); Map<String, Object> handledParams = handleParameters(report, params); logReport("Started report [%s] with parameters [%s]", report, handledParams); ReportOutputType finalOutputType = (outputType != null) ? outputType : reportTemplate.getOutputType(); BandData rootBand = loadBandData(report, handledParams); generateReport(report, reportTemplate, finalOutputType, outputStream, handledParams, rootBand); logReport("Finished report [%s] with parameters [%s]", report, handledParams); String outputName = resolveOutputFileName(report, reportTemplate, outputType, rootBand); return createReportOutputDocument(report, finalOutputType, outputName, rootBand); } catch (ReportingInterruptedException e) { logReport("Report is canceled by user request. Report [%s] with parameters [%s].", report, params); throw e; } catch (ReportingException e) { logReport("An error occurred while running report [%s] with parameters [%s].", report, params); logException(e); //validation exception is usually shown to clients, so probably there is no need to add report name there (to keep the original message) if (!(e instanceof ValidationException)) { e.setReportDetails(format(" Report name [%s]", report.getName())); } throw e; } }
protected ReportOutputDocument runReport(Report report, ReportTemplate reportTemplate, ReportOutputType outputType, Map<String, Object> params, OutputStream outputStream) { try { Preconditions.checkNotNull(report, "\"report\" parameter can not be null"); Preconditions.checkNotNull(reportTemplate, "\"reportTemplate\" can not be null"); Preconditions.checkNotNull(params, "\"params\" can not be null"); Preconditions.checkNotNull(outputStream, "\"outputStream\" can not be null"); Map<String, Object> handledParams = handleParameters(report, params); logReport("Started report [%s] with parameters [%s]", report, handledParams); ReportOutputType finalOutputType = (outputType != null) ? outputType : reportTemplate.getOutputType(); BandData rootBand = loadBandData(report, handledParams); generateReport(report, reportTemplate, finalOutputType, outputStream, handledParams, rootBand); logReport("Finished report [%s] with parameters [%s]", report, handledParams); String outputName = resolveOutputFileName(report, reportTemplate, outputType, rootBand); return createReportOutputDocument(report, finalOutputType, outputName, rootBand); } catch (ReportingInterruptedException e) { logReport("Report is canceled by user request. Report [%s] with parameters [%s].", report, params); throw e; } catch (ReportingException e) { logReport("An error occurred while running report [%s] with parameters [%s].", report, params); logException(e); //validation exception is usually shown to clients, so probably there is no need to add report name there (to keep the original message) if (!(e instanceof ValidationException)) { e.setReportDetails(format(" Report name [%s]", report.getName())); } throw e; } }