Esempio n. 1
0
        public void Run(IService service)
        {
            var categories = new List <TrendsCategoryAbstract>();
            var parameters = new List <RemapTrendsParameter>();

            foreach (TrendsCategoryAbstract category in _categories)
            {
                RemapTrendsParameter parameter = category.CreateRemapParameter();
                if (parameter == null)
                {
                    continue;
                }
                parameters.Add(parameter);
                categories.Add(category);
            }

            if (parameters.Any())
            {
                var result = service.RemapTrends(parameters.ToArray());
                for (var i = 0; i < categories.Count; i++)
                {
                    ApplyResult(categories[i], result[i]);
                }
            }
        }
Esempio n. 2
0
        internal override RemapTrendsParameter CreateRemapParameter()
        {
            Tuple <Tuple <DateTime, DateTime?, int>, Tuple <int, Action <Tuple <DateTime, double>[]> >[]>[]
            currentSamplesQueries;
            lock (_samplesQueries) {
                currentSamplesQueries = _samplesQueries
                                        .GroupBy(s => s.Item2)
                                        .Select(g =>
                                                new Tuple <Tuple <DateTime, DateTime?, int>,
                                                           Tuple <int, Action <Tuple <DateTime, double>[]> >[]>(
                                                    g.Key,
                                                    g.Select(s => new Tuple <int, Action <Tuple <DateTime, double>[]> >(s.Item1, s.Item3))
                                                    .ToArray()))
                                        .ToArray();
                _samplesQueries.Clear();
            }

            Tuple <Tuple <CriteriaType, DateTime, int>, Tuple <int, Action <Tuple <DateTime, double>[]> >[]>[]
            pageSamplesQueries;
            lock (_pageQueries) {
                pageSamplesQueries = _pageQueries
                                     .GroupBy(p => p.Item2)
                                     .Select(g =>
                                             new Tuple <Tuple <CriteriaType, DateTime, int>,
                                                        Tuple <int, Action <Tuple <DateTime, double>[]> >[]>(
                                                 g.Key,
                                                 g.Select(s => new Tuple <int, Action <Tuple <DateTime, double>[]> >(s.Item1, s.Item3))
                                                 .ToArray()))
                                     .ToArray();
                _pageQueries.Clear();
            }

            if (!currentSamplesQueries.Any() && !pageSamplesQueries.Any())
            {
                return(null);
            }
            var samplesParameters = currentSamplesQueries
                                    .Select(s => new Tuple <int[], DateTime, DateTime?, int>(
                                                s.Item2.Select(i => i.Item1).ToArray(), s.Item1.Item1, s.Item1.Item2, s.Item1.Item3))
                                    .ToArray();

            _currentSamplesCallabacks = currentSamplesQueries
                                        .Select(s => s.Item2.Select(t => t.Item2).ToArray()).ToArray();
            var pageParameters = pageSamplesQueries
                                 .Select(s => new Tuple <int[], CriteriaType, DateTime, int>(
                                             s.Item2.Select(i => i.Item1).ToArray(), s.Item1.Item1, s.Item1.Item2, s.Item1.Item3))
                                 .ToArray();

            _pageSamplesCallbacks = pageSamplesQueries.Select(s => s.Item2.Select(t => t.Item2).ToArray())
                                    .ToArray();

            var parameter = new RemapTrendsParameter {
                CategoryId        = _id,
                SamplesParameters = samplesParameters,
                PageParameters    = pageParameters
            };

            return(parameter);
        }
Esempio n. 3
0
        private static void ReadTrendsPages(RemapTrendsParameter parameter, RemapTrendsResult result, ITrendsRunTarget runTarget)
        {
            var r = new Tuple <DateTime, double?[]> [parameter.PageParameters.Length][];

            for (var i = 0; i < parameter.PageParameters.Length; i++)
            {
                var pageParameter = parameter.PageParameters[i];
                r[i] = runTarget.GetPage(
                    pageParameter.Item1, pageParameter.Item2, pageParameter.Item3, pageParameter.Item4);
            }
            result.Pages = r;
        }
Esempio n. 4
0
        public RemapTrendsResult[] RemapTrends(RemapTrendsParameter[] parameters)
        {
            if (NotValid())
            {
                return(null);
            }
            var result = new RemapTrendsResult[parameters.Length];

            for (var i = 0; i < parameters.Length; i++)
            {
                RemapTrendsParameter parameter       = parameters[i];
                ITrendsRunTarget     trendsRunTarget = _project.TrendsRunTargets[parameter.CategoryId];
                var r = new RemapTrendsResult();
                ReadTrendsSamples(parameter, r, trendsRunTarget);
                ReadTrendsPages(parameter, r, trendsRunTarget);
                r.Notifications = GetNotifications(trendsRunTarget.Reporter.Notifications);
                result[i]       = r;
            }

            return(result);
        }