Merge branch 'DM-285' into 'master'
DM-285: set correct versions in EntityLog Closes DM-285 See merge request redactmanager/redaction-service!137
This commit is contained in:
commit
4cf03123de
@ -122,9 +122,7 @@ public class AnalyzeService {
|
|||||||
dictionary.getVersion(),
|
dictionary.getVersion(),
|
||||||
kieWrapperEntityRules.rulesVersion());
|
kieWrapperEntityRules.rulesVersion());
|
||||||
|
|
||||||
return finalizeAnalysis(analyzeRequest,
|
return finalizeAnalysis(analyzeRequest, startTime, kieWrapperComponentRules, new EntityLogChanges(entityLog, false),
|
||||||
startTime,
|
|
||||||
kieWrapperComponentRules, new EntityLogChanges(entityLog, false),
|
|
||||||
redactionLog,
|
redactionLog,
|
||||||
document.getNumberOfPages(),
|
document.getNumberOfPages(),
|
||||||
dictionary.getVersion(),
|
dictionary.getVersion(),
|
||||||
@ -160,10 +158,14 @@ public class AnalyzeService {
|
|||||||
log.info("{} Sections to reanalyze found for file {} in dossier {}", sectionsToReanalyseIds.size(), analyzeRequest.getFileId(), analyzeRequest.getDossierId());
|
log.info("{} Sections to reanalyze found for file {} in dossier {}", sectionsToReanalyseIds.size(), analyzeRequest.getFileId(), analyzeRequest.getDossierId());
|
||||||
|
|
||||||
if (sectionsToReAnalyse.isEmpty()) {
|
if (sectionsToReAnalyse.isEmpty()) {
|
||||||
|
|
||||||
return finalizeAnalysis(analyzeRequest,
|
return finalizeAnalysis(analyzeRequest,
|
||||||
startTime,
|
startTime,
|
||||||
kieContainerCreationService.getLatestKieContainer(analyzeRequest.getDossierTemplateId(), RuleFileType.COMPONENT),
|
kieContainerCreationService.getLatestKieContainer(analyzeRequest.getDossierTemplateId(), RuleFileType.COMPONENT),
|
||||||
new EntityLogChanges(previousEntityLog, false),
|
entityLogCreatorService.updateVersionsAndReturnChanges(previousEntityLog,
|
||||||
|
dictionaryIncrement.getDictionaryVersion(),
|
||||||
|
analyzeRequest.getDossierTemplateId(),
|
||||||
|
false),
|
||||||
previousRedactionLog,
|
previousRedactionLog,
|
||||||
document.getNumberOfPages(),
|
document.getNumberOfPages(),
|
||||||
dictionaryIncrement.getDictionaryVersion(),
|
dictionaryIncrement.getDictionaryVersion(),
|
||||||
@ -195,10 +197,7 @@ public class AnalyzeService {
|
|||||||
|
|
||||||
RedactionLog redactionLog = updatePreviousRedactionLog(analyzeRequest, document, notFoundManualRedactionEntries, previousRedactionLog, sectionsToReanalyseIds);
|
RedactionLog redactionLog = updatePreviousRedactionLog(analyzeRequest, document, notFoundManualRedactionEntries, previousRedactionLog, sectionsToReanalyseIds);
|
||||||
EntityLogChanges entityLogChanges = entityLogCreatorService.updatePreviousEntityLog(analyzeRequest,
|
EntityLogChanges entityLogChanges = entityLogCreatorService.updatePreviousEntityLog(analyzeRequest,
|
||||||
document,
|
document, notFoundManualRedactionEntries, previousEntityLog, sectionsToReanalyseIds, dictionary.getVersion());
|
||||||
notFoundManualRedactionEntries,
|
|
||||||
previousEntityLog,
|
|
||||||
sectionsToReanalyseIds);
|
|
||||||
|
|
||||||
return finalizeAnalysis(analyzeRequest,
|
return finalizeAnalysis(analyzeRequest,
|
||||||
startTime,
|
startTime,
|
||||||
@ -237,12 +236,7 @@ public class AnalyzeService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private AnalyzeResult finalizeAnalysis(AnalyzeRequest analyzeRequest, long startTime, KieWrapper kieWrapperComponentRules, EntityLogChanges entityLogChanges,
|
||||||
|
|
||||||
|
|
||||||
private AnalyzeResult finalizeAnalysis(AnalyzeRequest analyzeRequest,
|
|
||||||
long startTime,
|
|
||||||
KieWrapper kieWrapperComponentRules, EntityLogChanges entityLogChanges,
|
|
||||||
RedactionLog redactionLog,
|
RedactionLog redactionLog,
|
||||||
int numberOfPages,
|
int numberOfPages,
|
||||||
DictionaryVersion dictionaryVersion,
|
DictionaryVersion dictionaryVersion,
|
||||||
@ -436,5 +430,4 @@ public class AnalyzeService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -86,8 +86,7 @@ public class EntityLogCreatorService {
|
|||||||
public EntityLogChanges updatePreviousEntityLog(AnalyzeRequest analyzeRequest,
|
public EntityLogChanges updatePreviousEntityLog(AnalyzeRequest analyzeRequest,
|
||||||
Document document,
|
Document document,
|
||||||
List<ManualEntity> notFoundManualRedactionEntries,
|
List<ManualEntity> notFoundManualRedactionEntries,
|
||||||
EntityLog previousEntityLog,
|
EntityLog previousEntityLog, Set<Integer> sectionsToReanalyseIds, DictionaryVersion dictionaryVersion) {
|
||||||
Set<Integer> sectionsToReanalyseIds) {
|
|
||||||
|
|
||||||
List<EntityLogEntry> newEntityLogEntries = createEntityLogEntries(document, analyzeRequest.getDossierTemplateId(), notFoundManualRedactionEntries);
|
List<EntityLogEntry> newEntityLogEntries = createEntityLogEntries(document, analyzeRequest.getDossierTemplateId(), notFoundManualRedactionEntries);
|
||||||
List<EntityLogEntry> previousEntries = previousEntityLog.getEntityLogEntry()
|
List<EntityLogEntry> previousEntries = previousEntityLog.getEntityLogEntry()
|
||||||
@ -105,9 +104,22 @@ public class EntityLogCreatorService {
|
|||||||
|
|
||||||
previousEntityLog.getEntityLogEntry().addAll(importedRedactionFilteredEntries);
|
previousEntityLog.getEntityLogEntry().addAll(importedRedactionFilteredEntries);
|
||||||
previousEntityLog.getEntityLogEntry().addAll(newEntityLogEntries);
|
previousEntityLog.getEntityLogEntry().addAll(newEntityLogEntries);
|
||||||
|
|
||||||
excludeExcludedPages(previousEntityLog, analyzeRequest.getExcludedPages());
|
excludeExcludedPages(previousEntityLog, analyzeRequest.getExcludedPages());
|
||||||
|
|
||||||
return new EntityLogChanges(previousEntityLog, hasChanges);
|
return updateVersionsAndReturnChanges(previousEntityLog, dictionaryVersion, analyzeRequest.getDossierTemplateId(), hasChanges);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public EntityLogChanges updateVersionsAndReturnChanges(EntityLog entityLog, DictionaryVersion dictionaryVersion, String dossierTemplateId, boolean hasChanges) {
|
||||||
|
|
||||||
|
List<LegalBasis> legalBasis = legalBasisClient.getLegalBasisMapping(dossierTemplateId);
|
||||||
|
entityLog.setLegalBasisVersion(legalBasisClient.getVersion(dossierTemplateId));
|
||||||
|
entityLog.setLegalBasis(toEntityLogLegalBasis(legalBasis));
|
||||||
|
entityLog.setDictionaryVersion(dictionaryVersion.getDossierTemplateVersion());
|
||||||
|
entityLog.setDossierDictionaryVersion(dictionaryVersion.getDossierVersion());
|
||||||
|
|
||||||
|
return new EntityLogChanges(entityLog, hasChanges);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -129,8 +141,7 @@ public class EntityLogCreatorService {
|
|||||||
|
|
||||||
List<EntityLogEntry> entries = new ArrayList<>();
|
List<EntityLogEntry> entries = new ArrayList<>();
|
||||||
document.getEntities()
|
document.getEntities()
|
||||||
.stream()
|
.stream().filter(EntityLogCreatorService::isEntityOrRecommendationType).filter(IEntity::active)
|
||||||
.filter(EntityLogCreatorService::isEntityOrRecommendationType).filter(IEntity::active)
|
|
||||||
.forEach(entityNode -> entries.addAll(toEntityLogEntries(entityNode, dossierTemplateId)));
|
.forEach(entityNode -> entries.addAll(toEntityLogEntries(entityNode, dossierTemplateId)));
|
||||||
document.streamAllImages().filter(IEntity::active).forEach(imageNode -> entries.add(createEntityLogEntry(imageNode, 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)));
|
notFoundManualRedactionEntries.stream().filter(IEntity::active).forEach(entityIdentifier -> entries.add(createEntityLogEntry(entityIdentifier, dossierTemplateId)));
|
||||||
@ -184,10 +195,14 @@ public class EntityLogCreatorService {
|
|||||||
.value(entity.getManualOverwrite().getValue().orElse(entity.getMatchedRule().isWriteValueWithLineBreaks() ? entity.getValueWithLineBreaks() : entity.getValue()))
|
.value(entity.getManualOverwrite().getValue().orElse(entity.getMatchedRule().isWriteValueWithLineBreaks() ? entity.getValueWithLineBreaks() : entity.getValue()))
|
||||||
.type(entity.getType())
|
.type(entity.getType())
|
||||||
.section(entity.getManualOverwrite().getSection().orElse(entity.getDeepestFullyContainingNode().toString()))
|
.section(entity.getManualOverwrite().getSection().orElse(entity.getDeepestFullyContainingNode().toString()))
|
||||||
.sectionNumber(sectionNumber).matchedRule(entity.getMatchedRule().getRuleIdentifier().toString()).dictionaryEntry(entity.isDictionaryEntry())
|
.sectionNumber(sectionNumber)
|
||||||
|
.matchedRule(entity.getMatchedRule().getRuleIdentifier().toString())
|
||||||
|
.dictionaryEntry(entity.isDictionaryEntry())
|
||||||
.textAfter(entity.getTextAfter())
|
.textAfter(entity.getTextAfter())
|
||||||
.textBefore(entity.getTextBefore())
|
.textBefore(entity.getTextBefore())
|
||||||
.startOffset(entity.getTextRange().start()).endOffset(entity.getTextRange().end()).dossierDictionaryEntry(entity.isDossierDictionaryEntry())
|
.startOffset(entity.getTextRange().start())
|
||||||
|
.endOffset(entity.getTextRange().end())
|
||||||
|
.dossierDictionaryEntry(entity.isDossierDictionaryEntry())
|
||||||
.engines(entity.getEngines() != null ? entity.getEngines() : Collections.emptySet())
|
.engines(entity.getEngines() != null ? entity.getEngines() : Collections.emptySet())
|
||||||
.reference(referenceIds)
|
.reference(referenceIds)
|
||||||
.manualChanges(manualChangeFactory.toManualChangeList(entity.getManualOverwrite().getManualChangeLog(), isHint))
|
.manualChanges(manualChangeFactory.toManualChangeList(entity.getManualOverwrite().getManualChangeLog(), isHint))
|
||||||
@ -204,7 +219,9 @@ public class EntityLogCreatorService {
|
|||||||
return EntityLogEntry.builder()
|
return EntityLogEntry.builder()
|
||||||
.id(manualEntity.getId())
|
.id(manualEntity.getId())
|
||||||
.color(getColor(type, dossierTemplateId, manualEntity.applied()))
|
.color(getColor(type, dossierTemplateId, manualEntity.applied()))
|
||||||
.reason(manualEntity.buildReasonWithManualChangeDescriptions()).legalBasis(manualEntity.legalBasis()).value(manualEntity.value())
|
.reason(manualEntity.buildReasonWithManualChangeDescriptions())
|
||||||
|
.legalBasis(manualEntity.legalBasis())
|
||||||
|
.value(manualEntity.value())
|
||||||
.type(type)
|
.type(type)
|
||||||
.state(buildEntryState(manualEntity))
|
.state(buildEntryState(manualEntity))
|
||||||
.entryType(buildEntryType(manualEntity, isHint))
|
.entryType(buildEntryType(manualEntity, isHint))
|
||||||
|
|||||||
@ -229,7 +229,7 @@ class DroolsSyntaxValidationServiceTest {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
RuleFileBluePrint ruleFileBluePrint = RuleFileParser.buildBluePrintFromRulesString(rulesString);
|
RuleFileBluePrint ruleFileBluePrint = RuleFileParser.buildBluePrintFromRulesString(rulesString);
|
||||||
RuleFileBluePrint baseRuleFileBluePrint = RuleFileParser.buildBluePrintFromRulesString(RuleManagementResources.getBaseComponentRuleFileString());
|
RuleFileBluePrint baseRuleFileBluePrint = RuleFileParser.buildBluePrintFromRulesString(RuleManagementResources.getBaseRuleFileString());
|
||||||
|
|
||||||
rulesString = rulesString.replace(ruleFileBluePrint.getImports(), baseRuleFileBluePrint.getImports());
|
rulesString = rulesString.replace(ruleFileBluePrint.getImports(), baseRuleFileBluePrint.getImports());
|
||||||
rulesString = rulesString.replace(ruleFileBluePrint.getGlobals(), baseRuleFileBluePrint.getGlobals());
|
rulesString = rulesString.replace(ruleFileBluePrint.getGlobals(), baseRuleFileBluePrint.getGlobals());
|
||||||
|
|||||||
@ -639,7 +639,7 @@ rule "X.0.0: remove Entity contained by Entity of same type"
|
|||||||
salience 65
|
salience 65
|
||||||
when
|
when
|
||||||
$larger: TextEntity($type: type, $entityType: entityType, active())
|
$larger: TextEntity($type: type, $entityType: entityType, active())
|
||||||
$contained: TextEntity(containedBy($larger), type == $type, entityType == $entityType, this != $larger, !resized(), active())
|
$contained: TextEntity(containedBy($larger), type == $type, entityType == $entityType, this != $larger, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$contained.remove("X.0.0", "remove Entity contained by Entity of same type");
|
$contained.remove("X.0.0", "remove Entity contained by Entity of same type");
|
||||||
retract($contained);
|
retract($contained);
|
||||||
@ -651,7 +651,7 @@ rule "X.1.0: merge intersecting Entities of same type"
|
|||||||
salience 64
|
salience 64
|
||||||
when
|
when
|
||||||
$first: TextEntity($type: type, $entityType: entityType, !resized(), active())
|
$first: TextEntity($type: type, $entityType: entityType, !resized(), active())
|
||||||
$second: TextEntity(intersects($first), type == $type, entityType == $entityType, this != $first, !resized(), active())
|
$second: TextEntity(intersects($first), type == $type, entityType == $entityType, this != $first, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
TextEntity mergedEntity = entityCreationService.mergeEntitiesOfSameType(List.of($first, $second), $type, $entityType, document);
|
TextEntity mergedEntity = entityCreationService.mergeEntitiesOfSameType(List.of($first, $second), $type, $entityType, document);
|
||||||
$first.remove("X.1.0", "merge intersecting Entities of same type");
|
$first.remove("X.1.0", "merge intersecting Entities of same type");
|
||||||
@ -667,7 +667,7 @@ rule "X.2.0: remove Entity of type ENTITY when contained by FALSE_POSITIVE"
|
|||||||
salience 64
|
salience 64
|
||||||
when
|
when
|
||||||
$falsePositive: TextEntity($type: type, entityType == EntityType.FALSE_POSITIVE, active())
|
$falsePositive: TextEntity($type: type, entityType == EntityType.FALSE_POSITIVE, active())
|
||||||
$entity: TextEntity(containedBy($falsePositive), type == $type, entityType == EntityType.ENTITY, !resized(), active())
|
$entity: TextEntity(containedBy($falsePositive), type == $type, entityType == EntityType.ENTITY, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$entity.getIntersectingNodes().forEach(node -> update(node));
|
$entity.getIntersectingNodes().forEach(node -> update(node));
|
||||||
$entity.remove("X.2.0", "remove Entity of type ENTITY when contained by FALSE_POSITIVE");
|
$entity.remove("X.2.0", "remove Entity of type ENTITY when contained by FALSE_POSITIVE");
|
||||||
@ -680,7 +680,7 @@ rule "X.3.0: remove Entity of type RECOMMENDATION when contained by FALSE_RECOMM
|
|||||||
salience 64
|
salience 64
|
||||||
when
|
when
|
||||||
$falseRecommendation: TextEntity($type: type, entityType == EntityType.FALSE_RECOMMENDATION, active())
|
$falseRecommendation: TextEntity($type: type, entityType == EntityType.FALSE_RECOMMENDATION, active())
|
||||||
$recommendation: TextEntity(containedBy($falseRecommendation), type == $type, entityType == EntityType.RECOMMENDATION, !resized(), active())
|
$recommendation: TextEntity(containedBy($falseRecommendation), type == $type, entityType == EntityType.RECOMMENDATION, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$recommendation.remove("X.3.0", "remove Entity of type RECOMMENDATION when contained by FALSE_RECOMMENDATION");
|
$recommendation.remove("X.3.0", "remove Entity of type RECOMMENDATION when contained by FALSE_RECOMMENDATION");
|
||||||
retract($recommendation);
|
retract($recommendation);
|
||||||
@ -692,7 +692,7 @@ rule "X.4.0: remove Entity of type RECOMMENDATION when intersected by ENTITY wit
|
|||||||
salience 256
|
salience 256
|
||||||
when
|
when
|
||||||
$entity: TextEntity($type: type, entityType == EntityType.ENTITY, active())
|
$entity: TextEntity($type: type, entityType == EntityType.ENTITY, active())
|
||||||
$recommendation: TextEntity(intersects($entity), type == $type, entityType == EntityType.RECOMMENDATION, !resized(), active())
|
$recommendation: TextEntity(intersects($entity), type == $type, entityType == EntityType.RECOMMENDATION, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$entity.addEngines($recommendation.getEngines());
|
$entity.addEngines($recommendation.getEngines());
|
||||||
$recommendation.remove("X.4.0", "remove Entity of type RECOMMENDATION when intersected by ENTITY with same type");
|
$recommendation.remove("X.4.0", "remove Entity of type RECOMMENDATION when intersected by ENTITY with same type");
|
||||||
@ -705,7 +705,7 @@ rule "X.5.0: remove Entity of type RECOMMENDATION when contained by ENTITY"
|
|||||||
salience 256
|
salience 256
|
||||||
when
|
when
|
||||||
$entity: TextEntity(entityType == EntityType.ENTITY, active())
|
$entity: TextEntity(entityType == EntityType.ENTITY, active())
|
||||||
$recommendation: TextEntity(containedBy($entity), entityType == EntityType.RECOMMENDATION, !resized(), active())
|
$recommendation: TextEntity(containedBy($entity), entityType == EntityType.RECOMMENDATION, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$recommendation.remove("X.5.0", "remove Entity of type RECOMMENDATION when contained by ENTITY");
|
$recommendation.remove("X.5.0", "remove Entity of type RECOMMENDATION when contained by ENTITY");
|
||||||
retract($recommendation);
|
retract($recommendation);
|
||||||
@ -717,7 +717,7 @@ rule "X.6.0: remove Entity of lower rank, when intersected by entity of type ENT
|
|||||||
salience 32
|
salience 32
|
||||||
when
|
when
|
||||||
$higherRank: TextEntity($type: type, entityType == EntityType.ENTITY, active())
|
$higherRank: TextEntity($type: type, entityType == EntityType.ENTITY, active())
|
||||||
$lowerRank: TextEntity(intersects($higherRank), type != $type, dictionary.getDictionaryRank(type) < dictionary.getDictionaryRank($type), !resized(), active())
|
$lowerRank: TextEntity(intersects($higherRank), type != $type, dictionary.getDictionaryRank(type) < dictionary.getDictionaryRank($type), !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$lowerRank.getIntersectingNodes().forEach(node -> update(node));
|
$lowerRank.getIntersectingNodes().forEach(node -> update(node));
|
||||||
$lowerRank.remove("X.6.0", "remove Entity of lower rank, when intersected by entity of type ENTITY");
|
$lowerRank.remove("X.6.0", "remove Entity of lower rank, when intersected by entity of type ENTITY");
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -1312,7 +1312,7 @@ rule "X.0.0: remove Entity contained by Entity of same type"
|
|||||||
salience 65
|
salience 65
|
||||||
when
|
when
|
||||||
$larger: TextEntity($type: type, $entityType: entityType, active())
|
$larger: TextEntity($type: type, $entityType: entityType, active())
|
||||||
$contained: TextEntity(containedBy($larger), type == $type, entityType == $entityType, this != $larger, !resized(), active())
|
$contained: TextEntity(containedBy($larger), type == $type, entityType == $entityType, this != $larger, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$contained.remove("X.0.0", "remove Entity contained by Entity of same type");
|
$contained.remove("X.0.0", "remove Entity contained by Entity of same type");
|
||||||
retract($contained);
|
retract($contained);
|
||||||
@ -1324,7 +1324,7 @@ rule "X.1.0: merge intersecting Entities of same type"
|
|||||||
salience 64
|
salience 64
|
||||||
when
|
when
|
||||||
$first: TextEntity($type: type, $entityType: entityType, !resized(), active())
|
$first: TextEntity($type: type, $entityType: entityType, !resized(), active())
|
||||||
$second: TextEntity(intersects($first), type == $type, entityType == $entityType, this != $first, !resized(), active())
|
$second: TextEntity(intersects($first), type == $type, entityType == $entityType, this != $first, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
TextEntity mergedEntity = entityCreationService.mergeEntitiesOfSameType(List.of($first, $second), $type, $entityType, document);
|
TextEntity mergedEntity = entityCreationService.mergeEntitiesOfSameType(List.of($first, $second), $type, $entityType, document);
|
||||||
$first.remove("X.1.0", "merge intersecting Entities of same type");
|
$first.remove("X.1.0", "merge intersecting Entities of same type");
|
||||||
@ -1340,7 +1340,7 @@ rule "X.2.0: remove Entity of type ENTITY when contained by FALSE_POSITIVE"
|
|||||||
salience 64
|
salience 64
|
||||||
when
|
when
|
||||||
$falsePositive: TextEntity($type: type, entityType == EntityType.FALSE_POSITIVE, active())
|
$falsePositive: TextEntity($type: type, entityType == EntityType.FALSE_POSITIVE, active())
|
||||||
$entity: TextEntity(containedBy($falsePositive), type == $type, entityType == EntityType.ENTITY, !resized(), active())
|
$entity: TextEntity(containedBy($falsePositive), type == $type, entityType == EntityType.ENTITY, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$entity.getIntersectingNodes().forEach(node -> update(node));
|
$entity.getIntersectingNodes().forEach(node -> update(node));
|
||||||
$entity.remove("X.2.0", "remove Entity of type ENTITY when contained by FALSE_POSITIVE");
|
$entity.remove("X.2.0", "remove Entity of type ENTITY when contained by FALSE_POSITIVE");
|
||||||
@ -1353,7 +1353,7 @@ rule "X.3.0: remove Entity of type RECOMMENDATION when contained by FALSE_RECOMM
|
|||||||
salience 64
|
salience 64
|
||||||
when
|
when
|
||||||
$falseRecommendation: TextEntity($type: type, entityType == EntityType.FALSE_RECOMMENDATION, active())
|
$falseRecommendation: TextEntity($type: type, entityType == EntityType.FALSE_RECOMMENDATION, active())
|
||||||
$recommendation: TextEntity(containedBy($falseRecommendation), type == $type, entityType == EntityType.RECOMMENDATION, !resized(), active())
|
$recommendation: TextEntity(containedBy($falseRecommendation), type == $type, entityType == EntityType.RECOMMENDATION, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$recommendation.remove("X.3.0", "remove Entity of type RECOMMENDATION when contained by FALSE_RECOMMENDATION");
|
$recommendation.remove("X.3.0", "remove Entity of type RECOMMENDATION when contained by FALSE_RECOMMENDATION");
|
||||||
retract($recommendation);
|
retract($recommendation);
|
||||||
@ -1365,7 +1365,7 @@ rule "X.4.0: remove Entity of type RECOMMENDATION when intersected by ENTITY wit
|
|||||||
salience 256
|
salience 256
|
||||||
when
|
when
|
||||||
$entity: TextEntity($type: type, entityType == EntityType.ENTITY, active())
|
$entity: TextEntity($type: type, entityType == EntityType.ENTITY, active())
|
||||||
$recommendation: TextEntity(intersects($entity), type == $type, entityType == EntityType.RECOMMENDATION, !resized(), active())
|
$recommendation: TextEntity(intersects($entity), type == $type, entityType == EntityType.RECOMMENDATION, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$entity.addEngines($recommendation.getEngines());
|
$entity.addEngines($recommendation.getEngines());
|
||||||
$recommendation.remove("X.4.0", "remove Entity of type RECOMMENDATION when intersected by ENTITY with same type");
|
$recommendation.remove("X.4.0", "remove Entity of type RECOMMENDATION when intersected by ENTITY with same type");
|
||||||
@ -1378,7 +1378,7 @@ rule "X.5.0: remove Entity of type RECOMMENDATION when contained by ENTITY"
|
|||||||
salience 256
|
salience 256
|
||||||
when
|
when
|
||||||
$entity: TextEntity(entityType == EntityType.ENTITY, active())
|
$entity: TextEntity(entityType == EntityType.ENTITY, active())
|
||||||
$recommendation: TextEntity(containedBy($entity), entityType == EntityType.RECOMMENDATION, !resized(), active())
|
$recommendation: TextEntity(containedBy($entity), entityType == EntityType.RECOMMENDATION, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$recommendation.remove("X.5.0", "remove Entity of type RECOMMENDATION when contained by ENTITY");
|
$recommendation.remove("X.5.0", "remove Entity of type RECOMMENDATION when contained by ENTITY");
|
||||||
retract($recommendation);
|
retract($recommendation);
|
||||||
@ -1390,7 +1390,7 @@ rule "X.6.0: remove Entity of lower rank, when intersected by entity of type ENT
|
|||||||
salience 32
|
salience 32
|
||||||
when
|
when
|
||||||
$higherRank: TextEntity($type: type, entityType == EntityType.ENTITY, active())
|
$higherRank: TextEntity($type: type, entityType == EntityType.ENTITY, active())
|
||||||
$lowerRank: TextEntity(intersects($higherRank), type != $type, dictionary.getDictionaryRank(type) < dictionary.getDictionaryRank($type), !resized(), active())
|
$lowerRank: TextEntity(intersects($higherRank), type != $type, dictionary.getDictionaryRank(type) < dictionary.getDictionaryRank($type), !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$lowerRank.getIntersectingNodes().forEach(node -> update(node));
|
$lowerRank.getIntersectingNodes().forEach(node -> update(node));
|
||||||
$lowerRank.remove("X.6.0", "remove Entity of lower rank, when intersected by entity of type ENTITY");
|
$lowerRank.remove("X.6.0", "remove Entity of lower rank, when intersected by entity of type ENTITY");
|
||||||
|
|||||||
@ -247,7 +247,7 @@ rule "DOC.1.3: Guidelines"
|
|||||||
)
|
)
|
||||||
then
|
then
|
||||||
$section.getEntitiesOfType(List.of("oecd_guideline", "ec_guideline", "epa_guideline")).forEach(entity -> {
|
$section.getEntitiesOfType(List.of("oecd_guideline", "ec_guideline", "epa_guideline")).forEach(entity -> {
|
||||||
entity.removeFromGraph();
|
entity.remove("DOC.1.3", "removed by Guidelines rules");
|
||||||
retract(entity);
|
retract(entity);
|
||||||
});
|
});
|
||||||
end
|
end
|
||||||
|
|||||||
@ -91,9 +91,9 @@ rule "ReportNumber.0.0: Report number"
|
|||||||
|
|
||||||
rule "GLPStudy.0.0: GLP Study"
|
rule "GLPStudy.0.0: GLP Study"
|
||||||
when
|
when
|
||||||
$glpStudy: Entity(type == "glp_study")
|
$glpStudyList: List(!isEmpty) from collect(Entity(type == "glp_study"))
|
||||||
then
|
then
|
||||||
componentCreationService.create("GLPStudy.0.0", "GLP_study", "Yes", "Yes if present, No if not", $glpStudy);
|
componentCreationService.create("GLPStudy.0.0", "GLP_study", "Yes", "Yes if present, No if not", $glpStudyList);
|
||||||
end
|
end
|
||||||
|
|
||||||
rule "GLPStudy.1.0: GLP Study"
|
rule "GLPStudy.1.0: GLP Study"
|
||||||
@ -103,15 +103,6 @@ rule "GLPStudy.1.0: GLP Study"
|
|||||||
componentCreationService.create("GLPStudy.1.0", "GLP_study", "No", "Yes if present, No if not");
|
componentCreationService.create("GLPStudy.1.0", "GLP_study", "No", "Yes if present, No if not");
|
||||||
end
|
end
|
||||||
|
|
||||||
rule "GLPStudy.2.0: GLP Study"
|
|
||||||
when
|
|
||||||
$first: Component(category == "GLP_study")
|
|
||||||
$second: Component(category == "GLP_study", value == $first.value, this != $first)
|
|
||||||
then
|
|
||||||
$first.addReferences($second.getReferences());
|
|
||||||
retract($second);
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
rule "TestGuideline.0.0: no test guideline year found, only oecd number"
|
rule "TestGuideline.0.0: no test guideline year found, only oecd number"
|
||||||
when
|
when
|
||||||
@ -173,12 +164,12 @@ rule "TestGuideline.1.1: match test guidelines with mappings"
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
rule "DefaultComponents.5.0: Test Guideline 2"
|
rule "TestGuideline.2.0: Test Guideline 2"
|
||||||
when
|
when
|
||||||
$epaGuideLines: List() from collect (Entity(type == "epa_guideline"))
|
$epaGuideLines: List() from collect (Entity(type == "epa_guideline"))
|
||||||
$ecGuideLines: List() from collect (Entity(type == "ec_guideline"))
|
$ecGuideLines: List() from collect (Entity(type == "ec_guideline"))
|
||||||
then
|
then
|
||||||
componentCreationService.joining("DefaultComponents.5.0",
|
componentCreationService.joining("TestGuideline.2.0",
|
||||||
"Test_Guideline_2",
|
"Test_Guideline_2",
|
||||||
Stream.of(
|
Stream.of(
|
||||||
$epaGuideLines.stream(),
|
$epaGuideLines.stream(),
|
||||||
|
|||||||
@ -123,7 +123,6 @@ rule "MAN.1.1: Apply id removals that are valid and not in forced redactions to
|
|||||||
|
|
||||||
// Rule unit: MAN.2
|
// Rule unit: MAN.2
|
||||||
rule "MAN.2.0: Apply force redaction"
|
rule "MAN.2.0: Apply force redaction"
|
||||||
no-loop true
|
|
||||||
salience 128
|
salience 128
|
||||||
when
|
when
|
||||||
$force: ManualForceRedaction($id: annotationId, status == AnnotationStatus.APPROVED)
|
$force: ManualForceRedaction($id: annotationId, status == AnnotationStatus.APPROVED)
|
||||||
@ -132,10 +131,10 @@ rule "MAN.2.0: Apply force redaction"
|
|||||||
$entityToForce.getManualOverwrite().addChange($force);
|
$entityToForce.getManualOverwrite().addChange($force);
|
||||||
update($entityToForce);
|
update($entityToForce);
|
||||||
$entityToForce.getIntersectingNodes().forEach(node -> update(node));
|
$entityToForce.getIntersectingNodes().forEach(node -> update(node));
|
||||||
|
retract($force);
|
||||||
end
|
end
|
||||||
|
|
||||||
rule "MAN.2.1: Apply force redaction to images"
|
rule "MAN.2.1: Apply force redaction to images"
|
||||||
no-loop true
|
|
||||||
salience 128
|
salience 128
|
||||||
when
|
when
|
||||||
$force: ManualForceRedaction($id: annotationId, status == AnnotationStatus.APPROVED)
|
$force: ManualForceRedaction($id: annotationId, status == AnnotationStatus.APPROVED)
|
||||||
@ -144,6 +143,7 @@ rule "MAN.2.1: Apply force redaction to images"
|
|||||||
$imageToForce.getManualOverwrite().addChange($force);
|
$imageToForce.getManualOverwrite().addChange($force);
|
||||||
update($imageToForce);
|
update($imageToForce);
|
||||||
update($imageToForce.getParent());
|
update($imageToForce.getParent());
|
||||||
|
retract($force);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -151,9 +151,9 @@ rule "MAN.2.1: Apply force redaction to images"
|
|||||||
rule "MAN.3.0: Apply entity recategorization"
|
rule "MAN.3.0: Apply entity recategorization"
|
||||||
salience 128
|
salience 128
|
||||||
when
|
when
|
||||||
$recategorization: ManualRecategorization($id: annotationId, status == AnnotationStatus.APPROVED, $requestDate: requestDate)
|
$recategorization: ManualRecategorization($id: annotationId, $type: type, status == AnnotationStatus.APPROVED, $requestDate: requestDate)
|
||||||
not ManualRecategorization($id == annotationId, requestDate.isBefore($requestDate))
|
not ManualRecategorization($id == annotationId, requestDate.isBefore($requestDate))
|
||||||
$entityToBeRecategorized: TextEntity(matchesAnnotationId($id))
|
$entityToBeRecategorized: TextEntity(matchesAnnotationId($id), type != $type)
|
||||||
then
|
then
|
||||||
$entityToBeRecategorized.getIntersectingNodes().forEach(node -> update(node));
|
$entityToBeRecategorized.getIntersectingNodes().forEach(node -> update(node));
|
||||||
manualChangesApplicationService.recategorize($entityToBeRecategorized, $recategorization);
|
manualChangesApplicationService.recategorize($entityToBeRecategorized, $recategorization);
|
||||||
@ -162,7 +162,20 @@ rule "MAN.3.0: Apply entity recategorization"
|
|||||||
retract($entityToBeRecategorized);
|
retract($entityToBeRecategorized);
|
||||||
end
|
end
|
||||||
|
|
||||||
rule "MAN.3.1: Apply image recategorization"
|
|
||||||
|
rule "MAN.3.1: Apply entity recategorization of same type"
|
||||||
|
salience 128
|
||||||
|
when
|
||||||
|
$recategorization: ManualRecategorization($id: annotationId, $type: type, status == AnnotationStatus.APPROVED, $requestDate: requestDate)
|
||||||
|
not ManualRecategorization($id == annotationId, requestDate.isBefore($requestDate))
|
||||||
|
$entityToBeRecategorized: TextEntity(matchesAnnotationId($id), type == $type)
|
||||||
|
then
|
||||||
|
$entityToBeRecategorized.getManualOverwrite().addChange($recategorization);
|
||||||
|
retract($recategorization);
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
rule "MAN.3.2: Apply image recategorization"
|
||||||
salience 128
|
salience 128
|
||||||
when
|
when
|
||||||
$recategorization: ManualRecategorization($id: annotationId, status == AnnotationStatus.APPROVED, $requestDate: requestDate)
|
$recategorization: ManualRecategorization($id: annotationId, status == AnnotationStatus.APPROVED, $requestDate: requestDate)
|
||||||
@ -175,6 +188,7 @@ rule "MAN.3.1: Apply image recategorization"
|
|||||||
retract($recategorization);
|
retract($recategorization);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
// Rule unit: MAN.4
|
// Rule unit: MAN.4
|
||||||
rule "MAN.4.0: Apply legal basis change"
|
rule "MAN.4.0: Apply legal basis change"
|
||||||
salience 128
|
salience 128
|
||||||
@ -193,7 +207,6 @@ rule "MAN.4.1: Apply legal basis change"
|
|||||||
then
|
then
|
||||||
$entityToBeChanged.getManualOverwrite().addChange($legalBasisChange);
|
$entityToBeChanged.getManualOverwrite().addChange($legalBasisChange);
|
||||||
end
|
end
|
||||||
|
|
||||||
//------------------------------------ Local dictionary search rules ------------------------------------
|
//------------------------------------ Local dictionary search rules ------------------------------------
|
||||||
|
|
||||||
// Rule unit: LDS.0
|
// Rule unit: LDS.0
|
||||||
|
|||||||
@ -1023,7 +1023,7 @@ rule "X.0.0: remove Entity contained by Entity of same type"
|
|||||||
salience 65
|
salience 65
|
||||||
when
|
when
|
||||||
$larger: TextEntity($type: type, $entityType: entityType, active())
|
$larger: TextEntity($type: type, $entityType: entityType, active())
|
||||||
$contained: TextEntity(containedBy($larger), type == $type, entityType == $entityType, this != $larger, !resized(), active())
|
$contained: TextEntity(containedBy($larger), type == $type, entityType == $entityType, this != $larger, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$contained.remove("X.0.0", "remove Entity contained by Entity of same type");
|
$contained.remove("X.0.0", "remove Entity contained by Entity of same type");
|
||||||
retract($contained);
|
retract($contained);
|
||||||
@ -1035,7 +1035,7 @@ rule "X.1.0: merge intersecting Entities of same type"
|
|||||||
salience 64
|
salience 64
|
||||||
when
|
when
|
||||||
$first: TextEntity($type: type, $entityType: entityType, !resized(), active())
|
$first: TextEntity($type: type, $entityType: entityType, !resized(), active())
|
||||||
$second: TextEntity(intersects($first), type == $type, entityType == $entityType, this != $first, !resized(), active())
|
$second: TextEntity(intersects($first), type == $type, entityType == $entityType, this != $first, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
TextEntity mergedEntity = entityCreationService.mergeEntitiesOfSameType(List.of($first, $second), $type, $entityType, document);
|
TextEntity mergedEntity = entityCreationService.mergeEntitiesOfSameType(List.of($first, $second), $type, $entityType, document);
|
||||||
$first.remove("X.1.0", "merge intersecting Entities of same type");
|
$first.remove("X.1.0", "merge intersecting Entities of same type");
|
||||||
@ -1051,7 +1051,7 @@ rule "X.2.0: remove Entity of type ENTITY when contained by FALSE_POSITIVE"
|
|||||||
salience 64
|
salience 64
|
||||||
when
|
when
|
||||||
$falsePositive: TextEntity($type: type, entityType == EntityType.FALSE_POSITIVE, active())
|
$falsePositive: TextEntity($type: type, entityType == EntityType.FALSE_POSITIVE, active())
|
||||||
$entity: TextEntity(containedBy($falsePositive), type == $type, entityType == EntityType.ENTITY, !resized(), active())
|
$entity: TextEntity(containedBy($falsePositive), type == $type, entityType == EntityType.ENTITY, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$entity.getIntersectingNodes().forEach(node -> update(node));
|
$entity.getIntersectingNodes().forEach(node -> update(node));
|
||||||
$entity.remove("X.2.0", "remove Entity of type ENTITY when contained by FALSE_POSITIVE");
|
$entity.remove("X.2.0", "remove Entity of type ENTITY when contained by FALSE_POSITIVE");
|
||||||
@ -1064,7 +1064,7 @@ rule "X.3.0: remove Entity of type RECOMMENDATION when contained by FALSE_RECOMM
|
|||||||
salience 64
|
salience 64
|
||||||
when
|
when
|
||||||
$falseRecommendation: TextEntity($type: type, entityType == EntityType.FALSE_RECOMMENDATION, active())
|
$falseRecommendation: TextEntity($type: type, entityType == EntityType.FALSE_RECOMMENDATION, active())
|
||||||
$recommendation: TextEntity(containedBy($falseRecommendation), type == $type, entityType == EntityType.RECOMMENDATION, !resized(), active())
|
$recommendation: TextEntity(containedBy($falseRecommendation), type == $type, entityType == EntityType.RECOMMENDATION, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$recommendation.remove("X.3.0", "remove Entity of type RECOMMENDATION when contained by FALSE_RECOMMENDATION");
|
$recommendation.remove("X.3.0", "remove Entity of type RECOMMENDATION when contained by FALSE_RECOMMENDATION");
|
||||||
retract($recommendation);
|
retract($recommendation);
|
||||||
@ -1076,7 +1076,7 @@ rule "X.4.0: remove Entity of type RECOMMENDATION when intersected by ENTITY wit
|
|||||||
salience 256
|
salience 256
|
||||||
when
|
when
|
||||||
$entity: TextEntity($type: type, entityType == EntityType.ENTITY, active())
|
$entity: TextEntity($type: type, entityType == EntityType.ENTITY, active())
|
||||||
$recommendation: TextEntity(intersects($entity), type == $type, entityType == EntityType.RECOMMENDATION, !resized(), active())
|
$recommendation: TextEntity(intersects($entity), type == $type, entityType == EntityType.RECOMMENDATION, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$entity.addEngines($recommendation.getEngines());
|
$entity.addEngines($recommendation.getEngines());
|
||||||
$recommendation.remove("X.4.0", "remove Entity of type RECOMMENDATION when intersected by ENTITY with same type");
|
$recommendation.remove("X.4.0", "remove Entity of type RECOMMENDATION when intersected by ENTITY with same type");
|
||||||
@ -1089,7 +1089,7 @@ rule "X.5.0: remove Entity of type RECOMMENDATION when contained by ENTITY"
|
|||||||
salience 256
|
salience 256
|
||||||
when
|
when
|
||||||
$entity: TextEntity(entityType == EntityType.ENTITY, active())
|
$entity: TextEntity(entityType == EntityType.ENTITY, active())
|
||||||
$recommendation: TextEntity(containedBy($entity), entityType == EntityType.RECOMMENDATION, !resized(), active())
|
$recommendation: TextEntity(containedBy($entity), entityType == EntityType.RECOMMENDATION, !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$recommendation.remove("X.5.0", "remove Entity of type RECOMMENDATION when contained by ENTITY");
|
$recommendation.remove("X.5.0", "remove Entity of type RECOMMENDATION when contained by ENTITY");
|
||||||
retract($recommendation);
|
retract($recommendation);
|
||||||
@ -1101,7 +1101,7 @@ rule "X.6.0: remove Entity of lower rank, when intersected by entity of type ENT
|
|||||||
salience 32
|
salience 32
|
||||||
when
|
when
|
||||||
$higherRank: TextEntity($type: type, entityType == EntityType.ENTITY, active())
|
$higherRank: TextEntity($type: type, entityType == EntityType.ENTITY, active())
|
||||||
$lowerRank: TextEntity(intersects($higherRank), type != $type, dictionary.getDictionaryRank(type) < dictionary.getDictionaryRank($type), !resized(), active())
|
$lowerRank: TextEntity(intersects($higherRank), type != $type, dictionary.getDictionaryRank(type) < dictionary.getDictionaryRank($type), !hasManualChanges(), active())
|
||||||
then
|
then
|
||||||
$lowerRank.getIntersectingNodes().forEach(node -> update(node));
|
$lowerRank.getIntersectingNodes().forEach(node -> update(node));
|
||||||
$lowerRank.remove("X.6.0", "remove Entity of lower rank, when intersected by entity of type ENTITY");
|
$lowerRank.remove("X.6.0", "remove Entity of lower rank, when intersected by entity of type ENTITY");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user