1
+ package com .example .rise .database ;
2
+
3
+ import android .app .Application ;
4
+ import android .os .AsyncTask ;
5
+
6
+ import androidx .lifecycle .LiveData ;
7
+
8
+ import java .util .List ;
9
+
10
+ public class NoteRepository {
11
+ private NoteDao noteDao ;
12
+ private LiveData <List <Note >> allNotes ;
13
+
14
+ public NoteRepository (Application application ) {
15
+ NoteDatabase database = NoteDatabase .getInstance (application );
16
+ noteDao = database .noteDao ();
17
+ allNotes = noteDao .getAllNotes ();
18
+ }
19
+
20
+ public void insert (Note note ) {
21
+ new InsertNoteAsyncTask (noteDao ).execute (note );
22
+ }
23
+
24
+ public void update (Note note ) {
25
+ new UpdateNoteAsyncTask (noteDao ).execute (note );
26
+ }
27
+
28
+ public void delete (Note note ) {
29
+ new DeleteNoteAsyncTask (noteDao ).execute (note );
30
+ }
31
+
32
+ public void deleteAllNotes () {
33
+ new DeleteAllNotesAsyncTask (noteDao ).execute ();
34
+ }
35
+
36
+ public LiveData <List <Note >> getAllNotes () {
37
+ return allNotes ;
38
+ }
39
+
40
+ private static class InsertNoteAsyncTask extends AsyncTask <Note , Void , Void > {
41
+ private NoteDao noteDao ;
42
+
43
+ private InsertNoteAsyncTask (NoteDao noteDao ) {
44
+ this .noteDao = noteDao ;
45
+ }
46
+
47
+ @ Override
48
+ protected Void doInBackground (Note ... notes ) {
49
+ noteDao .insert (notes [0 ]);
50
+ return null ;
51
+ }
52
+ }
53
+
54
+ private static class UpdateNoteAsyncTask extends AsyncTask <Note , Void , Void > {
55
+ private NoteDao noteDao ;
56
+
57
+ private UpdateNoteAsyncTask (NoteDao noteDao ) {
58
+ this .noteDao = noteDao ;
59
+ }
60
+
61
+ @ Override
62
+ protected Void doInBackground (Note ... notes ) {
63
+ noteDao .update (notes [0 ]);
64
+ return null ;
65
+ }
66
+ }
67
+
68
+ private static class DeleteNoteAsyncTask extends AsyncTask <Note , Void , Void > {
69
+ private NoteDao noteDao ;
70
+
71
+ private DeleteNoteAsyncTask (NoteDao noteDao ) {
72
+ this .noteDao = noteDao ;
73
+ }
74
+
75
+ @ Override
76
+ protected Void doInBackground (Note ... notes ) {
77
+ noteDao .delete (notes [0 ]);
78
+ return null ;
79
+ }
80
+ }
81
+
82
+ private static class DeleteAllNotesAsyncTask extends AsyncTask <Void , Void , Void > {
83
+ private NoteDao noteDao ;
84
+
85
+ private DeleteAllNotesAsyncTask (NoteDao noteDao ) {
86
+ this .noteDao = noteDao ;
87
+ }
88
+
89
+ @ Override
90
+ protected Void doInBackground (Void ... voids ) {
91
+ noteDao .deleteAllNotes ();
92
+ return null ;
93
+ }
94
+ }
95
+ }
0 commit comments