internal static IAggregationData CreateAggregationData(MutableAggregation aggregation, IMeasure measure)
        {
            return(aggregation.Match <IAggregationData>(
                       (msum) =>
            {
                return measure.Match <IAggregationData>(
                    (mdouble) =>
                {
                    return SumDataDouble.Create(msum.Sum);
                },
                    (mlong) =>
                {
                    return SumDataLong.Create((long)Math.Round(msum.Sum));
                },
                    (invalid) =>
                {
                    throw new ArgumentException();
                });
            },
                       CreateCountData,
                       CreateMeanData,
                       CreateDistributionData,
                       (mlval) =>
            {
                return measure.Match <IAggregationData>(
                    (mdouble) =>
                {
                    return LastValueDataDouble.Create(mlval.LastValue);
                },
                    (mlong) =>
                {
                    if (double.IsNaN(mlval.LastValue))
                    {
                        return LastValueDataLong.Create(0);
                    }

                    return LastValueDataLong.Create((long)Math.Round(mlval.LastValue));
                },
                    (invalid) =>
                {
                    throw new ArgumentException();
                });
            }));
        }
Esempio n. 2
0
 private static void CheckAggregation(IAggregation aggregation, IAggregationData aggregationData, IMeasure measure)
 {
     aggregation.Match <object>(
         (arg) =>
     {
         measure.Match <object>(
             (arg1) =>
         {
             if (!(aggregationData is ISumDataDouble))
             {
                 throw new ArgumentException(CreateErrorMessageForAggregation(aggregation, aggregationData));
             }
             return(null);
         },
             (arg1) =>
         {
             if (!(aggregationData is ISumDataLong))
             {
                 throw new ArgumentException(CreateErrorMessageForAggregation(aggregation, aggregationData));
             }
             return(null);
         },
             (arg1) =>
         {
             throw new ArgumentException();
         });
         return(null);
     },
         (arg) =>
     {
         if (!(aggregationData is ICountData))
         {
             throw new ArgumentException(CreateErrorMessageForAggregation(aggregation, aggregationData));
         }
         return(null);
     },
         (arg) =>
     {
         if (!(aggregationData is IMeanData))
         {
             throw new ArgumentException(CreateErrorMessageForAggregation(aggregation, aggregationData));
         }
         return(null);
     },
         (arg) =>
     {
         if (!(aggregationData is IDistributionData))
         {
             throw new ArgumentException(CreateErrorMessageForAggregation(aggregation, aggregationData));
         }
         return(null);
     },
         (arg) =>
     {
         measure.Match <object>(
             (arg1) =>
         {
             if (!(aggregationData is ILastValueDataDouble))
             {
                 throw new ArgumentException(CreateErrorMessageForAggregation(aggregation, aggregationData));
             }
             return(null);
         },
             (arg1) =>
         {
             if (!(aggregationData is ILastValueDataLong))
             {
                 throw new ArgumentException(CreateErrorMessageForAggregation(aggregation, aggregationData));
             }
             return(null);
         },
             (arg1) =>
         {
             throw new ArgumentException();
         });
         return(null);
     },
         (arg) =>
     {
         throw new ArgumentException();
     }
         );
 }