Skip to content

Instantly share code, notes, and snippets.

@manas-raj-shrestha
Created May 12, 2017 10:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save manas-raj-shrestha/dc92ae9644760f54fc28b9834136ce1a to your computer and use it in GitHub Desktop.
Save manas-raj-shrestha/dc92ae9644760f54fc28b9834136ce1a to your computer and use it in GitHub Desktop.
Snippet for zipping multiple weather calls
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