Guest User

Untitled

a guest
Jul 21st, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. public class MeasureRepository {
  2.  
  3.  
  4. private static MeasureRepository sInstance;
  5. private final AppDataBase mDatabase;
  6. private MediatorLiveData<List<Measure>> mObservableMeasures;
  7. private MediatorLiveData<List<Measure>> mObservableMeasuresBySheet;
  8. private MutableLiveData<List<Measure>> measuresBySheetMutable;
  9. private LiveData<List<Measure>> mMeasuresOfSheet;
  10.  
  11. public AppExecutors appExecutors = new AppExecutors();
  12.  
  13. long mSheetId;
  14.  
  15.  
  16. //private constructor
  17. private MeasureRepository(final AppDataBase database, long sheetId) {
  18.  
  19. mDatabase = database;
  20.  
  21. mSheetId = sheetId;
  22.  
  23.  
  24. mObservableMeasures = new MediatorLiveData<>();
  25. mObservableMeasuresBySheet = new MediatorLiveData<>();
  26.  
  27. //Here we are keeping this instance as class variable so we can remove it later from mObservableMeasuresBySheet source
  28. mMeasuresOfSheet=mDatabase.measureDao().getMeasuresOfSheet(sheetId);
  29. mObservableMeasuresBySheet.addSource(mMeasuresOfSheet, new Observer<List<Measure>>() {
  30. @Override
  31. public void onChanged(@Nullable List<Measure> measuresBySheet) {
  32. if (mDatabase.getDatabaseCreated().getValue() != null) {
  33. appExecutors.diskIO().execute(() ->
  34. mObservableMeasuresBySheet.postValue(measuresBySheet));
  35. }
  36. }
  37. });
  38.  
  39.  
  40. public static MeasureRepository getInstance(final AppDataBase database, long sheetId) {
  41. if (sInstance == null) {
  42. synchronized (MeasureRepository.class) {
  43. if (sInstance == null) {
  44. sInstance = new MeasureRepository(database, sheetId);
  45. }
  46. }
  47. }
  48. return sInstance;
  49. }
  50.  
  51. /*****Room Measures DAO*****/
  52.  
  53. public void addNewMeasure(Measure measure, AtomicBoolean lock) {
  54.  
  55. appExecutors.diskIO().execute(new Runnable() {
  56. @Override
  57. public void run() {
  58.  
  59. if (!lock.get()) {
  60. lock.set(true);
  61. mDatabase.measureDao().newMeasure(measure);
  62. }
  63. lock.set(false);
  64. }
  65.  
  66.  
  67. });
  68.  
  69. Log.d("ADD_MEASURE", "Added empty measure to database");
  70.  
  71. }
  72.  
  73.  
  74. public void saveMeasures(List<Measure> measures) {
  75. appExecutors.diskIO().execute(() ->
  76. mDatabase.measureDao().insertAll(measures));
  77. }
  78.  
  79. public LiveData<List<Measure>> getAllMeasures() {
  80.  
  81. return mObservableMeasures;
  82. }
  83.  
  84. public LiveData<List<Measure>> getMeasuresBySheet() {
  85. return mObservableMeasuresBySheet;
  86. }
  87.  
  88. //Here we are updating the mObservableMeasuresBySheet with new source based on new sheetId
  89. public void updateSheetId(long sheetId) {
  90. if(mMeasuresOfSheet!=null) {
  91. mObservableMeasuresBySheet.removeSource(mMeasuresOfSheet);
  92. }
  93. mMeasuresOfSheet=mDatabase.measureDao().getMeasuresOfSheet(sheetId);
  94. mObservableMeasuresBySheet.addSource(mMeasuresOfSheet, new Observer<List<Measure>>() {
  95. @Override
  96. public void onChanged(@Nullable List<Measure> measuresBySheet) {
  97. if (mDatabase.getDatabaseCreated().getValue() != null) {
  98. appExecutors.diskIO().execute(() ->
  99. mObservableMeasuresBySheet.postValue(measuresBySheet));
  100. }
  101. }
  102. });
  103. }
Add Comment
Please, Sign In to add comment