From b4d00a5602c935de4128895312a87ba47eadae8c Mon Sep 17 00:00:00 2001 From: aoezyetimoglu Date: Fri, 22 Oct 2021 10:34:04 +0200 Subject: [PATCH] RED-2429: As a user I want to resize a redaction --- .../annotations/ManualResizeRedaction.java | 1 + .../annotations/ResizeRedactionRequest.java | 1 + .../ManualResizeRedactionEntity.java | 2 ++ .../ResizeRedactionPersistenceService.java | 29 ++++++++++++++----- .../tests/ManualRedactionTest.java | 6 ++-- 5 files changed, 29 insertions(+), 10 deletions(-) diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/annotations/ManualResizeRedaction.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/annotations/ManualResizeRedaction.java index 60fbefeea..687eaef38 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/annotations/ManualResizeRedaction.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/annotations/ManualResizeRedaction.java @@ -22,6 +22,7 @@ public class ManualResizeRedaction { private OffsetDateTime requestDate; private OffsetDateTime processedDate; private OffsetDateTime softDeletedTime; + private String value; @Builder.Default private List positions = new ArrayList<>(); diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/annotations/ResizeRedactionRequest.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/annotations/ResizeRedactionRequest.java index ee393d3c7..c9ee927a5 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/annotations/ResizeRedactionRequest.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/annotations/ResizeRedactionRequest.java @@ -19,6 +19,7 @@ public class ResizeRedactionRequest { private AnnotationStatus status; private String comment; private int page; + private String value; @Builder.Default private List positions = new ArrayList<>(); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualResizeRedactionEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualResizeRedactionEntity.java index dd64dc3be..a42c50cfe 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualResizeRedactionEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualResizeRedactionEntity.java @@ -44,6 +44,8 @@ public class ManualResizeRedactionEntity { private OffsetDateTime softDeletedTime; @Column private int page; + @Column + private String value; @ManyToOne private FileEntity fileStatus; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ResizeRedactionPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ResizeRedactionPersistenceService.java index 5f00fb561..af87375c0 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ResizeRedactionPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ResizeRedactionPersistenceService.java @@ -1,7 +1,8 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence; +import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; + import java.time.OffsetDateTime; -import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -18,8 +19,6 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; import com.iqser.red.service.persistence.service.v1.api.model.annotations.ResizeRedactionRequest; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; - import lombok.RequiredArgsConstructor; @Service @@ -28,6 +27,7 @@ public class ResizeRedactionPersistenceService { private final ResizeRedactionRepository resizeRedactionRepository; + @Transactional public void insert(String fileId, ResizeRedactionRequest resizeRedactionRequest) { @@ -40,8 +40,10 @@ public class ResizeRedactionPersistenceService { resizeRedactionRepository.save(manualResizeRedaction); } + @Transactional public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) { + resizeRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> { mre.setProcessedDate(OffsetDateTime.now()); mre.setStatus(annotationStatus); @@ -51,31 +53,42 @@ public class ResizeRedactionPersistenceService { @Transactional public void hardDelete(String fileId, String annotationId) { + resizeRedactionRepository.deleteById(new AnnotationEntityId(annotationId, fileId)); } + @Transactional public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) { - resizeRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(softDeleteTime)); + + resizeRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)) + .ifPresent(mre -> mre.setSoftDeletedTime(softDeleteTime)); } + @Transactional public void undelete(String fileId, String annotationId) { - resizeRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(null)); + + resizeRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)) + .ifPresent(mre -> mre.setSoftDeletedTime(null)); } + public ManualResizeRedactionEntity findResizeRedaction(String fileId, String annotationId) { return resizeRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)) .filter(mre -> mre.getSoftDeletedTime() == null) - .orElseThrow(() -> - new NotFoundException("Unknown file/annotation combination: " + fileId + "/" + annotationId)); + .orElseThrow(() -> new NotFoundException("Unknown file/annotation combination: " + fileId + "/" + annotationId)); } public Set findResizeRedactions(String fileId, boolean includeDeletions) { - return resizeRedactionRepository.findByIdFileId(fileId).stream().filter(mre -> includeDeletions || mre.getSoftDeletedTime() == null).collect(Collectors.toSet()); + return resizeRedactionRepository.findByIdFileId(fileId) + .stream() + .filter(mre -> includeDeletions || mre.getSoftDeletedTime() == null) + .collect(Collectors.toSet()); } + } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java index bc788fa92..bfe9789d3 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java @@ -169,11 +169,12 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertThat(loadedImageRecategorization2.getStatus()).isEqualTo(AnnotationStatus.REQUESTED); var resizeRedaction = manualRedactionClient.addResizeRedaction(dossier.getId(), file.getId(), ResizeRedactionRequest.builder() - .annotationId(addRedaction.getAnnotationId()).page(1).comment("comment").status(AnnotationStatus.REQUESTED).positions(List.of(Rectangle.builder().topLeftY(2).topLeftX(2).height(2).width(2).build())).user("test").build()); + .annotationId(addRedaction.getAnnotationId()).page(1).comment("comment").status(AnnotationStatus.REQUESTED).positions(List.of(Rectangle.builder().topLeftY(2).topLeftX(2).height(2).width(2).build())).user("test").value("some value").build()); var loadedResizeRedaction = manualRedactionClient.getResizeRedaction(file.getId(), resizeRedaction.getAnnotationId()); assertThat(loadedResizeRedaction.getStatus()).isEqualTo(AnnotationStatus.REQUESTED); assertThat(loadedResizeRedaction.getUser()).isEqualTo("test"); assertThat(loadedResizeRedaction.getPositions()).isNotEmpty(); + assertThat(loadedResizeRedaction.getValue()).isEqualTo("some value"); manualRedactionClient.updateResizeRedactionStatus(dossier.getId(), file.getId(), resizeRedaction.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.APPROVED)); loadedResizeRedaction = manualRedactionClient.getResizeRedaction(file.getId(), resizeRedaction.getAnnotationId()); @@ -229,11 +230,12 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { manualRedactions.getLegalBasisChanges().forEach(e -> manualRedactionClient.deleteLegalBasisChange(dossier.getId(), file.getId(), e.getAnnotationId())); var resizeRedaction2 = manualRedactionClient.addResizeRedaction(dossier.getId(), file.getId(), ResizeRedactionRequest.builder() - .annotationId(addRedaction.getAnnotationId()).page(1).comment("comment").status(AnnotationStatus.APPROVED).positions(List.of(Rectangle.builder().topLeftY(2).topLeftX(2).height(2).width(2).build())).user("test").build()); + .annotationId(addRedaction.getAnnotationId()).page(1).comment("comment").status(AnnotationStatus.APPROVED).positions(List.of(Rectangle.builder().topLeftY(2).topLeftX(2).height(2).width(2).build())).user("test").value("some value").build()); var loadedResizeRedaction2 = manualRedactionClient.getResizeRedaction(file.getId(), resizeRedaction2.getAnnotationId()); assertThat(loadedResizeRedaction2.getStatus()).isEqualTo(AnnotationStatus.APPROVED); assertThat(loadedResizeRedaction2.getUser()).isEqualTo("test"); assertThat(loadedResizeRedaction2.getPositions()).isNotEmpty(); + assertThat(loadedResizeRedaction2.getValue()).isEqualTo("some value"); manualRedactionClient.updateResizeRedactionStatus(dossier.getId(), file.getId(), resizeRedaction2.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.REQUESTED)); loadedResizeRedaction2 = manualRedactionClient.getResizeRedaction(file.getId(), resizeRedaction2.getAnnotationId());