public DistributionGroupAggregationOperation(Type valuesDataType, string parameters)
        {
            _valuesDataType = UniversalValue.UniversalClassTypeByType(valuesDataType);
            var boundaries = parameters.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries).Select(t => UniversalValue.ParseFromString(valuesDataType, t)).ToList();

            if (boundaries.Count == 0)
            {
                throw new Exception("boundaries list is empty");
            }
            List <DistributionGroup> distributionGroups = new List <DistributionGroup>();
            UniversalValue           minBound, maxBound;

            switch (_valuesDataType)
            {
            case UniversalValue.UniversalClassType.Numeric:
                minBound = new UniversalValue(Double.MinValue);
                maxBound = new UniversalValue(Double.MaxValue);
                break;

            case UniversalValue.UniversalClassType.TimeSpan:
                minBound = new UniversalValue(TimeSpan.MinValue);
                maxBound = new UniversalValue(TimeSpan.MaxValue);
                break;

            default:
                throw new Exception("Type " + _valuesDataType + " not supported for interval distribution groupping");
            }
            distributionGroups.Add(new DistributionGroup(minBound, boundaries.First()));
            for (int i = 0; i < boundaries.Count - 1; i++)
            {
                distributionGroups.Add(new DistributionGroup(boundaries[i], boundaries[i + 1]));
            }
            distributionGroups.Add(new DistributionGroup(boundaries.Last(), maxBound));
            _distributionGroups = distributionGroups;
        }
 public DistributionGroupAggregationOperation(Type valuesDataType, string parameters)
 {
     _valuesDataType = UniversalValue.UniversalClassTypeByType(valuesDataType);
     var boundaries = parameters.Split(new[] {'|'}, StringSplitOptions.RemoveEmptyEntries).Select(t => UniversalValue.ParseFromString(valuesDataType, t)).ToList();
     if (boundaries.Count == 0)
         throw new Exception("boundaries list is empty");
     List<DistributionGroup> distributionGroups = new List<DistributionGroup>();
     UniversalValue minBound, maxBound;
     switch (_valuesDataType)
     {
         case UniversalValue.UniversalClassType.Numeric:
             minBound = new UniversalValue(Double.MinValue);
             maxBound = new UniversalValue(Double.MaxValue);
             break;
         case UniversalValue.UniversalClassType.TimeSpan:
             minBound = new UniversalValue(TimeSpan.MinValue);
             maxBound = new UniversalValue(TimeSpan.MaxValue);
             break;
         default:
             throw new Exception("Type " + _valuesDataType + " not supported for interval distribution groupping");
     }
     distributionGroups.Add(new DistributionGroup(minBound, boundaries.First()));
     for (int i = 0; i < boundaries.Count - 1; i++)
     {
         distributionGroups.Add(new DistributionGroup(boundaries[i], boundaries[i + 1]));
     }
     distributionGroups.Add(new DistributionGroup(boundaries.Last(), maxBound));
     _distributionGroups = distributionGroups;
 }
 public PercentileAggregationOperation(string parameters, Type valuesDataType)
 {
     _valuesDataType = UniversalValue.UniversalClassTypeByType(valuesDataType);
     var percents = parameters.Split(new [] {'|'}, StringSplitOptions.RemoveEmptyEntries).Select(Double.Parse).ToList();
     if (percents.Count == 0)
         throw new Exception("percentiles list is empty");
     _percents = percents;
 }
 public CounterSeriesData(string seriesName, UniversalValue.UniversalClassType valueType, string counterCategory, string counterName, string counterSource, string counterInstance, string counterExtData)
 {
     SeriesName = seriesName;
     ValueType = valueType;
     CounterCategory = counterCategory;
     CounterName = counterName;
     CounterSource = counterSource;
     CounterInstance = counterInstance;
     CounterExtData = counterExtData;
 }
 public CounterSeriesData(string seriesName, UniversalValue.UniversalClassType valueType, string counterCategory, string counterName, string counterSource, string counterInstance, string counterExtData)
 {
     SeriesName      = seriesName;
     ValueType       = valueType;
     CounterCategory = counterCategory;
     CounterName     = counterName;
     CounterSource   = counterSource;
     CounterInstance = counterInstance;
     CounterExtData  = counterExtData;
 }
        public PercentileAggregationOperation(string parameters, Type valuesDataType)
        {
            _valuesDataType = UniversalValue.UniversalClassTypeByType(valuesDataType);
            var percents = parameters.Split(new [] { '|' }, StringSplitOptions.RemoveEmptyEntries).Select(Double.Parse).ToList();

            if (percents.Count == 0)
            {
                throw new Exception("percentiles list is empty");
            }
            _percents = percents;
        }