diff options
Diffstat (limited to 'app/src/main/java/SubscribedUserDatabase')
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); + } +} |