@Override protected List<Map<String, Object>> getQueriesResult(ExtractionContext context) { Map<String, Object> crossTabParams = new HashMap<>(context.getParams()); getQueries(context) .filter(e-> e.getName().endsWith(VERTICAL_BAND) || e.getName().endsWith(HORIZONTAL_BAND)) .forEach(q-> crossTabParams.put(q.getName(), getQueryData(context, q))); return getQueriesResult( getQueries(context) .filter(e-> !e.getName().endsWith(VERTICAL_BAND) && !e.getName().endsWith(HORIZONTAL_BAND)) .iterator(), context.extendParams(crossTabParams)); }
@Override protected List<Map<String, Object>> getQueriesResult(ExtractionContext context) { Map<String, Object> crossTabParams = new HashMap<>(context.getParams()); getQueries(context) .filter(e-> e.getName().endsWith(VERTICAL_BAND) || e.getName().endsWith(HORIZONTAL_BAND)) .forEach(q-> crossTabParams.put(q.getName(), getQueryData(context, q))); return getQueriesResult( getQueries(context) .filter(e-> !e.getName().endsWith(VERTICAL_BAND) && !e.getName().endsWith(HORIZONTAL_BAND)) .iterator(), context.extendParams(crossTabParams)); }
@Override public List<Map<String, Object>> loadData(ReportQuery reportQuery, BandData parentBand, Map<String, Object> params) { try { String script = reportQuery.getScript(); Map<String, Object> scriptParams = new HashMap<String, Object>(); scriptParams.put("reportQuery", reportQuery); scriptParams.put("parentBand", parentBand); scriptParams.put("params", params); return scripting.evaluateGroovy(script, scriptParams); } catch (Throwable e) { throw new DataLoadingException(String.format("An error occurred while loading data for data set [%s]", reportQuery.getName()), e); } } }
@Override public List<Map<String, Object>> loadData(ReportQuery reportQuery, BandData parentBand, Map<String, Object> params) { try { String script = reportQuery.getScript(); Map<String, Object> scriptParams = new HashMap<String, Object>(); scriptParams.put("reportQuery", reportQuery); scriptParams.put("parentBand", parentBand); scriptParams.put("params", params); return scripting.evaluateGroovy(script, scriptParams); } catch (Throwable e) { throw new DataLoadingException(String.format("An error occurred while loading data for data set [%s]", reportQuery.getName()), e); } } }
@Override public List<Map<String, Object>> loadData(ReportQuery reportQuery, BandData parentBand, Map<String, Object> params) { try { String script = reportQuery.getScript(); Map<String, Object> scriptParams = groovyScriptParametersProvider.prepareParameters(reportQuery, parentBand, params); script = StringUtils.trim(script); if (script.endsWith(".groovy")) { script = resources.getResourceAsString(script); } return scripting.evaluateGroovy(script, scriptParams); } catch (ValidationException e) { throw e; } catch (Throwable e) { throw new DataLoadingException(String.format("An error occurred while loading data for data set [%s]", reportQuery.getName()), e); } } }
throw new DataLoadingException(String.format("An error occurred while loading data for band [%s]." + " Query defines link parameter [%s] but result does not contain such field. Query [%s].", context.getBand().getName(), link, firstReportQuery.getName())); throw new DataLoadingException(String.format("An error occurred while loading data for band [%s]." + " Query defines link parameter [%s] but result does not contain such field. Query [%s].", context.getBand().getName(), link, reportQuery.getName()));
throw new DataLoadingException(String.format("An error occurred while loading data for band [%s]." + " Query defines link parameter [%s] but result does not contain such field. Query [%s].", context.getBand().getName(), link, firstReportQuery.getName())); throw new DataLoadingException(String.format("An error occurred while loading data for band [%s]." + " Query defines link parameter [%s] but result does not contain such field. Query [%s].", context.getBand().getName(), link, reportQuery.getName()));
public ReportQueryImpl(ReportQuery reportQuery) { this(reportQuery.getName(), reportQuery.getScript(), reportQuery.getLoaderType(), reportQuery.getLinkParameterName(), reportQuery.getAdditionalParams()); }
public ReportQueryImpl(ReportQuery reportQuery) { this(reportQuery.getName(), reportQuery.getScript(), reportQuery.getLoaderType(), reportQuery.getLinkParameterName(), reportQuery.getAdditionalParams()); }
@Override public List<Map<String, Object>> loadData(ReportQuery reportQuery, BandData parentBand, Map<String, Object> params) { String storeName = StoreUtils.getStoreName(reportQuery); String query = reportQuery.getScript(); if (StringUtils.isBlank(query)) { return Collections.emptyList(); } try (Transaction tx = persistence.createTransaction(storeName)) { if (Boolean.TRUE.equals(reportQuery.getProcessTemplate())) { query = processQueryTemplate(query, parentBand, params); } List<OutputValue> outputParameters = parseQueryOutputParametersNames(query); query = query.replaceAll("(?i)" + ALIAS_PATTERN + ",", ",");//replaces [as alias_name], entries except last query = query.replaceAll("(?i)" + ALIAS_PATTERN, " ");//replaces last [as alias_name] entry Query select = insertParameters(trimQuery(query), storeName, parentBand, params); List queryResult = select.getResultList(); tx.commit(); if (queryResult.size() > 0 && queryResult.get(0) instanceof Entity) { List<Map<String, Object>> wrappedResults = new ArrayList<>(); for (Object theResult : queryResult) { wrappedResults.add(new EntityMap((Entity) theResult)); } return wrappedResults; } else { return fillOutputData(queryResult, outputParameters); } } catch (Throwable e) { throw new DataLoadingException(String.format("An error occurred while loading data for data set [%s]", reportQuery.getName()), e); } }
throw e; } catch (Throwable e) { throw new DataLoadingException(String.format("An error occurred while loading data for data set [%s]", reportQuery.getName()), e);
throw e; } catch (Throwable e) { throw new DataLoadingException(String.format("An error occurred while loading data for data set [%s]", reportQuery.getName()), e);
protected List<Map<String, Object>> getQueryData(ExtractionContext context, ReportQuery reportQuery) { try { ReportDataLoader dataLoader = loaderFactory.createDataLoader(reportQuery.getLoaderType()); return preprocessorFactory.processorBy(reportQuery.getLoaderType()) .preprocess(reportQuery, new HashMap<>(context.getParams()), (processedQuery, processedParams)-> { //fixme: ugly params overloading support, needs to push context object for dependent logic List<Map<String, Object>> result = dataLoader.loadData(processedQuery, context.getParentBandData(), processedParams); context.extendParams(processedParams); return result; }); } catch (ValidationException e) { throw e; } catch (Exception e) { throw new DataLoadingException(String.format("An error occurred while loading data for band [%s] and query [%s].", context.getBand().getName(), reportQuery.getName()), e); } }
protected List<Map<String, Object>> getQueryData(ExtractionContext context, ReportQuery reportQuery) { try { ReportDataLoader dataLoader = loaderFactory.createDataLoader(reportQuery.getLoaderType()); return preprocessorFactory.processorBy(reportQuery.getLoaderType()) .preprocess(reportQuery, new HashMap<>(context.getParams()), (processedQuery, processedParams)-> { //fixme: ugly params overloading support, needs to push context object for dependent logic List<Map<String, Object>> result = dataLoader.loadData(processedQuery, context.getParentBandData(), processedParams); context.extendParams(processedParams); return result; }); } catch (ValidationException e) { throw e; } catch (Exception e) { throw new DataLoadingException(String.format("An error occurred while loading data for band [%s] and query [%s].", context.getBand().getName(), reportQuery.getName()), e); } }
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); } } } }