RED-9947: case sensitivity can now be set as param

This commit is contained in:
Maverick Studer 2024-09-03 15:49:16 +02:00
parent 11088ddfef
commit 52bd1dea3c
11 changed files with 37 additions and 36 deletions

View File

@ -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<String> 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<String> entryIds;
if (!recategorizationRequest.isRectangle()) {
entryIds = entityLogMongoService.findEntryIdsByValueAndEngineManualWithFilters(recategorizationRequest.getValue(),
recategorizationRequest.isCaseSensitive(),
recategorizationRequest.getOriginTypes(),
recategorizationRequest.getOriginLegalBases(),
recategorizationRequest.getPageNumbers());

View File

@ -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())

View File

@ -358,6 +358,7 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT
assertEquals(akessonSetFilterQuery.size(), 3);
Set<String> 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<String> baldridgeSet = entityLogMongoService.findEntryIdsByValueAndEngineManualWithFilters(baldridgeValue,
false,
Collections.emptySet(),
Collections.emptySet(),
Collections.emptySet());
assertEquals(baldridgeSet.size(), 4);
Set<String> baldridgeSetWithTypeFilter = entityLogMongoService.findEntryIdsByValueAndEngineManualWithFilters(baldridgeValue,
false,
Set.of("CBI_author", "Test"),
Collections.emptySet(),
Collections.emptySet());
assertEquals(baldridgeSetWithTypeFilter.size(), 2);
Set<String> baldridgeSetWithLegalBasesFilter = entityLogMongoService.findEntryIdsByValueAndEngineManualWithFilters(baldridgeValue,
false,
Set.of("CBI_author", "Test"),
Set.of("Test"),
Collections.emptySet());

View File

@ -18,6 +18,9 @@ public class BulkLocalRequest {
@NonNull
private String searchTerm;
@Builder.Default
private boolean caseSensitive = true;
@NonNull
private String type;

View File

@ -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;

View File

@ -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;
}

View File

@ -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;

View File

@ -19,6 +19,9 @@ public class RemoveRedactionBulkLocalRequestModel {
private String value;
@Builder.Default
private boolean caseSensitive = true;
private boolean rectangle;
private Position position;

View File

@ -5,7 +5,7 @@ import java.util.Set;
public interface EntityLogEntryDocumentCustomRepository {
List<String> findEntryIdsByValueAndEngineManualWithFilters(String value, Set<String> originTypes, Set<String> originLegalBases, Set<Integer> pageNumbers);
List<String> findEntryIdsByValueAndEngineManualWithFilters(String value, boolean caseSensitive, Set<String> originTypes, Set<String> originLegalBases, Set<Integer> pageNumbers);
List<String> findEntryIdsByMatchingPositionAndEngineManualWithFilters(float[] rectangle, Set<String> originTypes, Set<String> originLegalBases, Set<Integer> pageNumbers);

View File

@ -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<String> findEntryIdsByValueAndEngineManualWithFilters(String value, Set<String> originTypes, Set<String> originLegalBases, Set<Integer> pageNumbers) {
public List<String> findEntryIdsByValueAndEngineManualWithFilters(String value,
boolean caseSensitive,
Set<String> originTypes,
Set<String> originLegalBases,
Set<Integer> pageNumbers) {
Query query = new Query();
List<Criteria> 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);

View File

@ -350,9 +350,9 @@ public class EntityLogMongoService {
}
public Set<String> findEntryIdsByValueAndEngineManualWithFilters(String value, Set<String> originTypes, Set<String> originLegalBases, Set<Integer> pageNumbers) {
public Set<String> findEntryIdsByValueAndEngineManualWithFilters(String value, boolean caseSensitive, Set<String> originTypes, Set<String> originLegalBases, Set<Integer> pageNumbers) {
return new HashSet<>(entityLogEntryDocumentCustomRepository.findEntryIdsByValueAndEngineManualWithFilters(value, originTypes, originLegalBases, pageNumbers));
return new HashSet<>(entityLogEntryDocumentCustomRepository.findEntryIdsByValueAndEngineManualWithFilters(value, caseSensitive, originTypes, originLegalBases, pageNumbers));
}