diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/AnalyzeService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/AnalyzeService.java index 7fbff336..4a2c1a03 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/AnalyzeService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/AnalyzeService.java @@ -122,7 +122,11 @@ public class AnalyzeService { dictionary.getVersion(), kieWrapperEntityRules.rulesVersion()); - return finalizeAnalysis(analyzeRequest, startTime, kieWrapperComponentRules, new EntityLogChanges(entityLog, false), document, + return finalizeAnalysis(analyzeRequest, + startTime, + kieWrapperComponentRules, + new EntityLogChanges(entityLog, false), + document, redactionLog, document.getNumberOfPages(), dictionary.getVersion(), @@ -165,7 +169,8 @@ public class AnalyzeService { entityLogCreatorService.updateVersionsAndReturnChanges(previousEntityLog, dictionaryIncrement.getDictionaryVersion(), analyzeRequest.getDossierTemplateId(), - false), document, + false), + document, previousRedactionLog, document.getNumberOfPages(), dictionaryIncrement.getDictionaryVersion(), @@ -206,7 +211,8 @@ public class AnalyzeService { return finalizeAnalysis(analyzeRequest, startTime, kieContainerCreationService.getLatestKieContainer(analyzeRequest.getDossierTemplateId(), RuleFileType.COMPONENT), - entityLogChanges, document, + entityLogChanges, + document, redactionLog, document.getNumberOfPages(), dictionaryIncrement.getDictionaryVersion(), @@ -240,7 +246,11 @@ public class AnalyzeService { } - private AnalyzeResult finalizeAnalysis(AnalyzeRequest analyzeRequest, long startTime, KieWrapper kieWrapperComponentRules, EntityLogChanges entityLogChanges, Document document, + private AnalyzeResult finalizeAnalysis(AnalyzeRequest analyzeRequest, + long startTime, + KieWrapper kieWrapperComponentRules, + EntityLogChanges entityLogChanges, + Document document, RedactionLog redactionLog, int numberOfPages, DictionaryVersion dictionaryVersion, @@ -284,7 +294,8 @@ public class AnalyzeService { private void computeComponentsWhenRulesArePresent(AnalyzeRequest analyzeRequest, - KieWrapper kieWrapperComponentRules, Document document, + KieWrapper kieWrapperComponentRules, + Document document, Set addedFileAttributes, EntityLogChanges entityLogChanges, DictionaryVersion dictionaryVersion) { @@ -294,7 +305,8 @@ public class AnalyzeService { } List components = componentDroolsExecutionService.executeRules(kieWrapperComponentRules.container(), - entityLogChanges.getEntityLog(), document, + entityLogChanges.getEntityLog(), + document, addedFileAttributes.stream().toList()); log.info("Finished component rule execution for file {} in dossier {}", analyzeRequest.getFileId(), analyzeRequest.getDossierId()); @@ -310,6 +322,8 @@ public class AnalyzeService { RedactionLog previousRedactionLog = redactionStorageService.getRedactionLog(analyzeRequest.getDossierId(), analyzeRequest.getFileId()); + previousRedactionLog.setRedactionLogEntry(previousRedactionLog.getRedactionLogEntry().stream().filter(entity -> !entity.getValue().isEmpty()).collect(Collectors.toList())); + redactionLog.setDictionaryVersion(dictionaryVersion.getDossierTemplateVersion()); redactionLog.setDossierDictionaryVersion(dictionaryVersion.getDossierVersion()); diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/EntityLogCreatorService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/EntityLogCreatorService.java index 5c32c3d4..1ee4ded7 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/EntityLogCreatorService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/EntityLogCreatorService.java @@ -90,10 +90,13 @@ public class EntityLogCreatorService { Set sectionsToReanalyseIds, DictionaryVersion dictionaryVersion) { + previousEntityLog.setEntityLogEntry(previousEntityLog.getEntityLogEntry().stream().filter(entity -> !entity.getValue().isEmpty()).collect(Collectors.toList())); // fix broken entityLogs with empty entries + List newEntityLogEntries = createEntityLogEntries(document, analyzeRequest.getDossierTemplateId(), notFoundManualRedactionEntries); Set newEntityIds = newEntityLogEntries.stream().map(EntityLogEntry::getId).collect(Collectors.toSet()); List entriesFromReanalysedSections = previousEntityLog.getEntityLogEntry() - .stream().filter(entry -> (newEntityIds.contains(entry.getId()) || sectionsToReanalyseIds.contains(entry.getContainingNodeId().get(0))) && !entry.getType() + .stream() + .filter(entry -> (newEntityIds.contains(entry.getId()) || sectionsToReanalyseIds.contains(entry.getContainingNodeId().get(0))) && !entry.getType() .equals(ImportedRedactionService.IMPORTED_REDACTION_TYPE)) .toList(); previousEntityLog.getEntityLogEntry().removeAll(entriesFromReanalysedSections); @@ -131,6 +134,7 @@ public class EntityLogCreatorService { document.getEntities() .stream() .filter(EntityLogCreatorService::isEntityOrRecommendationType) + .filter(entity -> !entity.getValue().isEmpty()) .forEach(entityNode -> entries.addAll(toEntityLogEntries(entityNode, dossierTemplateId))); document.streamAllImages().forEach(imageNode -> entries.add(createEntityLogEntry(imageNode, dossierTemplateId))); notFoundManualRedactionEntries.forEach(entityIdentifier -> entries.add(createEntityLogEntry(entityIdentifier, dossierTemplateId))); @@ -142,7 +146,11 @@ public class EntityLogCreatorService { private List createEntityLogEntriesFromActiveEntities(Document document, String dossierTemplateId, List notFoundManualRedactionEntries) { List entries = new ArrayList<>(); - document.getEntities().stream().filter(EntityLogCreatorService::isEntityOrRecommendationType).filter(IEntity::active) + document.getEntities() + .stream() + .filter(EntityLogCreatorService::isEntityOrRecommendationType) + .filter(IEntity::active) + .filter(entity -> !entity.getValue().isEmpty()) .forEach(entityNode -> entries.addAll(toEntityLogEntries(entityNode, dossierTemplateId))); document.streamAllImages().filter(IEntity::active).forEach(imageNode -> entries.add(createEntityLogEntry(imageNode, dossierTemplateId))); notFoundManualRedactionEntries.stream().filter(IEntity::active).forEach(entityIdentifier -> entries.add(createEntityLogEntry(entityIdentifier, dossierTemplateId))); @@ -172,7 +180,9 @@ public class EntityLogCreatorService { EntityLogEntry redactionLogEntry = createEntityLogEntry(textEntity, dossierTemplateId); redactionLogEntry.setId(positionOnPage.getId()); - List rectanglesPerLine = positionOnPage.getRectanglePerLine().stream().map(rectangle2D -> new Position(rectangle2D, positionOnPage.getPage().getNumber())) + List rectanglesPerLine = positionOnPage.getRectanglePerLine() + .stream() + .map(rectangle2D -> new Position(rectangle2D, positionOnPage.getPage().getNumber())) .toList(); redactionLogEntry.setPositions(rectanglesPerLine); diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/RedactionLogCreatorService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/RedactionLogCreatorService.java index 32928912..ca8d7fc8 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/RedactionLogCreatorService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/RedactionLogCreatorService.java @@ -54,6 +54,7 @@ public class RedactionLogCreatorService { .stream() .filter(RedactionLogCreatorService::isEntityOrRecommendationType) .filter(IEntity::active) + .filter(entity -> !entity.getValue().isEmpty()) .forEach(entityNode -> entries.addAll(toRedactionLogEntries(entityNode, dossierTemplateId, comments))); document.streamAllImages().filter(image -> !image.removed()).forEach(imageNode -> entries.add(createRedactionLogEntry(imageNode, dossierTemplateId, comments))); notFoundManualRedactionEntries.forEach(entityIdentifier -> entries.add(createRedactionLogEntry(entityIdentifier, dossierTemplateId, comments)));