protected override List <AnalyisTypeSummary> GetRowSummaries(CancellationToken cancellationToken, Dictionary <string, dynamic> row) { List <AnalyisTypeSummary> summaries = new List <AnalyisTypeSummary>(); AnalyisTypeSummary summary; if (base.Bands.Count == 0) { GroupBySet bandedKey = new GroupBySet(); if (!base.Summary.TryGetValue(bandedKey, out summary)) { summary = new AnalyisTypeSummary(null); base.Summary.Add(bandedKey, summary); } summaries.Add(summary); return(summaries); } foreach (KeyValuePair <string, BaseBand> field in base.Bands) { List <GroupBySet> bandedKeys = new List <GroupBySet>(); bandedKeys.Add(new GroupBySet()); field.Value.AddBandToSet(cancellationToken, bandedKeys, field.Key, row); foreach (GroupBySet bandedKey in bandedKeys) { if (!base.Summary.TryGetValue(bandedKey, out summary)) { summary = new AnalyisTypeSummary(null); base.Summary.Add(bandedKey, summary); } summaries.Add(summary); } } return(summaries); }
public ReducedBandKey(string reportName, int reportId, string reportGrouping, string product, string headOrOther, GroupBySet bandSet, string cEvent) { this.reportName = reportName ?? throw new ArgumentNullException("reportName"); this.reportGrouping = reportGrouping ?? throw new ArgumentNullException("reportGrouping"); this.product = product ?? throw new ArgumentNullException("product"); this.headOrOther = headOrOther ?? throw new ArgumentNullException("headOrOther"); this.bandSet = bandSet; this.cEvent = cEvent; this.cacheKey = Guid.NewGuid().ToString(); this.reportId = reportId; }
protected override List <AnalyisTypeSummary> GetRowSummaries(CancellationToken cancellationToken, Dictionary <string, dynamic> row) { AnalyisTypeSummary summary; GroupBySet bandedKey = new GroupBySet(); if (!base.Summary.TryGetValue(bandedKey, out summary)) { summary = new AnalyisTypeSummary(null); base.Summary.Add(bandedKey, summary); } return(new List <AnalyisTypeSummary>() { summary }); }
public void ProcessRecord(CancellationToken cancellationToken, bool isMetric, Dictionary <string, dynamic> row) { List <AnalyisTypeSummary> rowSummaries = GetRowSummaries(cancellationToken, row); object value; try { GroupBySet analysisTypeKey = new GroupBySet(); foreach (string field in analysisTypeFields) { if (row.TryGetValue(field, out value)) { if (value != null) { analysisTypeKey.Add(new GroupBy(field, value.ToString(), false)); } else { analysisTypeKey.Add(new GroupBy(field, string.Empty, false)); } } } string year; if (!row.TryGetValue(AnnualSummary.YearEntryMeanColumn, out value)) { return; } year = value.ToString(); // support lists of summaries List <ObservationValueCollection> observationsList = new List <ObservationValueCollection>(); ObservationValueCollection observations; AnnualSummary annualSummary; foreach (AnalyisTypeSummary summary in rowSummaries) { if (!summary.TryGetValue(analysisTypeKey, out annualSummary)) { annualSummary = new AnnualSummary(new Dictionary <string, ObservationValueCollection>()); summary.Add(analysisTypeKey, annualSummary); } if (!annualSummary.ObservationsByYear.TryGetValue(year, out observations)) { observations = new ObservationValueCollection(); annualSummary.ObservationsByYear.Add(year, observations); } observationsList.Add(observations); } const string observationRefCd = "observationRefCd"; const string entryMean = "entryMean"; const string testMean = "testMean"; const string metricToEnglishFactor = "metricToEnglishFactor"; string observation; dynamic conversionFactor; dynamic testMeanValue; if (row.TryGetValue(observationRefCd, out value)) { observation = value.ToString(); if (row.TryGetValue(entryMean, out value) && row.TryGetValue(metricToEnglishFactor, out conversionFactor) && row.TryGetValue(testMean, out testMeanValue)) { foreach (ObservationValueCollection observationsListItem in observationsList) { if (isMetric) { observationsListItem.AddObservation(observation, (double)value, (double)testMeanValue); } else { observationsListItem.AddObservation(observation, (double)value * (double)conversionFactor, (double)testMeanValue * (double)conversionFactor); } } } } } catch (Exception) { throw; } }