Merge branch 'RED-8313-dom' into 'master'

RED-8313: Add ignored entries as skipped in reports

Closes RED-8313

See merge request redactmanager/redaction-report-service!51
This commit is contained in:
Dominique Eifländer 2024-02-05 12:56:11 +01:00
commit b469182f2f

View File

@ -100,96 +100,87 @@ public class EntityLogConverterService {
List<ReportRedactionEntry> reportEntries = new ArrayList<>();
entityLog.getEntityLogEntry().forEach(entry -> {
var isSkipped = entry.getState() != EntryState.APPLIED && !(entry.getEntryType().equals(EntryType.HINT) || entry.getState().equals(EntryState.IGNORED));
if (entry.getState() == EntryState.APPLIED || isSkipped) {
if (entry.getState().equals(EntryState.REMOVED)) {
return;
}
if (lastChangeIsRemoved(entry.getChanges())) {
return;
}
if (entry.getEntryType() == EntryType.HINT) {
return;
}
if (entry.isExcluded()) {
return;
}
if (entry.isExcluded()) {
return;
}
if (entry.getEntryType() == EntryType.RECOMMENDATION) {
return;
}
if (entry.getEntryType() == EntryType.RECOMMENDATION) {
return;
}
if (entry.getEntryType() == EntryType.FALSE_POSITIVE) {
return;
}
if (entry.getEntryType() == EntryType.FALSE_POSITIVE) {
return;
}
if (!entry.getManualChanges().isEmpty() && (entry.getEntryType() == EntryType.IMAGE || entry.getEntryType() == EntryType.IMAGE_HINT) && entry.getManualChanges()
.get(entry.getManualChanges().size() - 1)
.getProcessedDate() == null && entry.getManualChanges()
.get(entry.getManualChanges().size() - 1)
.getManualRedactionType()
.equals(ManualRedactionType.RECATEGORIZE)) {
return;
}
if (settings.getMaxRedactionEntryValueLength() > 0 && entry.getValue() != null && entry.getValue().length() > settings.getMaxRedactionEntryValueLength()) {
entry.setValue(entry.getValue().substring(0, settings.getMaxRedactionEntryValueLength()) + "...");
log.warn("Truncated value in dossier {}, file {} on pages {} to {} chars",
dossierId,
fileId,
entry.getPositions().stream().map(Position::getPageNumber).collect(Collectors.toList()),
settings.getMaxRedactionEntryValueLength());
}
if (!entry.getManualChanges().isEmpty() && (entry.isDictionaryEntry() || entry.isDossierDictionaryEntry()) && entry.getManualChanges()
.get(entry.getManualChanges().size() - 1)
.getProcessedDate() == null && entry.getManualChanges()
.get(entry.getManualChanges().size() - 1)
.getManualRedactionType()
.equals(ManualRedactionType.ADD_TO_DICTIONARY)) {
return;
}
if (settings.getMaxSectionLength() > 0 && entry.getSection() != null && entry.getSection().length() > settings.getMaxSectionLength()) {
entry.setSection(entry.getSection().substring(0, settings.getMaxSectionLength()) + "...");
log.warn("Truncated section in dossier {}, file {} on pages {} to {} chars",
dossierId,
fileId,
entry.getPositions().stream().map(Position::getPageNumber).collect(Collectors.toList()),
settings.getMaxSectionLength());
}
if (settings.getMaxRedactionEntryValueLength() > 0 && entry.getValue() != null && entry.getValue().length() > settings.getMaxRedactionEntryValueLength()) {
entry.setValue(entry.getValue().substring(0, settings.getMaxRedactionEntryValueLength()) + "...");
log.warn("Truncated value in dossier {}, file {} on pages {} to {} chars",
dossierId,
fileId,
entry.getPositions().stream().map(Position::getPageNumber).collect(Collectors.toList()),
settings.getMaxRedactionEntryValueLength());
}
if (!entry.getManualChanges().isEmpty() && (entry.getEntryType() == EntryType.IMAGE || entry.getEntryType() == EntryType.IMAGE_HINT) && entry.getManualChanges()
.get(entry.getManualChanges().size() - 1)
.getProcessedDate() == null && entry.getManualChanges()
.get(entry.getManualChanges().size() - 1)
.getManualRedactionType()
.equals(ManualRedactionType.RECATEGORIZE)) {
return;
}
if (settings.getMaxSectionLength() > 0 && entry.getSection() != null && entry.getSection().length() > settings.getMaxSectionLength()) {
entry.setSection(entry.getSection().substring(0, settings.getMaxSectionLength()) + "...");
log.warn("Truncated section in dossier {}, file {} on pages {} to {} chars",
dossierId,
fileId,
entry.getPositions().stream().map(Position::getPageNumber).collect(Collectors.toList()),
settings.getMaxSectionLength());
}
if (!entry.getManualChanges().isEmpty() && (entry.isDictionaryEntry() || entry.isDossierDictionaryEntry()) && entry.getManualChanges()
.get(entry.getManualChanges().size() - 1)
.getProcessedDate() == null && entry.getManualChanges()
.get(entry.getManualChanges().size() - 1)
.getManualRedactionType()
.equals(ManualRedactionType.ADD_TO_DICTIONARY)) {
return;
}
Set<Integer> pages = new HashSet<>();
for (Position position : entry.getPositions()) {
if (!entry.getManualChanges().isEmpty() && entry.getEntryType().equals(EntryType.HINT) && entry.getManualChanges()
.get(entry.getManualChanges().size() - 1)
.getProcessedDate() == null && entry.getManualChanges()
.get(entry.getManualChanges().size() - 1)
.getManualRedactionType()
.equals(ManualRedactionType.FORCE_REDACT)) {
return;
}
Set<Integer> pages = new HashSet<>();
for (Position position : entry.getPositions()) {
if (pages.isEmpty() || !pages.contains(position.getPageNumber())) {
pages.add(position.getPageNumber());
reportEntries.add(new ReportRedactionEntry(position.getPageNumber(),
position.x(),
position.y(),
getSection(entry, position),
checkTextForNull(entry.getLegalBasis()) + " " + legalBasisMappings.stream()
.filter(lbm -> lbm.getReason().equalsIgnoreCase(entry.getLegalBasis()))
.findAny()
.map(EntityLogLegalBasis::getDescription)
.orElse(""),
entry.getLegalBasis(),
legalBasisMappings.stream()
.filter(lbm -> lbm.getReason().equalsIgnoreCase(entry.getLegalBasis()))
.findAny()
.map(EntityLogLegalBasis::getDescription)
.orElse(""),
checkTextForNull(entry.getTextBefore()) + entry.getValue() + checkTextForNull(entry.getTextAfter()),
determineValue(entry),
mapOfEntityDisplayName.get(entry.getType()),
isSkipped));
}
if (pages.isEmpty() || !pages.contains(position.getPageNumber())) {
pages.add(position.getPageNumber());
reportEntries.add(new ReportRedactionEntry(position.getPageNumber(),
position.x(),
position.y(),
getSection(entry, position),
checkTextForNull(entry.getLegalBasis()) + " " + legalBasisMappings.stream()
.filter(lbm -> lbm.getReason().equalsIgnoreCase(entry.getLegalBasis()))
.findAny()
.map(EntityLogLegalBasis::getDescription)
.orElse(""),
entry.getLegalBasis(),
legalBasisMappings.stream()
.filter(lbm -> lbm.getReason().equalsIgnoreCase(entry.getLegalBasis()))
.findAny()
.map(EntityLogLegalBasis::getDescription)
.orElse(""),
checkTextForNull(entry.getTextBefore()) + entry.getValue() + checkTextForNull(entry.getTextAfter()),
determineValue(entry),
mapOfEntityDisplayName.get(entry.getType()),
entry.getState() == EntryState.SKIPPED || entry.getState() == EntryState.IGNORED));
}
}
});