Пример #1
0
        /// <summary>
        /// Returns the created Metric Tree with all data values and metadata included
        /// </summary>
        /// <param name="metricInstanceSetRequest">The request originally passed to the metric service, containing the domain-specific context.</param>
        /// <param name="metricMetadataNode">Should already Filtered by MetricNodeId</param>
        /// <param name="metricDataContainer">Should already be filtered by the domain entity key</param>
        /// <returns>An instance of a class derived from <see cref="MetricBase"/>, and all its descendents.</returns>
        public MetricBase CreateTree(MetricInstanceSetRequestBase metricInstanceSetRequest, MetricMetadataNode metricMetadataNode, MetricDataContainer metricDataContainer)
        {
            // Get the custom metric initialization activity data
            var initializationActivityData = GetMetricInitializationActivityData(metricInstanceSetRequest);

            return CreateMetric(metricInstanceSetRequest, metricMetadataNode, metricDataContainer, null, initializationActivityData);
        }
Пример #2
0
        private MetricBase CreateMetric(MetricInstanceSetRequestBase metricInstanceSetRequest, MetricMetadataNode metricMetadataNode, MetricDataContainer metricDataContainer, 
                                        MetricBase parentMetric, Dictionary<string, object> initializationActivityData)
        {
            MetricBase metric;
            var metricData = metricDataContainer.GetMetricData(metricMetadataNode);

            switch (metricMetadataNode.MetricType)
            {
                case MetricType.ContainerMetric:
                    metric = containerMetricFactory.CreateMetric(metricInstanceSetRequest, metricMetadataNode, metricData, parentMetric);
                    break;

                case MetricType.AggregateMetric:
                    metric = aggregateMetricFactory.CreateMetric(metricInstanceSetRequest, metricMetadataNode, metricData, parentMetric);
                    break;

                case MetricType.GranularMetric:
                    metric = granularMetricFactory.CreateMetric(metricInstanceSetRequest, metricMetadataNode, metricData, parentMetric);
                    break;

                default:
                    throw new NotSupportedException(string.Format("Unsupported metric type '{0}'.", metricMetadataNode.MetricType));
            }

            // Process children
            var metricWithChildren = metric as ContainerMetric;

            // If this is a node type that has children
            if (metricWithChildren != null)
                ProcessForChildren(metricInstanceSetRequest, metricMetadataNode, metricDataContainer, metricWithChildren, initializationActivityData);

            // Execute initialization activities
            InvokeInitializationActivities(metric, metricInstanceSetRequest, metricMetadataNode, metricData, initializationActivityData);

            return metric;
        }
Пример #3
0
        protected virtual void ProcessForChildren(MetricInstanceSetRequestBase metricInstanceSetRequest, MetricMetadataNode metricMetadataNode, MetricDataContainer metricDataContainer, 
                                                  ContainerMetric parentMetric, Dictionary<string, object> initializationActivityData)
        {
            // Initialize the list if it's not already initialized
            if (parentMetric.Children == null)
                parentMetric.Children = new List<MetricBase>();

            // Iterate through the children in the metadata
            foreach (var node in metricMetadataNode.Children)
            {
                // Call recursively to create the tree
                var newChildMetric = CreateMetric(metricInstanceSetRequest, node, metricDataContainer, parentMetric, initializationActivityData);
                parentMetric.Children.Add(newChildMetric);
            }
        }
Пример #4
0
 protected override void ExecuteTest()
 {
     var service = new MetricDataService<LocalEducationAgencyMetricInstanceSetRequest>(new [] { dataProvider1, dataProvider2, dataProvider3 });
     actualModel = service.Get(suppliedRequest);
 }