@Override protected void initNewItem(ReportTemplate template) { if (StringUtils.isEmpty(template.getCode())) { Report report = template.getReport(); if (report != null) { if (report.getTemplates() == null || report.getTemplates().isEmpty()) template.setCode(ReportService.DEFAULT_TEMPLATE_CODE); else template.setCode("Template_" + Integer.toString(report.getTemplates().size())); } } }
@Override public void actionPerform(Component component) { ReportTemplate template = (ReportTemplate) target.getSingleSelected(); if (template != null) { ReportTemplate copy = metadata.getTools().copy(template); copy.setId(uuidSource.createUuid()); String copyNamingPattern = getMessage("template.copyNamingPattern"); String copyCode = String.format(copyNamingPattern, StringUtils.isEmpty(copy.getCode()) ? StringUtils.EMPTY : copy.getCode()); //noinspection unchecked List<String> codes = (List<String>) target.getDatasource().getItems().stream() .map(o -> ((ReportTemplate) o).getCode()) .filter(o -> !StringUtils.isEmpty((String) o)) .collect(Collectors.toList()); if (codes.contains(copyCode)) { String code = copyCode; int i = 0; while ((codes.contains(code))) { i += 1; code = copyCode + " " + i; } copyCode = code; } copy.setCode(copyCode); //noinspection unchecked target.getDatasource().addItem(copy); } }
protected ReportTemplate createDefaultTemplate(Report report, ReportData reportData) { ReportTemplate reportTemplate = metadata.create(ReportTemplate.class); reportTemplate.setReport(report); reportTemplate.setCode(ReportService.DEFAULT_TEMPLATE_CODE); reportTemplate.setName(reportData.getTemplateFileName()); reportTemplate.setContent(reportData.getTemplateContent()); reportTemplate.setCustom(Boolean.FALSE); Integer outputFileTypeId = reportData.getOutputFileType().getId(); reportTemplate.setReportOutputType(ReportOutputType.fromId(outputFileTypeId)); if (StringUtils.isNotEmpty(reportData.getOutputNamePattern())) { reportTemplate.setOutputNamePattern(reportData.getOutputNamePattern()); } report.setDefaultTemplate(reportTemplate); report.setTemplates(Collections.singletonList(reportTemplate)); return reportTemplate; }