public RemapTrendsResult[] RemapTrends(RemapTrendsParameter[] parameters) { if (NotValid()) return null; var result = new RemapTrendsResult[parameters.Length]; for (var i = 0; i < parameters.Length; i++) { var parameter = parameters[i]; var 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; }
private static void ReadTrendsSamples(RemapTrendsParameter parameter, RemapTrendsResult result, ITrendsRunTarget runTarget) { var r = new Tuple<DateTime, double?[]>[parameter.SamplesParameters.Length][]; for (var i = 0; i < parameter.SamplesParameters.Length; i++) { var samplesParameter = parameter.SamplesParameters[i]; r[i] = runTarget.GetSamples( samplesParameter.Item1, samplesParameter.Item2, samplesParameter.Item3, samplesParameter.Item4); } result.Samples = r; }
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; }