From 82491e0f6f622caf4ab9b430bb233e03a42ec3e6 Mon Sep 17 00:00:00 2001 From: deiflaender Date: Tue, 24 Jan 2023 08:56:14 +0100 Subject: [PATCH] RED-6063: Added migration to add simplified text file if missing --- .../migrations/SimplifiedTextMigration12.java | 83 +++++++++++++++++++ .../model/simplifiedtext/SectionArea.java | 14 ++++ .../model/simplifiedtext/SectionText.java | 24 ++++++ .../migrations/model/simplifiedtext/Text.java | 20 +++++ 4 files changed, 141 insertions(+) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/SimplifiedTextMigration12.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/model/simplifiedtext/SectionArea.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/model/simplifiedtext/SectionText.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/model/simplifiedtext/Text.java diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/SimplifiedTextMigration12.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/SimplifiedTextMigration12.java new file mode 100644 index 000000000..4c8d0ac1e --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/SimplifiedTextMigration12.java @@ -0,0 +1,83 @@ +package com.iqser.red.service.peristence.v1.server.migration.migrations; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.iqser.red.service.peristence.v1.server.migration.Migration; +import com.iqser.red.service.peristence.v1.server.migration.migrations.model.simplifiedtext.Text; +import com.iqser.red.service.peristence.v1.server.utils.StorageIdUtils; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; +import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist; +import com.iqser.red.storage.commons.service.StorageService; + +import lombok.Setter; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Setter +@Service +public class SimplifiedTextMigration12 extends Migration { + + private static final String NAME = "Add simplified text file if missing"; + private static final long VERSION = 12; + + @Autowired + private DossierPersistenceService dossierPersistenceService; + + @Autowired + private FileStatusPersistenceService fileStatusPersistenceService; + + @Autowired + private StorageService storageService; + + + public SimplifiedTextMigration12() { + + super(NAME, VERSION); + } + + + @Override + protected void migrate() { + + var dossiers = dossierPersistenceService.findAllDossiers(); + dossiers.forEach(dossier -> { + if (dossier.getHardDeletedTime() == null) { + var files = fileStatusPersistenceService.getStatusesForDossier(dossier.getId()); + log.info("Start migration of dossier {}", dossier.getId()); + files.forEach(file -> { + if (file.getHardDeletedTime() == null) { + log.info("Start migration of file {}", file.getId()); + migrateFile(dossier.getId(), file.getId()); + log.info("Finished migration of file {}", file.getId()); + } + }); + log.info("Finished migration of dossier {}", dossier.getId()); + } + }); + } + + + @SneakyThrows + public void migrateFile(String dossierId, String fileId) { + + try { + + if(!storageService.objectExists(StorageIdUtils.getStorageId(dossierId, fileId, FileType.SIMPLIFIED_TEXT))) { + var text = storageService.readJSONObject(StorageIdUtils.getStorageId(dossierId, fileId, FileType.TEXT), Text.class); + storageService.storeJSONObject(StorageIdUtils.getStorageId(dossierId, fileId, FileType.SIMPLIFIED_TEXT), text); + } + } catch (StorageObjectDoesNotExist e) { + log.warn("Text not found for dossier {} and file {}, ignoring....", dossierId, fileId); + } + } + +} + + + + + diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/model/simplifiedtext/SectionArea.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/model/simplifiedtext/SectionArea.java new file mode 100644 index 000000000..ad6a5cf9d --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/model/simplifiedtext/SectionArea.java @@ -0,0 +1,14 @@ +package com.iqser.red.service.peristence.v1.server.migration.migrations.model.simplifiedtext; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class SectionArea { + + private int page; + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/model/simplifiedtext/SectionText.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/model/simplifiedtext/SectionText.java new file mode 100644 index 000000000..f98767f14 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/model/simplifiedtext/SectionText.java @@ -0,0 +1,24 @@ +package com.iqser.red.service.peristence.v1.server.migration.migrations.model.simplifiedtext; + +import java.util.ArrayList; +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SectionText { + + private int sectionNumber; + private String headline; + private String text; + + @Builder.Default + private List sectionAreas = new ArrayList<>(); + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/model/simplifiedtext/Text.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/model/simplifiedtext/Text.java new file mode 100644 index 000000000..965f048bd --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/model/simplifiedtext/Text.java @@ -0,0 +1,20 @@ +package com.iqser.red.service.peristence.v1.server.migration.migrations.model.simplifiedtext; + +import java.util.ArrayList; +import java.util.List; + +import com.dslplatform.json.CompiledJson; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@CompiledJson +@NoArgsConstructor +@AllArgsConstructor +public class Text { + + private List sectionTexts = new ArrayList<>(); + +}