Merge branch 'feature/RED-10297' into 'master'

RED-10297: Provide default date format file when missing on dossier template import

Closes RED-10297

See merge request redactmanager/persistence-service!808
This commit is contained in:
Maverick Studer 2024-10-30 12:36:15 +01:00
commit bbd8d5be9b
3 changed files with 58 additions and 17 deletions

View File

@ -41,6 +41,7 @@ import com.iqser.red.service.persistence.management.v1.processor.dataexchange.zi
import com.iqser.red.service.persistence.management.v1.processor.service.ColorsService;
import com.iqser.red.service.persistence.management.v1.processor.service.ComponentMappingService;
import com.iqser.red.service.persistence.management.v1.processor.service.DateFormatsValidationService;
import com.iqser.red.service.persistence.management.v1.processor.service.DefaultDateFormatsProvider;
import com.iqser.red.service.persistence.management.v1.processor.service.ReportTemplateService;
import com.iqser.red.service.persistence.management.v1.processor.service.RulesValidationService;
import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService;
@ -107,6 +108,7 @@ public class DossierTemplateImportService {
private final ComponentDefinitionPersistenceService componentDefinitionPersistenceService;
private final EntityTypeImportService entityTypeImportService;
private final SystemManagedTypesImport systemManagedTypesImport;
private final DefaultDateFormatsProvider defaultDateFormatsProvider;
public String importDossierTemplate(ImportDossierTemplateRequest request) {
@ -493,13 +495,18 @@ public class DossierTemplateImportService {
private void setDataFormats(ImportTemplateResult request, String dossierTemplateId) {
if (request.getDateFormats() != null) {
List<DateFormatPatternErrorMessage> dateFormatPatternErrorMessages = dateFormatsValidationService.validateDateFormats(request.getDateFormats());
String dateFormats = request.getDateFormats();
if (dateFormats == null && applicationType.equals("DocuMine")) {
dateFormats = defaultDateFormatsProvider.getDateFormats();
}
if (dateFormats != null) {
List<DateFormatPatternErrorMessage> dateFormatPatternErrorMessages = dateFormatsValidationService.validateDateFormats(dateFormats);
if (!dateFormatPatternErrorMessages.isEmpty()) {
throw new BadRequestException("The date formats file contains errors");
}
dateFormatsPersistenceService.setDateFormats(request.dateFormats, dossierTemplateId, request.getDateFormatsExportModel().getVersion());
dateFormatsPersistenceService.setDateFormats(dateFormats, dossierTemplateId, request.getDateFormatsExportModel().getVersion());
}
}
@ -689,12 +696,12 @@ public class DossierTemplateImportService {
importModel.getTypes().removeIf(t -> systemManagedTypesIdsFromImport.contains(t.getType()));
importModel.getEntries().keySet().removeIf(key -> systemManagedTypesIdsFromImport.contains(key));
importModel.getFalsePositives().keySet().removeIf(key -> systemManagedTypesIdsFromImport.contains(key));
importModel.getFalseRecommendations().keySet().removeIf(key -> systemManagedTypesIdsFromImport.contains(key));
importModel.getDeletedEntries().keySet().removeIf(key -> systemManagedTypesIdsFromImport.contains(key));
importModel.getDeletedFalsePositives().keySet().removeIf(key -> systemManagedTypesIdsFromImport.contains(key));
importModel.getDeletedFalseRecommendations().keySet().removeIf(key -> systemManagedTypesIdsFromImport.contains(key));
importModel.getEntries().keySet().removeIf(systemManagedTypesIdsFromImport::contains);
importModel.getFalsePositives().keySet().removeIf(systemManagedTypesIdsFromImport::contains);
importModel.getFalseRecommendations().keySet().removeIf(systemManagedTypesIdsFromImport::contains);
importModel.getDeletedEntries().keySet().removeIf(systemManagedTypesIdsFromImport::contains);
importModel.getDeletedFalsePositives().keySet().removeIf(systemManagedTypesIdsFromImport::contains);
importModel.getDeletedFalseRecommendations().keySet().removeIf(systemManagedTypesIdsFromImport::contains);
}
return importModel;
}

View File

@ -14,6 +14,7 @@ import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
import com.iqser.red.service.persistence.management.v1.processor.migration.Migration;
import com.iqser.red.service.persistence.management.v1.processor.service.DefaultDateFormatsProvider;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DateFormatsPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService;
@ -33,11 +34,13 @@ public class AddDateFormatsToTemplatesMigration25 extends Migration {
DateFormatsPersistenceService dateFormatsPersistenceService;
@Autowired
DossierTemplatePersistenceService dossierTemplatePersistenceService;
@Autowired
DefaultDateFormatsProvider defaultDateFormatsProvider;
@Value("${application.type}")
private String applicationType;
public AddDateFormatsToTemplatesMigration25() {
super(NAME, VERSION);
@ -48,19 +51,15 @@ public class AddDateFormatsToTemplatesMigration25 extends Migration {
@SneakyThrows
protected void migrate() {
if(!applicationType.equalsIgnoreCase("DocuMine")){
if (!applicationType.equalsIgnoreCase("DocuMine")) {
log.info("Skipping AddDateFormatsToTemplatesMigration25 as application type is not DocuMine!!!");
return;
}
List<DossierTemplateEntity> allDossierTemplates = dossierTemplatePersistenceService.getAllDossierTemplates();
allDossierTemplates.forEach(dt -> {
Resource resource = new ClassPathResource("files/dateFormats.txt");
try (BufferedReader reader = new BufferedReader(new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8))) {
String dateFormats = reader.lines().collect(Collectors.joining(System.lineSeparator()));
dateFormatsPersistenceService.setDateFormats(dateFormats, dt.getId(), -1);
try {
dateFormatsPersistenceService.setDateFormats(defaultDateFormatsProvider.getDateFormats(), dt.getId(), -1);
} catch (Exception e) {
log.info("Could not update dossier template {}, error: {}", dt.getId(), e.getMessage());
}

View File

@ -0,0 +1,35 @@
package com.iqser.red.service.persistence.management.v1.processor.service;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.stream.Collectors;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;
import lombok.SneakyThrows;
@Service
public class DefaultDateFormatsProvider {
private String dateFormats;
@SneakyThrows
public String getDateFormats() {
if (dateFormats == null) {
Resource resource = new ClassPathResource("files/dateFormats.txt");
try (BufferedReader reader = new BufferedReader(new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8))) {
dateFormats = reader.lines()
.collect(Collectors.joining(System.lineSeparator()));
}
}
return dateFormats;
}
}