RED-1446: Enabled to change legal basis manually
This commit is contained in:
parent
106c25f7d1
commit
7c99581f32
@ -0,0 +1,19 @@
|
|||||||
|
package com.iqser.red.service.redaction.v1.model;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class ManualLegalBasisChange {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
private String user;
|
||||||
|
private Status status;
|
||||||
|
private String legalBasis;
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
package com.iqser.red.service.redaction.v1.model;
|
package com.iqser.red.service.redaction.v1.model;
|
||||||
|
|
||||||
public enum ManualRedactionType {
|
public enum ManualRedactionType {
|
||||||
ADD, REMOVE, FORCE_REDACT, RECATEGORIZE
|
ADD, REMOVE, FORCE_REDACT, RECATEGORIZE, LEGAL_BASIS_CHANGE
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,6 +29,9 @@ public class ManualRedactions {
|
|||||||
@Builder.Default
|
@Builder.Default
|
||||||
private Set<ManualImageRecategorization> imageRecategorizations = new HashSet<>();
|
private Set<ManualImageRecategorization> imageRecategorizations = new HashSet<>();
|
||||||
|
|
||||||
|
@Builder.Default
|
||||||
|
private Set<ManualLegalBasisChange> manualLegalBasisChanges = new HashSet<>();
|
||||||
|
|
||||||
@Builder.Default
|
@Builder.Default
|
||||||
private Map<String, List<Comment>> comments = new HashMap<>();
|
private Map<String, List<Comment>> comments = new HashMap<>();
|
||||||
|
|
||||||
|
|||||||
@ -52,5 +52,6 @@ public class RedactionLogEntry {
|
|||||||
private boolean excluded;
|
private boolean excluded;
|
||||||
|
|
||||||
private String recategorizationType;
|
private String recategorizationType;
|
||||||
|
private String legalBasisChangeValue;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,6 +20,7 @@ import com.iqser.red.service.redaction.v1.model.Comment;
|
|||||||
import com.iqser.red.service.redaction.v1.model.IdRemoval;
|
import com.iqser.red.service.redaction.v1.model.IdRemoval;
|
||||||
import com.iqser.red.service.redaction.v1.model.ManualForceRedact;
|
import com.iqser.red.service.redaction.v1.model.ManualForceRedact;
|
||||||
import com.iqser.red.service.redaction.v1.model.ManualImageRecategorization;
|
import com.iqser.red.service.redaction.v1.model.ManualImageRecategorization;
|
||||||
|
import com.iqser.red.service.redaction.v1.model.ManualLegalBasisChange;
|
||||||
import com.iqser.red.service.redaction.v1.model.ManualRedactionEntry;
|
import com.iqser.red.service.redaction.v1.model.ManualRedactionEntry;
|
||||||
import com.iqser.red.service.redaction.v1.model.ManualRedactions;
|
import com.iqser.red.service.redaction.v1.model.ManualRedactions;
|
||||||
import com.iqser.red.service.redaction.v1.model.Rectangle;
|
import com.iqser.red.service.redaction.v1.model.Rectangle;
|
||||||
@ -297,8 +298,9 @@ public class ReanalyzeService {
|
|||||||
return new HashSet<>();
|
return new HashSet<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
return Stream.concat(manualRedactions.getImageRecategorizations().stream().map(ManualImageRecategorization::getId),
|
return Stream.concat(manualRedactions.getManualLegalBasisChanges().stream().map(ManualLegalBasisChange::getId),
|
||||||
Stream.concat(manualRedactions.getIdsToRemove().stream().map(IdRemoval::getId), manualRedactions.getForceRedacts().stream().map(ManualForceRedact::getId)))
|
Stream.concat(manualRedactions.getImageRecategorizations().stream().map(ManualImageRecategorization::getId),
|
||||||
|
Stream.concat(manualRedactions.getIdsToRemove().stream().map(IdRemoval::getId), manualRedactions.getForceRedacts().stream().map(ManualForceRedact::getId))))
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -175,6 +175,32 @@ public class RedactionLogCreatorService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (manualRedactions != null && !manualRedactions.getManualLegalBasisChanges().isEmpty()) {
|
||||||
|
for (ManualLegalBasisChange manualLegalBasisChange : manualRedactions.getManualLegalBasisChanges()) {
|
||||||
|
if (manualLegalBasisChange.getId().equals(id)) {
|
||||||
|
String manualOverrideReason = null;
|
||||||
|
if (manualLegalBasisChange.getStatus().equals(Status.APPROVED)) {
|
||||||
|
redactionLogEntry.setStatus(Status.APPROVED);
|
||||||
|
manualOverrideReason = image.getRedactionReason() + ", legal basis was manually changed";
|
||||||
|
redactionLogEntry.setLegalBasis(manualLegalBasisChange.getLegalBasis());
|
||||||
|
} else if (manualLegalBasisChange.getStatus().equals(Status.REQUESTED)) {
|
||||||
|
manualOverrideReason = image.getRedactionReason() + ", legal basis change requested";
|
||||||
|
redactionLogEntry.setStatus(Status.REQUESTED);
|
||||||
|
redactionLogEntry.setColor(getColorForImage(image, dossierTemplateId, true));
|
||||||
|
redactionLogEntry.setLegalBasisChangeValue(manualLegalBasisChange.getLegalBasis());
|
||||||
|
} else {
|
||||||
|
redactionLogEntry.setStatus(Status.DECLINED);
|
||||||
|
}
|
||||||
|
|
||||||
|
image.setRedactionReason(manualOverrideReason != null ? manualOverrideReason : image.getRedactionReason());
|
||||||
|
redactionLogEntry.setReason(manualOverrideReason);
|
||||||
|
redactionLogEntry.setManual(true);
|
||||||
|
redactionLogEntry.setManualRedactionType(ManualRedactionType.LEGAL_BASIS_CHANGE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
redactionLogEntities.add(redactionLogEntry);
|
redactionLogEntities.add(redactionLogEntry);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,6 +304,31 @@ public class RedactionLogCreatorService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (manualRedactions != null && !manualRedactions.getManualLegalBasisChanges().isEmpty()) {
|
||||||
|
for (ManualLegalBasisChange manualLegalBasisChange : manualRedactions.getManualLegalBasisChanges()) {
|
||||||
|
if (manualLegalBasisChange.getId().equals(entityPositionSequence.getId())) {
|
||||||
|
String manualOverrideReason = null;
|
||||||
|
if (manualLegalBasisChange.getStatus().equals(Status.APPROVED)) {
|
||||||
|
redactionLogEntry.setStatus(Status.APPROVED);
|
||||||
|
manualOverrideReason = entity.getRedactionReason() + ", legal basis was manually changed";
|
||||||
|
redactionLogEntry.setLegalBasis(manualLegalBasisChange.getLegalBasis());
|
||||||
|
} else if (manualLegalBasisChange.getStatus().equals(Status.REQUESTED)) {
|
||||||
|
manualOverrideReason = entity.getRedactionReason() + ", legal basis change requested";
|
||||||
|
redactionLogEntry.setStatus(Status.REQUESTED);
|
||||||
|
redactionLogEntry.setColor(getColor(entity, dossierTemplateId, true));
|
||||||
|
redactionLogEntry.setLegalBasisChangeValue(manualLegalBasisChange.getLegalBasis());
|
||||||
|
} else {
|
||||||
|
redactionLogEntry.setStatus(Status.DECLINED);
|
||||||
|
}
|
||||||
|
|
||||||
|
entity.setRedactionReason(manualOverrideReason != null ? manualOverrideReason : entity.getRedactionReason());
|
||||||
|
redactionLogEntry.setReason(manualOverrideReason);
|
||||||
|
redactionLogEntry.setManual(true);
|
||||||
|
redactionLogEntry.setManualRedactionType(ManualRedactionType.LEGAL_BASIS_CHANGE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (CollectionUtils.isNotEmpty(entityPositionSequence.getSequences())) {
|
if (CollectionUtils.isNotEmpty(entityPositionSequence.getSequences())) {
|
||||||
List<Rectangle> rectanglesPerLine = getRectanglesPerLine(entityPositionSequence.getSequences()
|
List<Rectangle> rectanglesPerLine = getRectanglesPerLine(entityPositionSequence.getSequences()
|
||||||
.stream()
|
.stream()
|
||||||
|
|||||||
@ -775,6 +775,7 @@ public class RedactionIntegrationTest {
|
|||||||
.status(Status.APPROVED)
|
.status(Status.APPROVED)
|
||||||
.build()));
|
.build()));
|
||||||
|
|
||||||
|
|
||||||
manualRedactions.getComments().put("e5be0f1d941bbb92a068e198648d06c4", List.of(comment));
|
manualRedactions.getComments().put("e5be0f1d941bbb92a068e198648d06c4", List.of(comment));
|
||||||
manualRedactions.getComments().put("0836727c3508a0b2ea271da69c04cc2f", List.of(comment));
|
manualRedactions.getComments().put("0836727c3508a0b2ea271da69c04cc2f", List.of(comment));
|
||||||
manualRedactions.getComments().put(manualAddId, List.of(comment));
|
manualRedactions.getComments().put(manualAddId, List.of(comment));
|
||||||
@ -794,14 +795,21 @@ public class RedactionIntegrationTest {
|
|||||||
request.setManualRedactions(manualRedactions);
|
request.setManualRedactions(manualRedactions);
|
||||||
AnalyzeResult result = reanalyzeService.analyze(request);
|
AnalyzeResult result = reanalyzeService.analyze(request);
|
||||||
|
|
||||||
|
|
||||||
manualRedactions.getEntriesToAdd().add(manualRedactionEntry);
|
manualRedactions.getEntriesToAdd().add(manualRedactionEntry);
|
||||||
manualRedactions.setIdsToRemove(Set.of(IdRemoval.builder()
|
manualRedactions.setIdsToRemove(Set.of(IdRemoval.builder()
|
||||||
.id("5b940b2cb401ed9f5be6fc24f6e77bcf")
|
.id("5b940b2cb401ed9f5be6fc24f6e77bcf")
|
||||||
.status(Status.APPROVED)
|
.status(Status.APPROVED)
|
||||||
.build()));
|
.build()));
|
||||||
|
manualRedactions.setManualLegalBasisChanges(Set.of(ManualLegalBasisChange.builder()
|
||||||
|
.id("675eba69b0c2917de55462c817adaa05")
|
||||||
|
.legalBasis("Manual Legal Basis Change")
|
||||||
|
.status(Status.APPROVED)
|
||||||
|
.build()));
|
||||||
|
|
||||||
reanalyzeService.reanalyze(request);
|
reanalyzeService.reanalyze(request);
|
||||||
|
|
||||||
|
var redactionLog = redactionStorageService.getRedactionLog(TEST_DOSSIER_ID, TEST_FILE_ID);
|
||||||
|
|
||||||
AnnotateResponse annotateResponse = redactionController.annotate(AnnotateRequest.builder()
|
AnnotateResponse annotateResponse = redactionController.annotate(AnnotateRequest.builder()
|
||||||
.dossierId(TEST_DOSSIER_ID)
|
.dossierId(TEST_DOSSIER_ID)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user