Browse Source

-change to MVP pattern

ilhamitubagoes 4 years ago
parent
commit
89d1f624f6

+ 12 - 0
app/src/main/java/com/fusi24/rfid/data/DataManager.java

@@ -2,9 +2,13 @@ package com.fusi24.rfid.data;
2
 
2
 
3
 import com.fusi24.rfid.data.api.RestService;
3
 import com.fusi24.rfid.data.api.RestService;
4
 import com.fusi24.rfid.data.entity.DataAuth;
4
 import com.fusi24.rfid.data.entity.DataAuth;
5
+import com.fusi24.rfid.data.entity.DataDetail;
6
+import com.fusi24.rfid.data.entity.DataEntryPermit;
5
 import com.fusi24.rfid.data.entity.DataResultRfid;
7
 import com.fusi24.rfid.data.entity.DataResultRfid;
6
 import com.fusi24.rfid.data.entity.DataUser;
8
 import com.fusi24.rfid.data.entity.DataUser;
7
 
9
 
10
+import java.util.List;
11
+
8
 import io.reactivex.Observable;
12
 import io.reactivex.Observable;
9
 
13
 
10
 public class DataManager {
14
 public class DataManager {
@@ -19,6 +23,14 @@ public class DataManager {
19
         return restService.userLogin(dataAuth);
23
         return restService.userLogin(dataAuth);
20
     }
24
     }
21
 
25
 
26
+    public Observable<List<DataEntryPermit>> getEntryPermit() {
27
+        return restService.getEntryPermit();
28
+    }
29
+
30
+    public Observable<List<DataDetail>> getStatusScan(String code) {
31
+        return restService.getLookUp(code);
32
+    }
33
+
22
     public Observable<DataResultRfid> checkRfidCard(String numberRfid, Integer permitId, String rfidDeviceId, Integer checkTypeId, String longLat, String[] expand) {
34
     public Observable<DataResultRfid> checkRfidCard(String numberRfid, Integer permitId, String rfidDeviceId, Integer checkTypeId, String longLat, String[] expand) {
23
         return restService.checkRfidCard(numberRfid, permitId, rfidDeviceId, checkTypeId, longLat, expand);
35
         return restService.checkRfidCard(numberRfid, permitId, rfidDeviceId, checkTypeId, longLat, expand);
24
     }
36
     }

+ 4 - 4
app/src/main/java/com/fusi24/rfid/data/api/RestService.java

@@ -23,15 +23,15 @@ public interface RestService {
23
     @POST(Constant.BEATS_ENDPOINT + "/api/mobile/login/rfid")
23
     @POST(Constant.BEATS_ENDPOINT + "/api/mobile/login/rfid")
24
     Observable<DataUser> userLogin(@Body DataAuth dataAuth);
24
     Observable<DataUser> userLogin(@Body DataAuth dataAuth);
25
 
25
 
26
+    @GET(Constant.SID2_ENDPOINT + "/api/entryPermit")
27
+    Observable<List<DataEntryPermit>> getEntryPermit();
28
+
26
     @GET(Constant.BEATS2_ENDPOINT + "/api/lookup")
29
     @GET(Constant.BEATS2_ENDPOINT + "/api/lookup")
27
-    Call<List<DataDetail>> getLookUp(@Query("filter[parent.code]") String code);
30
+    Observable<List<DataDetail>> getLookUp(@Query("filter[parent.code]") String code);
28
 
31
 
29
     @GET(Constant.BEATS2_ENDPOINT + "/api/location")
32
     @GET(Constant.BEATS2_ENDPOINT + "/api/location")
30
     Call<List<DataSite>> getDataSite(@Query("filter[type.id]") Integer typeId);
33
     Call<List<DataSite>> getDataSite(@Query("filter[type.id]") Integer typeId);
31
 
34
 
32
-    @GET(Constant.SID2_ENDPOINT + "/api/entryPermit")
33
-    Call<List<DataEntryPermit>> getEntryPermit();
34
-
35
     @GET(Constant.SID2_ENDPOINT + Constant.RFID_ENDPOINT + "/permit/check/{number_rfid}")
35
     @GET(Constant.SID2_ENDPOINT + Constant.RFID_ENDPOINT + "/permit/check/{number_rfid}")
36
     Observable<DataResultRfid> checkRfidCard(@Path("number_rfid") String numberRfid,
36
     Observable<DataResultRfid> checkRfidCard(@Path("number_rfid") String numberRfid,
37
                                              @Query("entryPermitId") Integer permitId,
37
                                              @Query("entryPermitId") Integer permitId,

+ 29 - 52
app/src/main/java/com/fusi24/rfid/ui/home/HomeActivity.java

@@ -24,29 +24,23 @@ import com.fusi24.rfid.SplashScreenActivity;
24
 import com.fusi24.rfid.adapter.StatusScanAdapter;
24
 import com.fusi24.rfid.adapter.StatusScanAdapter;
25
 import com.fusi24.rfid.base.BaseActivity;
25
 import com.fusi24.rfid.base.BaseActivity;
26
 import com.fusi24.rfid.config.Constant;
26
 import com.fusi24.rfid.config.Constant;
27
-import com.fusi24.rfid.data.api.RestService;
28
-import com.fusi24.rfid.data.api.RestServiceFactory;
29
 import com.fusi24.rfid.data.entity.DataDetail;
27
 import com.fusi24.rfid.data.entity.DataDetail;
30
 import com.fusi24.rfid.data.entity.DataEntryPermit;
28
 import com.fusi24.rfid.data.entity.DataEntryPermit;
31
 import com.fusi24.rfid.databinding.ActivityHomeBinding;
29
 import com.fusi24.rfid.databinding.ActivityHomeBinding;
32
 import com.fusi24.rfid.ui.ScanActivity;
30
 import com.fusi24.rfid.ui.ScanActivity;
33
 
31
 
34
-import org.jetbrains.annotations.NotNull;
35
-
36
 import java.util.ArrayList;
32
 import java.util.ArrayList;
37
 import java.util.List;
33
 import java.util.List;
38
 
34
 
39
-import retrofit2.Call;
40
-import retrofit2.Callback;
41
-import retrofit2.Response;
42
 import timber.log.Timber;
35
 import timber.log.Timber;
43
 
36
 
44
-public class HomeActivity extends BaseActivity implements StatusScanAdapter.OnItemSelected {
37
+public class HomeActivity extends BaseActivity implements HomeView, StatusScanAdapter.OnItemSelected {
45
 
38
 
46
     private DataEntryPermit dataEntryPermit;
39
     private DataEntryPermit dataEntryPermit;
47
     private List<DataEntryPermit> entryPermitList;
40
     private List<DataEntryPermit> entryPermitList;
48
     private List<DataDetail> statusScanList;
41
     private List<DataDetail> statusScanList;
49
     private ActivityHomeBinding binding;
42
     private ActivityHomeBinding binding;
43
+    private HomePresenter presenter;
50
     private StatusScanAdapter adapter;
44
     private StatusScanAdapter adapter;
51
     private Integer idCheckType = null;
45
     private Integer idCheckType = null;
52
     private String idDevice, checkTypeName;
46
     private String idDevice, checkTypeName;
@@ -70,10 +64,11 @@ public class HomeActivity extends BaseActivity implements StatusScanAdapter.OnIt
70
             getSupportActionBar().setDisplayShowTitleEnabled(false);
64
             getSupportActionBar().setDisplayShowTitleEnabled(false);
71
         }
65
         }
72
 
66
 
67
+        presenter = new HomePresenter(getManager(), getAndroidScheduler(), getProcessScheduler());
68
+        presenter.attachView(this);
69
+
73
         initView();
70
         initView();
74
         loadingData();
71
         loadingData();
75
-        getDataPermit();
76
-        getDataStatusScan();
77
     }
72
     }
78
 
73
 
79
     @Override
74
     @Override
@@ -129,6 +124,9 @@ public class HomeActivity extends BaseActivity implements StatusScanAdapter.OnIt
129
         //TODO STILL HARDCODE
124
         //TODO STILL HARDCODE
130
         binding.tvGateName.setText("Suzuran");
125
         binding.tvGateName.setText("Suzuran");
131
         binding.tvSiteName.setText("BMO 1");
126
         binding.tvSiteName.setText("BMO 1");
127
+
128
+        presenter.getEntryPermit();
129
+        presenter.getStatusScan();
132
     }
130
     }
