public JRSubreportRunResult start() { fillThread = new Thread(this, subreportFiller.getJasperReport().getName() + " subreport filler"); if (log.isDebugEnabled()) { log.debug("Fill " + subreportFiller.fillerId + ": starting thread " + fillThread); } fillThread.start(); return waitResult(); }
@Override public String call() throws Exception { final String baseDir = System.getProperty("opennms.report.dir"); final JasperReport jasperReport = getJasperReport(reportId); final Map<String, Object> jrReportParms = buildJRparameters(reportParms, jasperReport.getParameters()); final String outputFileName = new String(baseDir + "/" + jasperReport.getName() + new SimpleDateFormat("-MMddyyyy-HHmm").format(new Date()) + ".jrprint"); LOG.debug("jrprint output file: {}", outputFileName);
int topMargin = jasperReport.getTopMargin(); int bottomMargin = jasperReport.getBottomMargin(); pageHeight = parentFiller.jasperReport.getPageHeight(); topMargin += parentFiller.jasperReport.getTopMargin(); bottomMargin += parentFiller.jasperReport.getBottomMargin(); + jasperReport.getName() + "\" failed in the current page context " + "(height = " + pageHeight + ", top margin = " + topMargin + ", bottom margin = " + bottomMargin + ") : ", + jasperReport.getName() + "\" succeeded in the current page context " + "(height = " + pageHeight + ", top margin = " + topMargin + ", bottom margin = " + bottomMargin + ")");
private static JRDataset findSubdataset(JRDatasetRun datasetRun, JasperReport report) { JRDataset[] datasets = report.getDatasets(); JRDataset reportDataset = null; if (datasets != null) { for (int i = 0; i < datasets.length; i++) { if (datasetRun.getDatasetName().equals( datasets[i].getName())) { reportDataset = datasets[i]; break; } } } if (reportDataset == null) { throw new JRRuntimeException("Could not find subdataset named \"" + datasetRun.getDatasetName() + "\" in report \"" + report.getName() + "\""); } return reportDataset; }
log.debug("Fill " + fillerId + ": created for " + jasperReport.getName()); name = jasperReport.getName(); columnCount = jasperReport.getColumnCount(); printOrder = jasperReport.getPrintOrder(); pageWidth = jasperReport.getPageWidth(); pageHeight = jasperReport.getPageHeight(); orientation = jasperReport.getOrientation(); whenNoDataType = jasperReport.getWhenNoDataType(); columnWidth = jasperReport.getColumnWidth(); columnSpacing = jasperReport.getColumnSpacing(); leftMargin = jasperReport.getLeftMargin(); rightMargin = jasperReport.getRightMargin(); topMargin = jasperReport.getTopMargin(); bottomMargin = jasperReport.getBottomMargin(); isTitleNewPage = jasperReport.isTitleNewPage(); isSummaryNewPage = jasperReport.isSummaryNewPage(); isFloatColumnFooter = jasperReport.isFloatColumnFooter(); whenResourceMissingType = jasperReport.getWhenResourceMissingType(); calculator = JRFillDataset.createCalculator(jasperReport, jasperReport.getMainDataset()); defaultFont = factory.getReportFont(jasperReport.getDefaultFont()); JRReportFont[] jrFonts = jasperReport.getFonts(); if (jrFonts != null && jrFonts.length > 0) mainDataset = factory.getDataset(jasperReport.getMainDataset()); groups = mainDataset.groups;
@Override public void visitParameterChunk(JRExpressionChunk chunk) { Optional<JRParameter> parameterOptional = Arrays.stream(report.getParameters()) .filter(p -> p.getName().equals(chunk.getText())) .findAny(); if (parameterOptional.isPresent()) { String string = new SubreportExpressionVisitor(report).visit(parameterOptional.get().getDefaultValueExpression()); append(string); } } @Override
String paramName = pp.getPath().lastName().getLocalPart(); Object value = null; if (isSingleValue(paramName, jasperReport.getParameters())) { value = pp.getRealValues().iterator().next(); } else { jasperReport.setProperty(MaxPagesGovernor.PROPERTY_MAX_PAGES_ENABLED, Boolean.TRUE.toString()); jasperReport.setProperty(MaxPagesGovernor.PROPERTY_MAX_PAGES, String.valueOf(maxPages)); jasperReport.setProperty(TimeoutGovernor.PROPERTY_TIMEOUT_ENABLED, Boolean.TRUE.toString()); jasperReport.setProperty(TimeoutGovernor.PROPERTY_TIMEOUT, String.valueOf(timeout));
evaluation, false, jasperReport.getResourceBundle() != null,//hasResourceBundle jasperReport.getFormatFactoryClass() != null//hasFormatFactory );
if ((report == null || report.getResourceBundle() == null) && !model.containsKey(JRParameter.REPORT_RESOURCE_BUNDLE)) { model.put(JRParameter.REPORT_RESOURCE_BUNDLE,
String eachStringKey = (String) eachKey; if (eachStringKey.startsWith("net.sf.jasperreports")) { report.setProperty(eachStringKey, System.getProperty(eachStringKey));
new JasperReport( jasperDesign, getCompilerClass(),
@Override public void visitParameterChunk(JRExpressionChunk chunk) { Optional<JRParameter> parameterOptional = Arrays.stream(report.getParameters()) .filter(p -> p.getName().equals(chunk.getText())) .findAny(); if (parameterOptional.isPresent()) { String string = new SubreportExpressionVisitor(report).visit(parameterOptional.get().getDefaultValueExpression()); append(string); } } @Override
/** * Expose current Bboss-managed Locale and MessageSource to JasperReports i18n * ($R expressions etc). The MessageSource should only be exposed as JasperReports * resource bundle if no such bundle is defined in the report itself. * <p>Default implementation exposes the Bboss RequestContext Locale and a * MessageSourceResourceBundle adapter for the Bboss ApplicationContext, * analogous to the <code>JstlUtils.exposeLocalizationContext</code> method. * @see support.RequestContextUtils#getLocale * @see MessageSourceResourceBundle * @see #getApplicationContext() * @see net.sf.jasperreports.engine.JRParameter#REPORT_LOCALE * @see net.sf.jasperreports.engine.JRParameter#REPORT_RESOURCE_BUNDLE * @see support.JstlUtils#exposeLocalizationContext */ protected void exposeLocalizationContext(Map<String, Object> model, HttpServletRequest request) { RequestContext rc = new RequestContext(request, getServletContext()); model.put(JRParameter.REPORT_LOCALE, rc.getLocale()); JasperReport report = getReport(); if (report == null || report.getResourceBundle() == null) { model.put(JRParameter.REPORT_RESOURCE_BUNDLE, new MessageSourceResourceBundle(rc.getMessageSource(), rc.getLocale())); } }
String eachStringKey = (String) eachKey; if (eachStringKey.startsWith("net.sf.jasperreports")) { report.setProperty(eachStringKey, System.getProperty(eachStringKey));
/** * */ public void afterPageInit() throws JRScriptletException { long ellapsedTime = System.currentTimeMillis() - startTime; if (timeout < ellapsedTime) { throw new TimeoutGovernorException( ((JasperReport)getParameterValue(JRParameter.JASPER_REPORT, false)).getName(), timeout ); } }
@Override public String call() throws Exception { final String baseDir = System.getProperty("opennms.report.dir"); final JasperReport jasperReport = getJasperReport(reportId); final Map<String, Object> jrReportParms = buildJRparameters(reportParms, jasperReport.getParameters()); final String outputFileName = new String(baseDir + "/" + jasperReport.getName() + new SimpleDateFormat("-MMddyyyy-HHmm").format(new Date()) + ".jrprint"); LOG.debug("jrprint output file: {}", outputFileName);
/** * Method to find all sub reports as parameter. Compile sub reports and put all compile sub reports in a parameter map. * Returned map is compatible to common jasper report parameter map. * * @param mainReportId String for specific main report identified by a report id * @param mainReport JasperReport a compiled main report * @return a sub report parameter map as {@link java.util.HashMap<String,Object>} object */ private Map<String, Object> buildSubreport(final String mainReportId, final JasperReport mainReport) throws ReportException { int idx = mainReportId.indexOf('_'); String repositoryId = idx > -1 ? mainReportId.substring(0, idx) : "local"; Map<String, Object> subreportMap = new HashMap<String, Object>(); // Filter parameter for sub reports for (JRParameter parameter : mainReport.getParameters()) { // We need only parameter for Sub reports and we *DON'T* need the default parameter JASPER_REPORT if ("net.sf.jasperreports.engine.JasperReport".equals(parameter.getValueClassName()) && !"JASPER_REPORT".equals(parameter.getName())) { subreportMap.put(parameter.getName(), parameter.getValueClassName()); } } for (final Map.Entry<String,Object> entry : subreportMap.entrySet()) { final String reportId = repositoryId + "_" + entry.getKey(); entry.setValue(getJasperReport(reportId)); } for (final Map.Entry<String,Object> entry : subreportMap.entrySet()) { LOG.debug("Key: {} - Value: {}", entry.getKey(), entry.getValue()); } return subreportMap; }
/** * Method to find all sub reports as parameter. Compile sub reports and put all compile sub reports in a parameter map. * Returned map is compatible to common jasper report parameter map. * * @param mainReportId String for specific main report identified by a report id * @param mainReport JasperReport a compiled main report * @return a sub report parameter map as {@link java.util.HashMap<String,Object>} object */ private Map<String, Object> buildSubreport(final String mainReportId, final JasperReport mainReport) throws ReportException { int idx = mainReportId.indexOf('_'); String repositoryId = idx > -1 ? mainReportId.substring(0, idx) : "local"; Map<String, Object> subreportMap = new HashMap<String, Object>(); // Filter parameter for sub reports for (JRParameter parameter : mainReport.getParameters()) { // We need only parameter for Sub reports and we *DON'T* need the default parameter JASPER_REPORT if ("net.sf.jasperreports.engine.JasperReport".equals(parameter.getValueClassName()) && !"JASPER_REPORT".equals(parameter.getName())) { subreportMap.put(parameter.getName(), parameter.getValueClassName()); } } for (final Map.Entry<String,Object> entry : subreportMap.entrySet()) { final String reportId = repositoryId + "_" + entry.getKey(); entry.setValue(getJasperReport(reportId)); } for (final Map.Entry<String,Object> entry : subreportMap.entrySet()) { LOG.debug("Key: {} - Value: {}", entry.getKey(), entry.getValue()); } return subreportMap; }