Skip to content

Commit

Permalink
Improve RunParams for reports addon cuba-platform/reports#223
Browse files Browse the repository at this point in the history
  • Loading branch information
gglcrash committed Dec 6, 2019
1 parent 86a4a8f commit 9b4db4a
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public class RunParams {
protected ReportTemplate reportTemplate;
protected ReportOutputType outputType;
protected Map<String, Object> params = new HashMap<String, Object>();
protected String outputNamePattern;

public RunParams(Report report) {
this.report = report;
Expand Down Expand Up @@ -88,4 +89,12 @@ public RunParams output(ReportOutputType outputType) {
this.outputType = outputType;
return this;
}

/**
* Add output name pattern
*/
public RunParams outputNamePattern(String outputNamePattern) {
this.outputNamePattern = outputNamePattern;
return this;
}
}
32 changes: 19 additions & 13 deletions core/modules/core/src/com/haulmont/yarg/reporting/Reporting.java
Original file line number Diff line number Diff line change
Expand Up @@ -74,18 +74,11 @@ public void setObjectToStringConverter(ObjectToStringConverter objectToStringCon

@Override
public ReportOutputDocument runReport(RunParams runParams, OutputStream outputStream) {
return runReport(runParams.report, runParams.reportTemplate, runParams.outputType, runParams.params, outputStream);
}

@Override
public ReportOutputDocument runReport(RunParams runParams) {
ByteArrayOutputStream result = new ByteArrayOutputStream();
ReportOutputDocument reportOutputDocument = runReport(runParams.report, runParams.reportTemplate, runParams.outputType, runParams.params, result);
reportOutputDocument.setContent(result.toByteArray());
return reportOutputDocument;
}
Report report = runParams.report;
ReportTemplate reportTemplate = runParams.reportTemplate;
Map<String, Object> params = runParams.params;
ReportOutputType outputType = runParams.outputType;

protected ReportOutputDocument runReport(Report report, ReportTemplate reportTemplate, ReportOutputType outputType, Map<String, Object> params, OutputStream outputStream) {
try {
Preconditions.checkNotNull(report, "\"report\" parameter can not be null");
Preconditions.checkNotNull(reportTemplate, "\"reportTemplate\" can not be null");
Expand All @@ -101,7 +94,7 @@ protected ReportOutputDocument runReport(Report report, ReportTemplate reportTem

logReport("Finished report [%s] with parameters [%s]", report, handledParams);

String outputName = resolveOutputFileName(report, reportTemplate, outputType, rootBand);
String outputName = resolveOutputFileName(runParams, rootBand);
return createReportOutputDocument(report, finalOutputType, outputName, rootBand);
} catch (ReportingInterruptedException e) {
logReport("Report is canceled by user request. Report [%s] with parameters [%s].", report, params);
Expand All @@ -117,6 +110,14 @@ protected ReportOutputDocument runReport(Report report, ReportTemplate reportTem
}
}

@Override
public ReportOutputDocument runReport(RunParams runParams) {
ByteArrayOutputStream result = new ByteArrayOutputStream();
ReportOutputDocument reportOutputDocument = runReport(runParams, result);
reportOutputDocument.setContent(result.toByteArray());
return reportOutputDocument;
}

protected void generateReport(Report report, ReportTemplate reportTemplate, ReportOutputType outputType,
OutputStream outputStream, Map<String, Object> handledParams, BandData rootBand) {
String extension = StringUtils.substringAfterLast(reportTemplate.getDocumentName(), ".");
Expand Down Expand Up @@ -186,8 +187,13 @@ protected ReportOutputDocument createReportOutputDocument(Report report, ReportO
return new ReportOutputDocumentImpl(report, null, outputName, outputType);
}

protected String resolveOutputFileName(Report report, ReportTemplate reportTemplate, ReportOutputType outputType, BandData rootBand) {
protected String resolveOutputFileName(RunParams runParams, BandData rootBand) {
ReportTemplate reportTemplate = runParams.reportTemplate;
ReportOutputType outputType = runParams.outputType;
String outputNamePattern = reportTemplate.getOutputNamePattern();
if (StringUtils.isNotEmpty(runParams.outputNamePattern)) {
outputNamePattern = runParams.outputNamePattern;
}
String outputName = reportTemplate.getDocumentName();
Pattern pattern = Pattern.compile("\\$\\{([A-z0-9_]+)\\.([A-z0-9_]+)\\}");
if (StringUtils.isNotBlank(outputNamePattern)) {
Expand Down

0 comments on commit 9b4db4a

Please sign in to comment.