public PartitionDataForAllSexes GetPartitionData(int profileId, string areaCode, int indicatorId, int ageId, int areaTypeId) { InitGrouping(profileId, areaTypeId, indicatorId, ageId); InitMetadata(_grouping); var timePeriod = TimePeriod.GetDataPoint(_grouping); // Get Data IList<CoreDataSet> dataList = _groupDataReader.GetCoreDataForAllSexes(indicatorId, timePeriod, areaCode, ageId); // Define and order sexes var sexes = GetSexesFromDataList(dataList); // Process data list dataList = new CoreDataSetSorter(dataList).SortBySexId(sexes); CalculateSignificances(areaCode, timePeriod, dataList); FormatData(dataList); return new PartitionDataForAllSexes { AreaCode = areaCode, IndicatorId = indicatorId, AgeId = ageId, Sexes = sexes, Data = dataList }; }
public void TestSortBySexId() { var unsortedDataList = GetDataWithSpecificSexIds(2, 3, 1); var sexes = GetSexes(1, 2, 3); var sortedDataList = new CoreDataSetSorter(unsortedDataList).SortBySexId(sexes); AssertSexIdOrder(sortedDataList, 1, 2, 3); }
public void TestSortByAgeIdWhereMultipleDataWithSameAgeId() { var unsortedDataList = GetDataWithSpecificAgeIds(2, 1, 2); var ages = GetAges(1, 2); var sortedDataList = new CoreDataSetSorter(unsortedDataList).SortByAgeId(ages); AssertAgeIdOrder(sortedDataList, 1, 2, 2); }
public void TestSortByDescendingYear() { var unsortedDataList = new List<CoreDataSet> { new CoreDataSet { Year = 2002}, new CoreDataSet { Year = 2001}, new CoreDataSet { Year = 2003} }; var sortedDataList = new CoreDataSetSorter(unsortedDataList).SortByDescendingYear().ToList(); Assert.AreEqual(2003, sortedDataList[0].Year); Assert.AreEqual(2001, sortedDataList[2].Year); }
/// <summary> /// Get the data (starting with the most recent) until an invalid data point is reached. /// </summary> private List<CoreDataSet> GetValidDataList() { var orderedData = new CoreDataSetSorter(Data.ToList()).SortByDescendingYear(); var validData = new List<CoreDataSet>(); foreach (var data in orderedData) { if (IsDataValid(data)) { validData.Add(data); } else { break; } } return validData; }