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.ColorsService;
import com.iqser.red.service.persistence.management.v1.processor.service.ComponentMappingService; 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.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.ReportTemplateService;
import com.iqser.red.service.persistence.management.v1.processor.service.RulesValidationService; import com.iqser.red.service.persistence.management.v1.processor.service.RulesValidationService;
import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService; import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService;
@ -107,6 +108,7 @@ public class DossierTemplateImportService {
private final ComponentDefinitionPersistenceService componentDefinitionPersistenceService; private final ComponentDefinitionPersistenceService componentDefinitionPersistenceService;
private final EntityTypeImportService entityTypeImportService; private final EntityTypeImportService entityTypeImportService;
private final SystemManagedTypesImport systemManagedTypesImport; private final SystemManagedTypesImport systemManagedTypesImport;
private final DefaultDateFormatsProvider defaultDateFormatsProvider;
public String importDossierTemplate(ImportDossierTemplateRequest request) { public String importDossierTemplate(ImportDossierTemplateRequest request) {
@ -493,13 +495,18 @@ public class DossierTemplateImportService {
private void setDataFormats(ImportTemplateResult request, String dossierTemplateId) { private void setDataFormats(ImportTemplateResult request, String dossierTemplateId) {
if (request.getDateFormats() != null) { String dateFormats = request.getDateFormats();
List<DateFormatPatternErrorMessage> dateFormatPatternErrorMessages = dateFormatsValidationService.validateDateFormats(request.getDateFormats()); if (dateFormats == null && applicationType.equals("DocuMine")) {
dateFormats = defaultDateFormatsProvider.getDateFormats();
}
if (dateFormats != null) {
List<DateFormatPatternErrorMessage> dateFormatPatternErrorMessages = dateFormatsValidationService.validateDateFormats(dateFormats);
if (!dateFormatPatternErrorMessages.isEmpty()) { if (!dateFormatPatternErrorMessages.isEmpty()) {
throw new BadRequestException("The date formats file contains errors"); 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.getTypes().removeIf(t -> systemManagedTypesIdsFromImport.contains(t.getType()));
importModel.getEntries().keySet().removeIf(key -> systemManagedTypesIdsFromImport.contains(key)); importModel.getEntries().keySet().removeIf(systemManagedTypesIdsFromImport::contains);
importModel.getFalsePositives().keySet().removeIf(key -> systemManagedTypesIdsFromImport.contains(key)); importModel.getFalsePositives().keySet().removeIf(systemManagedTypesIdsFromImport::contains);
importModel.getFalseRecommendations().keySet().removeIf(key -> systemManagedTypesIdsFromImport.contains(key)); importModel.getFalseRecommendations().keySet().removeIf(systemManagedTypesIdsFromImport::contains);
importModel.getDeletedEntries().keySet().removeIf(key -> systemManagedTypesIdsFromImport.contains(key)); importModel.getDeletedEntries().keySet().removeIf(systemManagedTypesIdsFromImport::contains);
importModel.getDeletedFalsePositives().keySet().removeIf(key -> systemManagedTypesIdsFromImport.contains(key)); importModel.getDeletedFalsePositives().keySet().removeIf(systemManagedTypesIdsFromImport::contains);
importModel.getDeletedFalseRecommendations().keySet().removeIf(key -> systemManagedTypesIdsFromImport.contains(key)); importModel.getDeletedFalseRecommendations().keySet().removeIf(systemManagedTypesIdsFromImport::contains);
} }
return importModel; 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.entity.dossier.DossierTemplateEntity;
import com.iqser.red.service.persistence.management.v1.processor.migration.Migration; 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.DateFormatsPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService;
@ -33,11 +34,13 @@ public class AddDateFormatsToTemplatesMigration25 extends Migration {
DateFormatsPersistenceService dateFormatsPersistenceService; DateFormatsPersistenceService dateFormatsPersistenceService;
@Autowired @Autowired
DossierTemplatePersistenceService dossierTemplatePersistenceService; DossierTemplatePersistenceService dossierTemplatePersistenceService;
@Autowired
DefaultDateFormatsProvider defaultDateFormatsProvider;
@Value("${application.type}") @Value("${application.type}")
private String applicationType; private String applicationType;
public AddDateFormatsToTemplatesMigration25() { public AddDateFormatsToTemplatesMigration25() {
super(NAME, VERSION); super(NAME, VERSION);
@ -48,19 +51,15 @@ public class AddDateFormatsToTemplatesMigration25 extends Migration {
@SneakyThrows @SneakyThrows
protected void migrate() { protected void migrate() {
if(!applicationType.equalsIgnoreCase("DocuMine")){ if (!applicationType.equalsIgnoreCase("DocuMine")) {
log.info("Skipping AddDateFormatsToTemplatesMigration25 as application type is not DocuMine!!!"); log.info("Skipping AddDateFormatsToTemplatesMigration25 as application type is not DocuMine!!!");
return; return;
} }
List<DossierTemplateEntity> allDossierTemplates = dossierTemplatePersistenceService.getAllDossierTemplates(); List<DossierTemplateEntity> allDossierTemplates = dossierTemplatePersistenceService.getAllDossierTemplates();
allDossierTemplates.forEach(dt -> { allDossierTemplates.forEach(dt -> {
Resource resource = new ClassPathResource("files/dateFormats.txt"); try {
dateFormatsPersistenceService.setDateFormats(defaultDateFormatsProvider.getDateFormats(), dt.getId(), -1);
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);
} catch (Exception e) { } catch (Exception e) {
log.info("Could not update dossier template {}, error: {}", dt.getId(), e.getMessage()); 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;
}
}