package com.liyu.fakeweather.utils; import org.litepal.crud.DataSupport; import java.util.List; import rx.Observable; import rx.Subscriber; import rx.schedulers.Schedulers; /** * Created by liyu on 2016/11/9. */ public class RxDataBase { public static <T extends DataSupport> void save(final T t) { Observable.create(new Observable.OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> subscriber) { t.save(); subscriber.onNext(true); subscriber.onCompleted(); } }).subscribeOn(Schedulers.io()).subscribe(); } public static <T extends DataSupport> void deleteThenSave(final T t, final String... condition) { Observable.create(new Observable.OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> subscriber) { DataSupport.deleteAll(t.getClass(), condition); t.save(); subscriber.onNext(true); subscriber.onCompleted(); } }).subscribeOn(Schedulers.io()).subscribe(); } public static <T extends DataSupport> void deleteThenSave(final List<T> list) { if (list == null || list.size() == 0) return; Observable.create(new Observable.OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> subscriber) { DataSupport.deleteAll(list.get(0).getClass()); DataSupport.saveAll(list); subscriber.onNext(true); subscriber.onCompleted(); } }).subscribeOn(Schedulers.io()).subscribe(); } public static <T extends DataSupport> void saveAll(final List<T> list) { Observable.create(new Observable.OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> subscriber) { DataSupport.saveAll(list); subscriber.onNext(true); subscriber.onCompleted(); } }).subscribeOn(Schedulers.io()).subscribe(); } public static <T extends DataSupport> Observable<T> getFirst(final Class<T> clazz) { return Observable.create(new Observable.OnSubscribe<T>() { @Override public void call(Subscriber<? super T> subscriber) { subscriber.onNext(DataSupport.findFirst(clazz)); subscriber.onCompleted(); } }).subscribeOn(Schedulers.io()); } public static <T extends DataSupport> Observable<List<T>> getAll(final Class<T> clazz) { return Observable.create(new Observable.OnSubscribe<List<T>>() { @Override public void call(Subscriber<? super List<T>> subscriber) { subscriber.onNext(DataSupport.findAll(clazz)); subscriber.onCompleted(); } }).subscribeOn(Schedulers.io()); } public static <T extends DataSupport> Observable<T> getFirst(final Class<T> clazz, final String... condition) { return Observable.create(new Observable.OnSubscribe<T>() { @Override public void call(Subscriber<? super T> subscriber) { subscriber.onNext(DataSupport.where(condition).findFirst(clazz, true)); subscriber.onCompleted(); } }).subscribeOn(Schedulers.io()); } public static <T extends DataSupport> Observable<List<T>> getAll(final Class<T> clazz, final String... condition) { return Observable.create(new Observable.OnSubscribe<List<T>>() { @Override public void call(Subscriber<? super List<T>> subscriber) { subscriber.onNext(DataSupport.where(condition).find(clazz)); subscriber.onCompleted(); } }).subscribeOn(Schedulers.io()); } }