Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class MeasureRepository {
- private static MeasureRepository sInstance;
- private final AppDataBase mDatabase;
- private MediatorLiveData<List<Measure>> mObservableMeasures;
- private MediatorLiveData<List<Measure>> mObservableMeasuresBySheet;
- private MutableLiveData<List<Measure>> measuresBySheetMutable;
- private LiveData<List<Measure>> mMeasuresOfSheet;
- public AppExecutors appExecutors = new AppExecutors();
- long mSheetId;
- //private constructor
- private MeasureRepository(final AppDataBase database, long sheetId) {
- mDatabase = database;
- mSheetId = sheetId;
- mObservableMeasures = new MediatorLiveData<>();
- mObservableMeasuresBySheet = new MediatorLiveData<>();
- //Here we are keeping this instance as class variable so we can remove it later from mObservableMeasuresBySheet source
- mMeasuresOfSheet=mDatabase.measureDao().getMeasuresOfSheet(sheetId);
- mObservableMeasuresBySheet.addSource(mMeasuresOfSheet, new Observer<List<Measure>>() {
- @Override
- public void onChanged(@Nullable List<Measure> measuresBySheet) {
- if (mDatabase.getDatabaseCreated().getValue() != null) {
- appExecutors.diskIO().execute(() ->
- mObservableMeasuresBySheet.postValue(measuresBySheet));
- }
- }
- });
- public static MeasureRepository getInstance(final AppDataBase database, long sheetId) {
- if (sInstance == null) {
- synchronized (MeasureRepository.class) {
- if (sInstance == null) {
- sInstance = new MeasureRepository(database, sheetId);
- }
- }
- }
- return sInstance;
- }
- /*****Room Measures DAO*****/
- public void addNewMeasure(Measure measure, AtomicBoolean lock) {
- appExecutors.diskIO().execute(new Runnable() {
- @Override
- public void run() {
- if (!lock.get()) {
- lock.set(true);
- mDatabase.measureDao().newMeasure(measure);
- }
- lock.set(false);
- }
- });
- Log.d("ADD_MEASURE", "Added empty measure to database");
- }
- public void saveMeasures(List<Measure> measures) {
- appExecutors.diskIO().execute(() ->
- mDatabase.measureDao().insertAll(measures));
- }
- public LiveData<List<Measure>> getAllMeasures() {
- return mObservableMeasures;
- }
- public LiveData<List<Measure>> getMeasuresBySheet() {
- return mObservableMeasuresBySheet;
- }
- //Here we are updating the mObservableMeasuresBySheet with new source based on new sheetId
- public void updateSheetId(long sheetId) {
- if(mMeasuresOfSheet!=null) {
- mObservableMeasuresBySheet.removeSource(mMeasuresOfSheet);
- }
- mMeasuresOfSheet=mDatabase.measureDao().getMeasuresOfSheet(sheetId);
- mObservableMeasuresBySheet.addSource(mMeasuresOfSheet, new Observer<List<Measure>>() {
- @Override
- public void onChanged(@Nullable List<Measure> measuresBySheet) {
- if (mDatabase.getDatabaseCreated().getValue() != null) {
- appExecutors.diskIO().execute(() ->
- mObservableMeasuresBySheet.postValue(measuresBySheet));
- }
- }
- });
- }
Add Comment
Please, Sign In to add comment