summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/org/lineageos/yahooweatherprovider/ConverterUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/org/lineageos/yahooweatherprovider/ConverterUtils.java')
-rw-r--r--app/src/main/java/org/lineageos/yahooweatherprovider/ConverterUtils.java125
1 files changed, 125 insertions, 0 deletions
diff --git a/app/src/main/java/org/lineageos/yahooweatherprovider/ConverterUtils.java b/app/src/main/java/org/lineageos/yahooweatherprovider/ConverterUtils.java
new file mode 100644
index 0000000..650aca4
--- /dev/null
+++ b/app/src/main/java/org/lineageos/yahooweatherprovider/ConverterUtils.java
@@ -0,0 +1,125 @@
+/**
+ * Copyright (C) 2016 The CyanogenMod Project
+ * <p/>
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.lineageos.yahooweatherprovider;
+
+import org.lineageos.yahooweatherprovider.yahoo.response.Admin1;
+import org.lineageos.yahooweatherprovider.yahoo.response.Admin2;
+import org.lineageos.yahooweatherprovider.yahoo.response.Admin3;
+import org.lineageos.yahooweatherprovider.yahoo.response.Forecast;
+import org.lineageos.yahooweatherprovider.yahoo.response.Locality1;
+import org.lineageos.yahooweatherprovider.yahoo.response.Place;
+import org.lineageos.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<WeatherInfo.DayForecast> convertForecastsToDayForecasts(
+ List<Forecast> forecasts, int max) {
+ ArrayList<WeatherInfo.DayForecast> ret = new ArrayList<>();
+ int i = 0;
+ for (Forecast forecast : forecasts) {
+ if (i > max) {
+ break;
+ }
+ WeatherInfo.DayForecast dayForecast = new WeatherInfo.DayForecast.Builder(offset(
+ Integer.parseInt(forecast.getCode())))
+ .setHigh(Double.parseDouble(forecast.getHigh()))
+ .setLow(Double.parseDouble(forecast.getLow()))
+ .build();
+ ret.add(dayForecast);
+ i++;
+ }
+ return ret;
+ }
+
+ public static List<WeatherLocation> convertPlacesToWeatherLocations(List<Place> places) {
+ List<WeatherLocation> ret = new ArrayList<>();
+ for (Place place : places) {
+ Postal postal = place.getPostal();
+ Admin1 admin1 = place.getAdmin1();
+ if (admin1 != null && admin1.getContent() != null) {
+ WeatherLocation weatherLocation = new WeatherLocation.Builder(admin1.getWoeid(),
+ admin1.getContent())
+ .setCountry(place.getCountry().getContent())
+ .setCountryId(place.getCountry().getCode())
+ .setPostalCode(postal == null ? "" : postal.getContent())
+ .build();
+ ret.add(weatherLocation);
+ }
+
+ Admin2 admin2 = place.getAdmin2();
+ if (admin2 != null && admin2.getContent() != null) {
+ WeatherLocation weatherLocation = new WeatherLocation.Builder(admin2.getWoeid(),
+ admin2.getContent())
+ .setCountry(place.getCountry().getContent())
+ .setCountryId(place.getCountry().getCode())
+ .setPostalCode(postal == null ? "" : postal.getContent())
+ .build();
+ ret.add(weatherLocation);
+ }
+
+ Admin3 admin3 = place.getAdmin3();
+ if (admin3 != null && admin3.getContent() != null) {
+ WeatherLocation weatherLocation = new WeatherLocation.Builder(admin3.getWoeid(),
+ admin3.getContent())
+ .setCountry(place.getCountry().getContent())
+ .setCountryId(place.getCountry().getCode())
+ .setPostalCode(postal == null ? "" : postal.getContent())
+ .build();
+ ret.add(weatherLocation);
+ }
+
+ Locality1 locality1 = place.getLocality1();
+ if (locality1 != null && locality1.getContent() != null) {
+ WeatherLocation weatherLocation = new WeatherLocation.Builder(
+ locality1.getWoeid(),
+ locality1.getContent())
+ .setCountry(place.getCountry().getContent())
+ .setCountryId(place.getCountry().getCode())
+ .setPostalCode(postal == null ? "" : postal.getContent())
+ .build();
+ ret.add(weatherLocation);
+ }
+ }
+ 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;
+ }
+ }
+}