public void Expose(ActorExposureRecord exposureRecord) { if (Filter1 == null) throw new ApplicationException("Filter1 cannot be null"); if (Filter2 == null) throw new ApplicationException("Filter2 cannot be null"); var key1 = Filter1(exposureRecord); if (!key1.HasValue) return; var key2 = Filter2(exposureRecord); if (!key2.HasValue) return; ObservableConcurrentDictionary<int, ObservableCollection<HistogramBins>> level2; if (!Exposures.TryGetValue(key1.Value, out level2)) { level2 = new ObservableConcurrentDictionary<int, ObservableCollection<HistogramBins>>(); if (!Exposures.TryAdd(key1.Value, level2)) if (!Exposures.TryGetValue(key1.Value, out level2)) throw new ApplicationException("Could not add level two dictionary."); } ObservableCollection<HistogramBins> bins; if (!level2.TryGetValue(key2.Value, out bins)) { bins = new ObservableCollection<HistogramBins> { new HistogramBins(_histogramSource), new HistogramBins(_histogramSource) }; //peakSPL and Energy if (!level2.TryAdd(key2.Value, bins)) if (!level2.TryGetValue(key2.Value, out bins)) throw new ApplicationException("Could not add bins."); } bins[0].Add(exposureRecord.PeakSPL); bins[1].Add(exposureRecord.Energy); }
public override void Expose(ActorExposureRecord exposureRecord) { if (GroupDescriptions == null || GroupDescriptions.Count < GroupLevel) throw new InvalidOperationException("There is no GroupDescription defined for this grouping level"); var groupDescription = GroupDescriptions[GroupLevel]; if (groupDescription.RecordToKey == null) throw new InvalidOperationException("RecordToKey cannot be null for the current grouping level"); if (groupDescription.GroupName == null) throw new InvalidOperationException("GroupName cannot be null for the current grouping level"); if (groupDescription.RecordFilter != null && (!groupDescription.RecordFilter(exposureRecord))) return; var key = groupDescription.RecordToKey(exposureRecord); HistogramBins[] bins; if (!_groupedExposures.TryGetValue(key, out bins)) { bins = new HistogramBins[2]; bins[0] = new HistogramBins(HistogramSource, LowBinValue, BinWidth, BinCount) { DataSetName = groupDescription.GroupName(exposureRecord), BarSeriesViewModel = { Fill = new SolidColorBrush(HistogramSource.GuidToColorMap[groupDescription.RecordToGuid(exposureRecord)]) }, }; GroupedBarSeriesViewModels[0].BarSeriesCollection.Add(bins[0].BarSeriesViewModel); bins[1] = new HistogramBins(HistogramSource, LowBinValue, BinWidth, BinCount) { DataSetName = groupDescription.GroupName(exposureRecord), BarSeriesViewModel = { Fill = new SolidColorBrush(HistogramSource.GuidToColorMap[groupDescription.RecordToGuid(exposureRecord)]) }, }; GroupedBarSeriesViewModels[1].BarSeriesCollection.Add(bins[1].BarSeriesViewModel); if (_groupedExposures.TryAdd(key, bins)) { Debug.WriteLine(string.Format("Adding histograms for {0} at level {1}", groupDescription.GroupName(exposureRecord), GroupLevel)); } else if (!_groupedExposures.TryGetValue(key, out bins)) throw new ApplicationException("Could not add exposure bins to GroupedExposuresHistogram."); } bins[0].Add(exposureRecord.PeakSPL); bins[1].Add(exposureRecord.Energy); }
public virtual void Expose(ActorExposureRecord exposureRecord) { if (GroupDescriptions == null || GroupDescriptions.Count < GroupLevel) throw new InvalidOperationException("There is no GroupDescription defined for this grouping level"); var groupDescription = GroupDescriptions[GroupLevel]; if (groupDescription.RecordToKey == null) throw new InvalidOperationException("RecordToKey cannot be null for the current grouping level"); if (groupDescription.GroupName == null) throw new InvalidOperationException("GroupName cannot be null for the current grouping level"); if (groupDescription.RecordFilter != null && (!groupDescription.RecordFilter(exposureRecord))) return; var key = groupDescription.RecordToKey(exposureRecord); IGroupedExposures value; if (!_groupedExposures.TryGetValue(key, out value)) { if (GroupDescriptions.Count > (GroupLevel + 2)) value = new GroupedExposures(HistogramSource, LowBinValue, BinWidth, BinCount, GroupLevel + 1) { GroupName = groupDescription.GroupName(exposureRecord), GroupDescriptions = GroupDescriptions }; else value = new GroupedExposuresHistogram(HistogramSource, LowBinValue, BinWidth, BinCount, GroupLevel + 1) { GroupName = groupDescription.GroupName(exposureRecord), GroupDescriptions = GroupDescriptions }; if (_groupedExposures.TryAdd(key, value)) { Debug.WriteLine(string.Format("Adding group {0} at level {1}", groupDescription.GroupName(exposureRecord), GroupLevel)); Groups.Add(value); } else if (!_groupedExposures.TryGetValue(key, out value)) throw new ApplicationException("Could not add new exposure group"); } value.Expose(exposureRecord); }