public static ITimeAxisStatisticsProcessing ConstructStatisticsCalculator(AxisKind axisKind, Array axis, DateTime baseOffset) { IDataMaskProvider stepDMP = new DataMaskProviders.StepFunctionDataMaskProvider(); IDataCoverageEvaluator coverageEvaluator = new DataCoverageEvaluators.ContinousMeansCoverageEvaluator(); switch (axisKind) { case AxisKind.Years: traceSource.TraceEvent(TraceEventType.Information, 1, "Constructing StepFunction Years Value Groupping facade"); return(new TimeAxisStatisticsProcessing.TimeAxisValueGrouppingFacade(axis, new TimeAxisProjections.ContinousYears(baseOffset.Year), stepDMP, coverageEvaluator)); case AxisKind.Days: traceSource.TraceEvent(TraceEventType.Information, 2, "Constructing StepFunction Days Value Groupping facade"); return(new TimeAxisStatisticsProcessing.TimeAxisValueGrouppingFacade(axis, new TimeAxisProjections.ContinuousDays(baseOffset), stepDMP, coverageEvaluator)); case AxisKind.Hours: traceSource.TraceEvent(TraceEventType.Information, 3, "Constructing StepFunction Hours Value Groupping facade"); return(new TimeAxisStatisticsProcessing.TimeAxisValueGrouppingFacade(axis, new TimeAxisProjections.ContinuousHours(baseOffset), stepDMP, coverageEvaluator)); default: throw new NotImplementedException("unexpected enum value"); } }
public static ITimeAxisAvgProcessing ConstructAverager(AxisKind axisKind, Array axis, DateTime baseOffset) { IWeightProvider stepFunctionWP = new WeightProviders.StepFunctionInterpolation(); IDataCoverageEvaluator coverageEvaluator = new DataCoverageEvaluators.ContinousMeansCoverageEvaluator(); switch (axisKind) { case AxisKind.Years: traceSource.TraceEvent(TraceEventType.Information, 1, "Constructing StepFunction Years Integrator"); return(new TimeAxisAvgFacade(axis, new TimeAxisProjections.ContinousYears(baseOffset.Year), stepFunctionWP, coverageEvaluator)); case AxisKind.Days: traceSource.TraceEvent(TraceEventType.Information, 2, "Constructing StepFunction Days Integrator"); return(new TimeAxisAvgFacade(axis, new TimeAxisProjections.ContinuousDays(baseOffset), stepFunctionWP, coverageEvaluator)); case AxisKind.Hours: traceSource.TraceEvent(TraceEventType.Information, 3, "Constructing StepFunction Hours Integrator"); return(new TimeAxisAvgFacade(axis, new TimeAxisProjections.ContinuousHours(baseOffset), stepFunctionWP, coverageEvaluator)); default: throw new NotImplementedException("unexpected enum value"); } }