- Performance improvement of the RuleEngine

-fix some spelling errors in the log texts
This commit is contained in:
Joe
2019-01-14 08:04:41 -06:00
parent ea1884f819
commit febcdcb105

View File

@@ -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 === "-") {