X-Git-Url: https://git.mdrn.pl/wl-app.git/blobdiff_plain/48b2fe9f7c2dc3d9aeaaa6dbfb27c7da4f3235ff..269195b3729c1bdc22e9053ee4ebca667ea8549d:/Android/app/src/main/java/com/moiseum/wolnelektury/storage/BookStorage.java diff --git a/Android/app/src/main/java/com/moiseum/wolnelektury/storage/BookStorage.java b/Android/app/src/main/java/com/moiseum/wolnelektury/storage/BookStorage.java new file mode 100644 index 0000000..31d6628 --- /dev/null +++ b/Android/app/src/main/java/com/moiseum/wolnelektury/storage/BookStorage.java @@ -0,0 +1,91 @@ +package com.moiseum.wolnelektury.storage; + +import android.app.Application; +import android.support.annotation.Nullable; + +import com.moiseum.wolnelektury.BuildConfig; +import com.moiseum.wolnelektury.connection.models.BookModel; +import com.moiseum.wolnelektury.connection.models.BookModel_; +import com.moiseum.wolnelektury.connection.models.MyObjectBox; + +import org.greenrobot.eventbus.EventBus; + +import java.util.List; + +import io.objectbox.Box; +import io.objectbox.BoxStore; +import io.objectbox.android.AndroidObjectBrowser; +import io.objectbox.query.Query; + +/** + * @author golonkos + */ + +public class BookStorage { + + + public static class BookAddedEvent { + } + + public static class BookDeletedEvent { + private final String slug; + + public BookDeletedEvent(String slug) { + this.slug = slug; + } + + public String getSlug() { + return slug; + } + } + + private BoxStore boxStore; + + public BookStorage(Application application) { + boxStore = MyObjectBox.builder().androidContext(application).build(); + if (BuildConfig.DEBUG) { + new AndroidObjectBrowser(boxStore).start(application); + } + } + + private Box getBox() { + return boxStore.boxFor(BookModel.class); + } + + public void add(BookModel book) { + getBox().put(book); + EventBus.getDefault().post(new BookAddedEvent()); + } + + public void update(BookModel book) { + getBox().put(book); + } + + @Nullable + public BookModel find(String slug) { + Query query = getBox().query().equal(BookModel_.slug, slug).build(); + return query.findFirst(); + } + + public boolean exists(String slug) { + return find(slug) != null; + } + + public void remove(String slug, boolean notify) { + BookModel book = find(slug); + if (book != null) { + getBox().remove(book); + if (notify) { + EventBus.getDefault().post(new BookDeletedEvent(slug)); + } + } + } + + public List all() { + return getBox().getAll(); + } + + public void removeAll() { + getBox().removeAll(); + } +}