From c424a740052491e477f0dd9840a92cdc2da19ea3 Mon Sep 17 00:00:00 2001 From: Ali Oezyetimoglu Date: Fri, 23 Feb 2024 20:27:58 +0100 Subject: [PATCH] RED-8561: added to migration job to create entities for dossier dictionaries --- .../migration/SaasMigrationService.java | 58 +++++++++++++++---- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java index 2f2535827..7fb105021 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java @@ -1,5 +1,16 @@ package com.iqser.red.service.persistence.management.v1.processor.migration; +import static com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration.MIGRATION_QUEUE; +import static com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingQueueNames.LAYOUT_PARSING_REQUEST_QUEUE; + +import java.util.Map; +import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.stereotype.Service; + import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.migration.SaasMigrationStatusEntity; @@ -10,11 +21,14 @@ import com.iqser.red.service.persistence.management.v1.processor.service.Indexin import com.iqser.red.service.persistence.management.v1.processor.service.job.AutomaticAnalysisJob; import com.iqser.red.service.persistence.management.v1.processor.service.layoutparsing.LayoutParsingRequestFactory; import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.ManualRedactionProviderService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.SaasMigrationStatusPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings; import com.iqser.red.service.persistence.management.v1.processor.utils.StorageIdUtils; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.migration.MigratedIds; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.SaasMigrationStatus; import com.iqser.red.service.redaction.v1.model.MigrationRequest; @@ -32,17 +46,6 @@ import lombok.RequiredArgsConstructor; import lombok.experimental.FieldDefaults; import lombok.extern.slf4j.Slf4j; -import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.stereotype.Service; - -import java.util.Map; -import java.util.Set; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.stream.Collectors; - -import static com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration.MIGRATION_QUEUE; -import static com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingQueueNames.LAYOUT_PARSING_REQUEST_QUEUE; - @Slf4j @Service @RequiredArgsConstructor @@ -62,6 +65,8 @@ public class SaasMigrationService implements TenantSyncService { StorageService storageService; SaasAnnotationIdMigrationService saasAnnotationIdMigrationService; UncompressedFilesMigrationService uncompressedFilesMigrationService; + DictionaryPersistenceService dictionaryPersistenceService; + DossierTemplatePersistenceService dossierTemplatePersistenceService; @Override @@ -78,6 +83,8 @@ public class SaasMigrationService implements TenantSyncService { // TODO migrate rules. automaticAnalysisJob.stopForTenant(tenantId); + //TODO call intern class to create dossier_redaction entity + log.info("Starting uncompressed files migration ..."); uncompressedFilesMigrationService.migrateUncompressedFiles(tenantId); log.info("Finished uncompressed files migration ..."); @@ -88,6 +95,7 @@ public class SaasMigrationService implements TenantSyncService { .filter(dossier -> dossier.getHardDeletedTime() == null) .toList(); for (var dossier : dossiers) { + createDossierDictionaryAsEntity(dossier.getId()); var files = fileStatusPersistenceService.getStatusesForDossier(dossier.getId()) .stream() .filter(file -> file.getHardDeletedTime() == null) @@ -117,6 +125,34 @@ public class SaasMigrationService implements TenantSyncService { } + private void createDossierDictionaryAsEntity(String dossierId) { + + var typeEntities = dictionaryPersistenceService.getAllTypesForDossier(dossierId, false); + typeEntities.forEach(typeEntity -> { + if (typeEntity.isDossierDictionaryOnly()) { + var dossierTemplateOfTypeEntity = typeEntity.getDossierTemplate(); + var dossierOfTypeEntity = typeEntity.getDossier(); + var result = dossierTemplatePersistenceService.createOrUpdateDossierTemplate(CreateOrUpdateDossierTemplateRequest.builder() + .dossierTemplateId(typeEntity.getDossierTemplateId()) + .name(typeEntity.getLabel()) + .description(typeEntity.getDescription()) + .validFrom(dossierTemplateOfTypeEntity.getValidFrom()) + .validTo(dossierTemplateOfTypeEntity.getValidTo()) + .requestingUser(dossierOfTypeEntity.getOwnerId()) + .downloadFileTypes(dossierTemplateOfTypeEntity.getDownloadFileTypes()) + .keepImageMetadata(dossierTemplateOfTypeEntity.isKeepImageMetadata()) + .keepHiddenText(dossierTemplateOfTypeEntity.isKeepHiddenText()) + .keepOverlappingObjects(dossierTemplateOfTypeEntity.isKeepOverlappingObjects()) + .applyDictionaryUpdatesToAllDossiersByDefault(dossierTemplateOfTypeEntity.isApplyDictionaryUpdatesToAllDossiersByDefault()) + .ocrByDefault(dossierTemplateOfTypeEntity.isOcrByDefault()) + .removeWatermark(dossierTemplateOfTypeEntity.isRemoveWatermark()) + .build()); + log.info("Created dossier dictionary {} for dossier {}.", result.getName(), dossierId); + } + }); + } + + private boolean notExistsOrError(FileEntity file, Map migrationStati) { return migrationStati.getOrDefault(file.getId(), SaasMigrationStatus.ERROR).equals(SaasMigrationStatus.ERROR); -- 2.47.2