protected BandData loadBandData(Report report, Map<String, Object> handledParams) { BandData rootBand = new BandData(BandData.ROOT_BAND_NAME); rootBand.setData(new HashMap<>(handledParams)); rootBand.addReportFieldFormats(report.getReportFieldFormats()); rootBand.setFirstLevelBandDefinitionNames(new HashSet<>()); dataExtractor.extractData(report, handledParams, rootBand); return rootBand; }
protected BandData loadBandData(Report report, Map<String, Object> handledParams) { BandData rootBand = new BandData(BandData.ROOT_BAND_NAME); rootBand.setData(new HashMap<>(handledParams)); rootBand.addReportFieldFormats(report.getReportFieldFormats()); rootBand.setFirstLevelBandDefinitionNames(new HashSet<>()); dataExtractor.extractData(report, handledParams, rootBand); return rootBand; }
private BandData band(int col1, Integer col2, BandOrientation orientation, BandData parentBand, String name) { BandData band1_1 = new BandData(name, parentBand, orientation); Map<String, Object> datamap = new HashMap<String, Object>(); datamap.put("col1", col1); datamap.put("col2", col2); band1_1.setData(datamap); return band1_1; } }
@Override protected BandData wrapData(ExtractionContext context, Map<String, Object> data) { final BandData bandData = new BandData(context.getBand().getName(), context.getParentBandData(), BandOrientation.VERTICAL); bandData.setData(ObjectUtils.defaultIfNull(data, new HashMap<>())); return bandData; }
@Override protected BandData wrapData(ExtractionContext context, Map<String, Object> data) { final BandData bandData = new BandData(context.getBand().getName(), context.getParentBandData(), BandOrientation.VERTICAL); bandData.setData(ObjectUtils.defaultIfNull(data, new HashMap<>())); return bandData; }
private BandData rootBand() { BandData rootBand = new BandData(BandData.ROOT_BAND_NAME); rootBand.setData(new HashMap<String, Object>()); rootBand.setFirstLevelBandDefinitionNames(new HashSet<String>()); return rootBand; }
private BandData band(String name, BandData root) { BandData band1 = new BandData(name, root, BandOrientation.HORIZONTAL); band1.setData(new HashMap<>()); root.addChild(band1); return band1; }
private BandData createBand(String name, BandData root, BandOrientation horizontal) { BandData hor11 = new BandData(name, root, horizontal); hor11.setData(new ConstantMap(name)); return hor11; }
private BandData randomBand(String name, BandData root) { BandData band1 = new BandData(name, root, BandOrientation.HORIZONTAL); band1.setData(new RandomMap()); root.addChild(band1); return band1; }
@Test public void testUrl() throws Exception { BandData root = new BandData("Root", null, BandOrientation.HORIZONTAL); HashMap<String, Object> rootData = new HashMap<>(); rootData.put("url", "https://www.google.ru/#newwindow=1&q=YARG"); rootData.put("urlCaption", "URL"); root.setData(rootData); FileOutputStream outputStream = new FileOutputStream("./result/smoke/url.docx"); ReportFormatter formatter = new DefaultFormatterFactory().createFormatter(new FormatterFactoryInput("docx", root, new ReportTemplateImpl("", "./modules/core/test/smoketest/url.docx", "./modules/core/test/smoketest/url.docx", ReportOutputType.docx), outputStream)); formatter.renderDocument(); IOUtils.closeQuietly(outputStream); }
@Test public void testParentBandCondition() throws Exception { String query = "select id as id from user where id = ${Root.parentBandParam}"; HashMap<String, Object> params = new HashMap<String, Object>(); AbstractDbDataLoader.QueryPack queryPack = prepareQuery(query, new BandData(""), params); System.out.println(queryPack.getQuery()); Assert.assertFalse(queryPack.getQuery().contains("${")); writeParams(queryPack); BandData parentBand = new BandData("Root"); parentBand.setData(new HashMap<String, Object>()); parentBand.addData("parentBandParam", "parentBandParam"); queryPack = prepareQuery(query, parentBand, params); System.out.println(queryPack.getQuery()); Assert.assertEquals(1, StringUtils.countMatches(queryPack.getQuery(), "?")); writeParams(queryPack); }
@Test public void testAggregationsEmpty() throws Exception { BandData root = new BandData("Root", null, BandOrientation.HORIZONTAL); HashMap<String, Object> rootData = new HashMap<String, Object>(); root.setData(rootData); FileOutputStream outputStream = new FileOutputStream("./result/integration/result-empty.xls"); ReportFormatter formatter = new DefaultFormatterFactory().createFormatter(new FormatterFactoryInput("xls", root, new ReportTemplateImpl("", "smoketest/test.xls", "./modules/core/test/integration/test-with-aggregation.xls", ReportOutputType.xls), outputStream)); formatter.renderDocument(); IOUtils.closeQuietly(outputStream); compareFiles("./modules/core/test/integration/etalon-empty.xls", "./result/integration/result-empty.xls"); }
@Test public void testHtml() throws Exception { BandData root = new BandData("Root", null, BandOrientation.HORIZONTAL); HashMap<String, Object> rootData = new HashMap<>(); rootData.put("param1", "AAAAAA"); root.setData(rootData); BandData band11 = new BandData("Band1", root, BandOrientation.HORIZONTAL); band11.setData(new RandomMap()); BandData band12 = new BandData("Band1", root, BandOrientation.HORIZONTAL); band12.setData(new RandomMap()); root.addChild(band11); root.addChild(band12); FileOutputStream outputStream = new FileOutputStream("./result/smoke/result.html"); DefaultFormatterFactory defaultFormatterFactory = new DefaultFormatterFactory(); ReportFormatter formatter = defaultFormatterFactory.createFormatter(new FormatterFactoryInput("html", root, new ReportTemplateImpl("", "test.ftl", "./modules/core/test/smoketest/test.ftl", ReportOutputType.html), outputStream)); formatter.renderDocument(); IOUtils.closeQuietly(outputStream); }
@Test public void testDocxTableWithSplittedBandAlias() throws Exception { BandData root = new BandData("Root", null, BandOrientation.HORIZONTAL); HashMap<String, Object> rootData = new HashMap<>(); root.setData(rootData); BandData ride = new BandData("ride", root, BandOrientation.HORIZONTAL); ride.setData(new RandomMap()); root.addChild(ride); FileOutputStream outputStream = new FileOutputStream("./result/smoke/splitted-aliases-in-table.docx"); ReportFormatter formatter = new DefaultFormatterFactory().createFormatter(new FormatterFactoryInput("docx", root, new ReportTemplateImpl("", "./modules/core/test/smoketest/splitted-aliases-in-table.docx", "./modules/core/test/smoketest/splitted-aliases-in-table.docx", ReportOutputType.docx), outputStream)); formatter.renderDocument(); IOUtils.closeQuietly(outputStream); }
@Test public void testGroovyLoader() throws Exception { GroovyDataLoader groovyDataLoader = new GroovyDataLoader(new DefaultScriptingImpl()); BandData rootBand = new BandData("band1", null, BandOrientation.HORIZONTAL); rootBand.setData(Collections.<String, Object>emptyMap()); List<Map<String, Object>> result = groovyDataLoader.loadData( new ReportQueryImpl("", "return [['a':123, 'b':321], ['a':456, 'b':654]]", "groovy", null, null) , rootBand, Collections.<String, Object>emptyMap()); printResult(result); }
@Test public void testFormats() throws Exception { BandData root = new BandData("Root", null, BandOrientation.HORIZONTAL); HashMap<String, Object> rootData = new HashMap<String, Object>(); root.setData(rootData); BandData band1 = new BandData("Band1", root, BandOrientation.HORIZONTAL); band1.addData("date", new SimpleDateFormat("dd-MM-yyyy").parse("12-04-1961")); root.addChild(band1); FileOutputStream outputStream = new FileOutputStream("./result/integration/result-formats.xls"); ReportFormatter formatter = new DefaultFormatterFactory().createFormatter(new FormatterFactoryInput("xls", root, new ReportTemplateImpl("", "./modules/core/test/integration/test-formats.xls", "./modules/core/test/integration/test-formats.xls", ReportOutputType.xls), outputStream)); formatter.renderDocument(); IOUtils.closeQuietly(outputStream); compareFiles("./modules/core/test/integration/etalon-formats.xls", "./result/integration/result-formats.xls"); }
@Test public void testTableOfContents() throws Exception { BandData root = new BandData("Root", null, BandOrientation.HORIZONTAL); HashMap<String, Object> rootData = new HashMap<>(); root.setData(rootData); BandData project = randomBand("Project", root); for (int i = 0; i < 30; i++) { BandData options = randomBand("Options", root); } FileOutputStream outputStream = new FileOutputStream("./result/smoke/table-of-contents.docx"); ReportFormatter formatter = new DefaultFormatterFactory().createFormatter(new FormatterFactoryInput("docx", root, new ReportTemplateImpl("", "./modules/core/test/smoketest/table-of-contents.docx", "./modules/core/test/smoketest/table-of-contents.docx", ReportOutputType.docx), outputStream)); formatter.renderDocument(); IOUtils.closeQuietly(outputStream); }
@Test public void stressTest() throws IOException, URISyntaxException { int queries = 100; int recordsPerQuery = 10000; Report report = createReport(queries, recordsPerQuery); BandData rootBand = new BandData(BandData.ROOT_BAND_NAME); rootBand.setData(new HashMap<>()); rootBand.addReportFieldFormats(report.getReportFieldFormats()); rootBand.setFirstLevelBandDefinitionNames(new HashSet<>()); long start = System.currentTimeMillis(); try { new DataExtractorImpl(new DefaultLoaderFactory().setGroovyDataLoader( new GroovyDataLoader(new DefaultScriptingImpl()))).extractData(report, new HashMap<>(), rootBand); } finally { System.out.println( String.format("Report processing stress test (%d queries and %d records per query) took %d ms", queries, recordsPerQuery, System.currentTimeMillis() - start) ); } }
protected BandData wrapData(ExtractionContext context, Map<String, Object> data) { BandData band = new BandData(context.getBand().getName(), context.getParentBandData(), context.getBand().getBandOrientation()); band.setData(data); Collection<ReportBand> childrenBandDefinitions = context.getBand().getChildren(); if (childrenBandDefinitions != null) { for (ReportBand childDefinition : childrenBandDefinitions) { List<BandData> childBands = controllerRegistry .controllerBy(childDefinition.getBandOrientation()) .extract(context .withBand(childDefinition, band)); band.addChildren(childBands); } } return band; }
protected BandData wrapData(ExtractionContext context, Map<String, Object> data) { BandData band = new BandData(context.getBand().getName(), context.getParentBandData(), context.getBand().getBandOrientation()); band.setData(data); Collection<ReportBand> childrenBandDefinitions = context.getBand().getChildren(); if (childrenBandDefinitions != null) { for (ReportBand childDefinition : childrenBandDefinitions) { List<BandData> childBands = controllerRegistry .controllerBy(childDefinition.getBandOrientation()) .extract(context .withBand(childDefinition, band)); band.addChildren(childBands); } } return band; }