Exemple #1
0
        public void WriteActual(DatabaseWeather weather)
        {
            var roundedTime       = weather.TimeOfWeather;
            var timeofCalculation = weather.TimeOfCalculation;
            var cityId            = weather.CityId;
            var temperatur        = weather.Temperature.ToString(CultureInfo.InvariantCulture);
            var windSpeed         = weather.WindSpeed.ToString(CultureInfo.InvariantCulture);
            var windDegree        = weather.WindDegree;
            var pressure          = weather.Pressure;
            var humidity          = weather.Humidity;

            try
            {
                OpenDb();
                var command = connection.CreateCommand();
                // Daten werden nur alle paar Minuten neu berechnet.
                command.CommandText = $"INSERT IGNORE INTO actual VALUES('{roundedTime:yyyy-MM-dd HH:mm:ss}', "
                                      + $"'{timeofCalculation:yyyy-MM-dd HH:mm:ss}', "
                                      + $"{cityId}, {temperatur}, {windSpeed}, {windDegree}, {pressure}, {humidity})";
                command.ExecuteNonQuery();
                Console.WriteLine("Actual written.");
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("WriteActual: " + ex.Message);
            }
            finally
            {
                CloseDb();
            }
        }
 public Accuracies(DatabaseWeather actualWeather, DatabaseWeather forecast)
 {
     this.TemperatureAccuracy = CalculateAccuracy(actualWeather.Temperature, forecast.Temperature);
     this.WindSpeedAccuracy   = CalculateAccuracy(actualWeather.WindSpeed, forecast.WindSpeed);
     this.WindDegreeAccuracy  = CalculateAccuracy(actualWeather.WindDegree, forecast.WindDegree);
     this.PressureAccuracy    = CalculateAccuracy(actualWeather.Pressure, forecast.Pressure);
     this.HumidityAccuracy    = CalculateAccuracy(actualWeather.Humidity, forecast.Humidity);
 }
        public List <DatabaseWeather> GetForecastListByName(string city)
        {
            var forecastCollection = this.GetApiForecastByName(city);
            var forecastList       = new List <DatabaseWeather>();

            foreach (var forecastObject in forecastCollection.List)
            {
                var databaseWeather = new DatabaseWeather(forecastObject, forecastCollection.City.Id);
                forecastList.Add(databaseWeather);
            }

            return(forecastList);
        }
Exemple #4
0
        public List <DatabaseWeather> GetWeatherByIdAndDateTime(int cityId, DateTime dateTime)
        {
            var weatherList       = new List <DatabaseWeather>();
            var formattedDateTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss");

            try
            {
                OpenDb();
                var command = connection.CreateCommand();
                command.CommandText = $"(SELECT * , 0 as t_minus FROM actual WHERE city_id = {cityId} AND rounded_time = '{formattedDateTime}') "
                                      + $"UNION (SELECT * , TIME_FORMAT(TIMEDIFF(forecast_time, rounded_time_of_request), '%H') / 24 AS t_minus FROM forecast HAVING city_id = {cityId} AND forecast_time = '{formattedDateTime}' AND t_minus > 0) ORDER BY t_minus";
                var reader = command.ExecuteReader();

                while (reader.Read())
                {
                    var weahter = new DatabaseWeather(
                        reader.GetDateTime(0),
                        reader.GetDateTime(1),
                        reader.GetInt32(8),
                        reader.GetInt32(2),
                        !reader.IsDBNull(3) ? reader.GetDouble(3) : 0.0,
                        !reader.IsDBNull(4) ? reader.GetDouble(4) : 0.0,
                        !reader.IsDBNull(5) ? reader.GetInt32(5) : 0,
                        !reader.IsDBNull(6) ? reader.GetInt32(6) : 0,
                        !reader.IsDBNull(7) ? reader.GetInt32(7) : 0
                        );
                    weatherList.Add(weahter);
                }
            }
            catch (MySqlException ex)
            {
                MessageBox.Show(System.Reflection.MethodBase.GetCurrentMethod().Name + ":\n\n" + ex.Message);
            }
            finally
            {
                CloseDb();
            }
            return(weatherList);
        }
Exemple #5
0
        public List <DatabaseWeather> GetForecastListById(int cityId)
        {
            var forecastList = new List <DatabaseWeather>();

            try
            {
                OpenDb();
                var command = connection.CreateCommand();
                //command.CommandText = $"SELECT *,  FROM forecast WHERE city_id = {cityId} ORDER BY forecast_time";
                command.CommandText = $"SELECT * , TIME_FORMAT(TIMEDIFF(forecast_time, rounded_time_of_request), '%H') / 24 AS t_minus FROM forecast HAVING city_id = {cityId} ORDER BY forecast_time";
                var reader = command.ExecuteReader();

                while (reader.Read())
                {
                    var forecast = new DatabaseWeather(
                        reader.GetDateTime(0),
                        reader.GetDateTime(1),
                        reader.GetInt32(8),
                        reader.GetInt32(2),
                        !reader.IsDBNull(3) ? reader.GetDouble(3) : 0.0,
                        !reader.IsDBNull(4) ? reader.GetDouble(4) : 0.0,
                        !reader.IsDBNull(5) ? reader.GetInt32(5) : 0,
                        !reader.IsDBNull(6) ? reader.GetInt32(6) : 0,
                        !reader.IsDBNull(7) ? reader.GetInt32(7) : 0
                        );
                    forecastList.Add(forecast);
                }
            }
            catch (MySqlException ex)
            {
                MessageBox.Show(System.Reflection.MethodBase.GetCurrentMethod().Name + ":\n\n" + ex.Message);
            }
            finally
            {
                CloseDb();
            }
            return(forecastList);
        }
Exemple #6
0
 public WeatherStatistics(DatabaseWeather actualWeather, DatabaseWeather forecast)
 {
     this.Forecast   = forecast;
     this.Accuracies = new Accuracies(actualWeather, forecast);
 }