Exemple #1
0
        static void Part2(IMessageRule messageRule)
        {
            var validMessages = messageRule.GetPossibleMatches();
            var result        = validMessages.Intersect(_messages).Count();

            Console.WriteLine(result);
        }
Exemple #2
0
        static void Part2(IMessageRule messageRule42, IMessageRule messageRule31)
        {
            var validMessages42 = messageRule42.GetPossibleMatches();
            var validMessages31 = messageRule31.GetPossibleMatches();

            var result = 0;

            foreach (var message in _messages)
            {
                var rule42Matches = validMessages42.Select(x => Regex.Matches(message, x).Count()).Sum();
                var rule31Matches = validMessages31.Select(x => Regex.Matches(message, x).Count()).Sum();
                if (rule31Matches >= 1 && rule42Matches > rule31Matches)
                {
                    result++;
                }
            }

            Console.WriteLine(result);
        }
Exemple #3
0
        protected List <string> ConcatResult(List <string> result, IMessageRule rule)
        {
            if (result.Count() == 0)
            {
                return(rule.GetPossibleMatches());
            }

            var newResult = new List <string>();

            foreach (var item in result)
            {
                foreach (var match in rule.GetPossibleMatches())
                {
                    newResult.Add(item + match);
                }
            }

            return(newResult);
        }
Exemple #4
0
        /// <summary>
        /// Get message rules
        /// </summary>
        /// <param name="theVersion"></param>
        /// <param name="theMessageType"></param>
        /// <param name="theTriggerEvent"></param>
        /// <returns></returns>
        public IMessageRule[] getMessageRules(string theVersion, string theMessageType, string theTriggerEvent)
        {
            IMessageRule[] result = new IMessageRule[0];
            if (originalContext != null)
            {
                result = originalContext.getMessageRules(theVersion, theMessageType, theTriggerEvent);
            }

            foreach (ISpecificMessageRule rule in messageRules)
            {
                // Add the rule if it applies
                bool flag1 = rule.GetVersions().Contains("*") || rule.GetVersions().Contains(theVersion);
                bool flag2 = rule.GetMessageTypes().Contains("*") || rule.GetMessageTypes().Contains(theMessageType);
                bool flag3 = rule.GetTriggerEvents().Contains("*") || rule.GetTriggerEvents().Contains(theTriggerEvent);
                if (flag1 && flag2 && flag3)
                {
                    List <IMessageRule> rules = new List <IMessageRule>(result);
                    rules.Add(rule);
                    result = rules.ToArray();
                }
            }

            return(result);
        }
        /// <summary>
        /// Get message rules
        /// </summary>
        /// <param name="theVersion"></param>
        /// <param name="theMessageType"></param>
        /// <param name="theTriggerEvent"></param>
        /// <returns></returns>
        public IMessageRule[] getMessageRules(string theVersion, string theMessageType, string theTriggerEvent)
        {
            IMessageRule[] result = new IMessageRule[0];
            if (originalContext != null)
                result = originalContext.getMessageRules(theVersion, theMessageType, theTriggerEvent);

            foreach (ISpecificMessageRule rule in messageRules)
            {
                // Add the rule if it applies
                bool flag1 = rule.GetVersions().Contains("*") || rule.GetVersions().Contains(theVersion);
                bool flag2 = rule.GetMessageTypes().Contains("*") || rule.GetMessageTypes().Contains(theMessageType);
                bool flag3 = rule.GetTriggerEvents().Contains("*") || rule.GetTriggerEvents().Contains(theTriggerEvent);
                if (flag1 && flag2 && flag3)
                {
                    List<IMessageRule> rules = new List<IMessageRule>(result);
                    rules.Add(rule);
                    result = rules.ToArray();
                }
                
            }

            return result;
        }