/// <summary> /// Checks whether the parts sum up correctly. /// </summary> /// <returns><c>true</c> if all parts sum up correctly, <c>false</c> otherwise.</returns> public Boolean Verify() { Boolean result = true; foreach (var entry in data) { result &= entry.Verify(); } var municipal = data.FirstOrDefault(x => x.type == PopulationDataType.municipal); var rural = data.FirstOrDefault(x => x.type == PopulationDataType.nonmunicipal); if ((municipal != null) && (rural != null)) { result &= TotalPopulation.VerifySum(municipal, rural); } var collectivehouseholds = data.FirstOrDefault(x => x.type == PopulationDataType.collectivehouseholds); var privatehouseholds = data.FirstOrDefault(x => x.type == PopulationDataType.privatehouseholds); if ((collectivehouseholds != null) && (privatehouseholds != null)) { result &= TotalPopulation.VerifySum(collectivehouseholds, privatehouseholds); } var agricultural = data.FirstOrDefault(x => x.type == PopulationDataType.agricultural); var nonagricultural = data.FirstOrDefault(x => x.type == PopulationDataType.nonagricultural); if ((agricultural != null) && (nonagricultural != null)) { result &= TotalPopulation.VerifySum(agricultural, nonagricultural); } return(result); }
/// <summary> /// Calculates the maximum deviation of the sum of the partial datapoint. /// </summary> /// <returns>Maximum deviation, <c>0</c> if all sum up correctly.</returns> public Int32 SumError() { Int32 maxError = 0; var municipal = data.FirstOrDefault(x => x.type == PopulationDataType.municipal); var rural = data.FirstOrDefault(x => x.type == PopulationDataType.nonmunicipal); if ((municipal != null) && (rural != null)) { maxError = Math.Max(maxError, TotalPopulation.SumError(municipal, rural)); } var collectivehouseholds = data.FirstOrDefault(x => x.type == PopulationDataType.collectivehouseholds); var privatehouseholds = data.FirstOrDefault(x => x.type == PopulationDataType.privatehouseholds); if ((collectivehouseholds != null) && (privatehouseholds != null)) { maxError = Math.Max(maxError, TotalPopulation.SumError(collectivehouseholds, privatehouseholds)); } var agricultural = data.FirstOrDefault(x => x.type == PopulationDataType.agricultural); var nonagricultural = data.FirstOrDefault(x => x.type == PopulationDataType.nonagricultural); if ((agricultural != null) && (nonagricultural != null)) { maxError = Math.Max(maxError, TotalPopulation.SumError(agricultural, nonagricultural)); } return(maxError); }
/// <summary> /// Checks whether the parts sum up correctly. /// </summary> /// <returns><c>true</c> if all parts sum up correctly, <c>false</c> otherwise.</returns> public Boolean Verify() { Boolean result = true; var validData = data.Where(x => x.valid); foreach (var entry in validData) { result &= entry.Verify(); } var municipal = validData.FirstOrDefault(x => x.type == PopulationDataType.municipal); var rural = validData.FirstOrDefault(x => x.type == PopulationDataType.nonmunicipal); if ((municipal != null) && (rural != null)) { result &= TotalPopulation.VerifySum(municipal, rural); } var collectivehouseholds = validData.FirstOrDefault(x => x.type == PopulationDataType.collectivehouseholds); var privatehouseholds = validData.FirstOrDefault(x => x.type == PopulationDataType.privatehouseholds); if ((collectivehouseholds != null) && (privatehouseholds != null)) { result &= TotalPopulation.VerifySum(collectivehouseholds, privatehouseholds); } var sanitary = validData.FirstOrDefault(x => x.type == PopulationDataType.sanitary); var urbanSanitary = validData.FirstOrDefault(x => x.type == PopulationDataType.urbansanitary); var ruralSanitary = validData.FirstOrDefault(x => x.type == PopulationDataType.ruralsanitary); if ((urbanSanitary != null) && (ruralSanitary != null) && (sanitary != null)) { result &= sanitary.VerifySum(collectivehouseholds, privatehouseholds); } var agricultural = validData.FirstOrDefault(x => x.type == PopulationDataType.agricultural); var nonagricultural = validData.FirstOrDefault(x => x.type == PopulationDataType.nonagricultural); if ((agricultural != null) && (nonagricultural != null)) { result &= TotalPopulation.VerifySum(agricultural, nonagricultural); } var thai = validData.FirstOrDefault(x => x.type == PopulationDataType.thai); var foreigner = validData.FirstOrDefault(x => x.type == PopulationDataType.foreigner); if ((thai != null) && (foreigner != null)) { result &= TotalPopulation.VerifySum(thai, foreigner); } else if (thai != null) { result &= TotalPopulation.VerifyLessOrEqual(thai); } return(result); }
/// <summary> /// Calculates the maximum deviation of the sum of the partial data point. /// </summary> /// <returns>Maximum deviation, <c>0</c> if all parts sum up correctly.</returns> public Int32 SumError() { Int32 maxError = 0; var validData = data.Where(x => x.valid); // DOPA data can contain more than one municipal entry with different geocodes PopulationDataPoint municipal = null; var municipalData = validData.Where(x => x.type == PopulationDataType.municipal); if (municipalData.Any()) { municipal = new PopulationDataPoint(); foreach (var dataPoint in municipalData) { municipal.Add(dataPoint); } } var rural = validData.FirstOrDefault(x => x.type == PopulationDataType.nonmunicipal); if ((municipal != null) && (rural != null)) { maxError = Math.Max(maxError, TotalPopulation.SumError(municipal, rural)); } var collectivehouseholds = validData.FirstOrDefault(x => x.type == PopulationDataType.collectivehouseholds); var privatehouseholds = validData.FirstOrDefault(x => x.type == PopulationDataType.privatehouseholds); if ((collectivehouseholds != null) && (privatehouseholds != null)) { maxError = Math.Max(maxError, TotalPopulation.SumError(collectivehouseholds, privatehouseholds)); } var agricultural = validData.FirstOrDefault(x => x.type == PopulationDataType.agricultural); var nonagricultural = validData.FirstOrDefault(x => x.type == PopulationDataType.nonagricultural); if ((agricultural != null) && (nonagricultural != null)) { maxError = Math.Max(maxError, TotalPopulation.SumError(agricultural, nonagricultural)); } var sanitary = validData.FirstOrDefault(x => x.type == PopulationDataType.sanitary); var urbanSanitary = validData.FirstOrDefault(x => x.type == PopulationDataType.urbansanitary); var ruralSanitary = validData.FirstOrDefault(x => x.type == PopulationDataType.ruralsanitary); if ((urbanSanitary != null) && (ruralSanitary != null) && (sanitary != null)) { maxError = Math.Max(maxError, sanitary.SumError(urbanSanitary, ruralSanitary)); } var thai = validData.FirstOrDefault(x => x.type == PopulationDataType.thai); var foreigner = validData.FirstOrDefault(x => x.type == PopulationDataType.foreigner); if ((thai != null) && (foreigner != null)) { maxError = Math.Max(maxError, TotalPopulation.SumError(thai, foreigner)); } return(maxError); }