Example #1
0
        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);
        }
Example #2
0
        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
                    });
                }
            }
        }