From 425bc857cfe094d8b9be5815030ef3e6b0cf173d Mon Sep 17 00:00:00 2001 From: Alex Ning Date: Wed, 7 Aug 2019 23:28:02 +0800 Subject: Refactored all the other classes to support multi user. Clearing the app data is required before launching the app. --- .../main/java/SubredditDatabase/SubredditData.java | 34 +++++++++++++++++----- .../SubredditDatabase/SubredditRepository.java | 12 ++++---- .../SubredditDatabase/SubredditRoomDatabase.java | 26 ----------------- .../java/SubredditDatabase/SubredditViewModel.java | 17 ++++++----- 4 files changed, 43 insertions(+), 46 deletions(-) delete mode 100644 app/src/main/java/SubredditDatabase/SubredditRoomDatabase.java (limited to 'app/src/main/java/SubredditDatabase') diff --git a/app/src/main/java/SubredditDatabase/SubredditData.java b/app/src/main/java/SubredditDatabase/SubredditData.java index 9af7204d..e1275809 100644 --- a/app/src/main/java/SubredditDatabase/SubredditData.java +++ b/app/src/main/java/SubredditDatabase/SubredditData.java @@ -1,29 +1,49 @@ package SubredditDatabase; +import androidx.annotation.NonNull; import androidx.room.ColumnInfo; import androidx.room.Entity; -import androidx.annotation.NonNull; - -import SubscribedSubredditDatabase.SubscribedSubredditData; +import androidx.room.PrimaryKey; @Entity(tableName = "subreddits") -public class SubredditData extends SubscribedSubredditData { +public class SubredditData { + @PrimaryKey + @NonNull + @ColumnInfo(name = "id") + private String id; + @ColumnInfo(name = "name") + private String name; + @ColumnInfo(name = "icon") + private String iconUrl; @ColumnInfo(name = "banner") private String bannerUrl; - @ColumnInfo(name = "description") private String description; - @ColumnInfo(name = "subscribers_count") private int nSubscribers; public SubredditData(@NonNull String id, String name, String iconUrl, String bannerUrl, String description, int nSubscribers) { - super(id, name, iconUrl); + this.id = id; + this.name = name; + this.iconUrl = iconUrl; this.bannerUrl = bannerUrl; this.description = description; this.nSubscribers = nSubscribers; } + @NonNull + public String getId() { + return id; + } + + public String getName() { + return name; + } + + public String getIconUrl() { + return iconUrl; + } + public String getBannerUrl() { return bannerUrl; } diff --git a/app/src/main/java/SubredditDatabase/SubredditRepository.java b/app/src/main/java/SubredditDatabase/SubredditRepository.java index 5e4cb7d7..2c66ad4b 100644 --- a/app/src/main/java/SubredditDatabase/SubredditRepository.java +++ b/app/src/main/java/SubredditDatabase/SubredditRepository.java @@ -1,17 +1,17 @@ package SubredditDatabase; -import android.app.Application; -import androidx.lifecycle.LiveData; import android.os.AsyncTask; +import androidx.lifecycle.LiveData; + +import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase; + public class SubredditRepository { private SubredditDao mSubredditDao; private LiveData mSubredditLiveData; - SubredditRepository(Application application, String subredditName) { - SubredditRoomDatabase db = SubredditRoomDatabase.getDatabase(application); - mSubredditDao = db.subredditDao(); - + SubredditRepository(RedditDataRoomDatabase redditDataRoomDatabase, String subredditName) { + mSubredditDao = redditDataRoomDatabase.subredditDao(); mSubredditLiveData = mSubredditDao.getSubredditLiveDataByName(subredditName); } diff --git a/app/src/main/java/SubredditDatabase/SubredditRoomDatabase.java b/app/src/main/java/SubredditDatabase/SubredditRoomDatabase.java deleted file mode 100644 index fa656b30..00000000 --- a/app/src/main/java/SubredditDatabase/SubredditRoomDatabase.java +++ /dev/null @@ -1,26 +0,0 @@ -package SubredditDatabase; - -import androidx.room.Database; -import androidx.room.Room; -import androidx.room.RoomDatabase; -import android.content.Context; - -@Database(entities = {SubredditData.class}, version = 1) -public abstract class SubredditRoomDatabase extends RoomDatabase{ - private static SubredditRoomDatabase INSTANCE; - - public abstract SubredditDao subredditDao(); - - public static SubredditRoomDatabase getDatabase(final Context context) { - if(INSTANCE == null) { - synchronized (SubredditRoomDatabase.class) { - if(INSTANCE == null) { - INSTANCE = Room.databaseBuilder(context.getApplicationContext(), - SubredditRoomDatabase.class, "subreddits") - .build(); - } - } - } - return INSTANCE; - } -} diff --git a/app/src/main/java/SubredditDatabase/SubredditViewModel.java b/app/src/main/java/SubredditDatabase/SubredditViewModel.java index 8899abdd..dc0247d2 100644 --- a/app/src/main/java/SubredditDatabase/SubredditViewModel.java +++ b/app/src/main/java/SubredditDatabase/SubredditViewModel.java @@ -7,13 +7,15 @@ import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider; import androidx.annotation.NonNull; +import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase; + public class SubredditViewModel extends AndroidViewModel { private SubredditRepository mSubredditRepository; private LiveData mSubredditLiveData; - public SubredditViewModel(Application application, String id) { + public SubredditViewModel(Application application, RedditDataRoomDatabase redditDataRoomDatabase, String id) { super(application); - mSubredditRepository = new SubredditRepository(application, id); + mSubredditRepository = new SubredditRepository(redditDataRoomDatabase, id); mSubredditLiveData = mSubredditRepository.getSubredditLiveData(); } @@ -29,19 +31,20 @@ public class SubredditViewModel extends AndroidViewModel { @NonNull private final Application mApplication; + private final RedditDataRoomDatabase mRedditDataRoomDatabase; + private final String mSubredditName; - private final String subredditName; - - public Factory(@NonNull Application application, String subredditName) { + public Factory(@NonNull Application application, RedditDataRoomDatabase redditDataRoomDatabase, String subredditname) { mApplication = application; - this.subredditName = subredditName; + mRedditDataRoomDatabase = redditDataRoomDatabase; + mSubredditName = subredditname; } @NonNull @Override public T create(@NonNull Class modelClass) { //noinspection unchecked - return (T) new SubredditViewModel(mApplication, subredditName); + return (T) new SubredditViewModel(mApplication, mRedditDataRoomDatabase, mSubredditName); } } } -- cgit v1.2.3