diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogMergeService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogMergeService.java index 39e0ad9cd..04cc7a892 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogMergeService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogMergeService.java @@ -387,19 +387,22 @@ public class EntityLogMergeService { public void mergeIdToRemove(IdRemoval idRemoval, EntityLogEntry entityLogEntry, int analysisNumber) { List changes = new ArrayList<>(); - changes.add(ChangeFactory.toChange(ChangeType.REMOVED, - OffsetDateTime.now(), - analysisNumber, - PropertyChange.builder().property("state").oldValue(entityLogEntry.getState().name()).newValue(EntryState.IGNORED.name()).build())); - addChanges(entityLogEntry, changes); + Change change = ChangeFactory.toChange(ChangeType.IGNORED, + OffsetDateTime.now(), + analysisNumber, + PropertyChange.builder().property("state").oldValue(entityLogEntry.getState().name()).newValue(EntryState.IGNORED.name()).build()); entityLogEntry.setState(EntryState.IGNORED); //special case, only for add local and remove only if (!entityLogEntry.getEngines().isEmpty() && Set.of(Engine.MANUAL).containsAll(entityLogEntry.getEngines())) { entityLogEntry.setState(EntryState.REMOVED); + change.setType(ChangeType.REMOVED); } entityLogEntry.getEngines().add(Engine.MANUAL); entityLogEntry.getManualChanges().add(ManualChangeFactory.toLocalManualChange(idRemoval, 0)); + + changes.add(change); + addChanges(entityLogEntry, changes); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java index 1cba06dbf..890c6d201 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java @@ -172,7 +172,7 @@ public class EntityLogMergeTest { assertEquals(removeEntryLogEntry.getManualChanges() .get(0).getManualRedactionType(), ManualRedactionType.REMOVE); assertEquals(removeEntryLogEntry.getChanges() - .get(0).getType(), ChangeType.REMOVED); + .get(0).getType(), ChangeType.IGNORED); assertTrue(removeEntryLogEntry.getEngines().contains(Engine.MANUAL)); var optionalResizeEntryLogEntry = response.getEntityLogEntry() @@ -672,6 +672,63 @@ public class EntityLogMergeTest { } + @Test + public void testIgnoreType() { + + String dossierId = "dossierId"; + String dossierTemplateId = "dossierTemplateId"; + + String entryId = UUID.randomUUID().toString(); + + ManualRedactions manualRedactions = ManualRedactions.builder() + .idsToRemove(Set.of(IdRemoval.builder() + .annotationId(entryId) + .fileId("file") + .requestDate(OffsetDateTime.now()) + .user("user") + .build())) + .build(); + + var entityLog = new EntityLog(1, + 1, + Lists.newArrayList(EntityLogEntry.builder() + .id(entryId) + .type("CBI_author") + .value("value") + .entryType(EntryType.ENTITY) + .state(EntryState.APPLIED) + .dictionaryEntry(true) + .positions(List.of(new Position(1, 1, 1, 1, 1))) + .build()), + Collections.emptyList(), + 0, + 0, + 0, + 0); + + when(manualRedactionProviderService.getManualRedactions(any(), any())).thenReturn(manualRedactions); + when(fileStatusService.getStatus(FILE_ID)).thenReturn(FileModel.builder().excluded(false).dossierStatusId(dossierTemplateId).id(FILE_ID).build()); + when(fileManagementStorageService.getEntityLog(dossierId, FILE_ID)).thenReturn(entityLog); + when(dossierService.getDossierById(dossierId)).thenReturn(DossierEntity.builder().dossierTemplateId(dossierTemplateId).build()); + when(dictionaryPersistenceService.getType(anyString())).thenReturn(TypeEntity.builder().isHint(false).build()); + when(fileStatusPersistenceService.getStatus(FILE_ID)).thenReturn(FileEntity.builder().id(FILE_ID).fileAttributes(Collections.emptyList()).build()); + when(fileStatusService.convertAttributes(any(), anyString())).thenReturn(Collections.emptyList()); + + EntityLog response = entityLogMergeService.mergeEntityLog(manualRedactions, entityLog, DossierEntity.builder().dossierTemplateId(dossierTemplateId).build()); + + assertNotNull(response); + assertFalse(response.getEntityLogEntry().isEmpty()); + + var optionalEntityLogEntry = response.getEntityLogEntry() + .stream() + .filter(entityLogEntry -> entityLogEntry.getId().equals(entryId)) + .findFirst(); + assertTrue(optionalEntityLogEntry.isPresent()); + assertEquals(optionalEntityLogEntry.get().getChanges().size(), 1); + assertEquals(optionalEntityLogEntry.get().getChanges().get(0).getType(), ChangeType.IGNORED); + } + + private EntityLog provideEntityLog(String entryToRemoveId, String entryToResizeId, String entryLegalBasisId,