コード例 #1
0
        private static IEnumerable <FiltersDefinition> GenerateFilterDefinitionsFromCollectionsDefinition(CatalogueSetConfiguration catDefinition)
        {
            List <FiltersDefinition> filtersDefinition = new List <FiltersDefinition>();

            foreach (var collection in catDefinition.Collections)
            {
                var fds = new FiltersDefinition(collection.Key);
                fds.AddFilters(collection.Value.Parameters);
                fds.AddFilters(catDefinition.Parameters);
                filtersDefinition.Add(fds);
            }

            return(filtersDefinition);
        }
コード例 #2
0
        /// <summary>
        /// Creates a list of cross filter definitions for a target site against a reference target site.
        /// </summary>
        /// <param name="setName">The name of the catalogue set.</param>
        /// <param name="setConfiguration">The configuration set</param>
        /// <param name="target">The target</param>
        /// <returns>A list of cross filter definitions.</returns>
        internal static IEnumerable <CrossCatalogueCoverageFiltersDefinition> GenerateCrossCatalogueCoverageFiltersDefinition(string setName, CatalogueSetConfiguration setConfiguration, TargetSiteWrapper target)
        {
            List <CrossCatalogueCoverageFiltersDefinition> bulkDataDefs = new List <CrossCatalogueCoverageFiltersDefinition>();

            // Let's get the baseline
            var catalogueSetConfiguration = ResolveBaseline(setName, setConfiguration);

            // Let's get the reference target
            TargetSiteWrapper ref_target = new TargetSiteWrapper(setConfiguration.ReferenceTargetSite, Configuration.Current.GetTargetSiteConfiguration(setConfiguration.ReferenceTargetSite));

            // Let's build the filter defintions
            foreach (FiltersDefinition pt in GenerateFilterDefinitionsFromCollectionsDefinition(catalogueSetConfiguration))
            {
                FiltersDefinition _targetFiltersDefinition = new FiltersDefinition("[target]");

                _targetFiltersDefinition.AddFilters(pt.Filters);
                _targetFiltersDefinition.AddFilter("count", "{http://a9.com/-/spec/opensearch/1.1/}count", "0", "", null, null);
                try
                {
                    _targetFiltersDefinition.AddFilters(catalogueSetConfiguration.Parameters);
                }
                catch { }
                FiltersDefinition _refFiltersDefinition = new FiltersDefinition(_targetFiltersDefinition);
                _refFiltersDefinition.Name = "[reference]";
                // special filter for filtering out product that are not considered as in the reference baseline
                try
                {
                    _targetFiltersDefinition.AddFilters(setConfiguration.Parameters);
                }
                catch { }

                bulkDataDefs.Add(new CrossCatalogueCoverageFiltersDefinition(
                                     new TargetAndFiltersDefinition(target, _targetFiltersDefinition),
                                     new TargetAndFiltersDefinition(ref_target, _refFiltersDefinition)
                                     ));
            }
            return(bulkDataDefs);
        }
コード例 #3
0
        private static FiltersDefinition ShuffleSimpleRandomFiltersCombination(Mission mission, Dictionary <string, DataCollectionDefinition> collections, string FilterSetkey, Func <ItemNumberRange, string> rangeReformatter = null, int limit = 3)
        {
            FiltersDefinition _filtersDefinition = new FiltersDefinition(FilterSetkey);
            var collection = collections.ToArray()[rnd.Next(0, collections.Count())].Value;

            _filtersDefinition.AddFilters(collection.Parameters, mission);
            // _filtersDefinition.AddFilter("missionName", "{http://a9.com/-/opensearch/extensions/eo/1.0/}platform",  mission.MissionName.Value, mission.MissionName.Label, mission.MissionName.Validator, null);

            IEnumerable <System.Reflection.PropertyInfo> props = mission.GetType().GetProperties().Where(
                prop => Attribute.IsDefined(prop, typeof(SimpleChoiceAttribute)));

            foreach (var prop in props)
            {
                if (_filtersDefinition.GetFilters().Count() >= limit)
                {
                    continue;
                }
                if (rnd.Next() % 2 == 0)
                {
                    continue;
                }
                var choice = prop.GetValue(mission);
                if (choice == null)
                {
                    continue;
                }
                if (_filtersDefinition.Filters.Any(fd => fd.FullName == ((IMissionFilter)choice).FullName))
                {
                    continue;
                }
                if (choice is StringListChoice)
                {
                    var sl    = choice as StringListChoice;
                    var value = sl.LabelStrings.ToArray()[rnd.Next(0, sl.LabelStrings.Count())];
                    _filtersDefinition.AddFilter(sl.Key, sl.FullName, value.Value, value.Label, value.Validator, null);
                }
                if (choice is ItemNumberRange)
                {
                    var     nb        = choice as ItemNumberRange;
                    int     randomMin = rnd.Next((int)(nb.Min / nb.Step), (int)(nb.Max / nb.Step));
                    decimal min       = new decimal(randomMin * nb.Step);
                    int     randomMax = rnd.Next((int)((int)min / nb.Step), (int)(nb.Max / nb.Step));
                    decimal max       = new decimal(randomMax * nb.Step);
                    var     value     = new double[2] {
                        (double)min, (double)max
                    };
                    var formatter = nb.Formatter;
                    if (rangeReformatter != null)
                    {
                        formatter = rangeReformatter.Invoke(nb);
                    }
                    Func <IOpenSearchResultItem, bool> ivalidator = null;
                    if (nb.ItemValueValidator != null)
                    {
                        ivalidator = nb.ItemValueValidator.Invoke(value);
                    }
                    Func <IOpenSearchResultCollection, bool> cvalidator = null;
                    if (nb.ResultsValidator != null)
                    {
                        cvalidator = nb.ResultsValidator.Invoke(value);
                    }
                    _filtersDefinition.AddFilter(nb.Key, nb.FullName, string.Format(formatter, value.Cast <object>().ToArray()), string.Format("{0} {1}", nb.Label, string.Format(formatter, value.Cast <object>().ToArray())), ivalidator, cvalidator);
                }
            }

            return(_filtersDefinition);
        }