diff --git a/store2store/src/main/java/com/playmoweb/store2store/service/api/AbstractService.java b/store2store/src/main/java/com/playmoweb/store2store/service/api/AbstractService.java index 1692905..59c17ca 100644 --- a/store2store/src/main/java/com/playmoweb/store2store/service/api/AbstractService.java +++ b/store2store/src/main/java/com/playmoweb/store2store/service/api/AbstractService.java @@ -180,6 +180,40 @@ public Observable> call(List items) { return storage.insertOrUpdate(objects); } + @Override + public Observable update(final T object, CustomObserver otherSubscriber) { + final Subscription s = update(object) + .flatMap(new Func1>() { + @Override + public Observable call(T item) { + return storage.insertOrUpdate(item); + } + }) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeOn(Schedulers.io()) + .subscribe(new SimpleObserver<>(otherSubscriber)); + + subscriptions.add(s); + return Observable.just(object); + } + + @Override + public Observable> update(final List objects, CustomObserver> otherSubscriber) { + final Subscription s = update(objects) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(List items) { + return storage.insertOrUpdate(items); + } + }) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeOn(Schedulers.io()) + .subscribe(new SimpleObserver<>(otherSubscriber)); + + subscriptions.add(s); + return storage.insertOrUpdate(objects); + } + @Override public Observable delete(final T object, CustomObserver otherSubscriber) { final Subscription s = delete(object) @@ -292,6 +326,20 @@ public Observable call(List ts) { */ protected abstract Observable> insert(List items); + /** + * + * @param object + * @return + */ + protected abstract Observable update(T object); + + /** + * + * @param items + * @return + */ + protected abstract Observable> update(List items); + /** * * @param items diff --git a/store2store/src/main/java/com/playmoweb/store2store/service/api/IService.java b/store2store/src/main/java/com/playmoweb/store2store/service/api/IService.java index 4aece3a..898cede 100644 --- a/store2store/src/main/java/com/playmoweb/store2store/service/api/IService.java +++ b/store2store/src/main/java/com/playmoweb/store2store/service/api/IService.java @@ -55,6 +55,22 @@ public interface IService { */ Observable> insert(final List objects, final CustomObserver> otherSubscriber); + /** + * Update one object + * @param otherSubscriber + * @param object + * @return + */ + Observable update(final T object, final CustomObserver otherSubscriber); + + /** + * Update all objects + * @param otherSubscriber + * @param objects + * @return + */ + Observable> update(final List objects, final CustomObserver> otherSubscriber); + /** * Delete one object * @param object diff --git a/store2store/src/main/java/com/playmoweb/store2store/service/impl/BaseRealmService.java b/store2store/src/main/java/com/playmoweb/store2store/service/impl/BaseRealmService.java index 6f3310c..101b824 100644 --- a/store2store/src/main/java/com/playmoweb/store2store/service/impl/BaseRealmService.java +++ b/store2store/src/main/java/com/playmoweb/store2store/service/impl/BaseRealmService.java @@ -58,6 +58,16 @@ protected Observable> insert(List items) { return null; } + @Override + protected Observable update(T object) { + return null; + } + + @Override + protected Observable> update(List items) { + return null; + } + @Override protected Observable delete(List items) { return null;