aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/SubscribedUserDatabase
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2019-08-07 15:28:02 +0000
committerAlex Ning <chineseperson5@gmail.com>2019-08-07 15:28:02 +0000
commit425bc857cfe094d8b9be5815030ef3e6b0cf173d (patch)
treef1e4240531040bb20c9e840c123f03ce28a5f94e /app/src/main/java/SubscribedUserDatabase
parent7f2bc01180c284154fb69976122016c4638e9973 (diff)
downloadinfinity-for-reddit-425bc857cfe094d8b9be5815030ef3e6b0cf173d.tar
infinity-for-reddit-425bc857cfe094d8b9be5815030ef3e6b0cf173d.tar.gz
infinity-for-reddit-425bc857cfe094d8b9be5815030ef3e6b0cf173d.tar.bz2
infinity-for-reddit-425bc857cfe094d8b9be5815030ef3e6b0cf173d.tar.lz
infinity-for-reddit-425bc857cfe094d8b9be5815030ef3e6b0cf173d.tar.xz
infinity-for-reddit-425bc857cfe094d8b9be5815030ef3e6b0cf173d.tar.zst
infinity-for-reddit-425bc857cfe094d8b9be5815030ef3e6b0cf173d.zip
Refactored all the other classes to support multi user. Clearing the app data is required before launching the app.
Diffstat (limited to 'app/src/main/java/SubscribedUserDatabase')
-rw-r--r--app/src/main/java/SubscribedUserDatabase/SubscribedUserDao.java12
-rw-r--r--app/src/main/java/SubscribedUserDatabase/SubscribedUserData.java21
-rw-r--r--app/src/main/java/SubscribedUserDatabase/SubscribedUserRepository.java13
-rw-r--r--app/src/main/java/SubscribedUserDatabase/SubscribedUserRoomDatabase.java26
-rw-r--r--app/src/main/java/SubscribedUserDatabase/SubscribedUserViewModel.java28
5 files changed, 57 insertions, 43 deletions
diff --git a/app/src/main/java/SubscribedUserDatabase/SubscribedUserDao.java b/app/src/main/java/SubscribedUserDatabase/SubscribedUserDao.java
index 711b02a6..513a1ea4 100644
--- a/app/src/main/java/SubscribedUserDatabase/SubscribedUserDao.java
+++ b/app/src/main/java/SubscribedUserDatabase/SubscribedUserDao.java
@@ -16,12 +16,12 @@ public interface SubscribedUserDao {
@Query("DELETE FROM subscribed_users")
void deleteAllSubscribedUsers();
- @Query("SELECT * FROM subscribed_users ORDER BY name COLLATE NOCASE ASC")
- LiveData<List<SubscribedUserData>> getAllSubscribedUsers();
+ @Query("SELECT * FROM subscribed_users WHERE username = :accountName ORDER BY name COLLATE NOCASE ASC")
+ LiveData<List<SubscribedUserData>> getAllSubscribedUsers(String accountName);
- @Query("SELECT * FROM subscribed_users WHERE name = :userName COLLATE NOCASE LIMIT 1")
- SubscribedUserData getSubscribedUser(String userName);
+ @Query("SELECT * FROM subscribed_users WHERE name = :name AND username = :accountName COLLATE NOCASE LIMIT 1")
+ SubscribedUserData getSubscribedUser(String name, String accountName);
- @Query("DELETE FROM subscribed_users WHERE name = :userName")
- void deleteSubscribedUser(String userName);
+ @Query("DELETE FROM subscribed_users WHERE name = :name AND username = :accountName")
+ void deleteSubscribedUser(String name, String accountName);
}
diff --git a/app/src/main/java/SubscribedUserDatabase/SubscribedUserData.java b/app/src/main/java/SubscribedUserDatabase/SubscribedUserData.java
index 98c5a971..8ea89e04 100644
--- a/app/src/main/java/SubscribedUserDatabase/SubscribedUserData.java
+++ b/app/src/main/java/SubscribedUserDatabase/SubscribedUserData.java
@@ -1,11 +1,15 @@
package SubscribedUserDatabase;
+import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
+import androidx.room.ForeignKey;
import androidx.room.PrimaryKey;
-import androidx.annotation.NonNull;
-@Entity(tableName = "subscribed_users")
+import Account.Account;
+
+@Entity(tableName = "subscribed_users", foreignKeys = @ForeignKey(entity = Account.class, parentColumns = "username",
+ childColumns = "username", onDelete = ForeignKey.CASCADE))
public class SubscribedUserData {
@PrimaryKey
@NonNull
@@ -13,10 +17,13 @@ public class SubscribedUserData {
private String name;
@ColumnInfo(name = "icon")
private String iconUrl;
+ @ColumnInfo(name = "username")
+ private String username;
- public SubscribedUserData(@NonNull String name, String iconUrl) {
+ public SubscribedUserData(@NonNull String name, String iconUrl, String username) {
this.name = name;
this.iconUrl = iconUrl;
+ this.username = username;
}
@NonNull
@@ -27,4 +34,12 @@ public class SubscribedUserData {
public String getIconUrl() {
return iconUrl;
}
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getUsername() {
+ return username;
+ }
}
diff --git a/app/src/main/java/SubscribedUserDatabase/SubscribedUserRepository.java b/app/src/main/java/SubscribedUserDatabase/SubscribedUserRepository.java
index 10549113..eb588958 100644
--- a/app/src/main/java/SubscribedUserDatabase/SubscribedUserRepository.java
+++ b/app/src/main/java/SubscribedUserDatabase/SubscribedUserRepository.java
@@ -1,19 +1,20 @@
package SubscribedUserDatabase;
-import android.app.Application;
-import androidx.lifecycle.LiveData;
import android.os.AsyncTask;
+import androidx.lifecycle.LiveData;
+
import java.util.List;
+import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
+
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();
+ SubscribedUserRepository(RedditDataRoomDatabase redditDataRoomDatabase, String accountName) {
+ mSubscribedUserDao = redditDataRoomDatabase.subscribedUserDao();
+ mAllSubscribedUsers = mSubscribedUserDao.getAllSubscribedUsers(accountName);
}
LiveData<List<SubscribedUserData>> getAllSubscribedSubreddits() {
diff --git a/app/src/main/java/SubscribedUserDatabase/SubscribedUserRoomDatabase.java b/app/src/main/java/SubscribedUserDatabase/SubscribedUserRoomDatabase.java
deleted file mode 100644
index 12e6fb90..00000000
--- a/app/src/main/java/SubscribedUserDatabase/SubscribedUserRoomDatabase.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package SubscribedUserDatabase;
-
-import androidx.room.Database;
-import androidx.room.Room;
-import androidx.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
index ed1db58f..387c918c 100644
--- a/app/src/main/java/SubscribedUserDatabase/SubscribedUserViewModel.java
+++ b/app/src/main/java/SubscribedUserDatabase/SubscribedUserViewModel.java
@@ -1,18 +1,24 @@
package SubscribedUserDatabase;
import android.app.Application;
+
+import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
+import androidx.lifecycle.ViewModel;
+import androidx.lifecycle.ViewModelProvider;
import java.util.List;
+import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
+
public class SubscribedUserViewModel extends AndroidViewModel {
private SubscribedUserRepository mSubscribedUserRepository;
private LiveData<List<SubscribedUserData>> mAllSubscribedUsers;
- public SubscribedUserViewModel(Application application) {
+ public SubscribedUserViewModel(Application application, RedditDataRoomDatabase redditDataRoomDatabase, String accountName) {
super(application);
- mSubscribedUserRepository = new SubscribedUserRepository(application);
+ mSubscribedUserRepository = new SubscribedUserRepository(redditDataRoomDatabase, accountName);
mAllSubscribedUsers = mSubscribedUserRepository.getAllSubscribedSubreddits();
}
@@ -23,4 +29,22 @@ public class SubscribedUserViewModel extends AndroidViewModel {
public void insert(SubscribedUserData subscribedUserData) {
mSubscribedUserRepository.insert(subscribedUserData);
}
+
+ public static class Factory extends ViewModelProvider.NewInstanceFactory {
+ private Application mApplication;
+ private RedditDataRoomDatabase mRedditDataRoomDatabase;
+ private String mAccountName;
+
+ public Factory(Application application, RedditDataRoomDatabase redditDataRoomDatabase, String accountName) {
+ mApplication = application;
+ mRedditDataRoomDatabase = redditDataRoomDatabase;
+ mAccountName = accountName;
+ }
+
+ @NonNull
+ @Override
+ public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
+ return (T) new SubscribedUserViewModel(mApplication, mRedditDataRoomDatabase, mAccountName);
+ }
+ }
}