/// <summary>
        /// Averages the supplied item with the previously supplied items.
        /// </summary>
        /// <param name="localAverage">The local average to add to the global average.</param>
        public void Aggregate(CosmosElement localAverage)
        {
            // item is a JObject of the form : { "sum": <number>, "count": <number> }
            AverageInfo newInfo = AverageInfo.Create(localAverage);

            this.globalAverage += newInfo;
        }
Beispiel #2
0
    // Calculate the average and limit the range.
    protected double CalcNLimitAverage(double min, double max,
                                       IFormatProvider provider)
    {
        // Get the format provider and calculate the average.
        AverageInfo avgInfo = GetAverageInfo(provider);
        double      avg     = Average(avgInfo.TypeOfAverage);

        // Limit the range, based on the minimum and maximum values
        // for the type.
        return(avg > max ? max : avg < min ? min : avg);
    }
            public static CosmosElement ToCosmosElement(AverageInfo averageInfo)
            {
                Dictionary <string, CosmosElement> dictionary = new Dictionary <string, CosmosElement>();

                if (averageInfo.Sum.HasValue)
                {
                    dictionary.Add(AverageInfo.SumName, CosmosNumber64.Create(averageInfo.Sum.Value));
                }

                dictionary.Add(AverageInfo.CountName, CosmosNumber64.Create(averageInfo.Count));

                return(CosmosObject.Create(dictionary));
            }
        public void Aggregate(dynamic item)
        {
            AverageInfo newInfo = ((JObject)item).ToObject <AverageInfo>();

            if (this.info == null)
            {
                this.info = newInfo;
            }
            else
            {
                this.info += newInfo;
            }
        }
        /// <summary>
        /// Averages the supplied item with the previously supplied items.
        /// </summary>
        /// <param name="localAverage">The local average to add to the global average.</param>
        public void Aggregate(CosmosElement localAverage)
        {
            // item is a JObject of the form : { "sum": <number>, "count": <number> }
            TryCatch <AverageInfo> tryCreateAverageInfo = AverageInfo.TryCreateFromCosmosElement(localAverage);

            if (!tryCreateAverageInfo.Succeeded)
            {
                throw tryCreateAverageInfo.Exception;
            }

            AverageInfo newInfo = tryCreateAverageInfo.Result;

            this.globalAverage += newInfo;
        }
Beispiel #6
0
            public static bool TryParse(string serializedAverageInfo, out AverageInfo averageInfo)
            {
                if (serializedAverageInfo == null)
                {
                    throw new ArgumentNullException(nameof(serializedAverageInfo));
                }

                if (!CosmosElement.TryParse(serializedAverageInfo, out CosmosElement cosmosElementAverageInfo))
                {
                    averageInfo = default(AverageInfo);
                    return(false);
                }

                averageInfo = AverageInfo.Create(cosmosElementAverageInfo);
                return(true);
            }
Beispiel #7
0
        public static TryCatch <IAggregator> TryCreate(string continuationToken)
        {
            AverageInfo averageInfo;

            if (continuationToken != null)
            {
                if (!AverageInfo.TryParse(continuationToken, out averageInfo))
                {
                    return(TryCatch <IAggregator> .FromException(new ArgumentException($"Invalid continuation token: {continuationToken}")));
                }
            }
            else
            {
                averageInfo = new AverageInfo(0, 0);
            }

            return(TryCatch <IAggregator> .FromResult(new AverageAggregator(averageInfo)));
        }
        public static AverageAggregator Create(string continuationToken)
        {
            AverageInfo averageInfo;

            if (continuationToken != null)
            {
                if (!AverageInfo.TryParse(continuationToken, out averageInfo))
                {
                    throw new ArgumentException($"Invalid continuation token: {continuationToken}");
                }
            }
            else
            {
                averageInfo = new AverageInfo(0, 0);
            }

            return(new AverageAggregator(averageInfo));
        }
Beispiel #9
0
    // Get the AverageInfo object from the caller's format provider,
    // or use the local default.
    protected AverageInfo GetAverageInfo(IFormatProvider provider)
    {
        AverageInfo avgInfo = null;

        if (provider != null)
        {
            avgInfo = (AverageInfo)provider.GetFormat(
                typeof(AverageInfo));
        }

        if (avgInfo == null)
        {
            return(defaultProvider);
        }
        else
        {
            return(avgInfo);
        }
    }
        public static TryCatch <IAggregator> TryCreate(CosmosElement continuationToken)
        {
            AverageInfo averageInfo;

            if (continuationToken != null)
            {
                TryCatch <AverageInfo> tryCreateAverageInfo = AverageInfo.TryCreateFromCosmosElement(continuationToken);
                if (!tryCreateAverageInfo.Succeeded)
                {
                    return(TryCatch <IAggregator> .FromException(
                               new MalformedContinuationTokenException(
                                   message : $"Invalid continuation token: {continuationToken}",
                                   innerException : tryCreateAverageInfo.Exception)));
                }

                averageInfo = tryCreateAverageInfo.Result;
            }
            else
            {
                averageInfo = new AverageInfo(0, 0);
            }

            return(TryCatch <IAggregator> .FromResult(new AverageAggregator(averageInfo)));
        }
