public Object getParameter(String name) { return getParameterValue(name); }
public Object getParameter(String name) { return getParameterValue(name); }
@Override public void apply() { for (DataObject dataObject : data) { HSSFCell resultCell = dataObject.resultCell; HSSFCell templateCell = dataObject.templateCell; String templateCellValue = templateCell.getStringCellValue(); Matcher matcher = pattern.matcher(templateCellValue); if (matcher.find()) { String paramName = matcher.group(1); Integer width = (Integer) dataObject.bandData.getParameterValue(paramName); if (width != null) { resultCell.getSheet().setColumnWidth(resultCell.getColumnIndex(), width); } } } } }
@Override public void apply() { for (DataObject dataObject : data) { HSSFCell resultCell = dataObject.resultCell; HSSFCell templateCell = dataObject.templateCell; String templateCellValue = templateCell.getStringCellValue(); Matcher matcher = pattern.matcher(templateCellValue); if (matcher.find()) { String paramName = matcher.group(1); Integer width = (Integer) dataObject.bandData.getParameterValue(paramName); if (width != null) { resultCell.getSheet().setColumnWidth(resultCell.getColumnIndex(), width); } } } } }
Object parameterValue = band.getParameterValue(bandAndParameter.getParameterName());
Object parameterValue = band.getParameterValue(bandAndParameter.getParameterName());
@Override protected void handle(Text text) { String textValue = text.getValue(); if (docxFormatter.containsJustOneAlias(textValue)) {//todo eude not only one value cells? String parameterName = docxFormatter.unwrapParameterName(textValue); String fullParameterName = bandName + "." + parameterName; Object parameterValue = band.getParameterValue(parameterName); if (docxFormatter.tryToApplyInliners(fullParameterName, parameterValue, text)) return; } //todo eude the following logic is not full and ignores situation when in 1 text we have both table and not table aliases boolean hasTableAliases = false; Matcher matcher = AbstractFormatter.UNIVERSAL_ALIAS_PATTERN.matcher(textValue); while(matcher.find()) { AbstractFormatter.BandPathAndParameterName bandAndParameter = docxFormatter.separateBandNameAndParameterName(matcher.group(1)); if (isBlank(bandAndParameter.getBandPath()) || isBlank(bandAndParameter.getParameterName())) { hasTableAliases = true; } } if (hasTableAliases) { String resultString = docxFormatter.insertBandDataToString(band, textValue); text.setValue(resultString); } text.setSpace("preserve"); }
@Override protected void handle(Text text) { String textValue = text.getValue(); if (docxFormatter.containsJustOneAlias(textValue)) {//todo eude not only one value cells? String parameterName = docxFormatter.unwrapParameterName(textValue); String fullParameterName = bandName + "." + parameterName; Object parameterValue = band.getParameterValue(parameterName); if (docxFormatter.tryToApplyInliners(fullParameterName, parameterValue, text)) return; } //todo eude the following logic is not full and ignores situation when in 1 text we have both table and not table aliases boolean hasTableAliases = false; Matcher matcher = AbstractFormatter.UNIVERSAL_ALIAS_PATTERN.matcher(textValue); while(matcher.find()) { AbstractFormatter.BandPathAndParameterName bandAndParameter = docxFormatter.separateBandNameAndParameterName(matcher.group(1)); if (isBlank(bandAndParameter.getBandPath()) || isBlank(bandAndParameter.getParameterName())) { hasTableAliases = true; } } if (hasTableAliases) { String resultString = docxFormatter.insertBandDataToString(band, textValue); text.setValue(resultString); } text.setSpace("preserve"); }
protected void insertValue(XText text, XTextRange textRange, BandData band, String parameterName) { checkThreadInterrupted(); String fullParameterName = band.getName() + "." + parameterName; Object paramValue = band.getParameterValue(parameterName); Map<String, ReportFieldFormat> formats = rootBand.getReportFieldFormats(); try { boolean handled = false; if (paramValue != null) { if ((formats != null) && (formats.containsKey(fullParameterName))) { String format = formats.get(fullParameterName).getFormat(); // Handle doctags for (ContentInliner contentInliner : contentInliners) { Matcher matcher = contentInliner.getTagPattern().matcher(format); if (matcher.find()) { contentInliner.inlineToDoc(officeComponent, textRange, text, paramValue, matcher); handled = true; } } } if (!handled) { String valueString = formatValue(paramValue, parameterName, fullParameterName); text.insertString(textRange, valueString, true); } } else { text.insertString(textRange, "", true); } } catch (Exception ex) { throw wrapWithReportingException(String.format("An error occurred while inserting parameter [%s] into text line [%s]", parameterName, text.getString()), ex); } }
Object parameterValue = band.getParameterValue(bandAndParameter.getParameterName());
@Test public void testDataLinkage() { Report report = createReport(); BandData rootBand = new BandData(BandData.ROOT_BAND_NAME); rootBand.setData(new HashMap<>()); rootBand.addReportFieldFormats(report.getReportFieldFormats()); rootBand.setFirstLevelBandDefinitionNames(new HashSet<>()); new DataExtractorImpl(new DefaultLoaderFactory().setGroovyDataLoader( new GroovyDataLoader(new DefaultScriptingImpl()))).extractData(report, new HashMap<>(), rootBand); List<BandData> bands = rootBand.getChildrenByName("Band1"); for (BandData band : bands) { if (((Integer)1).equals(band.getParameterValue("link"))) { Assert.assertEquals(1, band.getParameterValue("col1")); Assert.assertEquals(10, band.getParameterValue("col2")); Assert.assertEquals(100, band.getParameterValue("col3")); } else if (((Integer)2).equals(band.getParameterValue("link"))) { Assert.assertEquals(2, band.getParameterValue("col1")); Assert.assertEquals(20, band.getParameterValue("col2")); Assert.assertEquals(200, band.getParameterValue("col3")); } } }
protected void insertValue(XText text, XTextRange textRange, BandData band, String parameterName) { checkThreadInterrupted(); String fullParameterName = band.getName() + "." + parameterName; Object paramValue = band.getParameterValue(parameterName); Map<String, ReportFieldFormat> formats = rootBand.getReportFieldFormats(); try { boolean handled = false; if (paramValue != null) { if ((formats != null) && (formats.containsKey(fullParameterName))) { String format = formats.get(fullParameterName).getFormat(); // Handle doctags for (ContentInliner contentInliner : contentInliners) { Matcher matcher = contentInliner.getTagPattern().matcher(format); if (matcher.find()) { contentInliner.inlineToDoc(officeComponent, textRange, text, paramValue, matcher); handled = true; } } } if (!handled) { String valueString = formatValue(paramValue, parameterName, fullParameterName); text.insertString(textRange, valueString, true); } } else { text.insertString(textRange, "", true); } } catch (Exception ex) { throw wrapWithReportingException(String.format("An error occurred while inserting parameter [%s] into text line [%s]", parameterName, text.getString()), ex); } }
Object parameterValue = band.getParameterValue(bandAndParameter.getParameterName());
String styleName = (String) bandData.getParameterValue(styleParamName); if (styleName == null) continue;
String styleName = (String) bandData.getParameterValue(styleParamName); if (styleName == null) continue;
if (matcher.find()) { String paramName = matcher.group(1); String styleName = (String) bandData.getParameterValue(paramName); if (styleName == null) continue;
if (matcher.find()) { String paramName = matcher.group(1); String styleName = (String) bandData.getParameterValue(paramName); if (styleName == null) continue;