Pull request #174: RED-1326: Enabled to recategorize images
Merge in RED/redaction-service from RED-1326 to master * commit '8ff3e463eae960a35e11fce7589e24131ccb51f2': RED-1326: Enabled to recategorize images
This commit is contained in:
commit
03b8a95c33
@ -0,0 +1,21 @@
|
|||||||
|
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 ManualImageRecategorization {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
private String user;
|
||||||
|
private Status status;
|
||||||
|
private String type;
|
||||||
|
private String legalBasis;
|
||||||
|
private boolean redacted;
|
||||||
|
|
||||||
|
}
|
||||||
@ -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
|
ADD, REMOVE, FORCE_REDACT, RECATEGORIZE
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,6 +26,9 @@ public class ManualRedactions {
|
|||||||
@Builder.Default
|
@Builder.Default
|
||||||
private Set<ManualRedactionEntry> entriesToAdd = new HashSet<>();
|
private Set<ManualRedactionEntry> entriesToAdd = new HashSet<>();
|
||||||
|
|
||||||
|
@Builder.Default
|
||||||
|
private Set<ManualImageRecategorization> imageRecategorizations = new HashSet<>();
|
||||||
|
|
||||||
@Builder.Default
|
@Builder.Default
|
||||||
private Map<String, List<Comment>> comments = new HashMap<>();
|
private Map<String, List<Comment>> comments = new HashMap<>();
|
||||||
|
|
||||||
|
|||||||
@ -51,4 +51,6 @@ public class RedactionLogEntry {
|
|||||||
|
|
||||||
private boolean excluded;
|
private boolean excluded;
|
||||||
|
|
||||||
|
private String recategorizationType;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,9 @@ import com.iqser.red.service.redaction.v1.server.redaction.utils.IdBuilder;
|
|||||||
import com.iqser.red.service.redaction.v1.server.tableextraction.model.AbstractTextContainer;
|
import com.iqser.red.service.redaction.v1.server.tableextraction.model.AbstractTextContainer;
|
||||||
import com.iqser.red.service.redaction.v1.server.tableextraction.model.Cell;
|
import com.iqser.red.service.redaction.v1.server.tableextraction.model.Cell;
|
||||||
import com.iqser.red.service.redaction.v1.server.tableextraction.model.Table;
|
import com.iqser.red.service.redaction.v1.server.tableextraction.model.Table;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@ -87,6 +89,36 @@ public class RedactionLogCreatorService {
|
|||||||
.section(image.getSection())
|
.section(image.getSection())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
if (manualRedactions != null && !manualRedactions.getImageRecategorizations().isEmpty()) {
|
||||||
|
for (ManualImageRecategorization recategorization : manualRedactions.getImageRecategorizations()) {
|
||||||
|
if (recategorization.getId().equals(id)) {
|
||||||
|
String manualOverrideReason = null;
|
||||||
|
if (recategorization.getStatus().equals(Status.APPROVED)) {
|
||||||
|
image.setType(recategorization.getType());
|
||||||
|
image.setRedaction(recategorization.isRedacted());
|
||||||
|
image.setLegalBasis(recategorization.getLegalBasis());
|
||||||
|
redactionLogEntry.setRedacted(recategorization.isRedacted());
|
||||||
|
redactionLogEntry.setStatus(Status.APPROVED);
|
||||||
|
redactionLogEntry.setLegalBasis(recategorization.getLegalBasis());
|
||||||
|
manualOverrideReason = image.getRedactionReason() + ", recategorized by manual override";
|
||||||
|
redactionLogEntry.setColor(getColorForImage(image, dossierTemplateId, false));
|
||||||
|
} else if (recategorization.getStatus().equals(Status.REQUESTED)) {
|
||||||
|
manualOverrideReason = image.getRedactionReason() + ", requested to recategorize";
|
||||||
|
redactionLogEntry.setStatus(Status.REQUESTED);
|
||||||
|
redactionLogEntry.setColor(getColorForImage(image, dossierTemplateId, true));
|
||||||
|
redactionLogEntry.setRecategorizationType(recategorization.getType());
|
||||||
|
} else {
|
||||||
|
redactionLogEntry.setStatus(Status.DECLINED);
|
||||||
|
}
|
||||||
|
|
||||||
|
image.setRedactionReason(manualOverrideReason != null ? manualOverrideReason : image.getRedactionReason());
|
||||||
|
redactionLogEntry.setReason(manualOverrideReason);
|
||||||
|
redactionLogEntry.setManual(true);
|
||||||
|
redactionLogEntry.setManualRedactionType(ManualRedactionType.RECATEGORIZE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (manualRedactions != null && !manualRedactions.getIdsToRemove().isEmpty()) {
|
if (manualRedactions != null && !manualRedactions.getIdsToRemove().isEmpty()) {
|
||||||
for (IdRemoval manualRemoval : manualRedactions.getIdsToRemove()) {
|
for (IdRemoval manualRemoval : manualRedactions.getIdsToRemove()) {
|
||||||
if (manualRemoval.getId().equals(id)) {
|
if (manualRemoval.getId().equals(id)) {
|
||||||
@ -276,20 +308,22 @@ public class RedactionLogCreatorService {
|
|||||||
|
|
||||||
List<Rectangle> rectangles = new ArrayList<>();
|
List<Rectangle> rectangles = new ArrayList<>();
|
||||||
if (textPositions.size() == 1) {
|
if (textPositions.size() == 1) {
|
||||||
rectangles.add( TextPositionSequence.fromData(textPositions, page).getRectangle());
|
rectangles.add(TextPositionSequence.fromData(textPositions, page).getRectangle());
|
||||||
} else {
|
} else {
|
||||||
float y = textPositions.get(0).getYDirAdj();
|
float y = textPositions.get(0).getYDirAdj();
|
||||||
int startIndex = 0;
|
int startIndex = 0;
|
||||||
for (int i = 1; i < textPositions.size(); i++) {
|
for (int i = 1; i < textPositions.size(); i++) {
|
||||||
float yDirAdj = textPositions.get(i).getYDirAdj();
|
float yDirAdj = textPositions.get(i).getYDirAdj();
|
||||||
if (yDirAdj != y) {
|
if (yDirAdj != y) {
|
||||||
rectangles.add( TextPositionSequence.fromData(textPositions.subList(startIndex, i), page).getRectangle());
|
rectangles.add(TextPositionSequence.fromData(textPositions.subList(startIndex, i), page)
|
||||||
|
.getRectangle());
|
||||||
y = yDirAdj;
|
y = yDirAdj;
|
||||||
startIndex = i;
|
startIndex = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (startIndex != textPositions.size()) {
|
if (startIndex != textPositions.size()) {
|
||||||
rectangles.add( TextPositionSequence.fromData(textPositions.subList(startIndex, textPositions.size()), page).getRectangle());
|
rectangles.add(TextPositionSequence.fromData(textPositions.subList(startIndex, textPositions.size()), page)
|
||||||
|
.getRectangle());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user