Beispiel #1
0
        /// <summary>
        /// Method to call when this rule needs to be evaluated.
        /// This will use <see cref="EvaluateFunction(WorkspaceModel, NodeModel)"/> to evaluate the rule.
        /// </summary>
        /// <param name="workspaceModel"></param>
        /// <param name="changedEvent"></param>
        /// <param name="modifiedNode"></param>
        internal void Evaluate(WorkspaceModel workspaceModel, string changedEvent, NodeModel modifiedNode = null)
        {
            var pair = EvaluateFunction(workspaceModel, changedEvent, modifiedNode);

            if (pair is null)
            {
                return;
            }

            var result = new GraphRuleEvaluationResult(this.Id, pair.Item1, this.SeverityCode, pair.Item2);

            OnRuleEvaluated(result);
        }
Beispiel #2
0
        private protected sealed override List <IRuleEvaluationResult> InitializeRule(WorkspaceModel workspaceModel)
        {
            var pairs = this.InitFunction(workspaceModel);

            var results = new List <IRuleEvaluationResult>();

            foreach (var pair in pairs)
            {
                if (pair.Item1 == RuleEvaluationStatusEnum.Passed)
                {
                    continue;
                }

                var result = new GraphRuleEvaluationResult(this.Id, pair.Item1, this.SeverityCode, pair.Item2);
                results.Add(result);
            }
            return(results);
        }