Вот что мне нужно: получить продукты из БД -> проверить, закончен ли продукт -> отправить готовый продукт -> удалить готовый продукт -> удалить изображение этого продукта -> получить новую порцию продуктов -> проверить, нет ли продукта Существует -> Добавить продукт в БД -> Загрузить изображение этого продукта Вот мой код:
@SuppressLint("CheckResult")
public void makeSync(final Context context) {
//getting finished products from db
productsDao.getFinishedProducts().toObservable()
//iterate through all items
.concatMapIterable(new Function<List<RegistrationProduct>, Iterable<RegistrationProduct>>() {
@Override
public Iterable<RegistrationProduct> apply(List<RegistrationProduct> products) throws Exception {
return products;
}
})
//Registration product
.concatMapCompletable(new Function<RegistrationProduct, CompletableSource>() {
@Override
public CompletableSource apply(RegistrationProduct product) throws Exception {
//send product!
return productSendService.sendProduct(UrlHelper.getUrl(context), product)
//remove from database
.andThen(productsDao.delete(product.id)
//remove image of product
.andThen(ImageHelper.removeImageCompletable(product.imgSrc)));
}
})
//get products from server
.andThen(getRegistrationProductsService
.getProducts(UrlHelper.getUrl(context))
.toObservable().concatMapIterable(new Function<List<RegistrationProduct>, Iterable<?>>() {
@Override
public Iterable<?> apply(List<RegistrationProduct> products) throws Exception {
return null; //add products if not exists
}
}));
}
Можно ли использовать цепочку, как это? Спасибо за вашу помощь!