Download File
Download Project
Settings
Line Wrap
Themes
default
ambiance
bespin
dracula
eclipse
material
mbo
mdn-like
neat
solarized dark
ttcn
zenburn
DataRepository.java
package com.example.android.persistence; import android.arch.lifecycle.LiveData; import android.arch.lifecycle.MediatorLiveData; import com.example.android.persistence.db.AppDatabase; import com.example.android.persistence.db.entity.CommentEntity; import com.example.android.persistence.db.entity.ProductEntity; import java.util.List; /** * Repository handling the work with products and comments. */ public class DataRepository { private static DataRepository sInstance; private final AppDatabase mDatabase; private MediatorLiveData
> mObservableProducts; private DataRepository(final AppDatabase database) { mDatabase = database; mObservableProducts = new MediatorLiveData<>(); mObservableProducts.addSource(mDatabase.productDao().loadAllProducts(), productEntities -> { if (mDatabase.getDatabaseCreated().getValue() != null) { mObservableProducts.postValue(productEntities); } }); } public static DataRepository getInstance(final AppDatabase database) { if (sInstance == null) { synchronized (DataRepository.class) { if (sInstance == null) { sInstance = new DataRepository(database); } } } return sInstance; } /** * Get the list of products from the database and get notified when the data changes. */ public LiveData
> getProducts() { return mObservableProducts; } public LiveData
loadProduct(final int productId) { return mDatabase.productDao().loadProduct(productId); } public LiveData
> loadComments(final int productId) { return mDatabase.commentDao().loadComments(productId); } }