diff options
author | Adnan Begovic <adnan@cyngn.com> | 2016-04-19 13:00:22 -0700 |
---|---|---|
committer | Adnan Begovic <adnan@cyngn.com> | 2016-04-20 14:15:13 -0700 |
commit | f24ccf6778fde0f34fb0d1a1c63d15720cebb75a (patch) | |
tree | f7e58d1e676336c68269958ff522cd16f2c02338 | |
parent | a6f49ab9fdd72ec75a9f43efbe66537d33486dbd (diff) | |
download | android_packages_apps_WundergroundWeatherProvider-f24ccf6778fde0f34fb0d1a1c63d15720cebb75a.tar.gz android_packages_apps_WundergroundWeatherProvider-f24ccf6778fde0f34fb0d1a1c63d15720cebb75a.tar.bz2 android_packages_apps_WundergroundWeatherProvider-f24ccf6778fde0f34fb0d1a1c63d15720cebb75a.zip |
WundergroundCM: Provide weathercondition to weathercode map.
Change-Id: Ic277c37839c38bc558c0fc77f72de34c802abbc5
2 files changed, 151 insertions, 1 deletions
diff --git a/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WundergroundWeatherProviderService.java b/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WundergroundWeatherProviderService.java index 2c3d7d0..bc31bf0 100644 --- a/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WundergroundWeatherProviderService.java +++ b/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WundergroundWeatherProviderService.java @@ -241,6 +241,11 @@ public class WundergroundWeatherProviderService extends WeatherProviderService currentObservationResponse.getWindDegrees().floatValue(), WeatherContract.WeatherColumns.WindSpeedUnit.MPH); + // Set current weather condition + weatherInfoBuilder.setWeatherCondition( + ConverterUtils.convertWeatherConditionStringToWeatherConditionCode( + currentObservationResponse.getWeather().trim())); + ForecastResponse forecastResponse = wundergroundReponse.getForecast(); diff --git a/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/wunderground/ConverterUtils.java b/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/wunderground/ConverterUtils.java index cd20467..1d3ddf9 100644 --- a/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/wunderground/ConverterUtils.java +++ b/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/wunderground/ConverterUtils.java @@ -16,11 +16,15 @@ package org.cyanogenmod.wundergroundcmweatherprovider.wunderground; +import android.text.TextUtils; + import org.cyanogenmod.wundergroundcmweatherprovider.wunderground.responses.citylookup.CityDisambiguationResponse; import org.cyanogenmod.wundergroundcmweatherprovider.wunderground.responses.forecast.ForecastDayResponse; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import cyanogenmod.providers.WeatherContract; import cyanogenmod.weather.WeatherInfo; @@ -31,12 +35,147 @@ public class ConverterUtils { private ConverterUtils() { } + private static Map<String, Integer> sWeatherConditionStringToCode = new HashMap<>(); + + /** + * From https://www.wunderground.com/weather/api/d/docs?d=resources/phrase-glossary&_ga=1.207239701.783906908.1458852719&MR=1 + */ + static { + sWeatherConditionStringToCode.put("Chance of Rain", + WeatherContract.WeatherColumns.WeatherCode.SCATTERED_SHOWERS); + sWeatherConditionStringToCode.put("Chance Rain", + WeatherContract.WeatherColumns.WeatherCode.SCATTERED_SHOWERS); + sWeatherConditionStringToCode.put("Chance of Flurries", + WeatherContract.WeatherColumns.WeatherCode.SNOW_FLURRIES); + sWeatherConditionStringToCode.put("Chance of Freezing Rain", + WeatherContract.WeatherColumns.WeatherCode.FREEZING_RAIN); + sWeatherConditionStringToCode.put("Chance of Sleet", + WeatherContract.WeatherColumns.WeatherCode.SLEET); + sWeatherConditionStringToCode.put("Chance of Snow", + WeatherContract.WeatherColumns.WeatherCode.SNOW); + sWeatherConditionStringToCode.put("Chance of Thunderstorms", + WeatherContract.WeatherColumns.WeatherCode.ISOLATED_THUNDERSTORMS); + sWeatherConditionStringToCode.put("Chance of a Thunderstorm", + WeatherContract.WeatherColumns.WeatherCode.ISOLATED_THUNDERSTORMS); + sWeatherConditionStringToCode.put("Drizzle", + WeatherContract.WeatherColumns.WeatherCode.DRIZZLE); + sWeatherConditionStringToCode.put("Rain", + WeatherContract.WeatherColumns.WeatherCode.SHOWERS); + sWeatherConditionStringToCode.put("Snow", + WeatherContract.WeatherColumns.WeatherCode.SNOW); + sWeatherConditionStringToCode.put("Snow Grains", + WeatherContract.WeatherColumns.WeatherCode.SNOW_FLURRIES); + sWeatherConditionStringToCode.put("Ice Crystals", + WeatherContract.WeatherColumns.WeatherCode.SLEET); + sWeatherConditionStringToCode.put("Ice Pellets", + WeatherContract.WeatherColumns.WeatherCode.SLEET); + sWeatherConditionStringToCode.put("Hail", + WeatherContract.WeatherColumns.WeatherCode.HAIL); + sWeatherConditionStringToCode.put("Mist", + WeatherContract.WeatherColumns.WeatherCode.SCATTERED_SHOWERS); + sWeatherConditionStringToCode.put("Fog", + WeatherContract.WeatherColumns.WeatherCode.FOGGY); + sWeatherConditionStringToCode.put("Fog Patches", + WeatherContract.WeatherColumns.WeatherCode.FOGGY); + sWeatherConditionStringToCode.put("Smoke", + WeatherContract.WeatherColumns.WeatherCode.SMOKY); + sWeatherConditionStringToCode.put("Volcanic Ash", + WeatherContract.WeatherColumns.WeatherCode.SMOKY); + sWeatherConditionStringToCode.put("Dust", + WeatherContract.WeatherColumns.WeatherCode.DUST); + sWeatherConditionStringToCode.put("Sand", + WeatherContract.WeatherColumns.WeatherCode.DUST); + sWeatherConditionStringToCode.put("Haze", + WeatherContract.WeatherColumns.WeatherCode.HAZE); + sWeatherConditionStringToCode.put("Spray", + WeatherContract.WeatherColumns.WeatherCode.SCATTERED_SHOWERS); + sWeatherConditionStringToCode.put("Dust Whirls", + WeatherContract.WeatherColumns.WeatherCode.DUST); + sWeatherConditionStringToCode.put("Sandstorm", + WeatherContract.WeatherColumns.WeatherCode.DUST); + sWeatherConditionStringToCode.put("Low Drifting Snow", + WeatherContract.WeatherColumns.WeatherCode.BLOWING_SNOW); + sWeatherConditionStringToCode.put("Low Drifting Widespread Dust", + WeatherContract.WeatherColumns.WeatherCode.DUST); + sWeatherConditionStringToCode.put("Low Drifting Sand", + WeatherContract.WeatherColumns.WeatherCode.DUST); + sWeatherConditionStringToCode.put("Blowing Snow", + WeatherContract.WeatherColumns.WeatherCode.BLOWING_SNOW); + sWeatherConditionStringToCode.put("Blowing Widespread Dust", + WeatherContract.WeatherColumns.WeatherCode.DUST); + sWeatherConditionStringToCode.put("Blowing Sand", + WeatherContract.WeatherColumns.WeatherCode.DUST); + sWeatherConditionStringToCode.put("Rain Mist", + WeatherContract.WeatherColumns.WeatherCode.SCATTERED_SHOWERS); + sWeatherConditionStringToCode.put("Rain Showers", + WeatherContract.WeatherColumns.WeatherCode.SHOWERS); + sWeatherConditionStringToCode.put("Snow Showers", + WeatherContract.WeatherColumns.WeatherCode.SNOW_SHOWERS); + sWeatherConditionStringToCode.put("Snow Blowing", + WeatherContract.WeatherColumns.WeatherCode.BLOWING_SNOW); + sWeatherConditionStringToCode.put("Snow Blowing Snow Mist", + WeatherContract.WeatherColumns.WeatherCode.MIXED_RAIN_AND_SNOW); + sWeatherConditionStringToCode.put("Ice Pellet Showers", + WeatherContract.WeatherColumns.WeatherCode.MIXED_RAIN_AND_HAIL); + sWeatherConditionStringToCode.put("Hail Showers", + WeatherContract.WeatherColumns.WeatherCode.MIXED_RAIN_AND_HAIL); + sWeatherConditionStringToCode.put("Small Hail Showers", + WeatherContract.WeatherColumns.WeatherCode.MIXED_RAIN_AND_HAIL); + sWeatherConditionStringToCode.put("Thunderstorm", + WeatherContract.WeatherColumns.WeatherCode.THUNDERSTORMS); + sWeatherConditionStringToCode.put("Thunderstorms and Rain", + WeatherContract.WeatherColumns.WeatherCode.THUNDERSHOWER); + sWeatherConditionStringToCode.put("Thunderstorms and Snow", + WeatherContract.WeatherColumns.WeatherCode.THUNDERSHOWER); + sWeatherConditionStringToCode.put("Thunderstorms and Ice Pellets", + WeatherContract.WeatherColumns.WeatherCode.SEVERE_THUNDERSTORMS); + sWeatherConditionStringToCode.put("Thunderstorms with Hail", + WeatherContract.WeatherColumns.WeatherCode.SEVERE_THUNDERSTORMS); + sWeatherConditionStringToCode.put("Thunderstorms with Small Hail", + WeatherContract.WeatherColumns.WeatherCode.SEVERE_THUNDERSTORMS); + sWeatherConditionStringToCode.put("Freezing Drizzle", + WeatherContract.WeatherColumns.WeatherCode.MIXED_RAIN_AND_SLEET); + sWeatherConditionStringToCode.put("Freezing Rain", + WeatherContract.WeatherColumns.WeatherCode.MIXED_RAIN_AND_SLEET); + sWeatherConditionStringToCode.put("Freezing Fog", + WeatherContract.WeatherColumns.WeatherCode.FOGGY); + sWeatherConditionStringToCode.put("Patches of Fog", + WeatherContract.WeatherColumns.WeatherCode.FOGGY); + sWeatherConditionStringToCode.put("Shallow Fog", + WeatherContract.WeatherColumns.WeatherCode.FOGGY); + sWeatherConditionStringToCode.put("Partial Fog", + WeatherContract.WeatherColumns.WeatherCode.FOGGY); + sWeatherConditionStringToCode.put("Overcast", + WeatherContract.WeatherColumns.WeatherCode.FAIR_DAY); + sWeatherConditionStringToCode.put("Clear", + WeatherContract.WeatherColumns.WeatherCode.SUNNY); + sWeatherConditionStringToCode.put("Partly Cloudy", + WeatherContract.WeatherColumns.WeatherCode.PARTLY_CLOUDY); + sWeatherConditionStringToCode.put("Mostly Cloudy", + WeatherContract.WeatherColumns.WeatherCode.CLOUDY); + sWeatherConditionStringToCode.put("Scattered Clouds", + WeatherContract.WeatherColumns.WeatherCode.PARTLY_CLOUDY); + sWeatherConditionStringToCode.put("Small Hail", + WeatherContract.WeatherColumns.WeatherCode.HAIL); + sWeatherConditionStringToCode.put("Squalls", + WeatherContract.WeatherColumns.WeatherCode.ISOLATED_THUNDERSTORMS); + sWeatherConditionStringToCode.put("Funnel Cloud", + WeatherContract.WeatherColumns.WeatherCode.TORNADO); + sWeatherConditionStringToCode.put("Unknown Precipitation", + WeatherContract.WeatherColumns.WeatherCode.DRIZZLE); + sWeatherConditionStringToCode.put("Unknown", + WeatherContract.WeatherColumns.WeatherCode.NOT_AVAILABLE); + + } + public static ArrayList<WeatherInfo.DayForecast> convertSimpleFCToDayForcast( List<ForecastDayResponse> forecastDayResponses) { ArrayList<WeatherInfo.DayForecast> dayForecasts = new ArrayList<>(); for (ForecastDayResponse forecastDayResponse : forecastDayResponses) { WeatherInfo.DayForecast dayForecast = new WeatherInfo.DayForecast - .Builder(WeatherContract.WeatherColumns.WeatherCode.SUNNY) + .Builder( + convertWeatherConditionStringToWeatherConditionCode( + forecastDayResponse.getConditions())) .setHigh(forecastDayResponse.getHigh().getFahrenheit()) .setLow(forecastDayResponse.getLow().getFahrenheit()) .build(); @@ -57,4 +196,10 @@ public class ConverterUtils { } return weatherLocations; } + + public static int convertWeatherConditionStringToWeatherConditionCode(String weatherCondition) { + return sWeatherConditionStringToCode.containsKey(weatherCondition) + ? sWeatherConditionStringToCode.get(weatherCondition) + : WeatherContract.WeatherColumns.WeatherCode.NOT_AVAILABLE; + } } |