Created
May 12, 2017 10:11
-
-
Save manas-raj-shrestha/dc92ae9644760f54fc28b9834136ce1a to your computer and use it in GitHub Desktop.
Snippet for zipping multiple weather calls
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class WeatherInteractorImpl extends BaseInteractor implements WeatherInteractor { | |
private final static String API_KEY = ""; | |
private final static String UNIT = "si"; | |
private final static int DAY_INCREMENT = 1; | |
private final static long UNIX_TIME_CONVERSION_CONSTANT = 1000L; | |
@Override | |
public Observable<WeatherModel> getWeatherForecastDaily(LatLng latLng, Action1 onNextAction, Action1 onErrorAction) { | |
Calendar calendar = Calendar.getInstance(); | |
Observable<WeatherModel> dayOneObservable = getWeatherObservable(latLng, calendar); | |
Observable<WeatherModel> dayTwoObservable = getWeatherObservable(latLng, calendar); | |
Observable<WeatherModel> dayThreeObservable = getWeatherObservable(latLng, calendar); | |
Observable<WeatherModel> dayFourObservable = getWeatherObservable(latLng, calendar); | |
Observable<WeatherModel> dayFiveObservable = getWeatherObservable(latLng, calendar); | |
Observable<WeatherModel> daySixObservable = getWeatherObservable(latLng, calendar); | |
Observable<WeatherModel> daySevenObservable = getWeatherObservable(latLng, calendar); | |
Observable zippedObservable = Observable.zip(dayOneObservable, dayTwoObservable, dayThreeObservable, dayFourObservable, | |
dayFiveObservable, daySixObservable, daySevenObservable, (dayOneInfo, dayTwoInfo, | |
dayThreeInfo, dayFourInfo, | |
dayFiveInfo, daySixInfo, | |
daySevenInfo) -> { | |
ArrayList<WeatherModel> weatherInfos = new ArrayList<>(); | |
weatherInfos.add(dayOneInfo); | |
weatherInfos.add(dayTwoInfo); | |
weatherInfos.add(dayThreeInfo); | |
weatherInfos.add(dayFourInfo); | |
weatherInfos.add(dayFiveInfo); | |
weatherInfos.add(daySixInfo); | |
weatherInfos.add(daySevenInfo); | |
return weatherInfos; | |
}); | |
return zippedObservable; | |
} | |
private Observable<WeatherModel> getWeatherObservable(LatLng latLng, Calendar calendar) { | |
Observable<WeatherModel> weatherObservable = retrofitServices.getWeatherDaily(API_KEY, | |
String.valueOf(latLng.latitude) + "," + String.valueOf(latLng.longitude) + "," | |
+ calendar.getTimeInMillis() / UNIX_TIME_CONVERSION_CONSTANT, UNIT); | |
calendar.add(Calendar.DATE, DAY_INCREMENT); | |
return weatherObservable; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment