Merge branch 'RED-8043-update-text' into 'master'

RED-8043 - Fix surrounding text not updating when adding manual redaction

Closes RED-8043

See merge request redactmanager/persistence-service!284
This commit is contained in:
Andrei Isvoran 2023-12-21 14:05:00 +01:00
commit b2dbbbb405
5 changed files with 32 additions and 24 deletions

View File

@ -18,6 +18,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus;
import io.micrometer.core.annotation.Timed; import io.micrometer.core.annotation.Timed;
import io.micrometer.observation.annotation.Observed;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -32,6 +33,7 @@ public class AnalysisFlagsCalculationService {
@Timed("redactmanager_calculateFlags") @Timed("redactmanager_calculateFlags")
@Observed(name = "AnalysisFlagsCalculationService", contextualName = "calculate-flags")
public void calculateFlags(String dossierId, String fileId) { public void calculateFlags(String dossierId, String fileId) {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();

View File

@ -32,6 +32,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.Remo
import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.ResizeRedactionRequestModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.ResizeRedactionRequestModel;
import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity;
import io.micrometer.observation.annotation.Observed;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
@ -44,6 +45,7 @@ public class ManualRedactionMapper {
EntityLogService entityLogService; EntityLogService entityLogService;
@Observed(name = "ManualRedactionMapper", contextualName = "to-add-redaction-request-list")
public List<AddRedactionRequest> toAddRedactionRequestList(String dossierId, Set<AddRedactionRequestModel> addRedactionRequests, Dossier dossier) { public List<AddRedactionRequest> toAddRedactionRequestList(String dossierId, Set<AddRedactionRequestModel> addRedactionRequests, Dossier dossier) {
return addRedactionRequests.stream() return addRedactionRequests.stream()

View File

@ -1,5 +1,7 @@
package com.iqser.red.service.persistence.management.v1.processor.service.manualredactions; package com.iqser.red.service.persistence.management.v1.processor.service.manualredactions;
import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -29,6 +31,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.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.RemoveRedactionPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ResizeRedactionPersistenceService; 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.service.v1.api.shared.model.analysislog.entitylog.EntityLog; 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.analysislog.entitylog.EntityLogEntry; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry;
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.AddRedactionRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.AddRedactionRequest;
@ -44,6 +47,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.ManualResizeRedaction; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualResizeRedaction;
import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter;
import io.micrometer.observation.annotation.Observed;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
@ -73,10 +77,11 @@ public class ManualRedactionService {
@Transactional @Transactional
@Observed(name = "ManualRedactionService", contextualName = "add-manual-redaction")
public List<ManualAddResponse> addAddRedaction(String dossierId, String fileId, List<AddRedactionRequest> addRedactionRequests) { public List<ManualAddResponse> addAddRedaction(String dossierId, String fileId, List<AddRedactionRequest> addRedactionRequests) {
var response = new ArrayList<ManualAddResponse>(); var response = new ArrayList<ManualAddResponse>();
Set<ManualRedactionEntryEntity> manualRedactionEntryEntities = new HashSet<>(); List<ManualRedactionEntryEntity> manualRedactionEntryEntities = new ArrayList<>();
var dossierEntity = dossierPersistenceService.getAndValidateDossier(dossierId); var dossierEntity = dossierPersistenceService.getAndValidateDossier(dossierId);
@ -105,22 +110,27 @@ public class ManualRedactionService {
manualRedactionEntryEntities = manualRedactionEntryEntities.stream() manualRedactionEntryEntities = manualRedactionEntryEntities.stream()
.filter(manualRedactionEntry -> !manualRedactionEntry.isAddToDictionary() && !manualRedactionEntry.isAddToDossierDictionary()) .filter(manualRedactionEntry -> !manualRedactionEntry.isAddToDictionary() && !manualRedactionEntry.isAddToDossierDictionary())
.collect(Collectors.toSet()); .collect(Collectors.toList());
if (!manualRedactionEntryEntities.isEmpty()) { if (!manualRedactionEntryEntities.isEmpty()) {
ManualRedactions manualRedactions = ManualRedactions.builder() ManualRedactions manualRedactions = ManualRedactions.builder()
.entriesToAdd(MagicConverter.convert(manualRedactionEntryEntities, ManualRedactionEntry.class)) .entriesToAdd(convertEntriesToAdd(manualRedactionEntryEntities))
.build(); .build();
entityLogMergeService.sendToAnalyseQueue(fileId, dossierEntity, fileStatusService.getStatus(fileId), manualRedactions); entityLogMergeService.sendToAnalyseQueue(fileId, dossierEntity, fileStatusService.getStatus(fileId), manualRedactions);
} else {
reprocess(dossierId, fileId);
} }
analysisFlagsCalculationService.calculateFlags(dossierId, fileId); analysisFlagsCalculationService.calculateFlags(dossierId, fileId);
reprocess(dossierId, fileId);
return response; return response;
} }
private Set<ManualRedactionEntry> convertEntriesToAdd(List<ManualRedactionEntryEntity> source) {
return source.stream().map(entry -> convert(entry, ManualRedactionEntry.class, new ManualRedactionMapper())).collect(Collectors.toSet());
}
@Transactional @Transactional
public List<ManualAddResponse> addRemoveRedaction(String dossierId, String fileId, List<RemoveRedactionRequest> removeRedactionRequests) { public List<ManualAddResponse> addRemoveRedaction(String dossierId, String fileId, List<RemoveRedactionRequest> removeRedactionRequests) {
@ -250,6 +260,7 @@ public class ManualRedactionService {
@Transactional @Transactional
@Observed(name = "ManualRedactionService", contextualName = "add-manual-redaction")
public List<ManualAddResponse> addResizeRedaction(String dossierId, String fileId, List<ResizeRedactionRequest> resizeRedactionRequests, boolean includeUnprocessed) { public List<ManualAddResponse> addResizeRedaction(String dossierId, String fileId, List<ResizeRedactionRequest> resizeRedactionRequests, boolean includeUnprocessed) {
List<ManualAddResponse> response = new ArrayList<>(); List<ManualAddResponse> response = new ArrayList<>();
@ -289,14 +300,12 @@ public class ManualRedactionService {
.resizeRedactions(MagicConverter.convert(manualResizeRedactionEntities, ManualResizeRedaction.class)) .resizeRedactions(MagicConverter.convert(manualResizeRedactionEntities, ManualResizeRedaction.class))
.build(); .build();
entityLogMergeService.sendToAnalyseQueue(fileId, dossierPersistenceService.getAndValidateDossier(dossierId), fileStatusService.getStatus(fileId), manualRedactions); entityLogMergeService.sendToAnalyseQueue(fileId, dossierPersistenceService.getAndValidateDossier(dossierId), fileStatusService.getStatus(fileId), manualRedactions);
} else {
reprocess(dossierId, fileId);
} }
analysisFlagsCalculationService.calculateFlags(dossierId, fileId); analysisFlagsCalculationService.calculateFlags(dossierId, fileId);
reprocess(dossierId, fileId);
analysisFlagsCalculationService.calculateFlags(dossierId, fileId);
return response; return response;
} }

View File

@ -9,6 +9,7 @@ import java.time.OffsetDateTime;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.List; import java.util.List;
import io.micrometer.observation.annotation.Observed;
import jakarta.transaction.Transactional; import jakarta.transaction.Transactional;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -34,6 +35,7 @@ public class AuditPersistenceService {
private final AuditRepository auditRepository; private final AuditRepository auditRepository;
@Observed(name = "AuditPersistenceService", contextualName = "audit")
public void audit(AuditRequest auditRequest) { public void audit(AuditRequest auditRequest) {
insertRecord(auditRequest); insertRecord(auditRequest);

View File

@ -51,26 +51,19 @@ public class RedactionAnalysisResponseReceiver {
if (optionalManualRedactionEntry.isPresent()) { if (optionalManualRedactionEntry.isPresent()) {
ManualRedactionEntryEntity manualRedactionEntry = optionalManualRedactionEntry.get(); ManualRedactionEntryEntity manualRedactionEntry = optionalManualRedactionEntry.get();
if (!Objects.equals(manualRedactionEntry.getTextAfter(), unprocessedManualEntity.getTextAfter()) || manualRedactionEntry.setTextBefore(unprocessedManualEntity.getTextBefore());
!Objects.equals(manualRedactionEntry.getTextBefore(), unprocessedManualEntity.getTextBefore()) || manualRedactionEntry.setTextAfter(unprocessedManualEntity.getTextAfter());
!Objects.equals(manualRedactionEntry.getSection(), unprocessedManualEntity.getSection())) { manualRedactionEntry.setSection(unprocessedManualEntity.getSection());
manualRedactionEntry.setTextBefore(unprocessedManualEntity.getTextBefore()); manualRedactionEntry.setPositions(convertPositions(unprocessedManualEntity.getPositions()));
manualRedactionEntry.setTextAfter(unprocessedManualEntity.getTextAfter()); addRedactionPersistenceService.update(manualRedactionEntry);
manualRedactionEntry.setSection(unprocessedManualEntity.getSection());
manualRedactionEntry.setPositions(convertPositions(unprocessedManualEntity.getPositions()));
addRedactionPersistenceService.update(manualRedactionEntry);
}
} }
Optional<ManualResizeRedactionEntity> optionalManualResizeRedactionEntity = resizeRedactionPersistenceService.findResizeRedactionById(fileId, unprocessedManualEntity.getAnnotationId()); Optional<ManualResizeRedactionEntity> optionalManualResizeRedactionEntity = resizeRedactionPersistenceService.findResizeRedactionById(fileId, unprocessedManualEntity.getAnnotationId());
if (optionalManualResizeRedactionEntity.isPresent()) { if (optionalManualResizeRedactionEntity.isPresent()) {
ManualResizeRedactionEntity manualResizeRedaction = optionalManualResizeRedactionEntity.get(); ManualResizeRedactionEntity manualResizeRedaction = optionalManualResizeRedactionEntity.get();
if (!Objects.equals(manualResizeRedaction.getTextAfter(), unprocessedManualEntity.getTextAfter()) || resizeRedactionPersistenceService.updateSurroundingText(manualResizeRedaction.getId(),
!Objects.equals(manualResizeRedaction.getTextBefore(), unprocessedManualEntity.getTextBefore())) { unprocessedManualEntity.getTextBefore(),
resizeRedactionPersistenceService.updateSurroundingText(manualResizeRedaction.getId(), unprocessedManualEntity.getTextAfter());
unprocessedManualEntity.getTextBefore(),
unprocessedManualEntity.getTextAfter());
}
} }
}); });
} }