protected List<BandData> createBands(ReportBand definition, BandData parentBandData, Map<String, Object> params) { return controllerFactory.controllerBy(definition.getBandOrientation()) .extract(contextFactory.context(definition, parentBandData, params)); } }
protected List<BandData> createBands(ReportBand definition, BandData parentBandData, Map<String, Object> params) { return controllerFactory.controllerBy(definition.getBandOrientation()) .extract(contextFactory.context(definition, parentBandData, params)); } }
public ReportBandImpl(ReportBand instanceToCopy) { this(instanceToCopy.getName(), instanceToCopy.getParent(), instanceToCopy.getChildren(), instanceToCopy.getReportQueries(), instanceToCopy.getBandOrientation()); }
public ReportBandImpl(ReportBand instanceToCopy) { this(instanceToCopy.getName(), instanceToCopy.getParent(), instanceToCopy.getChildren(), instanceToCopy.getReportQueries(), instanceToCopy.getBandOrientation()); }
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; }
@Test public void testGroovyExtractionForBand() throws IOException, URISyntaxException { ReportBand band = YmlDataUtil.bandFrom(FileLoader.load("extraction/fixture/cross_groovy_report_band.yml")); BandData rootBand = new BandData(BandData.ROOT_BAND_NAME); rootBand.setData(new HashMap<>()); rootBand.setFirstLevelBandDefinitionNames(new HashSet<>()); Multimap<String, BandData> reportBandMap = HashMultimap.create(); for (ReportBand definition : band.getChildren()) { List<BandData> data = controllerFactory.controllerBy(definition.getBandOrientation()) .extract(contextFactory.context(definition, rootBand, new HashMap<>())); Assert.assertNotNull(data); data.forEach(b-> { Assert.assertNotNull(b); Assert.assertTrue(StringUtils.isNotEmpty(b.getName())); reportBandMap.put(b.getName(), b); }); rootBand.addChildren(data); rootBand.getFirstLevelBandDefinitionNames().add(definition.getName()); } checkHeader(reportBandMap.get("crosstab_header"), 2, "name", "id"); checkMasterData(reportBandMap.get("crosstab_master_data"), 2, 2, "id", "name", "crosstab_dynamic_header_id", "crosstab_master_data_id", "value"); }
@Test public void testSqlExtractionForCrosstabBand() throws IOException, URISyntaxException { ReportBand band = YmlDataUtil.bandFrom(FileLoader.load("extraction/fixture/cross_sql_report_band.yml")); BandData rootBand = new BandData(BandData.ROOT_BAND_NAME); rootBand.setData(new HashMap<>()); rootBand.setFirstLevelBandDefinitionNames(new HashSet<>()); Multimap<String, BandData> reportBandMap = HashMultimap.create(); for (ReportBand definition : band.getChildren()) { List<BandData> data = controllerFactory.controllerBy(definition.getBandOrientation()) .extract(contextFactory.context(definition, rootBand, new HashMap<>())); Assert.assertNotNull(data); data.forEach(b-> { Assert.assertNotNull(b); Assert.assertTrue(StringUtils.isNotEmpty(b.getName())); reportBandMap.put(b.getName(), b); }); rootBand.addChildren(data); rootBand.getFirstLevelBandDefinitionNames().add(definition.getName()); } checkHeader(reportBandMap.get("crosstab_header"), 12, "MONTH_NAME", "MONTH_ID"); checkMasterData(reportBandMap.get("crosstab_master_data"), 3, 12, "USER_ID", "LOGIN", "HOURS"); }
@Test public void testSqlExtractionForCrosstabBand() throws IOException, URISyntaxException { ReportBand band = YmlDataUtil.bandFrom(FileLoader.load("extraction/fixture/default_sql_report_band.yml")); BandData rootBand = new BandData(BandData.ROOT_BAND_NAME); rootBand.setData(new HashMap<>()); rootBand.setFirstLevelBandDefinitionNames(new HashSet<>()); Multimap<String, BandData> reportBandMap = HashMultimap.create(); for (ReportBand definition : band.getChildren()) { List<BandData> data = controllerFactory.controllerBy(definition.getBandOrientation()) .extract(contextFactory.context(definition, rootBand, new HashMap<>())); Assert.assertNotNull(data); data.forEach(b-> { Assert.assertNotNull(b); Assert.assertTrue(StringUtils.isNotEmpty(b.getName())); reportBandMap.put(b.getName(), b); }); rootBand.addChildren(data); rootBand.getFirstLevelBandDefinitionNames().add(definition.getName()); } checkHeader(reportBandMap.get("header"), 12, "MONTH_NAME", "MONTH_ID"); checkMasterData(reportBandMap.get("master_data"), 3, 12, "USER_ID", "LOGIN", "HOURS"); }
@Test public void testGroovyExtractionForBand() throws IOException, URISyntaxException { ReportBand band = YmlDataUtil.bandFrom(FileLoader.load("extraction/fixture/default_groovy_report_band.yml")); BandData rootBand = new BandData(BandData.ROOT_BAND_NAME); rootBand.setData(new HashMap<>()); rootBand.setFirstLevelBandDefinitionNames(new HashSet<>()); Multimap<String, BandData> reportBandMap = HashMultimap.create(); for (ReportBand definition : band.getChildren()) { List<BandData> data = controllerFactory.controllerBy(definition.getBandOrientation()) .extract(contextFactory.context(definition, rootBand, new HashMap<>())); Assert.assertNotNull(data); data.forEach(b-> { Assert.assertNotNull(b); Assert.assertTrue(StringUtils.isNotEmpty(b.getName())); reportBandMap.put(b.getName(), b); }); rootBand.addChildren(data); rootBand.getFirstLevelBandDefinitionNames().add(definition.getName()); } checkHeader(reportBandMap.get("header"), 2, "name", "id"); checkMasterData(reportBandMap.get("master_data"), 2, 2, "id", "name", "value", "user_id"); }
@Test public void testJsonExtractionForBand() throws IOException, URISyntaxException { ReportBand band = YmlDataUtil.bandFrom(FileLoader.load("extraction/fixture/default_json_report_band.yml")); BandData rootBand = new BandData(BandData.ROOT_BAND_NAME); rootBand.setData(new HashMap<>()); rootBand.setFirstLevelBandDefinitionNames(new HashSet<>()); Multimap<String, BandData> reportBandMap = HashMultimap.create(); for (ReportBand definition : band.getChildren()) { List<BandData> data = controllerFactory.controllerBy(definition.getBandOrientation()) .extract(contextFactory.context(definition, rootBand, ExtractionUtils.getParams(definition))); Assert.assertNotNull(data); data.forEach(b-> { Assert.assertNotNull(b); Assert.assertTrue(StringUtils.isNotEmpty(b.getName())); reportBandMap.put(b.getName(), b); }); rootBand.addChildren(data); rootBand.getFirstLevelBandDefinitionNames().add(definition.getName()); } checkHeader(reportBandMap.get("header"), 2, "name", "id"); checkMasterData(reportBandMap.get("master_data"), 2, 2, "id", "name", "value", "user_id"); }
List<BandData> data = controllerFactory.controllerBy(definition.getBandOrientation()) .extract(contextFactory.context(definition, rootBand, ExtractionUtils.getParams(definition)));
@Test public void testXlsxCrosstabFeature() throws Exception { FileOutputStream outputStream = new FileOutputStream("./result/integration/result-crosstab-feature.xlsx"); ReportBand band = YmlDataUtil.bandFrom(FileLoader.load("integration/fixture/cross_sql_report_band.yml")); BandData rootBand = new BandData(BandData.ROOT_BAND_NAME); rootBand.setData(new HashMap<>()); rootBand.setFirstLevelBandDefinitionNames(new HashSet<>()); for (ReportBand definition : band.getChildren()) { List<BandData> data = controllerFactory.controllerBy(definition.getBandOrientation()) .extract(contextFactory.context(definition, rootBand, new HashMap<>())); assertNotNull(data); data.forEach(b-> { assertNotNull(b); assertTrue(StringUtils.isNotEmpty(b.getName())); }); rootBand.addChildren(data); rootBand.getFirstLevelBandDefinitionNames().add(definition.getName()); } DefaultFormatterFactory defaultFormatterFactory = new DefaultFormatterFactory(); ReportFormatter formatter = defaultFormatterFactory.createFormatter( new FormatterFactoryInput("xlsx", rootBand, new ReportTemplateImpl("", "./modules/core/test/integration/test-crosstab-feature.xlsx", "./modules/core/test/integration/test-crosstab-feature.xlsx", ReportOutputType.xlsx), outputStream)); formatter.renderDocument(); IOUtils.closeQuietly(outputStream); compareFiles("./result/integration/result-crosstab-feature.xlsx", "./modules/core/test/integration/etalon-crosstab-feature.xlsx"); }
protected void writeBandDefinition(Element element, ReportBand bandDefinition) { element.addAttribute("name", bandDefinition.getName()); element.addAttribute("orientation", bandDefinition.getBandOrientation().id); Element childrenBandsElement = element.addElement("bands"); Element reportQueriesElement = element.addElement("queries"); if (bandDefinition.getReportQueries() != null) { for (ReportQuery reportQuery : bandDefinition.getReportQueries()) { Element reportQueryElement = reportQueriesElement.addElement("query"); reportQueryElement.addAttribute("name", reportQuery.getName()); reportQueryElement.addAttribute("type", reportQuery.getLoaderType()); reportQueryElement.addElement("script").setText(reportQuery.getScript()); } } if (bandDefinition.getChildren() != null) { for (ReportBand childBandDefinition : bandDefinition.getChildren()) { Element childBandElement = childrenBandsElement.addElement("band"); writeBandDefinition(childBandElement, childBandDefinition); } } } }
protected void writeBandDefinition(Element element, ReportBand bandDefinition) { element.addAttribute("name", bandDefinition.getName()); element.addAttribute("orientation", bandDefinition.getBandOrientation().id); Element childrenBandsElement = element.addElement("bands"); Element reportQueriesElement = element.addElement("queries"); if (bandDefinition.getReportQueries() != null) { for (ReportQuery reportQuery : bandDefinition.getReportQueries()) { Element reportQueryElement = reportQueriesElement.addElement("query"); reportQueryElement.addAttribute("name", reportQuery.getName()); reportQueryElement.addAttribute("type", reportQuery.getLoaderType()); reportQueryElement.addElement("script").setText(reportQuery.getScript()); } } if (bandDefinition.getChildren() != null) { for (ReportBand childBandDefinition : bandDefinition.getChildren()) { Element childBandElement = childrenBandsElement.addElement("band"); writeBandDefinition(childBandElement, childBandDefinition); } } } }