133
 
131
 
134
     private void initEvent(){
132
     private void initEvent(){
@@ -167,45 +165,23 @@ public class HomeActivity extends BaseActivity implements StatusScanAdapter.OnIt
167
 
165
 
168
     }
166
     }
169
 
167
 
170
-    private void getDataPermit() {
171
-        RestService restService = RestServiceFactory.create(Constant.JWT_TOKEN);
172
-        Call<List<DataEntryPermit>> call = restService.getEntryPermit();
173
-        call.enqueue(new Callback<List<DataEntryPermit>>() {
174
-            @Override
175
-            public void onResponse(@NotNull Call<List<DataEntryPermit>> call, @NotNull Response<List<DataEntryPermit>> response) {
176
-                if (response.body() != null) {
177
-                    entryPermitList.addAll(response.body());
178
-                    setDataPermit();
179
-                }
180
-            }
181
-
182
-            @Override
183
-            public void onFailure(@NotNull Call<List<DataEntryPermit>> call, @NotNull Throwable t) {
184
-                Toast.makeText(HomeActivity.this, "Failed to get data permit", Toast.LENGTH_SHORT).show();
185
-                Timber.i("DEVELOPER : %s", t.getMessage());
186
-            }
187
-        });
168
+    @Override
169
+    public void onSelected(DataDetail detail) {
170
+        idCheckType = detail.getId();
171
+        checkTypeName = detail.getName();
188
     }
172
     }
189
 
173
 
