public Dictionary<int, IndicatorMetadata> GetIndicatorMetadatas()
        {
            IndicatorMetadataRepository indicatorMetadataRepository = IndicatorMetadataRepository.Instance;
            IGroupDataReader groupDataReader = ReaderFactory.GetGroupDataReader();
            IProfileReader profileReader = ReaderFactory.GetProfileReader();

            IList<IndicatorMetadata> indicatorMetadataList;
            if (_parameters.UseIndicatorIds)
            {
                var profileIds = _parameters.RestrictResultsToProfileIds;

                var indicatorIds = _parameters.IndicatorIds;

                if (profileIds.Any())
                {
                    IList<Grouping> groupings = new GroupingListProvider(groupDataReader, profileReader)
                        .GetGroupings(profileIds, indicatorIds);

                    var matchedGroupings = groupings
                        .GroupBy(x => x.IndicatorId)
                        .Select(grp => grp.First());

                    indicatorMetadataList = indicatorMetadataRepository.GetIndicatorMetadata(matchedGroupings.ToList());
                }
                else
                {
                    indicatorMetadataList = indicatorMetadataRepository.GetIndicatorMetadata(indicatorIds);
                }
            }
            else
            {
                IList<Grouping> groupings = groupDataReader.GetGroupingsByGroupIds(_parameters.GroupIds);
                indicatorMetadataList = indicatorMetadataRepository.GetIndicatorMetadata(groupings);
            }

            Dictionary<int, IndicatorMetadata> metadataMap = indicatorMetadataList.ToDictionary(
                indicatorMetadata => indicatorMetadata.IndicatorId);

            if (_parameters.IncludeDefinition == false)
            {
                indicatorMetadataRepository.ReduceDescriptiveMetadata(indicatorMetadataList);
            }

            if (_parameters.IncludeSystemContent == false)
            {
                //Remove the system content fields (This is the default)
                indicatorMetadataRepository.RemoveSystemContentFields(indicatorMetadataList);
            }

            return metadataMap;
        }