draft
This commit is contained in:
parent
93299c4e5f
commit
a598022c2b
@ -22,16 +22,9 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog
|
|||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogChanges;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogChanges;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.imported.ImportedRedactions;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.imported.ImportedRedactions;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.legalbasis.LegalBasis;
|
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLog;
|
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLogChanges;
|
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLogEntry;
|
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLogLegalBasis;
|
|
||||||
import com.iqser.red.service.redaction.v1.server.RedactionServiceSettings;
|
import com.iqser.red.service.redaction.v1.server.RedactionServiceSettings;
|
||||||
import com.iqser.red.service.redaction.v1.server.client.LegalBasisClient;
|
|
||||||
import com.iqser.red.service.redaction.v1.server.client.model.NerEntitiesModel;
|
import com.iqser.red.service.redaction.v1.server.client.model.NerEntitiesModel;
|
||||||
import com.iqser.red.service.redaction.v1.server.model.KieWrapper;
|
import com.iqser.red.service.redaction.v1.server.model.KieWrapper;
|
||||||
import com.iqser.red.service.redaction.v1.server.model.PrecursorEntity;
|
|
||||||
import com.iqser.red.service.redaction.v1.server.model.NerEntities;
|
import com.iqser.red.service.redaction.v1.server.model.NerEntities;
|
||||||
import com.iqser.red.service.redaction.v1.server.model.component.Component;
|
import com.iqser.red.service.redaction.v1.server.model.component.Component;
|
||||||
import com.iqser.red.service.redaction.v1.server.model.dictionary.Dictionary;
|
import com.iqser.red.service.redaction.v1.server.model.dictionary.Dictionary;
|
||||||
@ -40,6 +33,8 @@ import com.iqser.red.service.redaction.v1.server.model.dictionary.DictionaryVers
|
|||||||
import com.iqser.red.service.redaction.v1.server.model.document.nodes.Document;
|
import com.iqser.red.service.redaction.v1.server.model.document.nodes.Document;
|
||||||
import com.iqser.red.service.redaction.v1.server.model.document.nodes.SemanticNode;
|
import com.iqser.red.service.redaction.v1.server.model.document.nodes.SemanticNode;
|
||||||
import com.iqser.red.service.redaction.v1.server.service.document.DocumentGraphMapper;
|
import com.iqser.red.service.redaction.v1.server.service.document.DocumentGraphMapper;
|
||||||
|
import com.iqser.red.service.redaction.v1.server.service.document.EntityCreationService;
|
||||||
|
import com.iqser.red.service.redaction.v1.server.service.document.EntityEnrichmentService;
|
||||||
import com.iqser.red.service.redaction.v1.server.service.document.ImportedRedactionEntryService;
|
import com.iqser.red.service.redaction.v1.server.service.document.ImportedRedactionEntryService;
|
||||||
import com.iqser.red.service.redaction.v1.server.service.document.ManualRedactionEntryService;
|
import com.iqser.red.service.redaction.v1.server.service.document.ManualRedactionEntryService;
|
||||||
import com.iqser.red.service.redaction.v1.server.service.document.NerEntitiesAdapter;
|
import com.iqser.red.service.redaction.v1.server.service.document.NerEntitiesAdapter;
|
||||||
@ -79,6 +74,7 @@ public class AnalyzeService {
|
|||||||
ImportedRedactionEntryService importedRedactionEntryService;
|
ImportedRedactionEntryService importedRedactionEntryService;
|
||||||
ObservedStorageService observedStorageService;
|
ObservedStorageService observedStorageService;
|
||||||
FunctionTimerValues redactmanagerAnalyzePagewiseValues;
|
FunctionTimerValues redactmanagerAnalyzePagewiseValues;
|
||||||
|
EntityEnrichmentService entityEnrichmentService;
|
||||||
|
|
||||||
|
|
||||||
@Timed("redactmanager_reanalyze")
|
@Timed("redactmanager_reanalyze")
|
||||||
@ -148,6 +144,9 @@ public class AnalyzeService {
|
|||||||
dictionarySearchService.addDictionaryEntities(dictionary, sectionsToReAnalyse);
|
dictionarySearchService.addDictionaryEntities(dictionary, sectionsToReAnalyse);
|
||||||
log.info("Finished Dictionary Search for file {} in dossier {}", analyzeRequest.getFileId(), analyzeRequest.getDossierId());
|
log.info("Finished Dictionary Search for file {} in dossier {}", analyzeRequest.getFileId(), analyzeRequest.getDossierId());
|
||||||
|
|
||||||
|
EntityCreationService entityCreationService = new EntityCreationService(entityEnrichmentService);
|
||||||
|
entityCreationService.createTextEntitiesForRecategorizedDictionaryEntries(analyzeRequest, previousEntityLog.getEntityLogEntry(), document);
|
||||||
|
|
||||||
// we could add the imported redactions similar to the manual redactions here as well for additional processing
|
// we could add the imported redactions similar to the manual redactions here as well for additional processing
|
||||||
List<FileAttribute> allFileAttributes = entityDroolsExecutionService.executeRules(kieWrapperEntityRules.container(),
|
List<FileAttribute> allFileAttributes = entityDroolsExecutionService.executeRules(kieWrapperEntityRules.container(),
|
||||||
document,
|
document,
|
||||||
@ -215,6 +214,10 @@ public class AnalyzeService {
|
|||||||
dictionarySearchService.addDictionaryEntities(dictionary, document);
|
dictionarySearchService.addDictionaryEntities(dictionary, document);
|
||||||
log.info("Finished Dictionary Search for file {} in dossier {}", analyzeRequest.getFileId(), analyzeRequest.getDossierId());
|
log.info("Finished Dictionary Search for file {} in dossier {}", analyzeRequest.getFileId(), analyzeRequest.getDossierId());
|
||||||
|
|
||||||
|
var previousEntityLogEntries = entityLogCreatorService.getPreviousEntityLogEntries(analyzeRequest.getDossierId(), analyzeRequest.getFileId());
|
||||||
|
EntityCreationService entityCreationService = new EntityCreationService(entityEnrichmentService);
|
||||||
|
entityCreationService.createTextEntitiesForRecategorizedDictionaryEntries(analyzeRequest, previousEntityLogEntries, document);
|
||||||
|
|
||||||
// we could add the imported redactions similar to the manual redactions here as well for additional processing
|
// we could add the imported redactions similar to the manual redactions here as well for additional processing
|
||||||
List<FileAttribute> allFileAttributes = entityDroolsExecutionService.executeRules(kieWrapperEntityRules.container(),
|
List<FileAttribute> allFileAttributes = entityDroolsExecutionService.executeRules(kieWrapperEntityRules.container(),
|
||||||
document,
|
document,
|
||||||
|
|||||||
@ -83,7 +83,7 @@ public class EntityLogCreatorService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private List<EntityLogEntry> getPreviousEntityLogEntries(String dossierId, String fileId) {
|
public List<EntityLogEntry> getPreviousEntityLogEntries(String dossierId, String fileId) {
|
||||||
|
|
||||||
if (redactionStorageService.entityLogExists(dossierId, fileId)) {
|
if (redactionStorageService.entityLogExists(dossierId, fileId)) {
|
||||||
return redactionStorageService.getEntityLog(dossierId, fileId).getEntityLogEntry();
|
return redactionStorageService.getEntityLog(dossierId, fileId).getEntityLogEntry();
|
||||||
|
|||||||
@ -1,6 +1,12 @@
|
|||||||
package com.iqser.red.service.redaction.v1.server.service.document;
|
package com.iqser.red.service.redaction.v1.server.service.document;
|
||||||
|
|
||||||
import static com.iqser.red.service.redaction.v1.server.service.document.EntityCreationUtility.*;
|
import static com.iqser.red.service.redaction.v1.server.service.document.EntityCreationUtility.addEntityToNodeEntitySets;
|
||||||
|
import static com.iqser.red.service.redaction.v1.server.service.document.EntityCreationUtility.addToPages;
|
||||||
|
import static com.iqser.red.service.redaction.v1.server.service.document.EntityCreationUtility.allEntitiesIntersectAndHaveSameTypes;
|
||||||
|
import static com.iqser.red.service.redaction.v1.server.service.document.EntityCreationUtility.checkIfBothStartAndEndAreEmpty;
|
||||||
|
import static com.iqser.red.service.redaction.v1.server.service.document.EntityCreationUtility.findIntersectingSubNodes;
|
||||||
|
import static com.iqser.red.service.redaction.v1.server.service.document.EntityCreationUtility.toLineAfterTextRange;
|
||||||
|
import static com.iqser.red.service.redaction.v1.server.service.document.EntityCreationUtility.truncateEndIfLineBreakIsBetween;
|
||||||
import static com.iqser.red.service.redaction.v1.server.utils.SeparatorUtils.boundaryIsSurroundedBySeparators;
|
import static com.iqser.red.service.redaction.v1.server.utils.SeparatorUtils.boundaryIsSurroundedBySeparators;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@ -18,7 +24,10 @@ import org.apache.commons.lang3.tuple.Pair;
|
|||||||
import org.kie.api.runtime.KieSession;
|
import org.kie.api.runtime.KieSession;
|
||||||
|
|
||||||
import com.google.common.base.Functions;
|
import com.google.common.base.Functions;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeRequest;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Engine;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Engine;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType;
|
||||||
import com.iqser.red.service.redaction.v1.server.model.NerEntities;
|
import com.iqser.red.service.redaction.v1.server.model.NerEntities;
|
||||||
import com.iqser.red.service.redaction.v1.server.model.dictionary.SearchImplementation;
|
import com.iqser.red.service.redaction.v1.server.model.dictionary.SearchImplementation;
|
||||||
import com.iqser.red.service.redaction.v1.server.model.document.ConsecutiveBoundaryCollector;
|
import com.iqser.red.service.redaction.v1.server.model.document.ConsecutiveBoundaryCollector;
|
||||||
@ -621,6 +630,31 @@ public class EntityCreationService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void createTextEntitiesForRecategorizedDictionaryEntries(AnalyzeRequest analyzeRequest, List<EntityLogEntry> previousEntityLogEntries, SemanticNode node) {
|
||||||
|
|
||||||
|
EntityCreationService entityCreationService = new EntityCreationService(entityEnrichmentService);
|
||||||
|
previousEntityLogEntries.stream()
|
||||||
|
.filter(entityLogEntry -> !entityLogEntry.getManualChanges().isEmpty())
|
||||||
|
.filter(entityLogEntry -> entityLogEntry.getManualChanges()
|
||||||
|
.stream()
|
||||||
|
.anyMatch(manualChange -> manualChange.getManualRedactionType().equals(ManualRedactionType.RECATEGORIZE)))
|
||||||
|
.filter(entityLogEntry -> entityLogEntry.getManualChanges()
|
||||||
|
.get(entityLogEntry.getManualChanges().size() - 1).getManualRedactionType() != ManualRedactionType.REMOVE
|
||||||
|
|| entityLogEntry.getManualChanges()
|
||||||
|
.get(entityLogEntry.getManualChanges().size() - 1).getManualRedactionType() != ManualRedactionType.REMOVE_FROM_DICTIONARY)
|
||||||
|
.forEach(entityLogEntry -> {
|
||||||
|
TextRange textRange = new TextRange(entityLogEntry.getStartOffset(), entityLogEntry.getEndOffset());
|
||||||
|
TextEntity textEntity = TextEntity.initialEntityNode(textRange, entityLogEntry.getType(), EntityType.ENTITY, entityLogEntry.getId());
|
||||||
|
var manualRedactionsForThisEntity = analyzeRequest.getManualRedactions().buildAll()
|
||||||
|
.stream()
|
||||||
|
.filter(manualRedaction -> manualRedaction.getAnnotationId().equals(entityLogEntry.getId()))
|
||||||
|
.toList();
|
||||||
|
textEntity.getManualOverwrite().addChanges(manualRedactionsForThisEntity);
|
||||||
|
textEntity.addEngines(entityLogEntry.getEngines());
|
||||||
|
entityCreationService.addEntityToGraph(textEntity, node);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Do not use anymore. This might not work correctly due to duplicate textranges not being taken into account here.
|
// Do not use anymore. This might not work correctly due to duplicate textranges not being taken into account here.
|
||||||
@Deprecated(forRemoval = true)
|
@Deprecated(forRemoval = true)
|
||||||
public TextEntity forceByTextRange(TextRange textRange, String type, EntityType entityType, SemanticNode node) {
|
public TextEntity forceByTextRange(TextRange textRange, String type, EntityType entityType, SemanticNode node) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user