RED-2403: Fixed duplicate multifile nameing in downloads
This commit is contained in:
parent
e12c541c8e
commit
f82bbf76f9
@ -38,17 +38,19 @@ public class ReportTemplateController implements ReportTemplateResource {
|
||||
|
||||
public ReportTemplate uploadTemplate(@RequestBody ReportTemplateUploadRequest reportTemplateUploadRequest) {
|
||||
|
||||
String fileName = parseFileName(reportTemplateUploadRequest);
|
||||
|
||||
List<ReportTemplateEntity> 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<ReportTemplateEntity> 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user