private WasteWaterTreatmentPlant CreateWasteWaterTreatmentPlantObject( TableFormattedObject tableObject, List <int> indexesOfNumericColumns, Tuple <int, int> firstDateTimeCellAt, Dictionary <int, string> columnIndexToName) { var wwtp = new WasteWaterTreatmentPlant { TreatmentSteps = new List <WaterTreatmentStep> { new WaterTreatmentStep() } }; //Setting QualityIndicators wwtp.TreatmentSteps[0].QualityIndicators = new List <WaterQualityIndicator>(); //for each indicator for (var i = 0; i < indexesOfNumericColumns.Count; i++) { //for each entry of a specific indicator create a valid entry for (var j = tableObject.NumberOfTitleRows; j < tableObject.Cells.Count; j++) { var waterQualityIndicator = new WaterQualityIndicator(); DateTime.TryParse(tableObject.Cells[j][firstDateTimeCellAt.Item2], out var dateTime); waterQualityIndicator.TimeStamp = dateTime; waterQualityIndicator.Name = columnIndexToName[indexesOfNumericColumns[i]]; waterQualityIndicator.Value = double.Parse(tableObject.Cells[j][indexesOfNumericColumns[i]]); //set defaultUnit waterQualityIndicator.Unit = _utilityDataBaseAccessor.GetDefaultUnitForIndicator(waterQualityIndicator.Name); if (string.IsNullOrEmpty(waterQualityIndicator.Name) || waterQualityIndicator.TimeStamp == null || waterQualityIndicator.TimeStamp == default(DateTime) || string.IsNullOrEmpty(waterQualityIndicator.Unit)) { continue; // this indicator is not valid } wwtp.TreatmentSteps[0].QualityIndicators.Add(waterQualityIndicator); } } Debug.WriteLine("Creation of Harmonized WasteWaterTreatmentPlant Object successful!"); return(wwtp); }
public static WasteWaterTreatmentPlant CreateWwtpMock() { //WWTP WaterPlant var wwtpMock = new WasteWaterTreatmentPlant(); wwtpMock.Location = "Germany"; wwtpMock.Name = "MockPlant"; wwtpMock.TreatmentSteps = new List <WaterTreatmentStep>(); //WWTP TreatmentSteps var waterTreatmentStep1 = new WaterTreatmentStep { Name = "TreatmentStep1", QualityIndicators = new List <WaterQualityIndicator>() }; var waterTreatmentStep2 = new WaterTreatmentStep { Name = "TreatmentStep2", QualityIndicators = new List <WaterQualityIndicator>() }; //WWTP QualityIndicators var qualityIndicator1 = new WaterQualityIndicator { Name = "QualityIndicator1", TimeStamp = DateTime.Now, Unit = "mg/L", Value = 1.01 }; var qualityIndicator2 = new WaterQualityIndicator { Name = "QualityIndicator2", TimeStamp = DateTime.Now, Unit = "mg/L", Value = 1.02 }; var qualityIndicator3 = new WaterQualityIndicator { Name = "QualityIndicator3", TimeStamp = DateTime.Now, Unit = "mg/L", Value = 1.03 }; var qualityIndicator4 = new WaterQualityIndicator { Name = "QualityIndicator4", TimeStamp = DateTime.Now, Unit = "mg/L", Value = 1.04 }; //Assignments waterTreatmentStep1.QualityIndicators.Add(qualityIndicator1); waterTreatmentStep1.QualityIndicators.Add(qualityIndicator2); waterTreatmentStep2.QualityIndicators.Add(qualityIndicator3); waterTreatmentStep2.QualityIndicators.Add(qualityIndicator4); wwtpMock.TreatmentSteps.Add(waterTreatmentStep1); wwtpMock.TreatmentSteps.Add(waterTreatmentStep2); return(wwtpMock); }
private void Type2Special(ExcelPackage excel, WaterQualityIndicator wq) { var worksheet = excel.Workbook.Worksheets[1]; for (var row = 2; row <= worksheet.Dimension.End.Row; row++) { _errorRow = row; var comment = new StringBuilder(); var gaugeName = String.Empty; var year = 0; var month = String.Empty; var parameters = new List <(string name, string unit, double value)>(); for (var column = 1; column <= worksheet.Dimension.End.Column; column++) { _errorColumn = column; switch (worksheet.Cells[1, column].Text.ToLowerInvariant()) { case "name": comment.AppendLine($"Name: {worksheet.Cells[row, column].Text}"); gaugeName = worksheet.Cells[row, column].Text; break; case "water body": comment.AppendLine($"Water body: {worksheet.Cells[row, column].Text}"); break; case "river": comment.AppendLine($"River: {worksheet.Cells[row, column].Text}"); break; case "year": int.TryParse(worksheet.Cells[row, column].Text, NumberStyles.Any, CultureInfo.InvariantCulture, out year); break; case "month": month = worksheet.Cells[row, column].Text; break; default: string n; var u = String.Empty; if (String.IsNullOrWhiteSpace(worksheet.Cells[row, column].Text) || worksheet.Cells[row, column].Text.ToLowerInvariant().Contains("na")) { break; } if (!Double.TryParse(worksheet.Cells[row, column].Text, NumberStyles.Any, CultureInfo.InvariantCulture, out var v)) { var sv = worksheet.Cells[row, column].Text; if (String.IsNullOrWhiteSpace(sv) || !sv.Contains("x")) { break; } if (sv.StartsWith("<")) { v = 0; } else { var ssv = sv.Split('x'); if (ssv.Length != 2) { break; } if (!Double.TryParse(ssv[1], NumberStyles.Any, CultureInfo.InvariantCulture, out var mult)) { break; } if (!Double.TryParse(ssv[0], NumberStyles.Any, CultureInfo.InvariantCulture, out var b)) { break; } v = b * mult; } } var s = worksheet.Cells[1, column].Text?.Split('_'); if (s.Length == 1) { n = worksheet.Cells[1, column].Text; } else if (s.Length == 2) { n = s[0]; u = s[1]; } else { break; } parameters.Add((n, u, v)); break; } } if (!_monthNames.ContainsKey(month.ToLowerInvariant())) { continue; } var date = new DateTime(year, _monthNames[month.ToLowerInvariant()], 1); var gauge = wq.Gauges.FirstOrDefault(x => x.Name == gaugeName); if (gauge == null) { gauge = new Gauge { Name = gaugeName }; wq.Gauges.Add(gauge); } gauge.Notes = comment.ToString(); foreach (var(name, unit, value) in parameters) { var p = gauge.Parameters.FirstOrDefault(x => x.Name == name); if (p == null) { p = new WaterQualityParameter { Name = name, Units = unit }; gauge.Parameters.Add(p); } p.Data.Add(new TimeseriesDatum { Time = date, Value = value }); } } }