Added Android code
[wl-app.git] / 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 (file)
index 0000000..31d6628
--- /dev/null
@@ -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<BookModel> 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<BookModel> 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<BookModel> all() {
+               return getBox().getAll();
+       }
+
+       public void removeAll() {
+               getBox().removeAll();
+       }
+}