aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/SubscribedUserDatabase
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/SubscribedUserDatabase')
-rw-r--r--app/src/main/java/SubscribedUserDatabase/SubscribedUserDao.java21
-rw-r--r--app/src/main/java/SubscribedUserDatabase/SubscribedUserData.java37
-rw-r--r--app/src/main/java/SubscribedUserDatabase/SubscribedUserRepository.java41
-rw-r--r--app/src/main/java/SubscribedUserDatabase/SubscribedUserRoomDatabase.java26
-rw-r--r--app/src/main/java/SubscribedUserDatabase/SubscribedUserViewModel.java26
5 files changed, 151 insertions, 0 deletions
diff --git a/app/src/main/java/SubscribedUserDatabase/SubscribedUserDao.java b/app/src/main/java/SubscribedUserDatabase/SubscribedUserDao.java
new file mode 100644
index 00000000..2b61a666
--- /dev/null
+++ b/app/src/main/java/SubscribedUserDatabase/SubscribedUserDao.java
@@ -0,0 +1,21 @@
+package SubscribedUserDatabase;
+
+import android.arch.lifecycle.LiveData;
+import android.arch.persistence.room.Dao;
+import android.arch.persistence.room.Insert;
+import android.arch.persistence.room.OnConflictStrategy;
+import android.arch.persistence.room.Query;
+
+import java.util.List;
+
+@Dao
+public interface SubscribedUserDao {
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ void insert(SubscribedUserData subscribedUserData);
+
+ @Query("DELETE FROM subscribed_users")
+ void deleteAllSubscribedUsers();
+
+ @Query("SELECT * from subscribed_users ORDER BY name COLLATE NOCASE ASC")
+ LiveData<List<SubscribedUserData>> getAllSubscribedUsers();
+}
diff --git a/app/src/main/java/SubscribedUserDatabase/SubscribedUserData.java b/app/src/main/java/SubscribedUserDatabase/SubscribedUserData.java
new file mode 100644
index 00000000..8494e784
--- /dev/null
+++ b/app/src/main/java/SubscribedUserDatabase/SubscribedUserData.java
@@ -0,0 +1,37 @@
+package SubscribedUserDatabase;
+
+import android.arch.persistence.room.ColumnInfo;
+import android.arch.persistence.room.Entity;
+import android.arch.persistence.room.PrimaryKey;
+import android.support.annotation.NonNull;
+
+@Entity(tableName = "subscribed_users")
+public class SubscribedUserData {
+ @PrimaryKey
+ @NonNull
+ @ColumnInfo(name = "id")
+ private String id;
+ @ColumnInfo(name = "name")
+ private String name;
+ @ColumnInfo(name = "icon")
+ private String iconUrl;
+
+ public SubscribedUserData(@NonNull String id, String name, String iconUrl) {
+ this.id = id;
+ this.name = name;
+ this.iconUrl = iconUrl;
+ }
+
+ @NonNull
+ public String getId() {
+ return id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getIconUrl() {
+ return iconUrl;
+ }
+}
diff --git a/app/src/main/java/SubscribedUserDatabase/SubscribedUserRepository.java b/app/src/main/java/SubscribedUserDatabase/SubscribedUserRepository.java
new file mode 100644
index 00000000..5cab5fa8
--- /dev/null
+++ b/app/src/main/java/SubscribedUserDatabase/SubscribedUserRepository.java
@@ -0,0 +1,41 @@
+package SubscribedUserDatabase;
+
+import android.app.Application;
+import android.arch.lifecycle.LiveData;
+import android.os.AsyncTask;
+
+import java.util.List;
+
+public class SubscribedUserRepository {
+ private SubscribedUserDao mSubscribedUserDao;
+ private LiveData<List<SubscribedUserData>> mAllSubscribedUsers;
+
+ SubscribedUserRepository(Application application) {
+ SubscribedUserRoomDatabase db = SubscribedUserRoomDatabase.getDatabase(application);
+ mSubscribedUserDao = db.subscribedUserDao();
+ mAllSubscribedUsers = mSubscribedUserDao.getAllSubscribedUsers();
+ }
+
+ LiveData<List<SubscribedUserData>> getAllSubscribedSubreddits() {
+ return mAllSubscribedUsers;
+ }
+
+ public void insert(SubscribedUserData subscribedUserData) {
+ new SubscribedUserRepository.insertAsyncTask(mSubscribedUserDao).execute(subscribedUserData);
+ }
+
+ private static class insertAsyncTask extends AsyncTask<SubscribedUserData, Void, Void> {
+
+ private SubscribedUserDao mAsyncTaskDao;
+
+ insertAsyncTask(SubscribedUserDao dao) {
+ mAsyncTaskDao = dao;
+ }
+
+ @Override
+ protected Void doInBackground(final SubscribedUserData... params) {
+ mAsyncTaskDao.insert(params[0]);
+ return null;
+ }
+ }
+}
diff --git a/app/src/main/java/SubscribedUserDatabase/SubscribedUserRoomDatabase.java b/app/src/main/java/SubscribedUserDatabase/SubscribedUserRoomDatabase.java
new file mode 100644
index 00000000..cf3ea59d
--- /dev/null
+++ b/app/src/main/java/SubscribedUserDatabase/SubscribedUserRoomDatabase.java
@@ -0,0 +1,26 @@
+package SubscribedUserDatabase;
+
+import android.arch.persistence.room.Database;
+import android.arch.persistence.room.Room;
+import android.arch.persistence.room.RoomDatabase;
+import android.content.Context;
+
+@Database(entities = {SubscribedUserData.class}, version = 1)
+public abstract class SubscribedUserRoomDatabase extends RoomDatabase {
+ private static SubscribedUserRoomDatabase INSTANCE;
+
+ public abstract SubscribedUserDao subscribedUserDao();
+
+ public static SubscribedUserRoomDatabase getDatabase(final Context context) {
+ if(INSTANCE == null) {
+ synchronized (SubscribedUserRoomDatabase.class) {
+ if(INSTANCE == null) {
+ INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
+ SubscribedUserRoomDatabase.class, "subscribed_users")
+ .build();
+ }
+ }
+ }
+ return INSTANCE;
+ }
+}
diff --git a/app/src/main/java/SubscribedUserDatabase/SubscribedUserViewModel.java b/app/src/main/java/SubscribedUserDatabase/SubscribedUserViewModel.java
new file mode 100644
index 00000000..858fac48
--- /dev/null
+++ b/app/src/main/java/SubscribedUserDatabase/SubscribedUserViewModel.java
@@ -0,0 +1,26 @@
+package SubscribedUserDatabase;
+
+import android.app.Application;
+import android.arch.lifecycle.AndroidViewModel;
+import android.arch.lifecycle.LiveData;
+
+import java.util.List;
+
+public class SubscribedUserViewModel extends AndroidViewModel {
+ private SubscribedUserRepository mSubscribedUserRepository;
+ private LiveData<List<SubscribedUserData>> mAllSubscribedUsers;
+
+ public SubscribedUserViewModel(Application application) {
+ super(application);
+ mSubscribedUserRepository = new SubscribedUserRepository(application);
+ mAllSubscribedUsers = mSubscribedUserRepository.getAllSubscribedSubreddits();
+ }
+
+ public LiveData<List<SubscribedUserData>> getAllSubscribedUsers() {
+ return mAllSubscribedUsers;
+ }
+
+ public void insert(SubscribedUserData subscribedUserData) {
+ mSubscribedUserRepository.insert(subscribedUserData);
+ }
+}