From 52bd1dea3c2bddc3e9f453ac05326de85dc31e6c Mon Sep 17 00:00:00 2001 From: Maverick Studer Date: Tue, 3 Sep 2024 15:49:16 +0200 Subject: [PATCH] RED-9947: case sensitivity can now be set as param --- .../controller/ManualRedactionController.java | 6 +++- .../processor/service/FileStatusService.java | 1 + .../tests/EntityLogMongoServiceTest.java | 5 ++++ .../v1/api/shared/model/BulkLocalRequest.java | 3 ++ .../AddRedactionBulkLocalRequestModel.java | 4 ++- .../ForceRedactionBulkLocalRequestModel.java | 29 ------------------- ...RecategorizationBulkLocalRequestModel.java | 3 ++ .../RemoveRedactionBulkLocalRequestModel.java | 3 ++ ...ntityLogEntryDocumentCustomRepository.java | 2 +- ...yLogEntryDocumentCustomRepositoryImpl.java | 13 +++++++-- .../mongo/service/EntityLogMongoService.java | 4 +-- 11 files changed, 37 insertions(+), 36 deletions(-) delete mode 100644 persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/ForceRedactionBulkLocalRequestModel.java 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 f2dbc3a46..348ab2510 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 @@ -28,6 +28,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.manualr import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.PendingEntryFactory; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils; 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; @@ -197,7 +198,8 @@ public class ManualRedactionController implements ManualRedactionResource { verifyAccess(dossierId, fileId); // check if type exists before sending the request to redaction service - dictionaryPersistenceService.getType(addRedactionRequest.getType()); + var dossier = dossierManagementService.getDossierById(dossierId, false, false); + dictionaryPersistenceService.getType(TypeIdUtils.toTypeId(addRedactionRequest.getType(), dossier.getDossierTemplateId())); fileStatusService.setStatusBulkLocalRedactionsProcessing(dossierId, fileId, addRedactionRequest); @@ -254,6 +256,7 @@ public class ManualRedactionController implements ManualRedactionResource { Set entryIds; if (!removeRedactionRequest.isRectangle()) { entryIds = entityLogMongoService.findEntryIdsByValueAndEngineManualWithFilters(removeRedactionRequest.getValue(), + removeRedactionRequest.isCaseSensitive(), removeRedactionRequest.getOriginTypes(), removeRedactionRequest.getOriginLegalBases(), removeRedactionRequest.getPageNumbers()); @@ -347,6 +350,7 @@ public class ManualRedactionController implements ManualRedactionResource { Set entryIds; if (!recategorizationRequest.isRectangle()) { entryIds = entityLogMongoService.findEntryIdsByValueAndEngineManualWithFilters(recategorizationRequest.getValue(), + recategorizationRequest.isCaseSensitive(), recategorizationRequest.getOriginTypes(), recategorizationRequest.getOriginLegalBases(), recategorizationRequest.getPageNumbers()); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java index 067bb5838..96fbf302a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java @@ -1024,6 +1024,7 @@ public class FileStatusService { fileStatusPersistenceService.updateProcessingStatus(fileId, ProcessingStatus.BULK_LOCAL_REDACTIONS_PROCESSING); BulkLocalRequest bulkLocalRequest = BulkLocalRequest.builder() .searchTerm(addRedactionBulkLocalRequestModel.getValue()) + .caseSensitive(addRedactionBulkLocalRequestModel.isCaseSensitive()) .type(addRedactionBulkLocalRequestModel.getType()) .reason(addRedactionBulkLocalRequestModel.getReason()) .legalBasis(addRedactionBulkLocalRequestModel.getLegalBasis()) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMongoServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMongoServiceTest.java index 4ed33a278..61b80ddc9 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMongoServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMongoServiceTest.java @@ -358,6 +358,7 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT assertEquals(akessonSetFilterQuery.size(), 3); Set akessonSetFilterQueryByPositions = entityLogMongoService.findEntryIdsByValueAndEngineManualWithFilters(akessonValue, + false, Collections.emptySet(), Collections.emptySet(), Collections.emptySet()); @@ -370,6 +371,7 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT assertEquals(akessonSetFilterQuery.size(), 2); akessonSetFilterQueryByPositions = entityLogMongoService.findEntryIdsByValueAndEngineManualWithFilters(akessonValue, + false, Collections.emptySet(), Collections.emptySet(), Set.of(1, 3)); @@ -377,18 +379,21 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT String baldridgeValue = "Baldridge"; Set baldridgeSet = entityLogMongoService.findEntryIdsByValueAndEngineManualWithFilters(baldridgeValue, + false, Collections.emptySet(), Collections.emptySet(), Collections.emptySet()); assertEquals(baldridgeSet.size(), 4); Set baldridgeSetWithTypeFilter = entityLogMongoService.findEntryIdsByValueAndEngineManualWithFilters(baldridgeValue, + false, Set.of("CBI_author", "Test"), Collections.emptySet(), Collections.emptySet()); assertEquals(baldridgeSetWithTypeFilter.size(), 2); Set baldridgeSetWithLegalBasesFilter = entityLogMongoService.findEntryIdsByValueAndEngineManualWithFilters(baldridgeValue, + false, Set.of("CBI_author", "Test"), Set.of("Test"), Collections.emptySet()); diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/BulkLocalRequest.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/BulkLocalRequest.java index 11e25954f..6f88f645c 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/BulkLocalRequest.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/BulkLocalRequest.java @@ -18,6 +18,9 @@ public class BulkLocalRequest { @NonNull private String searchTerm; + @Builder.Default + private boolean caseSensitive = true; + @NonNull private String type; 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/AddRedactionBulkLocalRequestModel.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/AddRedactionBulkLocalRequestModel.java index 53ba4d382..eed6578e3 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/AddRedactionBulkLocalRequestModel.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/AddRedactionBulkLocalRequestModel.java @@ -6,7 +6,6 @@ import java.util.List; import java.util.Set; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.Rectangle; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType; import lombok.AllArgsConstructor; import lombok.Builder; @@ -26,6 +25,9 @@ public class AddRedactionBulkLocalRequestModel { @NonNull private String value; + @Builder.Default + private boolean caseSensitive = true; + @NonNull private String reason; 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/ForceRedactionBulkLocalRequestModel.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/ForceRedactionBulkLocalRequestModel.java deleted file mode 100644 index 75ab18fd8..000000000 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/ForceRedactionBulkLocalRequestModel.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.iqser.red.service.persistence.service.v1.api.shared.model.manual; - -import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Position; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.NonNull; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class ForceRedactionBulkLocalRequestModel { - - @NonNull - private String annotationId; - - @NonNull - private String value; - - private String legalBasis; - - private boolean rectangle; - - private Position position; - -} 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/RecategorizationBulkLocalRequestModel.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/RecategorizationBulkLocalRequestModel.java index c9d69f242..b3b44fb06 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/RecategorizationBulkLocalRequestModel.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/RecategorizationBulkLocalRequestModel.java @@ -19,6 +19,9 @@ public class RecategorizationBulkLocalRequestModel { private String value; + @Builder.Default + private boolean caseSensitive = true; + private String type; private String legalBasis; private String 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/manual/RemoveRedactionBulkLocalRequestModel.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/RemoveRedactionBulkLocalRequestModel.java index 28da12ac0..65caf655d 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/RemoveRedactionBulkLocalRequestModel.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/RemoveRedactionBulkLocalRequestModel.java @@ -19,6 +19,9 @@ public class RemoveRedactionBulkLocalRequestModel { private String value; + @Builder.Default + private boolean caseSensitive = true; + private boolean rectangle; private Position position; diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentCustomRepository.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentCustomRepository.java index 2bca322ee..1b9f4214c 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentCustomRepository.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentCustomRepository.java @@ -5,7 +5,7 @@ import java.util.Set; public interface EntityLogEntryDocumentCustomRepository { - List findEntryIdsByValueAndEngineManualWithFilters(String value, Set originTypes, Set originLegalBases, Set pageNumbers); + List findEntryIdsByValueAndEngineManualWithFilters(String value, boolean caseSensitive, Set originTypes, Set originLegalBases, Set pageNumbers); List findEntryIdsByMatchingPositionAndEngineManualWithFilters(float[] rectangle, Set originTypes, Set originLegalBases, Set pageNumbers); diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentCustomRepositoryImpl.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentCustomRepositoryImpl.java index c4a26697e..5256184ee 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentCustomRepositoryImpl.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentCustomRepositoryImpl.java @@ -3,6 +3,7 @@ package com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository import java.util.ArrayList; import java.util.List; import java.util.Set; +import java.util.regex.Pattern; import java.util.stream.Collectors; import org.springframework.data.mongodb.core.MongoTemplate; @@ -26,12 +27,20 @@ public class EntityLogEntryDocumentCustomRepositoryImpl implements EntityLogEntr @Override - public List findEntryIdsByValueAndEngineManualWithFilters(String value, Set originTypes, Set originLegalBases, Set pageNumbers) { + public List findEntryIdsByValueAndEngineManualWithFilters(String value, + boolean caseSensitive, + Set originTypes, + Set originLegalBases, + Set pageNumbers) { Query query = new Query(); List criteriaList = new ArrayList<>(); - criteriaList.add(Criteria.where("value").is(value)); + if (caseSensitive) { + criteriaList.add(Criteria.where("value").is(value)); + } else { + criteriaList.add(Criteria.where("value").regex(Pattern.compile(Pattern.quote(value), Pattern.CASE_INSENSITIVE))); + } addCommonCriteria(originTypes, originLegalBases, pageNumbers, criteriaList); diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java index 7ec35498f..6df71ccb9 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java @@ -350,9 +350,9 @@ public class EntityLogMongoService { } - public Set findEntryIdsByValueAndEngineManualWithFilters(String value, Set originTypes, Set originLegalBases, Set pageNumbers) { + public Set findEntryIdsByValueAndEngineManualWithFilters(String value, boolean caseSensitive, Set originTypes, Set originLegalBases, Set pageNumbers) { - return new HashSet<>(entityLogEntryDocumentCustomRepository.findEntryIdsByValueAndEngineManualWithFilters(value, originTypes, originLegalBases, pageNumbers)); + return new HashSet<>(entityLogEntryDocumentCustomRepository.findEntryIdsByValueAndEngineManualWithFilters(value, caseSensitive, originTypes, originLegalBases, pageNumbers)); }