package br.com.mgalhardo.guidebook.infraestruture.storage.client; import java.util.List; import br.com.mgalhardo.guidebook.domain.entity.Guide; import br.com.mgalhardo.guidebook.infraestruture.operator.WorkerOperator; import io.paperdb.Paper; import io.paperdb.PaperDbException; import rx.Observable; import rx.Subscriber; public class GuideCache { public Observable<List<Guide>> set(final List<Guide> guides) { return Observable.create(new Observable.OnSubscribe<List<Guide>>() { @Override public void call(Subscriber<? super List<Guide>> subscriber) { try { Paper.book().write("Guides", guides); subscriber.onNext(guides); subscriber.onCompleted(); } catch (PaperDbException e) { subscriber.onError(e); } } }).compose(new WorkerOperator<>()); } public Observable<List<Guide>> get() { return Observable.create(new Observable.OnSubscribe<List<Guide>>() { @Override public void call(Subscriber<? super List<Guide>> subscriber) { List<Guide> guides = Paper.book().read("Guides"); if (guides != null) { subscriber.onNext(guides); subscriber.onCompleted(); } else { subscriber.onError(new NullPointerException()); } } }).compose(new WorkerOperator<>()); } }