From bf7b23a8932d63be8892fc0a5fddaeaf7bbd7574 Mon Sep 17 00:00:00 2001 From: Andrei Isvoran Date: Wed, 10 Apr 2024 10:02:16 +0300 Subject: [PATCH] RED-8903 - Refactor local add redaction on manual change --- .../controller/ManualRedactionController.java | 32 +++--------- .../ManualRedactionProviderService.java | 4 +- .../ManualRedactionService.java | 52 ++++++++++++++----- ...r.java => ManualRedactionEntryMapper.java} | 2 +- 4 files changed, 47 insertions(+), 43 deletions(-) rename persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/{ManualRedactionMapper.java => ManualRedactionEntryMapper.java} (89%) 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 03f71ed61..3171037e5 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 @@ -21,7 +21,6 @@ import com.iqser.red.service.persistence.management.v1.processor.service.AccessC 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.FileStatusManagementService; -import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.ManualRedactionMapper; import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.ManualRedactionService; import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.ManualRedactionUndoService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; @@ -40,7 +39,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.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.dossiertemplate.dossier.Dossier; 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; import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.ForceRedactionRequestModel; @@ -69,7 +67,6 @@ public class ManualRedactionController implements ManualRedactionResource { DossierManagementService dossierManagementService; AuditPersistenceService auditPersistenceService; AccessControlService accessControlService; - ManualRedactionMapper manualRedactionMapper; CommentService commentService; FileStatusManagementService fileStatusManagementService; @@ -180,9 +177,7 @@ public class ManualRedactionController implements ManualRedactionResource { accessControlService.verifyUserIsMemberOrApprover(dossierId); } - List requests = manualRedactionMapper.toAddRedactionRequestList(dossierId, addRedactionRequests, dossier); - - List responseList = manualRedactionService.addAddRedaction(dossierId, fileId, requests); + List responseList = manualRedactionService.addAddRedaction(dossierId, fileId, addRedactionRequests, dossier); responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) .objectId(fileId) @@ -211,12 +206,7 @@ public class ManualRedactionController implements ManualRedactionResource { accessControlService.verifyUserIsMemberOrApprover(dossierId); } - List requests = manualRedactionMapper.toRemoveRedactionRequestList(dossierId, - fileId, - dossier.getDossierTemplateId(), - removeRedactionRequests, - includeUnprocessed); - List responseList = manualRedactionService.addRemoveRedaction(dossierId, fileId, requests); + List responseList = manualRedactionService.addRemoveRedaction(dossierId, fileId, removeRedactionRequests, dossier.getDossierTemplateId(), includeUnprocessed); responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) @@ -239,8 +229,7 @@ public class ManualRedactionController implements ManualRedactionResource { accessControlService.verifyFileIsNotApproved(dossierId, fileId); accessControlService.verifyUserIsMemberOrApprover(dossierId); - List requests = manualRedactionMapper.toForceRedactionRequestList(dossierId, fileId, forceRedactionRequests); - List responseList = manualRedactionService.addForceRedaction(dossierId, fileId, requests); + List responseList = manualRedactionService.addForceRedaction(dossierId, fileId, forceRedactionRequests); responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) @@ -264,9 +253,7 @@ public class ManualRedactionController implements ManualRedactionResource { accessControlService.verifyFileIsNotApproved(dossierId, fileId); accessControlService.verifyUserIsMemberOrApprover(dossierId); - List requests = manualRedactionMapper.toLegalBasisChangeRequestList(dossierId, fileId, legalBasisChangeRequests); - - List responseList = manualRedactionService.addLegalBasisChange(dossierId, fileId, requests); + List responseList = manualRedactionService.addLegalBasisChange(dossierId, fileId, legalBasisChangeRequests); responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) @@ -291,13 +278,7 @@ public class ManualRedactionController implements ManualRedactionResource { accessControlService.verifyFileIsNotApproved(dossierId, fileId); accessControlService.verifyUserIsMemberOrApprover(dossierId); - List requests = manualRedactionMapper.toRecategorizationRequestList(dossierId, - fileId, - dossier.getDossierTemplateId(), - recategorizationRequests, - includeUnprocessed); - - List responseList = manualRedactionService.addRecategorization(dossierId, fileId, requests); + List responseList = manualRedactionService.addRecategorization(dossierId, fileId, recategorizationRequests, dossier.getDossierTemplateId(), includeUnprocessed); responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) @@ -321,8 +302,7 @@ public class ManualRedactionController implements ManualRedactionResource { accessControlService.verifyFileIsNotApproved(dossierId, fileId); accessControlService.verifyUserIsMemberOrApprover(dossierId); - List requests = manualRedactionMapper.toResizeRedactionRequestList(dossierId, fileId, resizeRedactionRequests, includeUnprocessed); - List responseList = manualRedactionService.addResizeRedaction(dossierId, fileId, requests, includeUnprocessed); + List responseList = manualRedactionService.addResizeRedaction(dossierId, fileId, resizeRedactionRequests, 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/service/manualredactions/ManualRedactionProviderService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionProviderService.java index 0e6edbe61..35732b32a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionProviderService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionProviderService.java @@ -20,7 +20,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.RemoveRedactionPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ResizeRedactionPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.utils.ManualRecategorizationMapper; -import com.iqser.red.service.persistence.management.v1.processor.utils.ManualRedactionMapper; +import com.iqser.red.service.persistence.management.v1.processor.utils.ManualRedactionEntryMapper; import com.iqser.red.service.persistence.management.v1.processor.utils.ManualResizeRedactionMapper; 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.entitymapped.IdRemoval; @@ -74,7 +74,7 @@ public class ManualRedactionProviderService { if (!options.getExcludedClasses().contains(ManualRedactionEntry.class)) { entriesToAdd = new HashSet<>(convert(addRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, options), ManualRedactionEntry.class, - new ManualRedactionMapper())); + new ManualRedactionEntryMapper())); } else { entriesToAdd = Collections.emptySet(); } 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 542d16edf..de90b9f50 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 @@ -33,7 +33,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.RecategorizationPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.RemoveRedactionPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ResizeRedactionPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.utils.ManualRedactionMapper; +import com.iqser.red.service.persistence.management.v1.processor.utils.ManualRedactionEntryMapper; import com.iqser.red.service.persistence.management.v1.processor.utils.ManualResizeRedactionMapper; import com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; @@ -48,7 +48,14 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations 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.ManualRedactionEntry; 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.file.FileModel; +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.LegalBasisChangeRequestModel; +import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.RecategorizationRequestModel; +import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.RemoveRedactionRequestModel; +import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.ResizeRedactionRequestModel; import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import io.micrometer.observation.annotation.Observed; @@ -78,20 +85,22 @@ public class ManualRedactionService { ManualRedactionDictionaryUpdateHandler manualRedactionDictionaryUpdateHandler; EntityLogMergeService entityLogMergeService; FileStatusPersistenceService fileStatusPersistenceService; + ManualRedactionMapper manualRedactionMapper; private static final int MAX_LEGAL_BASIS_LENGTH = 4000; @Transactional @Observed(name = "ManualRedactionService", contextualName = "add-manual-redaction") - public List addAddRedaction(String dossierId, String fileId, List addRedactionRequests) { + public List addAddRedaction(String dossierId, String fileId, Set addRedactionRequests, Dossier dossier) { var response = new ArrayList(); List manualRedactionEntryEntities = new ArrayList<>(); + List requests = manualRedactionMapper.toAddRedactionRequestList(dossierId, addRedactionRequests, dossier); var dossierEntity = dossierPersistenceService.getAndValidateDossier(dossierId); - for (AddRedactionRequest addRedactionRequest : addRedactionRequests) { + for (AddRedactionRequest addRedactionRequest : requests) { manualRedactionDictionaryUpdateHandler.validateDictionariesForAdd(addRedactionRequest, addRedactionRequest.getValue()); validatePositions(fileId, addRedactionRequest); @@ -130,18 +139,24 @@ public class ManualRedactionService { private Set convertEntriesToAdd(List source) { return source.stream() - .map(entry -> convert(entry, ManualRedactionEntry.class, new ManualRedactionMapper())) + .map(entry -> convert(entry, ManualRedactionEntry.class, new ManualRedactionEntryMapper())) .collect(Collectors.toSet()); } @Transactional - public List addRemoveRedaction(String dossierId, String fileId, List removeRedactionRequests) { + public List addRemoveRedaction(String dossierId, String fileId, Set removeRedactionRequests, String dossierTemplateId, + boolean includeUnprocessed) { var response = new ArrayList(); + List requests = manualRedactionMapper.toRemoveRedactionRequestList(dossierId, + fileId, + dossierTemplateId, + removeRedactionRequests, + includeUnprocessed); //validate removing from dossier template dictionary - for (RemoveRedactionRequest removeRedactionRequest : removeRedactionRequests) { + for (RemoveRedactionRequest removeRedactionRequest : requests) { manualRedactionDictionaryUpdateHandler.validateDictionariesForDelete(removeRedactionRequest, removeRedactionRequest.getTypeToRemove(), removeRedactionRequest.getDossierTemplateId()); @@ -172,12 +187,13 @@ public class ManualRedactionService { @Transactional - public List addForceRedaction(String dossierId, String fileId, List forceRedactionRequests) { + public List addForceRedaction(String dossierId, String fileId, Set forceRedactionRequests) { var response = new ArrayList(); dossierPersistenceService.getAndValidateDossier(dossierId); + List requests = manualRedactionMapper.toForceRedactionRequestList(dossierId, fileId, forceRedactionRequests); - for (var forceRedactionRequest : forceRedactionRequests) { + for (var forceRedactionRequest : requests) { forceRedactionPersistenceService.insert(fileId, forceRedactionRequest); Long commentId = commentService.addCommentAndGetId(fileId, @@ -198,12 +214,13 @@ public class ManualRedactionService { @Deprecated(forRemoval = true) @Transactional - public List addLegalBasisChange(String dossierId, String fileId, List legalBasisChangeRequests) { + public List addLegalBasisChange(String dossierId, String fileId, Set legalBasisChangeRequests) { var response = new ArrayList(); dossierPersistenceService.getAndValidateDossier(dossierId); + List requests = manualRedactionMapper.toLegalBasisChangeRequestList(dossierId, fileId, legalBasisChangeRequests); - for (var legalBasisChangeRequest : legalBasisChangeRequests) { + for (var legalBasisChangeRequest : requests) { legalBasisChangePersistenceService.insert(fileId, legalBasisChangeRequest); Long commentId = commentService.addCommentAndGetId(fileId, @@ -221,12 +238,18 @@ public class ManualRedactionService { @Transactional - public List addRecategorization(String dossierId, String fileId, List recategorizationRequests) { + public List addRecategorization(String dossierId, String fileId, Set recategorizationRequests, String dossierTemplateId, + boolean includeUnprocessed) { var response = new ArrayList(); dossierPersistenceService.getAndValidateDossier(dossierId); + List requests = manualRedactionMapper.toRecategorizationRequestList(dossierId, + fileId, + dossierTemplateId, + recategorizationRequests, + includeUnprocessed); - for (var recategorizationRequest : recategorizationRequests) { + for (var recategorizationRequest : requests) { manualRedactionDictionaryUpdateHandler.validateDictionariesForAdd(recategorizationRequest, recategorizationRequest.getValue()); manualRedactionDictionaryUpdateHandler.validateDictionariesForDelete(recategorizationRequest, recategorizationRequest.getTypeToRemove(), @@ -274,13 +297,14 @@ public class ManualRedactionService { @Transactional @Observed(name = "ManualRedactionService", contextualName = "add-manual-redaction") - public List addResizeRedaction(String dossierId, String fileId, List resizeRedactionRequests, boolean includeUnprocessed) { + public List addResizeRedaction(String dossierId, String fileId, Set resizeRedactionRequests, boolean includeUnprocessed) { List response = new ArrayList<>(); List manualResizeRedactionEntities = new ArrayList<>(); EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, includeUnprocessed); + List requests = manualRedactionMapper.toResizeRedactionRequestList(dossierId, fileId, resizeRedactionRequests, includeUnprocessed); - for (ResizeRedactionRequest resizeRedactionRequest : resizeRedactionRequests) { + for (ResizeRedactionRequest resizeRedactionRequest : requests) { var resizeRedaction = resizeRedactionPersistenceService.insert(fileId, resizeRedactionRequest); manualResizeRedactionEntities.add(resizeRedaction); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualRedactionMapper.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualRedactionEntryMapper.java similarity index 89% rename from persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualRedactionMapper.java rename to persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualRedactionEntryMapper.java index 87a22ad80..5c5b341b7 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualRedactionMapper.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualRedactionEntryMapper.java @@ -7,7 +7,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.entitymapped.ManualRedactionEntry; import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; -public class ManualRedactionMapper implements BiConsumer { +public class ManualRedactionEntryMapper implements BiConsumer { @Override public void accept(ManualRedactionEntryEntity manualRedactionEntryEntity, ManualRedactionEntry manualRedactionEntry) {