Pull request #78: RED-2429: As a user I want to resize a redaction
Merge in RED/persistence-service from RED-2429-ps1 to master * commit '3dc0218a28f33b3f7341b318066394b12d5aa930': RED-2429: As a user I want to resize a redaction
This commit is contained in:
commit
85edd79114
@ -28,6 +28,9 @@ public class ManualRedactions {
|
||||
@Builder.Default
|
||||
private Set<ManualLegalBasisChange> legalBasisChanges = new HashSet<>();
|
||||
|
||||
@Builder.Default
|
||||
private Set<ManualResizeRedaction> resizeRedactions = new HashSet<>();
|
||||
|
||||
@Builder.Default
|
||||
private Map<String, List<Comment>> comments = new HashMap<>();
|
||||
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
package com.iqser.red.service.persistence.service.v1.api.model.annotations;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ManualResizeRedaction {
|
||||
|
||||
private String annotationId;
|
||||
private String fileId;
|
||||
private String user;
|
||||
private AnnotationStatus status;
|
||||
private OffsetDateTime requestDate;
|
||||
private OffsetDateTime processedDate;
|
||||
private OffsetDateTime softDeletedTime;
|
||||
@Builder.Default
|
||||
private List<Rectangle> positions = new ArrayList<>();
|
||||
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
package com.iqser.red.service.persistence.service.v1.api.model.annotations;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ResizeRedactionRequest {
|
||||
|
||||
private String annotationId;
|
||||
private String user;
|
||||
private AnnotationStatus status;
|
||||
private String comment;
|
||||
private int page;
|
||||
|
||||
@Builder.Default
|
||||
private List<Rectangle> positions = new ArrayList<>();
|
||||
}
|
||||
@ -58,6 +58,12 @@ public interface ManualRedactionResource {
|
||||
@PathVariable(ANNOTATION_ID) String annotationId, @RequestBody CommentRequest comment);
|
||||
|
||||
|
||||
@PostMapping(value = MANUAL_REDACTION_REST_PATH + "/resize" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
ManualAddResponse addResizeRedaction(@PathVariable(DOSSIER_ID) String dossierId,
|
||||
@PathVariable(FILE_ID) String fileId,
|
||||
@RequestBody ResizeRedactionRequest resizeRedactionRequest);
|
||||
|
||||
|
||||
@GetMapping(value = MANUAL_REDACTION_REST_PATH + "/add" + FILE_ID_PATH_VARIABLE + ANNOTATION_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
ManualRedactionEntry getAddRedaction(@PathVariable(FILE_ID) String fileId,
|
||||
@PathVariable(ANNOTATION_ID) String annotationId);
|
||||
@ -87,6 +93,11 @@ public interface ManualRedactionResource {
|
||||
Comment getComment(@PathVariable(COMMENT_ID) long commentId);
|
||||
|
||||
|
||||
@GetMapping(value = MANUAL_REDACTION_REST_PATH + "/resize" + FILE_ID_PATH_VARIABLE + ANNOTATION_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
ManualResizeRedaction getResizeRedaction(@PathVariable(FILE_ID) String fileId,
|
||||
@PathVariable(ANNOTATION_ID) String annotationId);
|
||||
|
||||
|
||||
@DeleteMapping(MANUAL_REDACTION_REST_PATH + "/add" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE + ANNOTATION_ID_PATH_VARIABLE)
|
||||
void deleteAddRedaction(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId,
|
||||
@PathVariable(ANNOTATION_ID) String annotationId);
|
||||
@ -116,6 +127,11 @@ public interface ManualRedactionResource {
|
||||
void deleteComment(@PathVariable(FILE_ID) String fileId, @PathVariable(COMMENT_ID) long commentId);
|
||||
|
||||
|
||||
@DeleteMapping(MANUAL_REDACTION_REST_PATH + "/resize" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE + ANNOTATION_ID_PATH_VARIABLE)
|
||||
void deleteResizeRedaction(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId,
|
||||
@PathVariable(ANNOTATION_ID) String annotationId);
|
||||
|
||||
|
||||
@PostMapping(value = MANUAL_REDACTION_REST_PATH + "/status/add" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE + ANNOTATION_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
void updateAddRedactionStatus(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId,
|
||||
@PathVariable(ANNOTATION_ID) String annotationId,
|
||||
@ -146,6 +162,11 @@ public interface ManualRedactionResource {
|
||||
@PathVariable(ANNOTATION_ID) String annotationId,
|
||||
@RequestBody JSONPrimitive<AnnotationStatus> updateStatusRequest);
|
||||
|
||||
@PostMapping(value = MANUAL_REDACTION_REST_PATH + "/status/resize" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE + ANNOTATION_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
void updateResizeRedactionStatus(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId,
|
||||
@PathVariable(ANNOTATION_ID) String annotationId,
|
||||
@RequestBody JSONPrimitive<AnnotationStatus> updateStatusRequest);
|
||||
|
||||
|
||||
@GetMapping(value = MANUAL_REDACTION_REST_PATH + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
ManualRedactions getManualRedactions(@PathVariable(DOSSIER_ID) String dossierId,
|
||||
|
||||
@ -0,0 +1,54 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.entity.annotations;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.ElementCollection;
|
||||
import javax.persistence.EmbeddedId;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.EnumType;
|
||||
import javax.persistence.Enumerated;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Entity
|
||||
@Table(name = "manual_resize_redaction")
|
||||
public class ManualResizeRedactionEntity {
|
||||
|
||||
@EmbeddedId
|
||||
private AnnotationEntityId id;
|
||||
@Column(name = "user_id")
|
||||
private String user;
|
||||
@Column
|
||||
@Enumerated(EnumType.STRING)
|
||||
private AnnotationStatus status;
|
||||
@Column
|
||||
private OffsetDateTime requestDate;
|
||||
@Column
|
||||
private OffsetDateTime processedDate;
|
||||
@Column
|
||||
private OffsetDateTime softDeletedTime;
|
||||
@Column
|
||||
private int page;
|
||||
|
||||
@ManyToOne
|
||||
private FileEntity fileStatus;
|
||||
|
||||
@ElementCollection
|
||||
private List<RectangleEntity> positions = new ArrayList<>();
|
||||
|
||||
}
|
||||
@ -0,0 +1,81 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.service.persistence;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualResizeRedactionEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.RectangleEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ResizeRedactionRepository;
|
||||
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
|
||||
@RequiredArgsConstructor
|
||||
public class ResizeRedactionPersistenceService {
|
||||
|
||||
private final ResizeRedactionRepository resizeRedactionRepository;
|
||||
|
||||
@Transactional
|
||||
public void insert(String fileId, ResizeRedactionRequest resizeRedactionRequest) {
|
||||
|
||||
ManualResizeRedactionEntity manualResizeRedaction = new ManualResizeRedactionEntity();
|
||||
manualResizeRedaction.setId(new AnnotationEntityId(resizeRedactionRequest.getAnnotationId(), fileId));
|
||||
BeanUtils.copyProperties(resizeRedactionRequest, manualResizeRedaction);
|
||||
manualResizeRedaction.setPositions(convert(resizeRedactionRequest.getPositions(), RectangleEntity.class));
|
||||
manualResizeRedaction.setRequestDate(OffsetDateTime.now());
|
||||
|
||||
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);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@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));
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void undelete(String fileId, String annotationId) {
|
||||
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));
|
||||
}
|
||||
|
||||
|
||||
public Set<ManualResizeRedactionEntity> findResizeRedactions(String fileId, boolean includeDeletions) {
|
||||
|
||||
return resizeRedactionRepository.findByIdFileId(fileId).stream().filter(mre -> includeDeletions || mre.getSoftDeletedTime() == null).collect(Collectors.toSet());
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualResizeRedactionEntity;
|
||||
|
||||
public interface ResizeRedactionRepository extends JpaRepository<ManualResizeRedactionEntity, AnnotationEntityId> {
|
||||
|
||||
List<ManualResizeRedactionEntity> findByIdFileId(String fileId);
|
||||
}
|
||||
@ -3,6 +3,7 @@ package com.iqser.red.service.peristence.v1.server.controller;
|
||||
import com.iqser.red.service.peristence.v1.server.service.ManualRedactionService;
|
||||
import com.iqser.red.service.peristence.v1.server.utils.ManualImageRecategorizationMapper;
|
||||
import com.iqser.red.service.peristence.v1.server.utils.ManualRedactionMapper;
|
||||
import com.iqser.red.service.peristence.v1.server.utils.ManualResizeRedactionMapper;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.annotations.*;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive;
|
||||
import com.iqser.red.service.persistence.service.v1.api.resources.ManualRedactionResource;
|
||||
@ -74,6 +75,15 @@ public class ManualRedactionController implements ManualRedactionResource {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ManualAddResponse addResizeRedaction(@PathVariable(DOSSIER_ID) String dossierId,
|
||||
@PathVariable(FILE_ID) String fileId,
|
||||
@RequestBody ResizeRedactionRequest resizeRedactionRequest) {
|
||||
|
||||
return manualRedactionService.addResizeRedaction(dossierId, fileId, resizeRedactionRequest);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ManualRedactionEntry getAddRedaction(@PathVariable(FILE_ID) String fileId,
|
||||
@PathVariable(ANNOTATION_ID) String annotationId) {
|
||||
@ -119,6 +129,13 @@ public class ManualRedactionController implements ManualRedactionResource {
|
||||
}
|
||||
|
||||
|
||||
public ManualResizeRedaction getResizeRedaction(@PathVariable(FILE_ID) String fileId,
|
||||
@PathVariable(ANNOTATION_ID) String annotationId) {
|
||||
|
||||
return convert(manualRedactionService.getResizeRedaction(fileId, annotationId), ManualResizeRedaction.class, new ManualResizeRedactionMapper());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void deleteAddRedaction(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId,
|
||||
@PathVariable(ANNOTATION_ID) String annotationId) {
|
||||
@ -167,6 +184,14 @@ public class ManualRedactionController implements ManualRedactionResource {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void deleteResizeRedaction(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId,
|
||||
@PathVariable(ANNOTATION_ID) String annotationId) {
|
||||
|
||||
manualRedactionService.deleteResizeRedaction(dossierId, fileId, annotationId);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void updateAddRedactionStatus(@PathVariable(DOSSIER_ID) String dossierId,
|
||||
@PathVariable(FILE_ID) String fileId,
|
||||
@ -216,6 +241,16 @@ public class ManualRedactionController implements ManualRedactionResource {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void updateResizeRedactionStatus(@PathVariable(DOSSIER_ID) String dossierId,
|
||||
@PathVariable(FILE_ID) String fileId,
|
||||
@PathVariable(ANNOTATION_ID) String annotationId,
|
||||
@RequestBody JSONPrimitive<AnnotationStatus> updateStatusRequest) {
|
||||
|
||||
manualRedactionService.updateResizeRedactionStatus(dossierId, fileId, annotationId, updateStatusRequest.getValue());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ManualRedactions getManualRedactions(@PathVariable(DOSSIER_ID) String dossierId,
|
||||
@PathVariable(FILE_ID) String fileId) {
|
||||
|
||||
@ -44,6 +44,7 @@ public class FileService {
|
||||
private final DossierPersistenceService dossierPersistenceService;
|
||||
private final ImageRecategorizationPersistenceService recategorizationPersistenceService;
|
||||
private final LegalBasisChangePersistenceService legalBasisChangePersistenceService;
|
||||
private final ResizeRedactionPersistenceService resizeRedactionPersistenceService;
|
||||
private final IndexingService indexingService;
|
||||
|
||||
|
||||
@ -129,6 +130,13 @@ public class FileService {
|
||||
});
|
||||
});
|
||||
|
||||
resizeRedactionPersistenceService.findResizeRedactions(fileId, false).forEach(annotation -> {
|
||||
resizeRedactionPersistenceService.softDelete(fileId, annotation.getId().getAnnotationId(), softDeletedTime);
|
||||
commentPersistenceService.findCommentsByAnnotationId(fileId, annotation.getId().getAnnotationId(), false).forEach(comment -> {
|
||||
commentPersistenceService.softDelete(comment.getId(), softDeletedTime);
|
||||
});
|
||||
});
|
||||
|
||||
legalBasisChangePersistenceService.findLegalBasisChanges(fileId, false).forEach(legalBasisChange -> {
|
||||
legalBasisChangePersistenceService.softDelete(fileId, legalBasisChange.getId().getAnnotationId(), softDeletedTime);
|
||||
commentPersistenceService.findCommentsByAnnotationId(fileId, legalBasisChange.getId().getAnnotationId(), false)
|
||||
@ -174,6 +182,13 @@ public class FileService {
|
||||
});
|
||||
});
|
||||
|
||||
resizeRedactionPersistenceService.findResizeRedactions(fileId, true).forEach(annotation -> {
|
||||
resizeRedactionPersistenceService.hardDelete(fileId, annotation.getId().getAnnotationId());
|
||||
commentPersistenceService.findCommentsByAnnotationId(fileId, annotation.getId().getAnnotationId(), true).forEach(comment -> {
|
||||
commentPersistenceService.hardDelete(comment.getId());
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public void undeleteFile(String dossierTemplateId, String dossierId, String fileId, OffsetDateTime softDeletedTime) {
|
||||
@ -221,6 +236,17 @@ public class FileService {
|
||||
}
|
||||
});
|
||||
|
||||
resizeRedactionPersistenceService.findResizeRedactions(fileId, true).forEach(annotation -> {
|
||||
if (annotation.getSoftDeletedTime().equals(softDeletedTime) || annotation.getSoftDeletedTime().isAfter(softDeletedTime)) {
|
||||
resizeRedactionPersistenceService.undelete(fileId, annotation.getId().getAnnotationId());
|
||||
commentPersistenceService.findCommentsByAnnotationId(fileId, annotation.getId().getAnnotationId(), true).forEach(comment -> {
|
||||
if (comment.getSoftDeletedTime().equals(softDeletedTime) || comment.getSoftDeletedTime().isAfter(softDeletedTime)) {
|
||||
commentPersistenceService.undelete(comment.getId());
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
indexingService.addToIndexingQueue(dossierTemplateId, dossierId, fileId, 2);
|
||||
}
|
||||
|
||||
|
||||
@ -47,6 +47,7 @@ public class FileStatusService {
|
||||
private final ForceRedactionPersistenceService forceRedactionPersistenceService;
|
||||
private final RemoveRedactionPersistenceService removeRedactionPersistenceService;
|
||||
private final AddRedactionPersistenceService addRedactionPersistenceService;
|
||||
private final ResizeRedactionPersistenceService resizeRedactionPersistenceService;
|
||||
|
||||
|
||||
public List<FileEntity> getDossierStatus(String dossierId) {
|
||||
@ -311,7 +312,11 @@ public class FileStatusService {
|
||||
|
||||
// wipe image recat
|
||||
var imageRecategorizations = imageRecategorizationPersistenceService.findRecategorizations(fileId, false);
|
||||
imageRecategorizations.forEach(f -> imageRecategorizationPersistenceService.softDelete(fileId, f.getId().getAnnotationId(), now));
|
||||
imageRecategorizations.forEach(f -> imageRecategorizationPersistenceService.softDelete(fileId, f.getId().getAnnotationId(), now));// wipe image recat
|
||||
|
||||
// wipe resize redactions
|
||||
var resizeRedactions = resizeRedactionPersistenceService.findResizeRedactions(fileId, false);
|
||||
resizeRedactions.forEach(f -> resizeRedactionPersistenceService.softDelete(fileId, f.getId().getAnnotationId(), now));
|
||||
|
||||
// wipe legal basis changes
|
||||
var legalBasisChanges = legalBasisChangePersistenceService.findLegalBasisChanges(fileId, false);
|
||||
|
||||
@ -25,6 +25,7 @@ public class ManualRedactionProviderService {
|
||||
private final CommentPersistenceService commentPersistenceService;
|
||||
private final ImageRecategorizationPersistenceService recategorizationPersistenceService;
|
||||
private final LegalBasisChangePersistenceService legalBasisChangePersistenceService;
|
||||
private final ResizeRedactionPersistenceService resizeRedactionPersistenceService;
|
||||
|
||||
@Transactional
|
||||
public ManualRedactions getManualRedactions(String fileId) {
|
||||
@ -40,6 +41,8 @@ public class ManualRedactionProviderService {
|
||||
|
||||
Set<ManualLegalBasisChange> legalBasisChanges = convert(legalBasisChangePersistenceService.findLegalBasisChanges(fileId, false), ManualLegalBasisChange.class);
|
||||
|
||||
Set<ManualResizeRedaction> resizeRedactions = convert(resizeRedactionPersistenceService.findResizeRedactions(fileId, false), ManualResizeRedaction.class);
|
||||
|
||||
Map<String, List<CommentEntity>> commentEntities = commentPersistenceService.findCommentsByFileID(fileId, false);
|
||||
|
||||
Map<String, List<Comment>> comments = new HashMap<>();
|
||||
@ -48,7 +51,7 @@ public class ManualRedactionProviderService {
|
||||
});
|
||||
|
||||
|
||||
return new ManualRedactions(removals, entriesToAdd, forceRedactions, recategorizations, legalBasisChanges, comments);
|
||||
return new ManualRedactions(removals, entriesToAdd, forceRedactions, recategorizations, legalBasisChanges, resizeRedactions, comments);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -40,6 +40,7 @@ public class ManualRedactionService {
|
||||
private final FileManagementStorageService fileManagementStorageService;
|
||||
private final ImageRecategorizationPersistenceService recategorizationPersistenceService;
|
||||
private final LegalBasisChangePersistenceService legalBasisChangePersistenceService;
|
||||
private final ResizeRedactionPersistenceService resizeRedactionPersistenceService;
|
||||
private final FileStatusService fileStatusService;
|
||||
private final ManualRedactionProviderService manualRedactionProviderService;
|
||||
private final AnalysisFlagsCalculationService analysisFlagsCalculationService;
|
||||
@ -231,6 +232,35 @@ public class ManualRedactionService {
|
||||
return createdComment;
|
||||
}
|
||||
|
||||
public ManualAddResponse addResizeRedaction(String dossierId, String fileId,
|
||||
ResizeRedactionRequest resizeRedactionRequest) {
|
||||
|
||||
dossierPersistenceService.getAndValidateDossier(dossierId);
|
||||
|
||||
OffsetDateTime now = OffsetDateTime.now();
|
||||
resizeRedactionPersistenceService.insert(fileId, resizeRedactionRequest);
|
||||
|
||||
Long commentId = null;
|
||||
if (resizeRedactionRequest.getComment() != null) {
|
||||
|
||||
commentId = addComment(fileId, resizeRedactionRequest.getAnnotationId(), resizeRedactionRequest.getComment(), resizeRedactionRequest
|
||||
.getUser()).getId();
|
||||
}
|
||||
|
||||
if (resizeRedactionRequest.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
||||
fileStatusPersistenceService.setUpdateLastManualRedactionAndHasSuggestions(fileId, now, true);
|
||||
} else {
|
||||
fileStatusPersistenceService.updateLastManualRedaction(fileId, now);
|
||||
}
|
||||
|
||||
analysisFlagsCalculationService.calculateFlags(dossierId, fileId);
|
||||
|
||||
return ManualAddResponse.builder()
|
||||
.annotationId(resizeRedactionRequest.getAnnotationId())
|
||||
.commentId(commentId)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
public ManualRedactionEntryEntity getAddRedaction(String fileId, String annotationId) {
|
||||
|
||||
@ -268,6 +298,12 @@ public class ManualRedactionService {
|
||||
}
|
||||
|
||||
|
||||
public ManualResizeRedactionEntity getResizeRedaction(String fileId, String annotationId) {
|
||||
|
||||
return resizeRedactionPersistenceService.findResizeRedaction(fileId, annotationId);
|
||||
}
|
||||
|
||||
|
||||
public void deleteAddRedaction(String dossierId, String fileId, String annotationId) {
|
||||
|
||||
var addRedaction = getAddRedaction(fileId, annotationId);
|
||||
@ -370,6 +406,22 @@ public class ManualRedactionService {
|
||||
}
|
||||
|
||||
|
||||
public void deleteResizeRedaction(String dossierId, String fileId, String annotationId) {
|
||||
|
||||
var resizeRedaction = getResizeRedaction(fileId, annotationId);
|
||||
|
||||
resizeRedactionPersistenceService.softDelete(fileId, annotationId, OffsetDateTime.now());
|
||||
|
||||
if (resizeRedaction.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
||||
boolean hasSuggestions = calculateHasSuggestions(fileId);
|
||||
fileStatusPersistenceService.setUpdateLastManualRedactionAndHasSuggestions(fileId, OffsetDateTime.now(), hasSuggestions);
|
||||
} else {
|
||||
fileStatusPersistenceService.updateLastManualRedaction(fileId, OffsetDateTime.now());
|
||||
}
|
||||
analysisFlagsCalculationService.calculateFlags(dossierId, fileId);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("PMD")
|
||||
public void updateRemoveRedactionStatus(String dossierId, String fileId, String annotationId, AnnotationStatus annotationStatus) {
|
||||
|
||||
@ -489,6 +541,16 @@ public class ManualRedactionService {
|
||||
}
|
||||
|
||||
|
||||
public void updateResizeRedactionStatus(String dossierId, String fileId, String annotationId, AnnotationStatus annotationStatus) {
|
||||
|
||||
dossierPersistenceService.getAndValidateDossier(dossierId);
|
||||
resizeRedactionPersistenceService.updateStatus(fileId, annotationId, annotationStatus);
|
||||
boolean hasSuggestions = calculateHasSuggestions(fileId);
|
||||
fileStatusPersistenceService.setUpdateLastManualRedactionAndHasSuggestions(fileId, OffsetDateTime.now(), hasSuggestions);
|
||||
analysisFlagsCalculationService.calculateFlags(dossierId, fileId);
|
||||
}
|
||||
|
||||
|
||||
public ManualRedactions getManualRedactions(String fileId) {
|
||||
|
||||
return manualRedactionProviderService.getManualRedactions(fileId);
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
package com.iqser.red.service.peristence.v1.server.utils;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
|
||||
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualResizeRedactionEntity;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.annotations.ManualResizeRedaction;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.annotations.Rectangle;
|
||||
|
||||
public class ManualResizeRedactionMapper implements BiConsumer<ManualResizeRedactionEntity, ManualResizeRedaction> {
|
||||
|
||||
@Override
|
||||
public void accept(ManualResizeRedactionEntity manualResizeRedactionEntity, ManualResizeRedaction manualRedaction) {
|
||||
|
||||
manualRedaction.setPositions(convert(manualResizeRedactionEntity.getPositions(), Rectangle.class));
|
||||
}
|
||||
|
||||
}
|
||||
@ -161,7 +161,6 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
var imageRecategorization2 = manualRedactionClient.addImageRecategorization(dossier.getId(), file.getId(), ImageRecategorizationRequest.builder()
|
||||
.annotationId(addRedaction2.getAnnotationId()).comment("comment").status(AnnotationStatus.APPROVED).user("test").typeId("new-type:id").build());
|
||||
|
||||
var loadedImageRecategorization2 = manualRedactionClient.getImageRecategorization(file.getId(), imageRecategorization2.getAnnotationId());
|
||||
assertThat(loadedImageRecategorization2.getStatus()).isEqualTo(AnnotationStatus.APPROVED);
|
||||
|
||||
@ -169,6 +168,21 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
|
||||
loadedImageRecategorization2 = manualRedactionClient.getImageRecategorization(file.getId(), imageRecategorization2.getAnnotationId());
|
||||
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());
|
||||
var loadedResizeRedaction = manualRedactionClient.getResizeRedaction(file.getId(), resizeRedaction.getAnnotationId());
|
||||
assertThat(loadedResizeRedaction.getStatus()).isEqualTo(AnnotationStatus.REQUESTED);
|
||||
assertThat(loadedResizeRedaction.getUser()).isEqualTo("test");
|
||||
assertThat(loadedResizeRedaction.getPositions()).isNotEmpty();
|
||||
|
||||
manualRedactionClient.updateResizeRedactionStatus(dossier.getId(), file.getId(), resizeRedaction.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.APPROVED));
|
||||
loadedResizeRedaction = manualRedactionClient.getResizeRedaction(file.getId(), resizeRedaction.getAnnotationId());
|
||||
assertThat(loadedResizeRedaction.getStatus()).isEqualTo(AnnotationStatus.APPROVED);
|
||||
|
||||
manualRedactionClient.updateResizeRedactionStatus(dossier.getId(), file.getId(), resizeRedaction.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.DECLINED));
|
||||
loadedResizeRedaction = manualRedactionClient.getResizeRedaction(file.getId(), resizeRedaction.getAnnotationId());
|
||||
assertThat(loadedResizeRedaction.getStatus()).isEqualTo(AnnotationStatus.DECLINED);
|
||||
|
||||
|
||||
ManualRedactions manualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId());
|
||||
assertThat(manualRedactions.getForceRedactions()).isNotEmpty();
|
||||
@ -214,5 +228,16 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
|
||||
manualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId());
|
||||
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());
|
||||
var loadedResizeRedaction2 = manualRedactionClient.getResizeRedaction(file.getId(), resizeRedaction2.getAnnotationId());
|
||||
assertThat(loadedResizeRedaction2.getStatus()).isEqualTo(AnnotationStatus.APPROVED);
|
||||
assertThat(loadedResizeRedaction2.getUser()).isEqualTo("test");
|
||||
assertThat(loadedResizeRedaction2.getPositions()).isNotEmpty();
|
||||
|
||||
manualRedactionClient.updateResizeRedactionStatus(dossier.getId(), file.getId(), resizeRedaction2.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.REQUESTED));
|
||||
loadedResizeRedaction2 = manualRedactionClient.getResizeRedaction(file.getId(), resizeRedaction2.getAnnotationId());
|
||||
assertThat(loadedResizeRedaction2.getStatus()).isEqualTo(AnnotationStatus.REQUESTED);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user