From f82bbf76f99ee34a0d1bdb85cb21756997f07fb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Thu, 14 Oct 2021 13:58:40 +0200 Subject: [PATCH] RED-2403: Fixed duplicate multifile nameing in downloads --- .../controller/ReportTemplateController.java | 45 +++---------------- .../integration/tests/ReportTemplateTest.java | 43 +++--------------- 2 files changed, 14 insertions(+), 74 deletions(-) diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/ReportTemplateController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/ReportTemplateController.java index 1c4b8a018..4c2a4586b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/ReportTemplateController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/ReportTemplateController.java @@ -38,17 +38,19 @@ public class ReportTemplateController implements ReportTemplateResource { public ReportTemplate uploadTemplate(@RequestBody ReportTemplateUploadRequest reportTemplateUploadRequest) { - String fileName = parseFileName(reportTemplateUploadRequest); List reportTemplates = reportTemplatePersistenceService.findByDossierTemplateId(reportTemplateUploadRequest.getDossierTemplateId()); - if (doesFileNameExists(reportTemplates, fileName)) { - throw new ConflictException("Template already exists."); + for (ReportTemplateEntity reportTemplate : reportTemplates) { + if (reportTemplate.getFileName().equals(reportTemplateUploadRequest.getFileName()) && reportTemplate.isMultiFileReport() && reportTemplateUploadRequest.isMultiFileReport() + || reportTemplate.getFileName().equals(reportTemplateUploadRequest.getFileName()) && !reportTemplate.isMultiFileReport() && !reportTemplateUploadRequest.isMultiFileReport()) { + throw new ConflictException("Template already exists."); + } } - String storageId = StorageIdUtils.getReportStorageId(reportTemplateUploadRequest.getDossierTemplateId(), fileName); + String storageId = StorageIdUtils.getReportStorageId(reportTemplateUploadRequest.getDossierTemplateId(), reportTemplateUploadRequest.getFileName()); storageService.storeObject(storageId, reportTemplateUploadRequest.getTemplate()); String templateId = UUID.randomUUID().toString(); - reportTemplatePersistenceService.insert(reportTemplateUploadRequest.getDossierTemplateId(), templateId, storageId, fileName, reportTemplateUploadRequest.isActiveByDefault(), reportTemplateUploadRequest.isMultiFileReport()); + reportTemplatePersistenceService.insert(reportTemplateUploadRequest.getDossierTemplateId(), templateId, storageId, reportTemplateUploadRequest.getFileName(), reportTemplateUploadRequest.isActiveByDefault(), reportTemplateUploadRequest.isMultiFileReport()); return convert(reportTemplatePersistenceService.find(templateId), ReportTemplate.class); @@ -91,37 +93,4 @@ public class ReportTemplateController implements ReportTemplateResource { } - - private boolean doesFileNameExists(List reportTemplates, String fileName) { - - for (ReportTemplateEntity reportTemplate : reportTemplates) { - if (reportTemplate.getFileName().equals(fileName)) { - return true; - } - } - return false; - } - - - private String parseFileName(@NonNull ReportTemplateUploadRequest reportTemplateUploadRequest) { - - if (reportTemplateUploadRequest.isMultiFileReport()) { - String fileName = reportTemplateUploadRequest.getFileName(); - - int index = StringUtils.lastIndexOf(fileName, "."); - if (index < 1) { - throw new BadRequestException("FileName is not correct."); - } - String fileNameWithoutEnding = StringUtils.substring(fileName, 0, index); - String fileEnding = StringUtils.substring(fileName, index); - - if (StringUtils.isEmpty(fileNameWithoutEnding) || StringUtils.isEmpty(fileEnding)) { - throw new BadRequestException("FileName is not correct."); - } - return fileNameWithoutEnding + "(multifile)" + fileEnding; - } else { - return reportTemplateUploadRequest.getFileName(); - } - } - } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java index e2028b4c5..6f67c7608 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java @@ -91,7 +91,7 @@ public class ReportTemplateTest extends AbstractPersistenceServerServiceTest { .next() .getTemplateId()); assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate); - assertThat(firstTemplate.getFileName()).isEqualTo("report(multifile).xlsx"); + assertThat(firstTemplate.getFileName()).isEqualTo("report.xlsx"); var download = reportTemplateClient.downloadReportTemplate(firstTemplate.getDossierTemplateId(), firstTemplate.getTemplateId()); assertThat(download.getFile().length).isEqualTo(4); @@ -233,7 +233,7 @@ public class ReportTemplateTest extends AbstractPersistenceServerServiceTest { var secondTemplate = reportTemplateClient.getReportTemplate(dossierTemplate.getId(), availableTemplates.get(1) .getTemplateId()); assertThat(availableTemplates.get(1)).isEqualTo(secondTemplate); - assertThat(secondTemplate.getFileName()).isEqualTo("report(multifile).xlsx"); + assertThat(secondTemplate.getFileName()).isEqualTo("report.xlsx"); } @@ -267,7 +267,7 @@ public class ReportTemplateTest extends AbstractPersistenceServerServiceTest { .next() .getTemplateId()); assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate); - assertThat(firstTemplate.getFileName()).isEqualTo("report(multifile).xlsx"); + assertThat(firstTemplate.getFileName()).isEqualTo("report.xlsx"); var download = reportTemplateClient.downloadReportTemplate(firstTemplate.getDossierTemplateId(), firstTemplate.getTemplateId()); assertThat(download.getFile().length).isEqualTo(4); @@ -321,7 +321,7 @@ public class ReportTemplateTest extends AbstractPersistenceServerServiceTest { .next() .getTemplateId()); assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate); - assertThat(firstTemplate.getFileName()).isEqualTo(fileName + "(multifile)" + fileEnding); + assertThat(firstTemplate.getFileName()).isEqualTo(fileName + fileEnding); } @@ -355,7 +355,7 @@ public class ReportTemplateTest extends AbstractPersistenceServerServiceTest { .next() .getTemplateId()); assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate); - assertThat(firstTemplate.getFileName()).isEqualTo(fileName + "(multifile)" + fileEnding); + assertThat(firstTemplate.getFileName()).isEqualTo(fileName + fileEnding); } @@ -389,7 +389,7 @@ public class ReportTemplateTest extends AbstractPersistenceServerServiceTest { .next() .getTemplateId()); assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate); - assertThat(firstTemplate.getFileName()).isEqualTo(fileName + "(multifile)" + fileEnding); + assertThat(firstTemplate.getFileName()).isEqualTo(fileName + fileEnding); } @@ -423,36 +423,7 @@ public class ReportTemplateTest extends AbstractPersistenceServerServiceTest { .next() .getTemplateId()); assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate); - assertThat(firstTemplate.getFileName()).isEqualTo(fileName + "(multifile)" + fileEnding); - - } - - - /* - * Upload multiFile report with corrupt fileName - */ - @Test - public void testMultiFileReportTemplateWithCorruptFileName() { - // Arrange - String fileName = "report"; - String fileEnding = "endingWithoutDot"; - var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); - - // Act & Assert - var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()); - assertThat(availableTemplates).isEmpty(); - - final Throwable thrown = catchThrowable(() -> { - reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder() - .activeByDefault(true) - .dossierTemplateId(dossierTemplate.getId()) - .multiFileReport(true) - .fileName(fileName + fileEnding) - .template(new byte[]{1, 2, 3, 4}) - .build()); - }); - - assertThat(thrown.getMessage()).contains("FileName is not correct"); + assertThat(firstTemplate.getFileName()).isEqualTo(fileName + fileEnding); }