Beispiel #11
0
 // Construct the object and add an initial list of values.
 // Create a default format provider.
 public DataSet(params double[] values)
 {
     data            = new ArrayList(values);
     defaultProvider =
         new AverageInfo(AverageType.ArithmeticMean);
 }
Beispiel #12
0
    // Display a DataSet with three different format providers.
    public static void DisplayDataSet(DataSet ds)
    {
        string      fmt    = "{0,-12}{1,20}{2,20}{3,20}";
        AverageInfo median = new AverageInfo(AverageType.Median);
        AverageInfo geMean =
            new AverageInfo(AverageType.GeometricMean);

        // Display the dataset elements.
        if (ds.Count > 0)
        {
            Console.Write("\nDataSet: [{0}", ds[0]);
            for (int iX = 1; iX < ds.Count; iX++)
            {
                Console.Write(", {0}", ds[iX]);
            }
            Console.WriteLine("]\n");
        }

        Console.WriteLine(fmt, "Convert.", "Default",
                          "Geometric Mean", "Median");
        Console.WriteLine(fmt, "--------", "-------",
                          "--------------", "------");
        Console.WriteLine(fmt, "ToBoolean",
                          Convert.ToBoolean(ds, null),
                          Convert.ToBoolean(ds, geMean),
                          Convert.ToBoolean(ds, median));
        Console.WriteLine(fmt, "ToByte",
                          Convert.ToByte(ds, null),
                          Convert.ToByte(ds, geMean),
                          Convert.ToByte(ds, median));
        Console.WriteLine(fmt, "ToChar",
                          Convert.ToChar(ds, null),
                          Convert.ToChar(ds, geMean),
                          Convert.ToChar(ds, median));
        Console.WriteLine("{0,-12}{1,20:yyyy-MM-dd HH:mm:ss}" +
                          "{2,20:yyyy-MM-dd HH:mm:ss}{3,20:yyyy-MM-dd HH:mm:ss}",
                          "ToDateTime", Convert.ToDateTime(ds, null),
                          Convert.ToDateTime(ds, geMean),
                          Convert.ToDateTime(ds, median));
        Console.WriteLine(fmt, "ToDecimal",
                          Convert.ToDecimal(ds, null),
                          Convert.ToDecimal(ds, geMean),
                          Convert.ToDecimal(ds, median));
        Console.WriteLine(fmt, "ToDouble",
                          Convert.ToDouble(ds, null),
                          Convert.ToDouble(ds, geMean),
                          Convert.ToDouble(ds, median));
        Console.WriteLine(fmt, "ToInt16",
                          Convert.ToInt16(ds, null),
                          Convert.ToInt16(ds, geMean),
                          Convert.ToInt16(ds, median));
        Console.WriteLine(fmt, "ToInt32",
                          Convert.ToInt32(ds, null),
                          Convert.ToInt32(ds, geMean),
                          Convert.ToInt32(ds, median));
        Console.WriteLine(fmt, "ToInt64",
                          Convert.ToInt64(ds, null),
                          Convert.ToInt64(ds, geMean),
                          Convert.ToInt64(ds, median));
        Console.WriteLine(fmt, "ToSByte",
                          Convert.ToSByte(ds, null),
                          Convert.ToSByte(ds, geMean),
                          Convert.ToSByte(ds, median));
        Console.WriteLine(fmt, "ToSingle",
                          Convert.ToSingle(ds, null),
                          Convert.ToSingle(ds, geMean),
                          Convert.ToSingle(ds, median));
        Console.WriteLine(fmt, "ToUInt16",
                          Convert.ToUInt16(ds, null),
                          Convert.ToUInt16(ds, geMean),
                          Convert.ToUInt16(ds, median));
        Console.WriteLine(fmt, "ToUInt32",
                          Convert.ToUInt32(ds, null),
                          Convert.ToUInt32(ds, geMean),
                          Convert.ToUInt32(ds, median));
        Console.WriteLine(fmt, "ToUInt64",
                          Convert.ToUInt64(ds, null),
                          Convert.ToUInt64(ds, geMean),
                          Convert.ToUInt64(ds, median));
    }
Beispiel #13
0
 private AverageAggregator(AverageInfo globalAverage)
 {
     this.globalAverage = globalAverage;
 }
 public CosmosElement GetCosmosElementContinuationToken()
 {
     return(AverageInfo.ToCosmosElement(this.globalAverage));
 }