示例#1
0
        private void CreateChecker(Type checkerType, ParameterizableConfigurationElement checkerConfiguration, Validator validator)
        {
            CheckerBase checker = ConfigurableBase.CreateConfigurableItem <CheckerBase>(checkerType, checkerConfiguration != null ? checkerConfiguration.Parameters : null);

            checker.Arrangement = ArrangementFactory.GetArrangement(checkerConfiguration, validator);

            _checkers.Add(checker);
        }
示例#2
0
        private void CreatePattern(Type patternType, ParameterizableConfigurationElement patternConfiguration, Data.Matcher matcher)
        {
            PatternBase pattern = ConfigurableBase.CreateConfigurableItem <PatternBase>(patternType, patternConfiguration != null ? patternConfiguration.Parameters : null);

            pattern.Configuration = ConfigurationFactory.GetConfiguration(patternConfiguration, matcher);

            _patterns.Add(pattern);
        }
示例#3
0
        internal static Arrangement GetArrangement(ParameterizableConfigurationElement checkerConfiguration, Validator validator)
        {
            if (checkerConfiguration == null)
            {
                checkerConfiguration = new ParameterizableConfigurationElement();
            }

            IQueryable <Arrangement> arrangements = DataContext.Instance.ArrangementSet
                                                    .Where(c => c.Validator.ValidatorId == validator.ValidatorId &&
                                                           c.Parameters.Count == checkerConfiguration.Parameters.Count &&
                                                           c.Parameters.All(p => checkerConfiguration.Parameters.AllKeys.Contains(p.Name)));

            Arrangement arrangement = null;

            foreach (Arrangement dbArrangement in arrangements)
            {
                if (dbArrangement.Parameters.All(p => checkerConfiguration.Parameters[p.Name].Value == p.Value))
                {
                    arrangement = dbArrangement;
                    break;
                }
            }

            bool pendingChanges = false;

            if (arrangement == null)
            {
                arrangement = DataContext.Instance.ArrangementSet.Add(new Arrangement
                {
                    Validator   = validator,
                    Description = checkerConfiguration.Description
                });

                foreach (NameValueConfigurationElement parameter in checkerConfiguration.Parameters)
                {
                    arrangement.Parameters.Add(new Parameter {
                        Name = parameter.Name, Value = parameter.Value
                    });
                }

                pendingChanges = true;
            }
            else if (arrangement.Description != checkerConfiguration.Description)
            {
                arrangement.Description = checkerConfiguration.Description;
                pendingChanges          = true;
            }

            if (pendingChanges)
            {
                DataContext.Instance.SaveChanges();
            }

            return(arrangement);
        }
        internal static Configuration GetConfiguration(ParameterizableConfigurationElement patternConfiguration, Matcher matcher)
        {
            if (patternConfiguration == null)
            {
                patternConfiguration = new ParameterizableConfigurationElement();
            }

            IQueryable <Configuration> configurations = DataContext.Instance.ConfigurationSet
                                                        .Where(c => c.Matcher.MatcherId == matcher.MatcherId &&
                                                               c.Parameters.Count == patternConfiguration.Parameters.Count &&
                                                               c.Parameters.All(p => patternConfiguration.Parameters.AllKeys.Contains(p.Name)));

            Configuration configuration = null;

            foreach (Configuration dbConfiguration in configurations)
            {
                if (dbConfiguration.Parameters.All(p => patternConfiguration.Parameters[p.Name].Value == p.Value))
                {
                    configuration = dbConfiguration;
                    break;
                }
            }

            bool pendingChanges = false;

            if (configuration == null)
            {
                configuration = DataContext.Instance.ConfigurationSet.Add(new Configuration
                {
                    Matcher     = matcher,
                    Description = patternConfiguration.Description
                });

                foreach (NameValueConfigurationElement parameter in patternConfiguration.Parameters)
                {
                    configuration.Parameters.Add(new Parameter {
                        Name = parameter.Name, Value = parameter.Value
                    });
                }

                pendingChanges = true;
            }
            else if (configuration.Description != patternConfiguration.Description)
            {
                configuration.Description = patternConfiguration.Description;
                pendingChanges            = true;
            }

            if (pendingChanges)
            {
                DataContext.Instance.SaveChanges();
            }

            return(configuration);
        }