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