RED-6476: Changed handling of manual-remove-redactions.
For cases where a manual-remove-redaction was applied to a redaction, that has multiple source (e.g. dictionary + rule), we still apply it when merging the redaction-log, instead of skipping it. This prevents a redaction from reappearing, when it has been removed by the user.
This commit is contained in:
parent
92279c631b
commit
bfafe1d8b0
@ -28,6 +28,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp
|
|||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.Type;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.Type;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Change;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Change;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.ChangeType;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.ChangeType;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Engine;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.ManualChange;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.ManualChange;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.ManualRedactionType;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.ManualRedactionType;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Point;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Point;
|
||||||
@ -189,157 +190,30 @@ public class RedactionLogMergeService {
|
|||||||
|
|
||||||
manualRedactionWrappers.forEach(mrw -> {
|
manualRedactionWrappers.forEach(mrw -> {
|
||||||
|
|
||||||
if (mrw.getItem() instanceof ManualImageRecategorization) {
|
Object item = mrw.getItem();
|
||||||
var imageRecategorization = (ManualImageRecategorization) mrw.getItem();
|
if (item instanceof ManualImageRecategorization) {
|
||||||
String manualOverrideReason = null;
|
var imageRecategorization = (ManualImageRecategorization) item;
|
||||||
if (imageRecategorization.getStatus().equals(AnnotationStatus.APPROVED)) {
|
processManualImageRecategorization(redactionLogEntry, types, colors, imageRecategorization);
|
||||||
|
|
||||||
redactionLogEntry.setType(imageRecategorization.getType());
|
|
||||||
redactionLogEntry.setSection("Image:" + redactionLogEntry.getType());
|
|
||||||
|
|
||||||
if (isHint(types, imageRecategorization.getType())) {
|
|
||||||
redactionLogEntry.setRedacted(false);
|
|
||||||
redactionLogEntry.setHint(true);
|
|
||||||
} else {
|
|
||||||
redactionLogEntry.setHint(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", recategorized by manual override");
|
|
||||||
} else if (imageRecategorization.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
|
||||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", requested to recategorize");
|
|
||||||
redactionLogEntry.setColor(getColor(redactionLogEntry.getType(), colors, false, redactionLogEntry.isRedacted(), false, types));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (manualOverrideReason != null) {
|
|
||||||
redactionLogEntry.setReason(manualOverrideReason);
|
|
||||||
}
|
|
||||||
|
|
||||||
redactionLogEntry.getManualChanges()
|
|
||||||
.add(ManualChange.from(imageRecategorization)
|
|
||||||
.withManualRedactionType(ManualRedactionType.RECATEGORIZE)
|
|
||||||
.withChange("type", imageRecategorization.getType()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mrw.getItem() instanceof IdRemoval) {
|
if (item instanceof IdRemoval) {
|
||||||
var manualRemoval = (IdRemoval) mrw.getItem();
|
var manualRemoval = (IdRemoval) item;
|
||||||
if (manualRemoval.getStatus().equals(AnnotationStatus.APPROVED) && manualRemoval.isRemoveFromDictionary()) {
|
processIdRemoval(redactionLogEntry, types, colors, manualRemoval);
|
||||||
log.debug("Skipping merge for dictionary-modifying entry");
|
|
||||||
} else {
|
|
||||||
String manualOverrideReason = null;
|
|
||||||
if (manualRemoval.getStatus().equals(AnnotationStatus.APPROVED)) {
|
|
||||||
redactionLogEntry.setRedacted(false);
|
|
||||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", removed by manual override");
|
|
||||||
redactionLogEntry.setColor(getColor(redactionLogEntry.getType(), colors, false, redactionLogEntry.isRedacted(), true, types));
|
|
||||||
redactionLogEntry.setHint(false);
|
|
||||||
} else if (manualRemoval.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
|
||||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", requested to remove");
|
|
||||||
redactionLogEntry.setColor(getColor(redactionLogEntry.getType(), colors, true, redactionLogEntry.isRedacted(), false, types));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (manualOverrideReason != null) {
|
|
||||||
redactionLogEntry.setReason(manualOverrideReason);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
redactionLogEntry.getManualChanges()
|
|
||||||
.add(ManualChange.from(manualRemoval)
|
|
||||||
.withManualRedactionType(manualRemoval.isRemoveFromDictionary() ? ManualRedactionType.REMOVE_FROM_DICTIONARY : ManualRedactionType.REMOVE_LOCALLY));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mrw.getItem() instanceof ManualForceRedaction) {
|
if (item instanceof ManualForceRedaction) {
|
||||||
var manualForceRedact = (ManualForceRedaction) mrw.getItem();
|
var manualForceRedact = (ManualForceRedaction) item;
|
||||||
String manualOverrideReason = null;
|
processManualForceRedaction(redactionLogEntry, types, colors, manualForceRedact);
|
||||||
var dictionaryIsHint = isHint(types, redactionLogEntry.getType());
|
|
||||||
if (manualForceRedact.getStatus().equals(AnnotationStatus.APPROVED)) {
|
|
||||||
// Forcing a skipped hint should result in a hint
|
|
||||||
if (dictionaryIsHint) {
|
|
||||||
redactionLogEntry.setHint(true);
|
|
||||||
} else {
|
|
||||||
redactionLogEntry.setRedacted(true);
|
|
||||||
}
|
|
||||||
redactionLogEntry.setColor(getColor(redactionLogEntry.getType(), colors, false, redactionLogEntry.isRedacted(), false, types));
|
|
||||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", forced by manual override");
|
|
||||||
redactionLogEntry.setLegalBasis(manualForceRedact.getLegalBasis());
|
|
||||||
} else if (manualForceRedact.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
|
||||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", requested to force " + (dictionaryIsHint ? "hint" : "redact"));
|
|
||||||
redactionLogEntry.setColor(getColor(redactionLogEntry.getType(), colors, true, redactionLogEntry.isRedacted(), false, types));
|
|
||||||
redactionLogEntry.setLegalBasis(manualForceRedact.getLegalBasis());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (manualOverrideReason != null) {
|
|
||||||
redactionLogEntry.setReason(manualOverrideReason);
|
|
||||||
}
|
|
||||||
|
|
||||||
var manualChange = ManualChange.from(manualForceRedact)
|
|
||||||
.withManualRedactionType(dictionaryIsHint ? ManualRedactionType.FORCE_HINT : ManualRedactionType.FORCE_REDACT);
|
|
||||||
|
|
||||||
redactionLogEntry.getManualChanges().add(manualChange);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mrw.getItem() instanceof ManualLegalBasisChange) {
|
if (item instanceof ManualLegalBasisChange) {
|
||||||
var manualLegalBasisChange = (ManualLegalBasisChange) mrw.getItem();
|
var manualLegalBasisChange = (ManualLegalBasisChange) item;
|
||||||
String manualOverrideReason = null;
|
processManualLegalBasisChange(redactionLogEntry, types, colors, manualLegalBasisChange);
|
||||||
if (manualLegalBasisChange.getStatus().equals(AnnotationStatus.APPROVED)) {
|
|
||||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", legal basis was manually changed");
|
|
||||||
redactionLogEntry.setLegalBasis(manualLegalBasisChange.getLegalBasis());
|
|
||||||
redactionLogEntry.setRedacted(true);
|
|
||||||
if (manualLegalBasisChange.getSection() != null) {
|
|
||||||
redactionLogEntry.setSection(manualLegalBasisChange.getSection());
|
|
||||||
}
|
|
||||||
if (redactionLogEntry.isRectangle() && manualLegalBasisChange.getValue() != null) {
|
|
||||||
redactionLogEntry.setValue(manualLegalBasisChange.getValue());
|
|
||||||
}
|
|
||||||
} else if (manualLegalBasisChange.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
|
||||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", legal basis change requested");
|
|
||||||
redactionLogEntry.setColor(getColor(redactionLogEntry.getType(), colors, true, redactionLogEntry.isRedacted(), false, types));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (manualOverrideReason != null) {
|
|
||||||
redactionLogEntry.setReason(manualOverrideReason);
|
|
||||||
}
|
|
||||||
|
|
||||||
var manualChange = ManualChange.from(manualLegalBasisChange).withManualRedactionType(ManualRedactionType.LEGAL_BASIS_CHANGE);
|
|
||||||
manualChange.withChange("legalBasis", manualLegalBasisChange.getLegalBasis());
|
|
||||||
if (manualLegalBasisChange.getSection() != null) {
|
|
||||||
manualChange.withChange("section", manualLegalBasisChange.getSection());
|
|
||||||
}
|
|
||||||
if (redactionLogEntry.isRectangle() && manualLegalBasisChange.getValue() != null) {
|
|
||||||
manualChange.withChange("value", manualLegalBasisChange.getValue());
|
|
||||||
}
|
|
||||||
redactionLogEntry.getManualChanges().add(manualChange);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mrw.getItem() instanceof ManualResizeRedaction) {
|
if (item instanceof ManualResizeRedaction) {
|
||||||
var manualResizeRedact = (ManualResizeRedaction) mrw.getItem();
|
var manualResizeRedact = (ManualResizeRedaction) item;
|
||||||
String manualOverrideReason = null;
|
processManualResizeRedaction(redactionLogEntry, types, colors, manualResizeRedact);
|
||||||
if (manualResizeRedact.getStatus().equals(AnnotationStatus.APPROVED)) {
|
|
||||||
redactionLogEntry.setColor(getColor(redactionLogEntry.getType(), colors, false, redactionLogEntry.isRedacted(), false, types));
|
|
||||||
redactionLogEntry.setPositions(convertPositions(manualResizeRedact.getPositions()));
|
|
||||||
if (!"signature".equalsIgnoreCase(redactionLogEntry.getType()) && !"logo".equalsIgnoreCase(redactionLogEntry.getType())) {
|
|
||||||
redactionLogEntry.setValue(manualResizeRedact.getValue());
|
|
||||||
}
|
|
||||||
// This is for backwards compatibility, now the text after/before is calculated during reanalysis because we need to find dict entries on positions where entries are resized to smaller.
|
|
||||||
if (manualResizeRedact.getTextBefore() != null || manualResizeRedact.getTextAfter() != null) {
|
|
||||||
redactionLogEntry.setTextBefore(manualResizeRedact.getTextBefore());
|
|
||||||
redactionLogEntry.setTextAfter(manualResizeRedact.getTextAfter());
|
|
||||||
}
|
|
||||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", resized by manual override");
|
|
||||||
} else if (manualResizeRedact.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
|
||||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", requested to resize redact");
|
|
||||||
redactionLogEntry.setColor(getColor(redactionLogEntry.getType(), colors, true, redactionLogEntry.isRedacted(), false, types));
|
|
||||||
redactionLogEntry.setPositions(convertPositions(manualResizeRedact.getPositions()));
|
|
||||||
|
|
||||||
// This is for backwards compatibility, now the text after/before is calculated during reanalysis because we need to find dict entries on positions where entries are resized to smaller.
|
|
||||||
if (manualResizeRedact.getTextBefore() != null || manualResizeRedact.getTextAfter() != null) {
|
|
||||||
redactionLogEntry.setTextBefore(manualResizeRedact.getTextBefore());
|
|
||||||
redactionLogEntry.setTextAfter(manualResizeRedact.getTextAfter());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
redactionLogEntry.setReason(manualOverrideReason);
|
|
||||||
redactionLogEntry.getManualChanges()
|
|
||||||
.add(ManualChange.from(manualResizeRedact).withManualRedactionType(ManualRedactionType.RESIZE).withChange("value", manualResizeRedact.getValue()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
@ -347,6 +221,36 @@ public class RedactionLogMergeService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void processManualImageRecategorization(RedactionLogEntry redactionLogEntry, List<Type> types, Colors colors, ManualImageRecategorization imageRecategorization) {
|
||||||
|
|
||||||
|
String manualOverrideReason = null;
|
||||||
|
if (imageRecategorization.getStatus().equals(AnnotationStatus.APPROVED)) {
|
||||||
|
|
||||||
|
redactionLogEntry.setType(imageRecategorization.getType());
|
||||||
|
redactionLogEntry.setSection("Image:" + redactionLogEntry.getType());
|
||||||
|
|
||||||
|
if (isHint(types, imageRecategorization.getType())) {
|
||||||
|
redactionLogEntry.setRedacted(false);
|
||||||
|
redactionLogEntry.setHint(true);
|
||||||
|
} else {
|
||||||
|
redactionLogEntry.setHint(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", recategorized by manual override");
|
||||||
|
} else if (imageRecategorization.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
||||||
|
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", requested to recategorize");
|
||||||
|
redactionLogEntry.setColor(getColor(redactionLogEntry.getType(), colors, false, redactionLogEntry.isRedacted(), false, types));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (manualOverrideReason != null) {
|
||||||
|
redactionLogEntry.setReason(manualOverrideReason);
|
||||||
|
}
|
||||||
|
|
||||||
|
redactionLogEntry.getManualChanges()
|
||||||
|
.add(ManualChange.from(imageRecategorization).withManualRedactionType(ManualRedactionType.RECATEGORIZE).withChange("type", imageRecategorization.getType()));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private String mergeReasonIfNecessary(String currentReason, String addition) {
|
private String mergeReasonIfNecessary(String currentReason, String addition) {
|
||||||
|
|
||||||
if (currentReason != null) {
|
if (currentReason != null) {
|
||||||
@ -360,6 +264,138 @@ public class RedactionLogMergeService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void processIdRemoval(RedactionLogEntry redactionLogEntry, List<Type> types, Colors colors, IdRemoval manualRemoval) {
|
||||||
|
|
||||||
|
boolean isApprovedRedaction = manualRemoval.getStatus().equals(AnnotationStatus.APPROVED);
|
||||||
|
if (isApprovedRedaction && manualRemoval.isRemoveFromDictionary() && isBasedOnDictionaryOnly(redactionLogEntry)) {
|
||||||
|
log.debug("Skipping merge for dictionary-modifying entry");
|
||||||
|
} else {
|
||||||
|
String redactionLogEntryType = redactionLogEntry.getType();
|
||||||
|
String manualOverrideReason = null;
|
||||||
|
if (isApprovedRedaction) {
|
||||||
|
redactionLogEntry.setRedacted(false);
|
||||||
|
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", removed by manual override");
|
||||||
|
redactionLogEntry.setColor(getColor(redactionLogEntryType, colors, false, redactionLogEntry.isRedacted(), true, types));
|
||||||
|
redactionLogEntry.setHint(false);
|
||||||
|
} else if (manualRemoval.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
||||||
|
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", requested to remove");
|
||||||
|
redactionLogEntry.setColor(getColor(redactionLogEntryType, colors, true, redactionLogEntry.isRedacted(), false, types));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (manualOverrideReason != null) {
|
||||||
|
redactionLogEntry.setReason(manualOverrideReason);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
redactionLogEntry.getManualChanges()
|
||||||
|
.add(ManualChange.from(manualRemoval)
|
||||||
|
.withManualRedactionType(manualRemoval.isRemoveFromDictionary() ? ManualRedactionType.REMOVE_FROM_DICTIONARY : ManualRedactionType.REMOVE_LOCALLY));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private boolean isBasedOnDictionaryOnly(RedactionLogEntry redactionLogEntry) {
|
||||||
|
|
||||||
|
return redactionLogEntry.getEngines().contains(Engine.DICTIONARY) && redactionLogEntry.getEngines().size() == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void processManualForceRedaction(RedactionLogEntry redactionLogEntry, List<Type> types, Colors colors, ManualForceRedaction manualForceRedact) {
|
||||||
|
|
||||||
|
String manualOverrideReason = null;
|
||||||
|
var dictionaryIsHint = isHint(types, redactionLogEntry.getType());
|
||||||
|
if (manualForceRedact.getStatus().equals(AnnotationStatus.APPROVED)) {
|
||||||
|
// Forcing a skipped hint should result in a hint
|
||||||
|
if (dictionaryIsHint) {
|
||||||
|
redactionLogEntry.setHint(true);
|
||||||
|
} else {
|
||||||
|
redactionLogEntry.setRedacted(true);
|
||||||
|
}
|
||||||
|
redactionLogEntry.setColor(getColor(redactionLogEntry.getType(), colors, false, redactionLogEntry.isRedacted(), false, types));
|
||||||
|
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", forced by manual override");
|
||||||
|
redactionLogEntry.setLegalBasis(manualForceRedact.getLegalBasis());
|
||||||
|
} else if (manualForceRedact.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
||||||
|
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", requested to force " + (dictionaryIsHint ? "hint" : "redact"));
|
||||||
|
redactionLogEntry.setColor(getColor(redactionLogEntry.getType(), colors, true, redactionLogEntry.isRedacted(), false, types));
|
||||||
|
redactionLogEntry.setLegalBasis(manualForceRedact.getLegalBasis());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (manualOverrideReason != null) {
|
||||||
|
redactionLogEntry.setReason(manualOverrideReason);
|
||||||
|
}
|
||||||
|
|
||||||
|
var manualChange = ManualChange.from(manualForceRedact).withManualRedactionType(dictionaryIsHint ? ManualRedactionType.FORCE_HINT : ManualRedactionType.FORCE_REDACT);
|
||||||
|
|
||||||
|
redactionLogEntry.getManualChanges().add(manualChange);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void processManualLegalBasisChange(RedactionLogEntry redactionLogEntry, List<Type> types, Colors colors, ManualLegalBasisChange manualLegalBasisChange) {
|
||||||
|
|
||||||
|
String manualOverrideReason = null;
|
||||||
|
if (manualLegalBasisChange.getStatus().equals(AnnotationStatus.APPROVED)) {
|
||||||
|
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", legal basis was manually changed");
|
||||||
|
redactionLogEntry.setLegalBasis(manualLegalBasisChange.getLegalBasis());
|
||||||
|
redactionLogEntry.setRedacted(true);
|
||||||
|
if (manualLegalBasisChange.getSection() != null) {
|
||||||
|
redactionLogEntry.setSection(manualLegalBasisChange.getSection());
|
||||||
|
}
|
||||||
|
if (redactionLogEntry.isRectangle() && manualLegalBasisChange.getValue() != null) {
|
||||||
|
redactionLogEntry.setValue(manualLegalBasisChange.getValue());
|
||||||
|
}
|
||||||
|
} else if (manualLegalBasisChange.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
||||||
|
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", legal basis change requested");
|
||||||
|
redactionLogEntry.setColor(getColor(redactionLogEntry.getType(), colors, true, redactionLogEntry.isRedacted(), false, types));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (manualOverrideReason != null) {
|
||||||
|
redactionLogEntry.setReason(manualOverrideReason);
|
||||||
|
}
|
||||||
|
|
||||||
|
var manualChange = ManualChange.from(manualLegalBasisChange).withManualRedactionType(ManualRedactionType.LEGAL_BASIS_CHANGE);
|
||||||
|
manualChange.withChange("legalBasis", manualLegalBasisChange.getLegalBasis());
|
||||||
|
if (manualLegalBasisChange.getSection() != null) {
|
||||||
|
manualChange.withChange("section", manualLegalBasisChange.getSection());
|
||||||
|
}
|
||||||
|
if (redactionLogEntry.isRectangle() && manualLegalBasisChange.getValue() != null) {
|
||||||
|
manualChange.withChange("value", manualLegalBasisChange.getValue());
|
||||||
|
}
|
||||||
|
redactionLogEntry.getManualChanges().add(manualChange);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void processManualResizeRedaction(RedactionLogEntry redactionLogEntry, List<Type> types, Colors colors, ManualResizeRedaction manualResizeRedact) {
|
||||||
|
|
||||||
|
String manualOverrideReason = null;
|
||||||
|
if (manualResizeRedact.getStatus().equals(AnnotationStatus.APPROVED)) {
|
||||||
|
redactionLogEntry.setColor(getColor(redactionLogEntry.getType(), colors, false, redactionLogEntry.isRedacted(), false, types));
|
||||||
|
redactionLogEntry.setPositions(convertPositions(manualResizeRedact.getPositions()));
|
||||||
|
if (!"signature".equalsIgnoreCase(redactionLogEntry.getType()) && !"logo".equalsIgnoreCase(redactionLogEntry.getType())) {
|
||||||
|
redactionLogEntry.setValue(manualResizeRedact.getValue());
|
||||||
|
}
|
||||||
|
// This is for backwards compatibility, now the text after/before is calculated during reanalysis because we need to find dict entries on positions where entries are resized to smaller.
|
||||||
|
if (manualResizeRedact.getTextBefore() != null || manualResizeRedact.getTextAfter() != null) {
|
||||||
|
redactionLogEntry.setTextBefore(manualResizeRedact.getTextBefore());
|
||||||
|
redactionLogEntry.setTextAfter(manualResizeRedact.getTextAfter());
|
||||||
|
}
|
||||||
|
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", resized by manual override");
|
||||||
|
} else if (manualResizeRedact.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
||||||
|
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", requested to resize redact");
|
||||||
|
redactionLogEntry.setColor(getColor(redactionLogEntry.getType(), colors, true, redactionLogEntry.isRedacted(), false, types));
|
||||||
|
redactionLogEntry.setPositions(convertPositions(manualResizeRedact.getPositions()));
|
||||||
|
|
||||||
|
// This is for backwards compatibility, now the text after/before is calculated during reanalysis because we need to find dict entries on positions where entries are resized to smaller.
|
||||||
|
if (manualResizeRedact.getTextBefore() != null || manualResizeRedact.getTextAfter() != null) {
|
||||||
|
redactionLogEntry.setTextBefore(manualResizeRedact.getTextBefore());
|
||||||
|
redactionLogEntry.setTextAfter(manualResizeRedact.getTextAfter());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
redactionLogEntry.setReason(manualOverrideReason);
|
||||||
|
redactionLogEntry.getManualChanges()
|
||||||
|
.add(ManualChange.from(manualResizeRedact).withManualRedactionType(ManualRedactionType.RESIZE).withChange("value", manualResizeRedact.getValue()));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public List<RedactionLogEntry> addManualAddEntries(SectionGrid sectionGrid,
|
public List<RedactionLogEntry> addManualAddEntries(SectionGrid sectionGrid,
|
||||||
Set<ManualRedactionEntry> manualAdds,
|
Set<ManualRedactionEntry> manualAdds,
|
||||||
Map<String, List<Comment>> comments,
|
Map<String, List<Comment>> comments,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user