diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierTemplateImportService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierTemplateImportService.java index dc0565e44..4985fb7a3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierTemplateImportService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierTemplateImportService.java @@ -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 dateFormatPatternErrorMessages = dateFormatsValidationService.validateDateFormats(request.getDateFormats()); + String dateFormats = request.getDateFormats(); + if (dateFormats == null && applicationType.equals("DocuMine")) { + dateFormats = defaultDateFormatsProvider.getDateFormats(); + } + if (dateFormats != null) { + List 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; } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/AddDateFormatsToTemplatesMigration25.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/AddDateFormatsToTemplatesMigration25.java index 717ad3020..e64576207 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/AddDateFormatsToTemplatesMigration25.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/AddDateFormatsToTemplatesMigration25.java @@ -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 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()); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DefaultDateFormatsProvider.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DefaultDateFormatsProvider.java new file mode 100644 index 000000000..76c0a2ac7 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DefaultDateFormatsProvider.java @@ -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; + } + +} +