private void AddPageIdsToCache(ICollection <int> pageIds) { if (!pageIds.Any()) { return; } var pairs = _backend.GetPageNames(pageIds); lock (_writeLock) { foreach (var idNamePair in pairs) { _pageIdToNameMap[idNamePair.Key] = idNamePair.Value; _pageNameToIdMap[idNamePair.Value] = idNamePair.Key; } } }
public void PreCalculateForDate(DateTime date) { if (!HasPreCalculatedData(date, AllPagesPageId)) { PreCalculateAll(date); } var pageIds = _requestsReader.ListAllPages(date); var pageNames = _pageIdProvider.GetPageNames(pageIds); foreach (var pageId in pageIds) { if (HasPreCalculatedData(date, pageId)) { continue; } PreCalculateForDateAndPage(date, pageId, pageNames[pageId]); } }
private PerformanceStatisticsForPageCollection GetRequestsForDate(DateTime forDate) { using (var connection = new SqlConnection(_connectionString)) { var q = connection.CreateCommand(); q.CommandText = "select Duration,PageId from Requests where Timestamp>=@From and Timestamp<@Till"; q.Parameters.Add(new SqlParameter("From", forDate)); q.Parameters.Add(new SqlParameter("Till", forDate.AddDays(1))); connection.Open(); var overall = new List <int>(); var pages = new Dictionary <int, List <int> >(); using (var rdr = q.ExecuteReader()) { while (rdr.Read()) { var page = (int)rdr[1]; var duration = (int)rdr[0]; overall.Add(duration); if (!pages.ContainsKey(page)) { pages[page] = new List <int>(); } pages[page].Add(duration); } } var pageIdToNameMap = _pageIdProvider.GetPageNames(pages.Keys); return(new PerformanceStatisticsForPageCollection( pages.Keys.Select(p => PerformanceStatisticsForPage.Calculate(pages[p].ToArray(), pageIdToNameMap[p])).ToArray(), //new PerformanceStatisticsForPage[0], PerformanceStatisticsForPage.Calculate(overall.ToArray(), "All pages") )); } }
public void PreCalculate(DateTime date) { if (!HasPrecalculatedHourlyTrend(date, null)) { PreCalculateHourlyTrend(date, AllPagesPageId, null); } var pages = _reader.ListAllPages(date); var pageNames = _pageIdProvider.GetPageNames(pages); foreach (var pageId in pages) { var pageName = pageNames[pageId]; if (HasPrecalculatedHourlyTrend(date, pageName)) { //shouldn't happen. continue; } PreCalculateHourlyTrend(date, pageId, pageName); } }