public void Process(GroupData data, TimePeriodFormatter timePeriodFormatter)
        {
            if (data.IsDataOk)
            {
                try
                {
                    var england = AreaFactory.NewArea(areasReader, AreaCodes.England);

                    foreach (GroupRoot groupRoot in data.GroupRoots)
                    {
                        IndicatorMetadata metadata = data.GetIndicatorMetadataById(groupRoot.IndicatorId);
                        FormatDataAndStats(groupRoot, metadata, timePeriodFormatter);

                        new GroupRootComparisonManager
                        {
                            PholioReader = pholioReader,
                            TargetComparer = GetTargetComparer(metadata, groupRoot, england)
                        }
                        .CompareToCalculateSignficance(groupRoot, metadata);
                        new CoreDataProcessor(null).TruncateList(groupRoot.Data);
                    }
                }
                catch (Exception ex)
                {
                    ExceptionLog.LogException(ex, "");
                }
            }
        }
        private void FormatDataAndStats(GroupRoot groupRoot, IndicatorMetadata metadata,
            TimePeriodFormatter timePeriodFormatter)
        {
            var formatter = NumericFormatterFactory.New(metadata, groupDataReader);

            new GroupRootFormatter().
                Format(groupRoot, metadata, timePeriodFormatter, formatter);
        }
        public void Format(GroupRoot groupRoot, IndicatorMetadata metadata, TimePeriodFormatter timePeriodFormatter, NumericFormatter formatter)
        {
            foreach (CoreDataSet coreData in groupRoot.Data)
            {
                formatter.Format(coreData);
                formatter.FormatConfidenceIntervals(coreData);
            }

            foreach (var grouping in groupRoot.Grouping)
            {
                formatter.Format(grouping.ComparatorData);
                formatter.FormatConfidenceIntervals(grouping.ComparatorData);
                timePeriodFormatter.Format(grouping, metadata);
            }
        }