- Performance improvement of the RuleEngine
-fix some spelling errors in the log texts
This commit is contained in:
@@ -18,28 +18,28 @@ const logger = winston.createLogger({
|
||||
|
||||
exports.RuleEngine = class RuleEngine {
|
||||
constructor(ruleSetFiles) {
|
||||
logger.log("info", "Instanciated RulesEngine - RuleSetFiles: " + ruleSetFiles);
|
||||
logger.log("info", "Instantiated RulesEngine - RuleSetFiles: " + ruleSetFiles);
|
||||
this.ruleSet = {};
|
||||
if (ruleSetFiles === "*") {
|
||||
fs.readdirSync("./rules/").forEach(file => {
|
||||
if (this.reTest("/.*\.rule\.json$/", file)) {
|
||||
logger.log("info", "Loading ruleset file " + file);
|
||||
logger.log("info", "Loading rule set file " + file);
|
||||
let newRuleSet = JSON.parse(fs.readFileSync('./rules/' + file, 'utf8'));
|
||||
logger.log("info", "Adding ruleset " + Object.keys(newRuleSet)[0]);
|
||||
logger.log("info", "Adding rule set " + Object.keys(newRuleSet)[0]);
|
||||
this.ruleSet[Object.keys(newRuleSet)[0]] = newRuleSet[Object.keys(newRuleSet)[0]]
|
||||
}
|
||||
});
|
||||
} else if (ruleSetFiles.indexOf(",") > 1) {
|
||||
ruleSetFiles.split(",").forEach(file => {
|
||||
logger.log("info", "Loading ruleset file " + file);
|
||||
logger.log("info", "Loading rule set file " + file);
|
||||
let newRuleSet = JSON.parse(fs.readFileSync('./rules/' + file + '.rule.json', 'utf8'));
|
||||
logger.log("info", "Adding ruleset " + Object.keys(newRuleSet)[0]);
|
||||
logger.log("info", "Adding rule set " + Object.keys(newRuleSet)[0]);
|
||||
this.ruleSet[Object.keys(newRuleSet)[0]] = newRuleSet[Object.keys(newRuleSet)[0]]
|
||||
});
|
||||
} else {
|
||||
logger.log("info", "Loading ruleset file " + ruleSetFiles);
|
||||
logger.log("info", "Loading rule set file " + ruleSetFiles);
|
||||
this.ruleSet = JSON.parse(fs.readFileSync('./rules/' + ruleSetFiles + '.rule.json', 'utf8'));
|
||||
logger.log("info", "Adding Ruleset " + Object.keys(this.ruleSet)[0]);
|
||||
logger.log("info", "Adding rule set " + Object.keys(this.ruleSet)[0]);
|
||||
}
|
||||
}
|
||||
processData(inputLine) {
|
||||
@@ -47,13 +47,15 @@ exports.RuleEngine = class RuleEngine {
|
||||
logger.log("debug", "ProcessingType " + inputLine.processingType);
|
||||
let allWhiteFilterRules = this.ruleSet[inputLine.processingType].rules;
|
||||
if (this.processLogicOr(allWhiteFilterRules, inputData)) { return (true); }
|
||||
logger.log("debug", "No whitelisting matched; returning false");
|
||||
logger.log("debug", "No white listing matched; returning false");
|
||||
return (false);
|
||||
}
|
||||
processLogicAnd(allWhiteFilterRules, inputData) {
|
||||
let retVal = true;
|
||||
logger.log("debug", "Logic AND - start");
|
||||
for (let i = 0; i < allWhiteFilterRules.length; i++) {
|
||||
// if one condition is false the other one doens't need checking anymore,
|
||||
// therefore including the retVal in the check condition of the below for loop
|
||||
for (let i = 0; (i < allWhiteFilterRules.length && retVal); i++) {
|
||||
let theWhiteFilterRule = allWhiteFilterRules[i];
|
||||
logger.log("debug", " Logic AND - whiteFilterRule: " + JSON.stringify(theWhiteFilterRule));
|
||||
if (theWhiteFilterRule.Logic === "-") {
|
||||
|
||||
Reference in New Issue
Block a user