// Path: src/main/java/org/chorem/ecd/model/weather/WeatherForecast.java
// public class WeatherForecast {
// 
//     private String provider;
// 
//     private String period;
// 
//     private String temperature;
// 
//     private String feltTemperature;
// 
//     private String sky;
// 
//     private String rain;
// 
//     private String wind;
// 
//     private String humidity;
// 
//     public WeatherForecast() {
//     }
// 
//     public String getProvider() {
//         return provider;
//     }
// 
//     public void setProvider(String provider) {
//         this.provider = provider;
//     }
// 
//     public String getPeriod() {
//         return period;
//     }
// 
//     public void setPeriod(String period) {
//         this.period = period;
//     }
// 
//     public String getTemperature() {
//         return temperature;
//     }
// 
//     public void setTemperature(String temperature) {
//         this.temperature = temperature;
//     }
// 
//     public String getFeltTemperature() {
//         return feltTemperature;
//     }
// 
//     public void setFeltTemperature(String feltTemperature) {
//         this.feltTemperature = feltTemperature;
//     }
// 
//     public String getSky() {
//         return sky;
//     }
// 
//     public void setSky(String sky) {
//         this.sky = sky;
//     }
// 
//     public String getRain() {
//         return rain;
//     }
// 
//     public void setRain(String rain) {
//         this.rain = rain;
//     }
// 
//     public String getWind() {
//         return wind;
//     }
// 
//     public void setWind(String wind) {
//         this.wind = wind;
//     }
// 
//     public String getHumidity() {
//         return humidity;
//     }
// 
//     public void setHumidity(String humidity) {
//         this.humidity = humidity;
//     }
// }


import com.google.common.collect.Range;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.apache.commons.io.IOUtils;
import org.chorem.ecd.model.weather.WeatherForecast;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;
package org.chorem.ecd.task;



/**
 * @author Julien Gaston (gaston@codelutin.com)
 */
public class WeatherForecastBuilderPeriodicTask extends EcdPeriodicTask {

    private static final Logger logger = LoggerFactory.getLogger(WeatherForecastBuilderPeriodicTask.class);

    private URL forecastUrl;

    public static final String NAME = "WeatherForecastBuilder";

    private static final Range<Integer> MORNING_RANGE = Range.closed(4, 12);
    private static final Range<Integer> AFTERNOON_RANGE = Range.closed(13, 18);

    public WeatherForecastBuilderPeriodicTask(String forecastUrl) {
        String url = forecastUrl.replace("/meteo/localite/", "/services/json/");
        try {
            this.forecastUrl = new URL(url);
        } catch (MalformedURLException e) {
            logger.error(e.getMessage(), e);
        }
    }

    @Override
    public void run() {
        try {
// Path: src/main/java/org/chorem/ecd/model/weather/WeatherForecast.java
// public class WeatherForecast {
// 
//     private String provider;
// 
//     private String period;
// 
//     private String temperature;
// 
//     private String feltTemperature;
// 
//     private String sky;
// 
//     private String rain;
// 
//     private String wind;
// 
//     private String humidity;
// 
//     public WeatherForecast() {
//     }
// 
//     public String getProvider() {
//         return provider;
//     }
// 
//     public void setProvider(String provider) {
//         this.provider = provider;
//     }
// 
//     public String getPeriod() {
//         return period;
//     }
// 
//     public void setPeriod(String period) {
//         this.period = period;
//     }
// 
//     public String getTemperature() {
//         return temperature;
//     }
// 
//     public void setTemperature(String temperature) {
//         this.temperature = temperature;
//     }
// 
//     public String getFeltTemperature() {
//         return feltTemperature;
//     }
// 
//     public void setFeltTemperature(String feltTemperature) {
//         this.feltTemperature = feltTemperature;
//     }
// 
//     public String getSky() {
//         return sky;
//     }
// 
//     public void setSky(String sky) {
//         this.sky = sky;
//     }
// 
//     public String getRain() {
//         return rain;
//     }
// 
//     public void setRain(String rain) {
//         this.rain = rain;
//     }
// 
//     public String getWind() {
//         return wind;
//     }
// 
//     public void setWind(String wind) {
//         this.wind = wind;
//     }
// 
//     public String getHumidity() {
//         return humidity;
//     }
// 
//     public void setHumidity(String humidity) {
//         this.humidity = humidity;
//     }
// }


// Path: src/main/java/org/chorem/ecd/task/WeatherForecastBuilderPeriodicTask.java
import com.google.common.collect.Range;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.apache.commons.io.IOUtils;
import org.chorem.ecd.model.weather.WeatherForecast;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;

package org.chorem.ecd.task;



/**
 * @author Julien Gaston (gaston@codelutin.com)
 */
public class WeatherForecastBuilderPeriodicTask extends EcdPeriodicTask {

    private static final Logger logger = LoggerFactory.getLogger(WeatherForecastBuilderPeriodicTask.class);

    private URL forecastUrl;

    public static final String NAME = "WeatherForecastBuilder";

    private static final Range<Integer> MORNING_RANGE = Range.closed(4, 12);
    private static final Range<Integer> AFTERNOON_RANGE = Range.closed(13, 18);

    public WeatherForecastBuilderPeriodicTask(String forecastUrl) {
        String url = forecastUrl.replace("/meteo/localite/", "/services/json/");
        try {
            this.forecastUrl = new URL(url);
        } catch (MalformedURLException e) {
            logger.error(e.getMessage(), e);
        }
    }

    @Override
    public void run() {
        try {
            WeatherForecast forecast = fetchWeatherForecast();