@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
@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
/** * 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; }
@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());
@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());
@Override public Void call() throws Exception { final JasperReport jasperReport = getJasperReport(reportId); final Map<String, Object> jrReportParms = buildJRparameters(reportParms, jasperReport.getParameters()); jrReportParms.putAll(buildSubreport(reportId, jasperReport)); if ("jdbc".equalsIgnoreCase(m_globalReportRepository.getEngine(reportId))) { final DBUtils db = new DBUtils(); try { final Connection connection = DataSourceFactory.getInstance().getConnection(); db.watch(connection); final JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, jrReportParms, connection); exportReport(format, jasperPrint, outputStream); } finally { db.cleanUp(); } } else if ("null".equalsIgnoreCase(m_globalReportRepository.getEngine(reportId))) { final JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, jrReportParms, new JREmptyDataSource()); exportReport(format, jasperPrint, outputStream); } return null; } });
@Override public Void call() throws Exception { final JasperReport jasperReport = getJasperReport(reportId); final Map<String, Object> jrReportParms = buildJRparameters(reportParms, jasperReport.getParameters()); jrReportParms.putAll(buildSubreport(reportId, jasperReport)); if ("jdbc".equalsIgnoreCase(m_globalReportRepository.getEngine(reportId))) { final DBUtils db = new DBUtils(); try { final Connection connection = DataSourceFactory.getInstance().getConnection(); db.watch(connection); final JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, jrReportParms, connection); exportReport(format, jasperPrint, outputStream); } finally { db.cleanUp(); } } else if ("null".equalsIgnoreCase(m_globalReportRepository.getEngine(reportId))) { final JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, jrReportParms, new JREmptyDataSource()); exportReport(format, jasperPrint, outputStream); } return null; } });
final JRParameter[] reportParms = jasperReport.getParameters();
final JRParameter[] reportParms = jasperReport.getParameters();
String paramName = pp.getPath().lastName().getLocalPart(); Object value = null; if (isSingleValue(paramName, jasperReport.getParameters())) { value = pp.getRealValues().iterator().next(); } else {