190
-    private void getDataStatusScan(){
191
-        RestService restService = RestServiceFactory.create(Constant.JWT_TOKEN);
192
-        Call<List<DataDetail>> call = restService.getLookUp("BeSCAN_CHECK_TYPE");
193
-        call.enqueue(new Callback<List<DataDetail>>() {
194
-            @Override
195
-            public void onResponse(@NotNull Call<List<DataDetail>> call, @NotNull Response<List<DataDetail>> response) {
196
-                if (response.body() != null){
197
-                    statusScanList.addAll(response.body());
198
-                    adapter.updateDetailList(statusScanList);
199
-                    adapter.notifyDataSetChanged();
200
-                }
201
-            }
174
+    @Override
175
+    public void showDataPermit(List<DataEntryPermit> dataEntryPermitList) {
176
+        entryPermitList.addAll(dataEntryPermitList);
177
+        setDataPermit();
178
+    }
202
 
179
 
203
-            @Override
204
-            public void onFailure(@NotNull Call<List<DataDetail>> call, @NotNull Throwable t) {
205
-                Toast.makeText(HomeActivity.this, "Failed to get data status Scan", Toast.LENGTH_SHORT).show();
206
-                Timber.i("DEVELOPER : %s", t.getMessage());
207
-            }
208
-        });
180
+    @Override
181
+    public void showDataStatusScan(List<DataDetail> dataStatusScanList) {
182
+        statusScanList.addAll(dataStatusScanList);
183
+        adapter.updateDetailList(statusScanList);
184
+        adapter.notifyDataSetChanged();
209
     }
185
     }
210
 
186
 
211
     private void setDataPermit(){
187
     private void setDataPermit(){
@@ -214,14 +190,15 @@ public class HomeActivity extends BaseActivity implements StatusScanAdapter.OnIt
214
     }
190
     }
215
 
191
 
216
     @Override
192
     @Override
217
-    protected void onDestroy() {
218
-        super.onDestroy();
219
-        binding = null;
193
+    public void showError(Throwable e) {
194
+        Toast.makeText(HomeActivity.this, "Failed get data", Toast.LENGTH_SHORT).show();
195
+        Timber.i("DEVELOPER : %s", e.getMessage());
220
     }
196
     }
221
 
197
 
222
     @Override
198
     @Override
223
-    public void onSelected(DataDetail detail) {
224
-        idCheckType = detail.getId();
225
-        checkTypeName = detail.getName();
199
+    protected void onDestroy() {
200
+        super.onDestroy();
201
+        presenter.detachView();
202
+        binding = null;
226
     }
203
     }
227
 }
204
 }

+ 50 - 0
app/src/main/java/com/fusi24/rfid/ui/home/HomePresenter.java

@@ -0,0 +1,50 @@
1
+package com.fusi24.rfid.ui.home;
2
+
3
+import com.fusi24.rfid.base.BasePresenter;
4
+import com.fusi24.rfid.data.DataManager;
5
+
6
+import io.reactivex.Scheduler;
7
+
8
+class HomePresenter extends BasePresenter<HomeView> {
9
+
10
+    private DataManager manager;
11
+    private Scheduler androidScheduler;
12
+    private Scheduler processScheduler;
13
+
14
+    HomePresenter(DataManager manager, Scheduler androidScheduler, Scheduler processScheduler) {
15
+        this.manager = manager;
16
+        this.androidScheduler = androidScheduler;
17
+        this.processScheduler = processScheduler;
18
+    }
19
+
20
+    void getEntryPermit() {
21
+        disposable.add(manager.getEntryPermit()
22
+                .observeOn(androidScheduler)
23
+                .subscribeOn(processScheduler)
24
+                .subscribe(result -> {
25
+                    if (isViewAttached()) {
26
+                        getView().showDataPermit(result);
27
+                    }
28
+                }, throwable -> {
29
+                    if (isViewAttached()) {
30
+                        getView().showError(throwable);
31
+                    }
32
+                }));
33
+    }
34
+
35
+    void getStatusScan() {
36
+        disposable.add(manager.getStatusScan("BeSCAN_CHECK_TYPE")
37
+                .observeOn(androidScheduler)
38
+                .subscribeOn(processScheduler)
39
+                .subscribe(result -> {
40
+                    if (isViewAttached()) {
41
+                        getView().showDataStatusScan(result);
42
+                    }
43
+                }, throwable -> {
44
+                    if (isViewAttached()) {
45
+                        getView().showError(throwable);
46
+                    }
47
+                }));
48
+    }
49
+
50
+}

+ 15 - 0
app/src/main/java/com/fusi24/rfid/ui/home/HomeView.java

@@ -0,0 +1,15 @@
1
+package com.fusi24.rfid.ui.home;
2
+
3
+import com.fusi24.rfid.base.BaseView;
4
+import com.fusi24.rfid.data.entity.DataDetail;
5
+import com.fusi24.rfid.data.entity.DataEntryPermit;
6
+import com.fusi24.rfid.data.entity.DataResultRfid;
7
+
8
+import java.util.List;
9
+
10
+public interface HomeView extends BaseView {
11
+
12
+    void showDataPermit(List<DataEntryPermit> dataEntryPermitList);
13
+    void showDataStatusScan(List<DataDetail> dataStatusScanList);
14
+
15
+}