Added Android code
[wl-app.git] / Android / app / src / main / java / com / moiseum / wolnelektury / storage / BookStorage.java
1 package com.moiseum.wolnelektury.storage;
2
3 import android.app.Application;
4 import android.support.annotation.Nullable;
5
6 import com.moiseum.wolnelektury.BuildConfig;
7 import com.moiseum.wolnelektury.connection.models.BookModel;
8 import com.moiseum.wolnelektury.connection.models.BookModel_;
9 import com.moiseum.wolnelektury.connection.models.MyObjectBox;
10
11 import org.greenrobot.eventbus.EventBus;
12
13 import java.util.List;
14
15 import io.objectbox.Box;
16 import io.objectbox.BoxStore;
17 import io.objectbox.android.AndroidObjectBrowser;
18 import io.objectbox.query.Query;
19
20 /**
21  * @author golonkos
22  */
23
24 public class BookStorage {
25
26
27         public static class BookAddedEvent {
28         }
29
30         public static class BookDeletedEvent {
31                 private final String slug;
32
33                 public BookDeletedEvent(String slug) {
34                         this.slug = slug;
35                 }
36
37                 public String getSlug() {
38                         return slug;
39                 }
40         }
41
42         private BoxStore boxStore;
43
44         public BookStorage(Application application) {
45                 boxStore = MyObjectBox.builder().androidContext(application).build();
46                 if (BuildConfig.DEBUG) {
47                         new AndroidObjectBrowser(boxStore).start(application);
48                 }
49         }
50
51         private Box<BookModel> getBox() {
52                 return boxStore.boxFor(BookModel.class);
53         }
54
55         public void add(BookModel book) {
56                 getBox().put(book);
57                 EventBus.getDefault().post(new BookAddedEvent());
58         }
59
60         public void update(BookModel book) {
61                 getBox().put(book);
62         }
63
64         @Nullable
65         public BookModel find(String slug) {
66                 Query<BookModel> query = getBox().query().equal(BookModel_.slug, slug).build();
67                 return query.findFirst();
68         }
69
70         public boolean exists(String slug) {
71                 return find(slug) != null;
72         }
73
74         public void remove(String slug, boolean notify) {
75                 BookModel book = find(slug);
76                 if (book != null) {
77                         getBox().remove(book);
78                         if (notify) {
79                                 EventBus.getDefault().post(new BookDeletedEvent(slug));
80                         }
81                 }
82         }
83
84         public List<BookModel> all() {
85                 return getBox().getAll();
86         }
87
88         public void removeAll() {
89                 getBox().removeAll();
90         }
91 }