@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); } }
@Override public Report copyReport(Report source) { source = reloadEntity(source, REPORT_EDIT_VIEW_NAME); Report copiedReport = metadata.getTools().deepCopy(source); copiedReport.setId(uuidSource.createUuid()); copiedReport.setName(generateReportName(source.getName())); copiedReport.setCode(null); for (ReportTemplate copiedTemplate : copiedReport.getTemplates()) { copiedTemplate.setId(uuidSource.createUuid()); } storeReportEntity(copiedReport); return copiedReport; }