Pull request #477: RED-4497: Delete update dictionary resize redaction on remove

Merge in RED/persistence-service from RED-4497 to master

* commit 'ae5e05e341eb3964dca47080a142ce76f6df8a0c':
  RED-4497: Refactored method to remove resizeRedactions with addToDictionary
  RED-4497: Delete update dictionary resize redaction on remove
This commit is contained in:
Dominique Eiflaender 2022-07-08 13:30:54 +02:00
commit b41c0dd92a
3 changed files with 22 additions and 0 deletions

View File

@ -91,4 +91,9 @@ public class ResizeRedactionPersistenceService {
return resizeRedactionRepository.findByFileIdIncludeDeletions(fileId, includeDeletions);
}
public List<ManualResizeRedactionEntity> findByAnnotationStatusAndValue(AnnotationStatus status, String value){
return resizeRedactionRepository.findByStatusAndValue(status, value);
}
}

View File

@ -36,4 +36,6 @@ public interface ResizeRedactionRepository extends JpaRepository<ManualResizeRed
@Query("update ManualResizeRedactionEntity m set m.textBefore = :textBefore, m.textAfter = :textAfter where m.id = :id")
void updateSurroundingText(AnnotationEntityId id, String textBefore, String textAfter);
List<ManualResizeRedactionEntity> findByStatusAndValue(AnnotationStatus status, String value);
}

View File

@ -60,6 +60,7 @@ import com.iqser.red.service.persistence.service.v1.api.model.annotations.Remove
import com.iqser.red.service.persistence.service.v1.api.model.annotations.ResizeRedactionRequest;
import com.iqser.red.service.persistence.service.v1.api.model.annotations.entitymapped.ManualRedactionEntry;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType;
import com.iqser.red.service.redaction.v1.model.AnalyzeRequest;
import com.iqser.red.service.redaction.v1.model.MessageType;
@ -813,6 +814,9 @@ public class ManualRedactionService {
addToDictionary(buildTypeId(redactionLogEntry, dossier), redactionLogEntry.getValue(), dossier.getId(), fileId, DictionaryEntryType.ENTRY);
} else {
removeFromDictionary(buildTypeId(redactionLogEntry, dossier), redactionLogEntry.getValue(), dossier.getId(), fileId, DictionaryEntryType.ENTRY);
// This is needed to remove resizeRedactions with addToDictionary.
removeResizeRedactionsWithAddToDictionary(dossier.getDossierTemplateId(), redactionLogEntry.getValue());
}
return true;
}
@ -820,6 +824,17 @@ public class ManualRedactionService {
return false;
}
private void removeResizeRedactionsWithAddToDictionary(String dossierTemplateId, String redactionLogEntryValue) {
var resizeRedactionsWithSameValue = resizeRedactionPersistenceService.findByAnnotationStatusAndValue(AnnotationStatus.APPROVED, redactionLogEntryValue);
resizeRedactionsWithSameValue.forEach(resizeRedaction -> {
var file = fileStatusPersistenceService.getStatus(resizeRedaction.getId().getFileId());
var dossierForResizeRedaction = dossierPersistenceService.findByDossierId(file.getDossierId());
if(!file.getWorkflowStatus().equals(WorkflowStatus.APPROVED) && dossierTemplateId.equals(dossierForResizeRedaction.getDossierTemplateId())) {
resizeRedactionPersistenceService.hardDelete(resizeRedaction.getId()
.getFileId(), resizeRedaction.getId().getAnnotationId());
}
});
}
private void addToDictionary(String typeId, String value, String dossierId, String fileId,
DictionaryEntryType dictionaryEntryType) {