From 8f91a81e0160a744d30a553b0a563acbf8252920 Mon Sep 17 00:00:00 2001 From: Adnan Begovic Date: Thu, 5 May 2016 19:18:14 -0700 Subject: YahooCM: Add proper offsets for duplicate weather codes by yahoo. Change-Id: I9cd8274606ecba47e3a127b342bdece2e6f894ae --- .../yahooweatherprovider/ConverterUtils.java | 24 ++++++++++++++++++++-- .../YahooWeatherProviderService.java | 6 ++++-- 2 files changed, 26 insertions(+), 4 deletions(-) (limited to 'app/src/main') diff --git a/app/src/main/java/org/cyanogenmod/yahooweatherprovider/ConverterUtils.java b/app/src/main/java/org/cyanogenmod/yahooweatherprovider/ConverterUtils.java index 6a81b4e..53b2158 100644 --- a/app/src/main/java/org/cyanogenmod/yahooweatherprovider/ConverterUtils.java +++ b/app/src/main/java/org/cyanogenmod/yahooweatherprovider/ConverterUtils.java @@ -27,16 +27,22 @@ import org.cyanogenmod.yahooweatherprovider.yahoo.response.Postal; import java.util.ArrayList; import java.util.List; +import cyanogenmod.providers.WeatherContract; import cyanogenmod.weather.WeatherInfo; import cyanogenmod.weather.WeatherLocation; +import static cyanogenmod.providers.WeatherContract.WeatherColumns.WeatherCode.ISOLATED_THUNDERSHOWERS; +import static cyanogenmod.providers.WeatherContract.WeatherColumns.WeatherCode.NOT_AVAILABLE; +import static cyanogenmod.providers.WeatherContract.WeatherColumns.WeatherCode.SCATTERED_SNOW_SHOWERS; +import static cyanogenmod.providers.WeatherContract.WeatherColumns.WeatherCode.SCATTERED_THUNDERSTORMS; + public class ConverterUtils { public static ArrayList convertForecastsToDayForecasts(List forecasts) { ArrayList ret = new ArrayList<>(); for (Forecast forecast : forecasts) { - WeatherInfo.DayForecast dayForecast = new WeatherInfo.DayForecast.Builder( - Integer.parseInt(forecast.getCode())) + WeatherInfo.DayForecast dayForecast = new WeatherInfo.DayForecast.Builder(offset( + Integer.parseInt(forecast.getCode()))) .setHigh(Double.parseDouble(forecast.getHigh())) .setLow(Double.parseDouble(forecast.getLow())) .build(); @@ -96,4 +102,18 @@ public class ConverterUtils { } return ret; } + + public static int offset(int conditionCode) { + if (conditionCode <= WeatherContract.WeatherColumns.WeatherCode.SHOWERS) { + return conditionCode; + } else if (conditionCode <= SCATTERED_THUNDERSTORMS) { + return conditionCode - 1; + } else if (conditionCode <= SCATTERED_SNOW_SHOWERS) { + return conditionCode - 2; + } else if (conditionCode <= ISOLATED_THUNDERSHOWERS) { + return conditionCode - 3; + } else { + return NOT_AVAILABLE; + } + } } diff --git a/app/src/main/java/org/cyanogenmod/yahooweatherprovider/YahooWeatherProviderService.java b/app/src/main/java/org/cyanogenmod/yahooweatherprovider/YahooWeatherProviderService.java index 7fcfbf0..dd6d327 100644 --- a/app/src/main/java/org/cyanogenmod/yahooweatherprovider/YahooWeatherProviderService.java +++ b/app/src/main/java/org/cyanogenmod/yahooweatherprovider/YahooWeatherProviderService.java @@ -248,7 +248,8 @@ public class YahooWeatherProviderService extends WeatherProviderService WeatherContract.WeatherColumns.TempUnit.FAHRENHEIT); // Set current weather condition code - weatherInfoBuilder.setWeatherCondition(Integer.parseInt(condition.getCode())); + weatherInfoBuilder.setWeatherCondition( + ConverterUtils.offset(Integer.parseInt(condition.getCode()))); // Set humidity weatherInfoBuilder.setHumidity(Double.parseDouble(atmosphere.getHumidity())); @@ -262,7 +263,8 @@ public class YahooWeatherProviderService extends WeatherProviderService weatherInfoBuilder.setTodaysHigh(Double.parseDouble(forecasts[0].getHigh())); weatherInfoBuilder.setTodaysLow(Double.parseDouble(forecasts[0].getHigh())); - ArrayList forecastList = ConverterUtils.convertForecastsToDayForecasts( + ArrayList forecastList = + ConverterUtils.convertForecastsToDayForecasts( Arrays.asList(forecasts)); // Remove today forecastList.remove(0); -- cgit v1.2.3