From 0a7108c152bd4cb357b20550aa4c5db3f349bd52 Mon Sep 17 00:00:00 2001 From: Ali Oezyetimoglu Date: Tue, 16 Apr 2024 16:58:37 +0200 Subject: [PATCH] RED-8480: differenciate between recategorize and legal basis change --- .../controller/ManualRedactionController.java | 60 +++++++++++++++---- .../ManualLegalBasisChangeEntity.java | 1 - .../service/EntityLogMergeService.java | 2 - .../ManualRedactionMapper.java | 1 - .../ManualRedactionService.java | 19 +++++- .../LegalBasisChangePersistenceService.java | 1 - .../LegalBasisChangeRepository.java | 1 - .../tests/ManualRedactionTest.java | 12 ++-- .../annotations/LegalBasisChangeRequest.java | 1 - .../entitymapped/ManualLegalBasisChange.java | 1 - .../manual/LegalBasisChangeRequestModel.java | 1 - 11 files changed, 72 insertions(+), 28 deletions(-) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ManualRedactionController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ManualRedactionController.java index 729a9d5be..d5ebc9a68 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ManualRedactionController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ManualRedactionController.java @@ -6,6 +6,9 @@ import static com.iqser.red.service.persistence.management.v1.processor.roles.Ac import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.DO_MANUAL_REDACTION; import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_MANUAL_REDACTIONS; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -20,6 +23,7 @@ import com.iqser.red.service.persistence.management.v1.processor.model.ManualCha import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService; import com.iqser.red.service.persistence.management.v1.processor.service.CommentService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierManagementService; +import com.iqser.red.service.persistence.management.v1.processor.service.EntityLogService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.ManualRedactionService; import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.ManualRedactionUndoService; @@ -27,17 +31,12 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.service.v1.api.external.resource.ManualRedactionResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.CommentResponse; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.AddRedactionRequest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.AnnotationComments; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.Comment; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.CommentRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ForceRedactionRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.LegalBasisChangeRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualAddResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualRedactions; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.RecategorizationRequest; -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.audit.AuditRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.AddCommentRequestModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.AddRedactionRequestModel; @@ -69,6 +68,7 @@ public class ManualRedactionController implements ManualRedactionResource { AccessControlService accessControlService; CommentService commentService; FileStatusManagementService fileStatusManagementService; + EntityLogService entityLogService; @Override @@ -257,6 +257,12 @@ public class ManualRedactionController implements ManualRedactionResource { accessControlService.verifyFileIsNotApproved(dossierId, fileId); accessControlService.verifyUserIsMemberOrApprover(dossierId); + return handleLegalBasisChanges(dossierId, fileId, legalBasisChangeRequests); + } + + + private List handleLegalBasisChanges(String dossierId, String fileId, Set legalBasisChangeRequests) { + List responseList = manualRedactionService.addLegalBasisChange(dossierId, fileId, legalBasisChangeRequests); responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder() @@ -266,7 +272,6 @@ public class ManualRedactionController implements ManualRedactionResource { .message("Legal basis reason was changed") .details(Map.of(DOSSIER_ID, dossierId, FILE_ID, fileId, ANNOTATION_ID, response.getAnnotationId())) .build())); - return responseList; } @@ -282,11 +287,42 @@ public class ManualRedactionController implements ManualRedactionResource { accessControlService.verifyFileIsNotApproved(dossierId, fileId); accessControlService.verifyUserIsMemberOrApprover(dossierId); - List responseList = manualRedactionService.addRecategorization(dossierId, - fileId, - recategorizationRequests, - dossier.getDossierTemplateId(), - includeUnprocessed); + EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, Collections.emptyList(), includeUnprocessed); + + Set recategorizations = new HashSet<>(); + Set legalBasisChanges = new HashSet<>(); + + recategorizationRequests.forEach(recategorizationRequestModel -> { + var entry = entityLog.getEntityLogEntry() + .stream() + .filter(entityLogEntry -> entityLogEntry.getId().equals(recategorizationRequestModel.getAnnotationId())) + .findFirst(); + if (entry.isPresent()) { + if (manualRedactionService.isLegalBasisChangeRequest(recategorizationRequestModel, entry.get())) { + LegalBasisChangeRequestModel legalBasisChange = manualRedactionService.convertRecategorizationToLegalBasisChange(recategorizationRequestModel); + legalBasisChanges.add(legalBasisChange); + } else { + recategorizations.add(recategorizationRequestModel); + } + } + }); + + List responseList = new ArrayList<>(); + + responseList.addAll(handleLegalBasisChanges(dossierId, fileId, legalBasisChanges)); + responseList.addAll(handleRectegorizations(dossierId, fileId, recategorizations, includeUnprocessed, dossier.getDossierTemplateId())); + + return responseList; + } + + + private List handleRectegorizations(String dossierId, + String fileId, + Set recategorizationRequests, + boolean includeUnprocessed, + String dossierTemplateId) { + + List responseList = manualRedactionService.addRecategorization(dossierId, fileId, recategorizationRequests, dossierTemplateId, includeUnprocessed); responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualLegalBasisChangeEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualLegalBasisChangeEntity.java index 0d2a76e61..fd9a9e2e5 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualLegalBasisChangeEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualLegalBasisChangeEntity.java @@ -14,7 +14,6 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -@Deprecated(forRemoval = true) @Data @Builder @AllArgsConstructor 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 8605daa86..931b33569 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 @@ -357,7 +357,6 @@ public class EntityLogMergeService { } - @Deprecated(forRemoval = true) private void mergeLegalBasisChange(ManualLegalBasisChange manualLegalBasisChange, EntityLogEntry entityLogEntry, int analysisNumber) { @@ -379,7 +378,6 @@ public class EntityLogMergeService { } - @Deprecated(forRemoval = true) private Map getPropertyChanges(ManualLegalBasisChange manualLegalBasisChange) { Map propertyChanges = new HashMap<>(); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionMapper.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionMapper.java index f92f4ef71..9a305008a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionMapper.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionMapper.java @@ -137,7 +137,6 @@ public class ManualRedactionMapper { } - @Deprecated(forRemoval = true) public List toLegalBasisChangeRequestList(String dossierId, String fileId, Set legalBasisChangeRequests, diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionService.java index 66f277089..7cbc2aa62 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionService.java @@ -14,6 +14,7 @@ import java.util.stream.Collectors; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; import com.google.common.hash.HashFunction; import com.google.common.hash.Hashing; @@ -221,7 +222,6 @@ public class ManualRedactionService { } - @Deprecated(forRemoval = true) @Transactional public List addLegalBasisChange(String dossierId, String fileId, Set legalBasisChangeRequests) { @@ -233,6 +233,8 @@ public class ManualRedactionService { getEntityLogEntryConsumer(fileId)); for (var legalBasisChangeRequest : requests) { + checkLegalBasisLength(legalBasisChangeRequest.getLegalBasis()); + legalBasisChangePersistenceService.insert(fileId, legalBasisChangeRequest); Long commentId = commentService.addCommentAndGetId(fileId, @@ -318,8 +320,7 @@ public class ManualRedactionService { List response = new ArrayList<>(); List manualResizeRedactionEntities = new ArrayList<>(); EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, Collections.emptyList(), includeUnprocessed); - List requests = manualRedactionMapper.toResizeRedactionRequestList(resizeRedactionRequests, entityLog, - getEntityLogEntryConsumer(fileId)); + List requests = manualRedactionMapper.toResizeRedactionRequestList(resizeRedactionRequests, entityLog, getEntityLogEntryConsumer(fileId)); for (ResizeRedactionRequest resizeRedactionRequest : requests) { @@ -540,4 +541,16 @@ public class ManualRedactionService { return entry -> addManualRedactionEntry(fileId, entry); } + + public LegalBasisChangeRequestModel convertRecategorizationToLegalBasisChange(RecategorizationRequestModel recategorizationRequestModel) { + + return MagicConverter.convert(recategorizationRequestModel, LegalBasisChangeRequestModel.class); + } + + + public boolean isLegalBasisChangeRequest(RecategorizationRequestModel requestModel, EntityLogEntry entry) { + + return !ObjectUtils.isEmpty(requestModel.getLegalBasis()) && !requestModel.getLegalBasis().equals(entry.getLegalBasis()); + } + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/LegalBasisChangePersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/LegalBasisChangePersistenceService.java index bb8749326..987ca5c7b 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/LegalBasisChangePersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/LegalBasisChangePersistenceService.java @@ -22,7 +22,6 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -@Deprecated(forRemoval = true) @Slf4j @Service @RequiredArgsConstructor diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/LegalBasisChangeRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/LegalBasisChangeRepository.java index 2d8a0017b..c3f45155f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/LegalBasisChangeRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/LegalBasisChangeRepository.java @@ -12,7 +12,6 @@ import org.springframework.data.repository.query.Param; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualLegalBasisChangeEntity; -@Deprecated(forRemoval = true) public interface LegalBasisChangeRepository extends JpaRepository, AnnotationEntityRepository { @Modifying diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java index 7d13e4919..08de10162 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java @@ -35,6 +35,7 @@ import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPers import com.iqser.red.service.persistence.management.v1.processor.service.DictionaryManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.EntityLogService; import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; +import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.ManualRedactionService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.EntryPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.redactionlog.RedactionRequest; @@ -112,6 +113,9 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { @Autowired private FileProcessingClient fileProcessingClient; + @Autowired + private ManualRedactionService manualRedactionService; + @Test public void testRemoveToDossierTemplateWithDossierDictionaryOnlyTrue() { @@ -2098,14 +2102,14 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recatModel), false); var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); - assertEquals(1, allManualRedactions.getRecategorizations().size()); - assertTrue(allManualRedactions.getRecategorizations() + assertEquals(1, allManualRedactions.getLegalBasisChanges().size()); + assertTrue(allManualRedactions.getLegalBasisChanges() .stream() .anyMatch(entry -> entry.getAnnotationId().equals("annotationId"))); - assertTrue(allManualRedactions.getRecategorizations() + assertTrue(allManualRedactions.getLegalBasisChanges() .stream() .anyMatch(entry -> entry.getLegalBasis().equals("lb2"))); - assertTrue(allManualRedactions.getRecategorizations() + assertTrue(allManualRedactions.getLegalBasisChanges() .stream() .anyMatch(entry -> entry.getSection().equals("section"))); } diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/LegalBasisChangeRequest.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/LegalBasisChangeRequest.java index 31be31923..881a9b943 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/LegalBasisChangeRequest.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/LegalBasisChangeRequest.java @@ -5,7 +5,6 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -@Deprecated(forRemoval = true) @Data @Builder @AllArgsConstructor diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualLegalBasisChange.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualLegalBasisChange.java index c06399fef..c04f12e80 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualLegalBasisChange.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualLegalBasisChange.java @@ -6,7 +6,6 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; -@Deprecated(forRemoval = true) @Data @SuperBuilder @NoArgsConstructor diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/LegalBasisChangeRequestModel.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/LegalBasisChangeRequestModel.java index 66c230dd8..5691ee273 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/LegalBasisChangeRequestModel.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/LegalBasisChangeRequestModel.java @@ -6,7 +6,6 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.NonNull; -@Deprecated(forRemoval = true) @Data @Builder @AllArgsConstructor