RED-9865: fix for case 2 #694
@ -3,6 +3,7 @@ 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.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 static com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingQueueNames.LAYOUT_PARSING_REQUEST_QUEUE;
|
||||||
|
|
||||||
|
import java.time.OffsetDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -27,6 +28,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
|
|||||||
import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings;
|
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.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.analysislog.migration.MigratedIds;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualForceRedaction;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry;
|
||||||
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.FileType;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.SaasMigrationStatus;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.SaasMigrationStatus;
|
||||||
@ -182,14 +184,14 @@ public class SaasMigrationService implements TenantSyncService {
|
|||||||
String dossierTemplateId = dossierService.getDossierById(dossierId).getDossierTemplateId();
|
String dossierTemplateId = dossierService.getDossierById(dossierId).getDossierTemplateId();
|
||||||
|
|
||||||
rabbitTemplate.convertAndSend(MIGRATION_QUEUE,
|
rabbitTemplate.convertAndSend(MIGRATION_QUEUE,
|
||||||
MigrationRequest.builder()
|
MigrationRequest.builder()
|
||||||
.dossierTemplateId(dossierTemplateId)
|
.dossierTemplateId(dossierTemplateId)
|
||||||
.dossierId(dossierId)
|
.dossierId(dossierId)
|
||||||
.fileId(fileId)
|
.fileId(fileId)
|
||||||
.fileIsApproved(fileStatusPersistenceService.getStatus(fileId).getWorkflowStatus().equals(WorkflowStatus.APPROVED))
|
.fileIsApproved(fileStatusPersistenceService.getStatus(fileId).getWorkflowStatus().equals(WorkflowStatus.APPROVED))
|
||||||
.manualRedactions(manualRedactionProviderService.getManualRedactions(fileId, ManualChangesQueryOptions.allWithoutDeleted()))
|
.manualRedactions(manualRedactionProviderService.getManualRedactions(fileId, ManualChangesQueryOptions.allWithoutDeleted()))
|
||||||
.entitiesWithComments(commentService.getCommentCounts(fileId).keySet())
|
.entitiesWithComments(commentService.getCommentCounts(fileId).keySet())
|
||||||
.build());
|
.build());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("Queuing of entityLog migration failed with {}", e.getMessage());
|
log.error("Queuing of entityLog migration failed with {}", e.getMessage());
|
||||||
saasMigrationStatusPersistenceService.updateErrorStatus(fileId, String.format("Queuing of entityLog migration failed with %s", e.getMessage()));
|
saasMigrationStatusPersistenceService.updateErrorStatus(fileId, String.format("Queuing of entityLog migration failed with %s", e.getMessage()));
|
||||||
@ -201,9 +203,9 @@ public class SaasMigrationService implements TenantSyncService {
|
|||||||
private boolean layoutParsingFilesExist(String dossierId, String fileId) {
|
private boolean layoutParsingFilesExist(String dossierId, String fileId) {
|
||||||
|
|
||||||
return storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.DOCUMENT_STRUCTURE)) //
|
return storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.DOCUMENT_STRUCTURE)) //
|
||||||
&& storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.DOCUMENT_TEXT)) //
|
&& storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.DOCUMENT_TEXT)) //
|
||||||
&& storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.DOCUMENT_PAGES)) //
|
&& storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.DOCUMENT_PAGES)) //
|
||||||
&& storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.DOCUMENT_POSITION));
|
&& storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.DOCUMENT_POSITION));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -242,6 +244,7 @@ public class SaasMigrationService implements TenantSyncService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void requeueErrorFiles() {
|
public void requeueErrorFiles() {
|
||||||
|
|
||||||
automaticAnalysisJob.stopForTenant(TenantContext.getTenantId());
|
automaticAnalysisJob.stopForTenant(TenantContext.getTenantId());
|
||||||
@ -250,11 +253,15 @@ public class SaasMigrationService implements TenantSyncService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void migrateAnnotationIdsAndAddManualAddRedactionsAndDeleteSectionGrid(String dossierId, String fileId) {
|
private void migrateAnnotationIdsAndAddManualAddRedactionsAndDeleteSectionGrid(String dossierId, String fileId) {
|
||||||
|
|
||||||
MigratedIds migratedIds = getMigratedIds(dossierId, fileId);
|
MigratedIds migratedIds = getMigratedIds(dossierId, fileId);
|
||||||
Map<String, String> oldToNewMapping = migratedIds.buildOldToNewMapping();
|
Map<String, String> oldToNewMapping = migratedIds.buildOldToNewMapping();
|
||||||
updateAnnotationIds(dossierId, fileId, oldToNewMapping);
|
updateAnnotationIds(dossierId, fileId, oldToNewMapping);
|
||||||
|
List<String> forceRedactionIdsToDelete = migratedIds.getForceRedactionIdsToDelete();
|
||||||
|
softDeleteForceRedactions(fileId, forceRedactionIdsToDelete);
|
||||||
|
log.info("Soft-deleted force redactions.");
|
||||||
List<ManualRedactionEntry> manualRedactionEntriesToAdd = migratedIds.getManualRedactionEntriesToAdd();
|
List<ManualRedactionEntry> manualRedactionEntriesToAdd = migratedIds.getManualRedactionEntriesToAdd();
|
||||||
int count = addManualRedactionEntries(manualRedactionEntriesToAdd);
|
int count = addManualRedactionEntries(manualRedactionEntriesToAdd);
|
||||||
log.info("Added {} additional manual entries.", count);
|
log.info("Added {} additional manual entries.", count);
|
||||||
@ -282,6 +289,12 @@ public class SaasMigrationService implements TenantSyncService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void softDeleteForceRedactions(String fileId, List<String> forceRedactionIdsToDelete) {
|
||||||
|
|
||||||
|
manualRedactionService.softDeleteForceRedactions(fileId, forceRedactionIdsToDelete);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private int addManualRedactionEntries(List<ManualRedactionEntry> manualRedactionEntriesToAdd) {
|
private int addManualRedactionEntries(List<ManualRedactionEntry> manualRedactionEntriesToAdd) {
|
||||||
|
|
||||||
manualRedactionEntriesToAdd.forEach(add -> {
|
manualRedactionEntriesToAdd.forEach(add -> {
|
||||||
@ -301,10 +314,18 @@ public class SaasMigrationService implements TenantSyncService {
|
|||||||
Map<String, String> newToOldMapping = migratedIds.buildNewToOldMapping();
|
Map<String, String> newToOldMapping = migratedIds.buildNewToOldMapping();
|
||||||
updateAnnotationIds(dossierId, fileId, newToOldMapping);
|
updateAnnotationIds(dossierId, fileId, newToOldMapping);
|
||||||
deleteManualRedactionEntries(migratedIds.getManualRedactionEntriesToAdd());
|
deleteManualRedactionEntries(migratedIds.getManualRedactionEntriesToAdd());
|
||||||
|
undeleteForceRedactions(fileId, migratedIds.getForceRedactionIdsToDelete());
|
||||||
saasMigrationStatusPersistenceService.createMigrationRequiredStatus(dossierId, fileId);
|
saasMigrationStatusPersistenceService.createMigrationRequiredStatus(dossierId, fileId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void undeleteForceRedactions(String fileId, List<String> forceRedactionIdsToDelete) {
|
||||||
|
|
||||||
|
manualRedactionService.undeleteForceRedactions(fileId, forceRedactionIdsToDelete);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void deleteManualRedactionEntries(List<ManualRedactionEntry> manualRedactionEntriesToAdd) {
|
private void deleteManualRedactionEntries(List<ManualRedactionEntry> manualRedactionEntriesToAdd) {
|
||||||
|
|
||||||
manualRedactionService.deleteManualRedactionEntries(manualRedactionEntriesToAdd);
|
manualRedactionService.deleteManualRedactionEntries(manualRedactionEntriesToAdd);
|
||||||
@ -317,10 +338,10 @@ public class SaasMigrationService implements TenantSyncService {
|
|||||||
updateAnnotationIds(fileId, idMapping);
|
updateAnnotationIds(fileId, idMapping);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
String message = String.format("Error during annotation id migration for tenant %s dossier %s and file %s, cause %s",
|
String message = String.format("Error during annotation id migration for tenant %s dossier %s and file %s, cause %s",
|
||||||
TenantContext.getTenantId(),
|
TenantContext.getTenantId(),
|
||||||
dossierId,
|
dossierId,
|
||||||
fileId,
|
fileId,
|
||||||
e.getMessage());
|
e.getMessage());
|
||||||
saasMigrationStatusPersistenceService.updateErrorStatus(fileId, message);
|
saasMigrationStatusPersistenceService.updateErrorStatus(fileId, message);
|
||||||
log.error(message);
|
log.error(message);
|
||||||
throw e;
|
throw e;
|
||||||
|
|||||||
@ -63,6 +63,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations
|
|||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.Rectangle;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.Rectangle;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.RemoveRedactionRequest;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.RemoveRedactionRequest;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ResizeRedactionRequest;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ResizeRedactionRequest;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.BaseAnnotation;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.IdRemoval;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.IdRemoval;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualForceRedaction;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualForceRedaction;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualLegalBasisChange;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualLegalBasisChange;
|
||||||
@ -71,7 +72,6 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations
|
|||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualResizeRedaction;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualResizeRedaction;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType;
|
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.AddRedactionRequestModel;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.AddRedactionRequestModel;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.ForceRedactionRequestModel;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.ForceRedactionRequestModel;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.LegalBasisChangeRequestModel;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.LegalBasisChangeRequestModel;
|
||||||
@ -223,7 +223,6 @@ public class ManualRedactionService {
|
|||||||
removeRedactionRequest.getDossierTemplateId());
|
removeRedactionRequest.getDossierTemplateId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
log.info("add removeRedaction for file {} and annotation {}", fileId, removeRedactionRequest.getAnnotationId());
|
log.info("add removeRedaction for file {} and annotation {}", fileId, removeRedactionRequest.getAnnotationId());
|
||||||
IdRemovalEntity idRemoval = removeRedactionPersistenceService.insert(fileId, removeRedactionRequest);
|
IdRemovalEntity idRemoval = removeRedactionPersistenceService.insert(fileId, removeRedactionRequest);
|
||||||
|
|
||||||
@ -600,6 +599,19 @@ public class ManualRedactionService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void softDeleteForceRedactions(String fileId, List<String> ids) {
|
||||||
|
|
||||||
|
OffsetDateTime now = OffsetDateTime.now();
|
||||||
|
ids.forEach(id -> forceRedactionPersistenceService.softDelete(fileId, id, now));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void undeleteForceRedactions(String fileId, List<String> ids) {
|
||||||
|
|
||||||
|
ids.forEach(id -> forceRedactionPersistenceService.undelete(fileId, id));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void addManualRedactionEntry(String fileId, EntityLogEntry entityLogEntry) {
|
private void addManualRedactionEntry(String fileId, EntityLogEntry entityLogEntry) {
|
||||||
|
|
||||||
ManualRedactionEntry manualRedactionEntry = ManualRedactionEntry.builder()
|
ManualRedactionEntry manualRedactionEntry = ManualRedactionEntry.builder()
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualForceRedaction;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@ -21,6 +22,8 @@ public class MigratedIds {
|
|||||||
|
|
||||||
List<ManualRedactionEntry> manualRedactionEntriesToAdd;
|
List<ManualRedactionEntry> manualRedactionEntriesToAdd;
|
||||||
|
|
||||||
|
List<String> forceRedactionIdsToDelete;
|
||||||
|
|
||||||
|
|
||||||
public Map<String, String> buildOldToNewMapping() {
|
public Map<String, String> buildOldToNewMapping() {
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user