From 634c1c98dc3d93f2241b89ae425818fcd30f22a1 Mon Sep 17 00:00:00 2001 From: Christoph Schabert Date: Fri, 29 Apr 2022 10:17:12 +0200 Subject: [PATCH] hotfix: migration to skip missing redaction logs (e.g. for deleted files w/o redaction log) --- .../DictionaryToEntityMigration2.java | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/DictionaryToEntityMigration2.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/DictionaryToEntityMigration2.java index 1696b2998..93b8ecf16 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/DictionaryToEntityMigration2.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/migrations/DictionaryToEntityMigration2.java @@ -9,6 +9,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.peristence.v1.server.migration.Migration; import com.iqser.red.service.peristence.v1.server.service.FileManagementStorageService; +import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; 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; @@ -48,7 +49,6 @@ public class DictionaryToEntityMigration2 extends Migration { @Override protected void migrate() { - var dossiers = dossierPersistenceService.findAllDossiers(); dossiers.forEach(dossier -> { var files = fileStatusPersistenceService.getStatusesForDossier(dossier.getId()); @@ -57,32 +57,33 @@ public class DictionaryToEntityMigration2 extends Migration { log.info("Start migration of file {}", file.getId()); if (file.getHardDeletedTime() == null) { var newRedactionLogEntries = new ArrayList(); - var redactionLog = fileManagementStorageService.getRedactionLog(dossier.getId(), file.getId()); - - redactionLog.getRedactionLogEntry().forEach(entry -> { - - if (entry.getType().equals("false_positive")){ - log.info("skipping false_positive for dossier {} and file {}", dossier.getId(), file.getId()); - return; - } - - if (entry.getType().startsWith("recommendation_")) { - entry.setType(entry.getType().substring(15)); - entry.setRecommendation(true); - log.info("removed _recommendation"); - } - - newRedactionLogEntries.add(entry); - }); - - redactionLog.setRedactionLogEntry(newRedactionLogEntries); try { + var redactionLog = fileManagementStorageService.getRedactionLog(dossier.getId(), file.getId()); + redactionLog.getRedactionLogEntry().forEach(entry -> { + + if (entry.getType().equals("false_positive")) { + log.info("skipping false_positive for dossier {} and file {}", dossier.getId(), file.getId()); + return; + } + + if (entry.getType().startsWith("recommendation_")) { + entry.setType(entry.getType().substring(15)); + entry.setRecommendation(true); + log.info("removed _recommendation"); + } + + newRedactionLogEntries.add(entry); + }); + + redactionLog.setRedactionLogEntry(newRedactionLogEntries); fileManagementStorageService.storeObject(dossier.getId(), file.getId(), FileType.REDACTION_LOG, objectMapper.writeValueAsBytes(redactionLog)); log.info("Stored dossierId: {} and fileId: {}", dossier.getId(), file.getId()); } catch (JsonProcessingException e) { throw new RuntimeException("Migration failed"); + } catch (NotFoundException e) { + log.info("redactionLog {} does not exsist", file.getId()); + return; } - } }); });