diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationService.java index 4325c2d51..f99e23cc0 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationService.java @@ -15,10 +15,6 @@ import java.util.Set; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.ApplicationContext; -import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -50,7 +46,6 @@ import com.iqser.red.service.peristence.v1.server.migration.model.NewIdForDossie import com.iqser.red.service.peristence.v1.server.migration.model.VersionRow; import com.iqser.red.service.peristence.v1.server.migration.model.VersionType; import com.iqser.red.service.peristence.v1.server.service.FileManagementStorageService; -import com.iqser.red.service.peristence.v1.server.settings.FileManagementServiceSettings; import com.iqser.red.service.peristence.v1.server.utils.StorageIdUtils; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.CommentEntity; @@ -162,20 +157,6 @@ public class MigrationService { private final StorageService storageService; - private final FileManagementServiceSettings settings; - private final ApplicationContext ctx; - - - @Transactional - @EventListener(ApplicationReadyEvent.class) - public void runMigration() { - - if (settings.isMigrateOnly()) { - migrate(); - System.exit(SpringApplication.exit(ctx, () -> 0)); - } - } - @SneakyThrows @Transactional @@ -198,9 +179,9 @@ public class MigrationService { dossierTemplates.forEach(dossierTemplate -> { migrateDossierTemplate(dossierTemplate); log.info("Migrated dossierTemplates"); - dossierAttributesOldIdToNewId.putAll(migrateDossierAttributeConfiguration(dossierTemplate.getDossierTemplateId(), configurationRows)); + addValues(dossierAttributesOldIdToNewId,migrateDossierAttributeConfiguration(dossierTemplate.getDossierTemplateId(), configurationRows)); log.info("Migrated dossier attributes config"); - fileAttributesOldIdToNewId.putAll(migrateFileAttributeConfiguration(dossierTemplate.getDossierTemplateId(), configurationRows)); + addValues(fileAttributesOldIdToNewId, migrateFileAttributeConfiguration(dossierTemplate.getDossierTemplateId(), configurationRows)); log.info("Migrated file attributes config"); migrateLegalBasis(dossierTemplate.getDossierTemplateId(), configurationRows, versions); log.info("Migrated legal basis"); @@ -257,6 +238,13 @@ public class MigrationService { } + private void addValues(Map> existing, Map> newValues){ + newValues.entrySet().forEach(entry -> { + existing.computeIfAbsent(entry.getKey(), x -> new ArrayList<>()).addAll(entry.getValue()); + }); + } + + private void migrateRedactionLogs() { List files = fileRepository.findAll(); @@ -721,7 +709,7 @@ public class MigrationService { .hardDeletedTime(oldDossier.getHardDeletedTime()) .dueDate(oldDossier.getDueDate()) .dossierTemplate(dossierTemplateRepository.getOne(oldDossier.getDossierTemplateId())) -// .dossierTemplateId(oldDossier.getDossierTemplateId()) + .dossierTemplateId(oldDossier.getDossierTemplateId()) .reportTemplates(reportTemplates) .build(); @@ -868,7 +856,7 @@ public class MigrationService { .analysisVersion(oldFile.getAnalysisVersion()) .excludedPages(oldFile.getExcludedPages()) .dossier(dossierEntity) -// .dossierId(oldFile.getDossierId()) + .dossierId(oldFile.getDossierId()) .build(); List convertedFileAttributes = new ArrayList<>(); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationStarterService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationStarterService.java new file mode 100644 index 000000000..5348ebc52 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationStarterService.java @@ -0,0 +1,35 @@ +package com.iqser.red.service.peristence.v1.server.migration; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.ApplicationContext; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; + +import com.iqser.red.service.peristence.v1.server.settings.FileManagementServiceSettings; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +@RequiredArgsConstructor +public class MigrationStarterService { + + // This is a seperate class because exit 0 causes rollback if the method is @Transactional. + + private final MigrationService migrationService; + private final FileManagementServiceSettings settings; + private final ApplicationContext ctx; + + + @EventListener(ApplicationReadyEvent.class) + public void runMigration() { + + if (settings.isMigrateOnly()) { + migrationService.migrate(); + System.exit(SpringApplication.exit(ctx, () -> 0)); + } + } + +}