aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdnan Begovic <adnan@cyngn.com>2016-04-19 13:00:22 -0700
committerAdnan Begovic <adnan@cyngn.com>2016-04-20 14:15:13 -0700
commitf24ccf6778fde0f34fb0d1a1c63d15720cebb75a (patch)
treef7e58d1e676336c68269958ff522cd16f2c02338
parenta6f49ab9fdd72ec75a9f43efbe66537d33486dbd (diff)
downloadandroid_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
-rw-r--r--app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WundergroundWeatherProviderService.java5
-rw-r--r--app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/wunderground/ConverterUtils.java147
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;
+ }
}