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 io.micrometer.core.annotation.Timed;
import io.micrometer.observation.annotation.Observed;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -32,6 +33,7 @@ public class AnalysisFlagsCalculationService {
@Timed("redactmanager_calculateFlags")
@Observed(name = "AnalysisFlagsCalculationService", contextualName = "calculate-flags")
public void calculateFlags(String dossierId, String fileId) {
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.knecon.fforesight.keycloakcommons.security.KeycloakSecurity;
import io.micrometer.observation.annotation.Observed;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
@ -44,6 +45,7 @@ public class ManualRedactionMapper {
EntityLogService entityLogService;
@Observed(name = "ManualRedactionMapper", contextualName = "to-add-redaction-request-list")
public List<AddRedactionRequest> toAddRedactionRequestList(String dossierId, Set<AddRedactionRequestModel> addRedactionRequests, Dossier dossier) {
return addRedactionRequests.stream()

View File

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

View File

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

View File

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