Move several classes to other packages.

This commit is contained in:
Alex Ning
2018-12-27 13:54:19 +08:00
parent 5603df7546
commit 807ddf5a6e
25 changed files with 54 additions and 23 deletions

View File

@@ -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();
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}

View File

@@ -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);
}
}