/// <summary> /// Adds the preaggregate. /// </summary> /// <param name="preaggregate">The preaggregate.</param> public void AddPreaggregation(IPreaggregation preaggregate) { if (!this.CanAddPreaggregation(preaggregate)) { throw new ConfigurationValidationException("Duplicate preaggregates cannot be added.", ValidationType.DuplicatePreaggregate); } this.preaggregations.Add(preaggregate); }
/// <summary> /// Determines whether this instance can add preaggregation to the metric configuration. /// </summary> /// <param name="preaggregationToAdd">The preaggregation to add.</param> /// <returns> /// True if the preaggregation can be added. /// </returns> public bool CanAddPreaggregation(IPreaggregation preaggregationToAdd) { if (preaggregationToAdd == null) { throw new ArgumentNullException(nameof(preaggregationToAdd)); } foreach (var preaggregation in this.preaggregations) { if (string.Equals(preaggregationToAdd.Name, preaggregation.Name, StringComparison.OrdinalIgnoreCase)) { return(false); } if (preaggregation.Dimensions.SequenceEqual(preaggregationToAdd.Dimensions, StringComparer.OrdinalIgnoreCase)) { return(false); } } return(true); }