RED-9472: seperation of system rules
review changes
This commit is contained in:
parent
07cd81e5a9
commit
7e64bb28e8
@ -180,7 +180,7 @@ public class RuleFileBluePrint {
|
|||||||
|
|
||||||
public RuleFileBluePrint buildFilteredBluePrintByRuleIdentifiers(Set<RuleIdentifier> identifiers) {
|
public RuleFileBluePrint buildFilteredBluePrintByRuleIdentifiers(Set<RuleIdentifier> identifiers) {
|
||||||
|
|
||||||
RuleFileBluePrint filteredBluePrint = new RuleFileBluePrint(imports, globals, queries, new LinkedList<>(), new LinkedList<>(), new LinkedList<>());
|
RuleFileBluePrint filteredBluePrint = new RuleFileBluePrint(imports, globals, queries, new LinkedList<>(), declarations, functions);
|
||||||
ruleClasses.stream()
|
ruleClasses.stream()
|
||||||
.flatMap(ruleClass -> ruleClass.ruleUnits()
|
.flatMap(ruleClass -> ruleClass.ruleUnits()
|
||||||
.stream())
|
.stream())
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
package com.iqser.red.service.redaction.v1.server.service;
|
package com.iqser.red.service.redaction.v1.server.service;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -22,12 +22,12 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@Service
|
@Service
|
||||||
public class RuleBuilderService {
|
public class RuleBuilderService {
|
||||||
|
|
||||||
private final List<RuleIdentifier> systemRules = new ArrayList<>(Arrays.asList(RuleIdentifier.fromName("AI"),
|
private final HashSet<RuleIdentifier> systemRules = new HashSet<>(Set.of(RuleIdentifier.fromName("AI"),
|
||||||
RuleIdentifier.fromName("MAN"),
|
RuleIdentifier.fromName("MAN"),
|
||||||
RuleIdentifier.fromName("X"),
|
RuleIdentifier.fromName("X"),
|
||||||
RuleIdentifier.fromName("DICT"),
|
RuleIdentifier.fromName("DICT"),
|
||||||
RuleIdentifier.fromName("FA"),
|
RuleIdentifier.fromName("FA"),
|
||||||
RuleIdentifier.fromName("LDS")));
|
RuleIdentifier.fromName("LDS")));
|
||||||
|
|
||||||
|
|
||||||
public RuleBuilderModel getRuleBuilderModel() {
|
public RuleBuilderModel getRuleBuilderModel() {
|
||||||
@ -52,7 +52,7 @@ public class RuleBuilderService {
|
|||||||
public RuleMergingResult mergeUserRulesAndSystemRules(String existingRules, String userUpdatedRules) {
|
public RuleMergingResult mergeUserRulesAndSystemRules(String existingRules, String userUpdatedRules) {
|
||||||
|
|
||||||
RuleFileBluePrint ruleFileBluePrintExisting = RuleFileParser.buildBluePrintFromRulesString(existingRules);
|
RuleFileBluePrint ruleFileBluePrintExisting = RuleFileParser.buildBluePrintFromRulesString(existingRules);
|
||||||
RuleFileBluePrint mergedRuleFileBlueprint = RuleFileParser.buildBluePrintFromRulesString(userUpdatedRules, true);
|
RuleFileBluePrint mergedRuleFileBlueprint = RuleFileParser.buildBluePrintFromRulesString(userUpdatedRules, false);
|
||||||
mergedRuleFileBlueprint.getRuleClasses()
|
mergedRuleFileBlueprint.getRuleClasses()
|
||||||
.forEach(ruleClass -> {
|
.forEach(ruleClass -> {
|
||||||
if (systemRules.stream()
|
if (systemRules.stream()
|
||||||
@ -61,25 +61,30 @@ public class RuleBuilderService {
|
|||||||
throw new RuntimeException("No system rule updates allowed in user rule update.");
|
throw new RuntimeException("No system rule updates allowed in user rule update.");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
removeAllRulesExceptSystemRules(ruleFileBluePrintExisting);
|
ruleFileBluePrintExisting = removeAllRulesExceptSystemRules(ruleFileBluePrintExisting);
|
||||||
ruleFileBluePrintExisting.getRuleClasses()
|
ruleFileBluePrintExisting.getAllRules()
|
||||||
.stream()
|
|
||||||
.flatMap(ruleClass -> ruleClass.ruleUnits()
|
|
||||||
.stream()
|
|
||||||
.flatMap(ruleUnit -> ruleUnit.rules()
|
|
||||||
.stream()))
|
|
||||||
.forEach(mergedRuleFileBlueprint::addRule);
|
.forEach(mergedRuleFileBlueprint::addRule);
|
||||||
mergedRuleFileBlueprint.setImports(ruleFileBluePrintExisting.getImports() + mergedRuleFileBlueprint.getImports());
|
Set<String> uniqueImports = Arrays.stream((ruleFileBluePrintExisting.getImports() + mergedRuleFileBlueprint.getImports()).replaceAll("\n", "").split("import"))
|
||||||
mergedRuleFileBlueprint.setGlobals(ruleFileBluePrintExisting.getGlobals() + mergedRuleFileBlueprint.getGlobals());
|
.map(String::trim)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
mergedRuleFileBlueprint.setImports(uniqueImports.stream()
|
||||||
|
.collect(Collectors.joining("")));
|
||||||
|
Set<String> uniqueGlobals = Arrays.stream((ruleFileBluePrintExisting.getGlobals() + mergedRuleFileBlueprint.getGlobals()).replaceAll("\n", "").split("import"))
|
||||||
|
.map(String::trim)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
mergedRuleFileBlueprint.setGlobals(uniqueGlobals.stream()
|
||||||
|
.collect(Collectors.joining("")));
|
||||||
mergedRuleFileBlueprint.setFunctions(Stream.concat(ruleFileBluePrintExisting.getFunctions()
|
mergedRuleFileBlueprint.setFunctions(Stream.concat(ruleFileBluePrintExisting.getFunctions()
|
||||||
.stream(),
|
.stream(),
|
||||||
mergedRuleFileBlueprint.getFunctions()
|
mergedRuleFileBlueprint.getFunctions()
|
||||||
.stream())
|
.stream())
|
||||||
|
.distinct()
|
||||||
.toList());
|
.toList());
|
||||||
mergedRuleFileBlueprint.setDeclarations(Stream.concat(ruleFileBluePrintExisting.getDeclarations()
|
mergedRuleFileBlueprint.setDeclarations(Stream.concat(ruleFileBluePrintExisting.getDeclarations()
|
||||||
.stream(),
|
.stream(),
|
||||||
mergedRuleFileBlueprint.getDeclarations()
|
mergedRuleFileBlueprint.getDeclarations()
|
||||||
.stream())
|
.stream())
|
||||||
|
.distinct()
|
||||||
.toList());
|
.toList());
|
||||||
return RuleMergingResult.builder()
|
return RuleMergingResult.builder()
|
||||||
.mergedRules(RuleFileFactory.buildRuleString(ruleFileBluePrintExisting, false, false))
|
.mergedRules(RuleFileFactory.buildRuleString(ruleFileBluePrintExisting, false, false))
|
||||||
@ -89,10 +94,9 @@ public class RuleBuilderService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void removeAllRulesExceptSystemRules(RuleFileBluePrint ruleFileBluePrint) {
|
private RuleFileBluePrint removeAllRulesExceptSystemRules(RuleFileBluePrint ruleFileBluePrint) {
|
||||||
|
|
||||||
ruleFileBluePrint.buildFilteredBluePrintByRuleIdentifiers(new HashSet<RuleIdentifier>(systemRules));
|
|
||||||
|
|
||||||
|
return ruleFileBluePrint.buildFilteredBluePrintByRuleIdentifiers(new HashSet<RuleIdentifier>(systemRules));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user