mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-10-06 13:59:49 +02:00
Move several classes to other packages.
This commit is contained in:
25
app/src/main/java/SubredditDatabase/SubredditDao.java
Normal file
25
app/src/main/java/SubredditDatabase/SubredditDao.java
Normal file
@@ -0,0 +1,25 @@
|
||||
package SubredditDatabase;
|
||||
|
||||
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;
|
||||
|
||||
@Dao
|
||||
public interface SubredditDao {
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
void insert(SubredditData SubredditData);
|
||||
|
||||
@Query("DELETE FROM subreddits")
|
||||
void deleteAllSubreddits();
|
||||
|
||||
@Query("SELECT * from subreddits WHERE id = :id")
|
||||
LiveData<SubredditData> getSubredditLiveDataById(String id);
|
||||
|
||||
@Query("SELECT * from subreddits WHERE name = :namePrefixed")
|
||||
LiveData<SubredditData> getSubredditLiveDataByNamePrefixed(String namePrefixed);
|
||||
|
||||
@Query("SELECT * from subreddits WHERE name = :namePrefixed")
|
||||
SubredditData getSubredditData(String namePrefixed);
|
||||
}
|
63
app/src/main/java/SubredditDatabase/SubredditData.java
Normal file
63
app/src/main/java/SubredditDatabase/SubredditData.java
Normal file
@@ -0,0 +1,63 @@
|
||||
package SubredditDatabase;
|
||||
|
||||
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 = "subreddits")
|
||||
public class SubredditData {
|
||||
@PrimaryKey
|
||||
@NonNull
|
||||
@ColumnInfo(name = "id")
|
||||
private String id;
|
||||
|
||||
@ColumnInfo(name = "name")
|
||||
private String name;
|
||||
|
||||
@ColumnInfo(name = "icon_url")
|
||||
private String iconUrl;
|
||||
|
||||
@ColumnInfo(name = "banner_url")
|
||||
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) {
|
||||
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;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public int getNSubscribers() {
|
||||
return nSubscribers;
|
||||
}
|
||||
}
|
43
app/src/main/java/SubredditDatabase/SubredditRepository.java
Normal file
43
app/src/main/java/SubredditDatabase/SubredditRepository.java
Normal file
@@ -0,0 +1,43 @@
|
||||
package SubredditDatabase;
|
||||
|
||||
import android.app.Application;
|
||||
import android.arch.lifecycle.LiveData;
|
||||
import android.os.AsyncTask;
|
||||
|
||||
public class SubredditRepository {
|
||||
private SubredditDao mSubredditDao;
|
||||
private LiveData<SubredditData> mSubredditLiveData;
|
||||
|
||||
SubredditRepository(Application application, String value, boolean isId) {
|
||||
SubredditRoomDatabase db = SubredditRoomDatabase.getDatabase(application);
|
||||
mSubredditDao = db.subredditDao();
|
||||
if(isId) {
|
||||
mSubredditLiveData = mSubredditDao.getSubredditLiveDataById(value);
|
||||
} else {
|
||||
mSubredditLiveData = mSubredditDao.getSubredditLiveDataByNamePrefixed(value);
|
||||
}
|
||||
}
|
||||
|
||||
LiveData<SubredditData> getSubredditLiveData() {
|
||||
return mSubredditLiveData;
|
||||
}
|
||||
|
||||
public void insert(SubredditData subredditData) {
|
||||
new SubredditRepository.insertAsyncTask(mSubredditDao).execute(subredditData);
|
||||
}
|
||||
|
||||
private static class insertAsyncTask extends AsyncTask<SubredditData, Void, Void> {
|
||||
|
||||
private SubredditDao mAsyncTaskDao;
|
||||
|
||||
insertAsyncTask(SubredditDao dao) {
|
||||
mAsyncTaskDao = dao;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Void doInBackground(final SubredditData... params) {
|
||||
mAsyncTaskDao.insert(params[0]);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,26 @@
|
||||
package SubredditDatabase;
|
||||
|
||||
import android.arch.persistence.room.Database;
|
||||
import android.arch.persistence.room.Room;
|
||||
import android.arch.persistence.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;
|
||||
}
|
||||
}
|
48
app/src/main/java/SubredditDatabase/SubredditViewModel.java
Normal file
48
app/src/main/java/SubredditDatabase/SubredditViewModel.java
Normal file
@@ -0,0 +1,48 @@
|
||||
package SubredditDatabase;
|
||||
|
||||
import android.app.Application;
|
||||
import android.arch.lifecycle.AndroidViewModel;
|
||||
import android.arch.lifecycle.LiveData;
|
||||
import android.arch.lifecycle.ViewModel;
|
||||
import android.arch.lifecycle.ViewModelProvider;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
public class SubredditViewModel extends AndroidViewModel {
|
||||
private SubredditRepository mSubredditRepository;
|
||||
private LiveData<SubredditData> mSubredditLiveData;
|
||||
|
||||
SubredditViewModel(Application application, String id, boolean isId) {
|
||||
super(application);
|
||||
mSubredditRepository = new SubredditRepository(application, id, isId);
|
||||
mSubredditLiveData = mSubredditRepository.getSubredditLiveData();
|
||||
}
|
||||
|
||||
public LiveData<SubredditData> getSubredditLiveData() {
|
||||
return mSubredditLiveData;
|
||||
}
|
||||
|
||||
public void insert(SubredditData subredditData) {
|
||||
mSubredditRepository.insert(subredditData);
|
||||
}
|
||||
|
||||
public static class Factory extends ViewModelProvider.NewInstanceFactory {
|
||||
|
||||
@NonNull
|
||||
private final Application mApplication;
|
||||
|
||||
private final String value;
|
||||
private final boolean isId;
|
||||
|
||||
public Factory(@NonNull Application application, String value, boolean isId) {
|
||||
mApplication = application;
|
||||
this.value = value;
|
||||
this.isId = isId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends ViewModel> T create(Class<T> modelClass) {
|
||||
//noinspection unchecked
|
||||
return (T) new SubredditViewModel(mApplication, value, isId);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user