diff --git a/RuleEngine.js b/RuleEngine.js index 00fd694..c376ff7 100644 --- a/RuleEngine.js +++ b/RuleEngine.js @@ -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 === "-") {