RED-9472: seperation of system rules
now adding user update rules to existing blueprint and returning this
This commit is contained in:
parent
b12457cd7b
commit
a0b34894ee
@ -93,13 +93,13 @@ public class RuleBuilderController implements RuleBuilderResource {
|
||||
rulesUploadResponse.setDroolsValidationResponse(droolsValidationResponse);
|
||||
return new ResponseEntity<>(rulesUploadResponse, HttpStatus.UNPROCESSABLE_ENTITY);
|
||||
} else {
|
||||
//
|
||||
rulesUploadResponse.setRules(mergingResult.getMergedRules());
|
||||
rulesUploadResponse.setDroolsValidationResponse(droolsValidationResponse);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RulesValidationException("Could not test rules: " + e.getMessage(), e);
|
||||
}
|
||||
log.info("result after validation: {}",rulesUpdateRequest);
|
||||
return new ResponseEntity<>(rulesUploadResponse, HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@ -53,6 +53,7 @@ public class RuleBuilderService {
|
||||
|
||||
RuleFileBluePrint ruleFileBluePrintExisting = RuleFileParser.buildBluePrintFromRulesString(existingRules);
|
||||
RuleFileBluePrint mergedRuleFileBlueprint = RuleFileParser.buildBluePrintFromRulesString(userUpdatedRules, false);
|
||||
|
||||
mergedRuleFileBlueprint.getRuleClasses()
|
||||
.forEach(ruleClass -> {
|
||||
if (systemRules.stream()
|
||||
@ -62,25 +63,25 @@ public class RuleBuilderService {
|
||||
}
|
||||
});
|
||||
ruleFileBluePrintExisting = removeAllRulesExceptSystemRules(ruleFileBluePrintExisting);
|
||||
ruleFileBluePrintExisting.getAllRules()
|
||||
.forEach(mergedRuleFileBlueprint::addRule);
|
||||
mergedRuleFileBlueprint.getAllRules()
|
||||
.forEach(ruleFileBluePrintExisting::addRule);
|
||||
Set<String> uniqueImports = Arrays.stream((ruleFileBluePrintExisting.getImports() + mergedRuleFileBlueprint.getImports()).replaceAll("\n", "").split("import"))
|
||||
.map(String::trim)
|
||||
.collect(Collectors.toSet());
|
||||
mergedRuleFileBlueprint.setImports(uniqueImports.stream()
|
||||
ruleFileBluePrintExisting.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()
|
||||
ruleFileBluePrintExisting.setGlobals(uniqueGlobals.stream()
|
||||
.collect(Collectors.joining("")));
|
||||
mergedRuleFileBlueprint.setFunctions(Stream.concat(ruleFileBluePrintExisting.getFunctions()
|
||||
ruleFileBluePrintExisting.setFunctions(Stream.concat(ruleFileBluePrintExisting.getFunctions()
|
||||
.stream(),
|
||||
mergedRuleFileBlueprint.getFunctions()
|
||||
.stream())
|
||||
.distinct()
|
||||
.toList());
|
||||
mergedRuleFileBlueprint.setDeclarations(Stream.concat(ruleFileBluePrintExisting.getDeclarations()
|
||||
ruleFileBluePrintExisting.setDeclarations(Stream.concat(ruleFileBluePrintExisting.getDeclarations()
|
||||
.stream(),
|
||||
mergedRuleFileBlueprint.getDeclarations()
|
||||
.stream())
|
||||
@ -88,9 +89,9 @@ public class RuleBuilderService {
|
||||
.toList());
|
||||
log.info("merged rules: {}", RuleFileFactory.buildRuleString(ruleFileBluePrintExisting, false, false));
|
||||
return RuleMergingResult.builder()
|
||||
.mergedRules(RuleFileFactory.buildRuleString(ruleFileBluePrintExisting, false, false))
|
||||
.addedGlobalsOffset(ruleFileBluePrintExisting.getGlobals().length())
|
||||
.addedImportsOffset(ruleFileBluePrintExisting.getImports().length())
|
||||
.mergedRules(RuleFileFactory.buildRuleString(mergedRuleFileBlueprint, false, false))
|
||||
.addedGlobalsOffset(mergedRuleFileBlueprint.getGlobals().length())
|
||||
.addedImportsOffset(mergedRuleFileBlueprint.getImports().length())
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user