use of io.jmix.reports.app.ParameterPrototype in project jmix by jmix-framework.
the class ReportRunnerImpl method createReportDocumentInternal.
protected ReportOutputDocument createReportDocumentInternal(ReportRunContext context) {
Report report = context.getReport();
ReportTemplate template = context.getReportTemplate();
ReportOutputType outputType = context.getOutputType();
Map<String, Object> params = context.getParams();
String outputNamePattern = context.getOutputNamePattern();
StopWatch stopWatch = null;
MDC.put("user", SecurityContextHolder.getContext().getAuthentication().getName());
// executions.startExecution(report.getId().toString(), "Reporting");
try {
// TODO Slf4JStopWatch
// stopWatch = new Slf4JStopWatch("Reporting#" + report.getName());
Map<String, Object> resultParams = new HashMap<>(params);
params.entrySet().stream().filter(param -> param.getValue() instanceof ParameterPrototype).forEach(param -> {
ParameterPrototype prototype = (ParameterPrototype) param.getValue();
List data = prototypesLoader.loadData(prototype);
resultParams.put(param.getKey(), data);
});
if (template.isCustom()) {
CustomFormatter customFormatter = applicationContext.getBean(CustomFormatter.class, report, template);
template.setCustomReport(customFormatter);
}
com.haulmont.yarg.structure.ReportOutputType resultOutputType = (outputType != null) ? outputType.getOutputType() : template.getOutputType();
return reportingAPI.runReport(new RunParams(report).template(template).params(resultParams).output(resultOutputType).outputNamePattern(outputNamePattern));
} catch (NoFreePortsException nfe) {
throw new NoOpenOfficeFreePortsException(nfe.getMessage());
} catch (OpenOfficeException ooe) {
throw new FailedToConnectToOpenOfficeException(ooe.getMessage());
} catch (com.haulmont.yarg.exception.UnsupportedFormatException fe) {
throw new UnsupportedFormatException(fe.getMessage());
} catch (com.haulmont.yarg.exception.ValidationException ve) {
throw new ValidationException(ve.getMessage());
} catch (ReportingInterruptedException ie) {
throw new ReportCanceledException(String.format("Report is canceled. %s", ie.getMessage()));
} catch (com.haulmont.yarg.exception.ReportingException re) {
// todo https://github.com/Haulmont/jmix-reports/issues/22
// Throwable rootCause = ExceptionUtils.getRootCause(re);
// if (rootCause instanceof ResourceCanceledException) {
// throw new ReportCanceledException(String.format("Report is canceled. %s", rootCause.getMessage()));
// }
// noinspection unchecked
List<Throwable> list = ExceptionUtils.getThrowableList(re);
StringBuilder sb = new StringBuilder();
for (Iterator<Throwable> it = list.iterator(); it.hasNext(); ) {
// noinspection ThrowableResultOfMethodCallIgnored
sb.append(it.next().getMessage());
if (it.hasNext())
sb.append("\n");
}
throw new ReportingException(sb.toString());
} finally {
// todo https://github.com/Haulmont/jmix-reports/issues/22
// executions.endExecution();
MDC.remove("user");
MDC.remove("webContextName");
if (stopWatch != null) {
stopWatch.stop();
}
}
}
use of io.jmix.reports.app.ParameterPrototype in project jmix by jmix-framework.
the class AbstractPrintFormAction method runReport.
protected void runReport(Report report, Screen screen, Object selectedValue, MetaClass inputValueMetaClass, @Nullable String outputFileName) {
Report reloadedReport = reloadReport(report);
ReportInputParameter parameter = getParameterAlias(reloadedReport, inputValueMetaClass);
if (selectedValue instanceof ParameterPrototype) {
((ParameterPrototype) selectedValue).setParamName(parameter.getAlias());
}
runAndShow(reloadedReport, screen, parameter, selectedValue, outputFileName);
}
use of io.jmix.reports.app.ParameterPrototype in project jmix by jmix-framework.
the class ListPrintFormAction method printAll.
protected void printAll() {
ContainerDataUnit unit = (ContainerDataUnit) target.getItems();
CollectionContainer container = unit.getContainer();
if (container instanceof CollectionPropertyContainer) {
// as CollectionPropertyContainer does not have loader it always fetches all records,
// so print these records as selected
printSelected(new HashSet(container.getMutableItems()));
return;
}
CollectionLoader loader = (CollectionLoader) ((HasLoader) unit.getContainer()).getLoader();
MetaClass metaClass = container.getEntityMetaClass();
LoadContext loadContext = loader.createLoadContext();
ParameterPrototype parameterPrototype = new ParameterPrototype(metaClass.getName());
parameterPrototype.setMetaClassName(metaClass.getName());
LoadContext.Query query = loadContext.getQuery();
parameterPrototype.setQueryString(query.getQueryString());
parameterPrototype.setQueryParams(query.getParameters());
parameterPrototype.setCondition(query.getCondition());
parameterPrototype.setSort(query.getSort());
if (!Strings.isNullOrEmpty(loadContext.getFetchPlan().getName())) {
parameterPrototype.setFetchPlanName(loadContext.getFetchPlan().getName());
} else {
parameterPrototype.setFetchPlan(loadContext.getFetchPlan());
}
Window window = ComponentsHelper.getWindowNN(target);
openRunReportScreen(window.getFrameOwner(), parameterPrototype, metaClass);
}
Aggregations