Skip to content

Commit 9972f53

Browse files
committed
AC-819 Added repository layer for formAdmission layer
1 parent 0cdbaea commit 9972f53

5 files changed

Lines changed: 109 additions & 56 deletions

File tree

openmrs-client/src/main/java/org/openmrs/mobile/activities/formadmission/FormAdmissionPresenter.java

Lines changed: 21 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -26,29 +26,23 @@
2626
import org.openmrs.mobile.dao.PatientDAO;
2727
import org.openmrs.mobile.databases.AppDatabase;
2828
import org.openmrs.mobile.databases.entities.LocationEntity;
29+
import org.openmrs.mobile.listeners.retrofit.CustomEncounterResponseCallback;
30+
import org.openmrs.mobile.listeners.retrofit.CustomLocationResponseCallback;
2931
import org.openmrs.mobile.listeners.retrofit.DefaultResponseCallbackListener;
3032
import org.openmrs.mobile.models.EncounterProviderCreate;
3133
import org.openmrs.mobile.models.Encountercreate;
3234
import org.openmrs.mobile.models.Obscreate;
3335
import org.openmrs.mobile.models.Patient;
3436
import org.openmrs.mobile.models.Provider;
3537
import org.openmrs.mobile.models.Resource;
36-
import org.openmrs.mobile.models.Results;
37-
import org.openmrs.mobile.utilities.ApplicationConstants;
38-
import org.openmrs.mobile.utilities.NetworkUtils;
3938
import org.openmrs.mobile.utilities.ToastUtil;
4039

4140
import java.util.ArrayList;
4241
import java.util.List;
4342

44-
import retrofit2.Call;
45-
import retrofit2.Callback;
46-
import retrofit2.Response;
47-
4843
import static org.openmrs.mobile.utilities.FormService.getFormResourceByName;
4944

5045
public class FormAdmissionPresenter extends BasePresenter implements FormAdmissionContract.Presenter {
51-
5246
private FormAdmissionContract.View view;
5347
private Long patientID;
5448
private String encounterType;
@@ -57,6 +51,7 @@ public class FormAdmissionPresenter extends BasePresenter implements FormAdmissi
5751
private Patient mPatient;
5852
private RestApi restApi;
5953
private Context mContext;
54+
private ProviderRepository providerRepository;
6055

6156
public FormAdmissionPresenter(FormAdmissionContract.View view, Long patientID, String encounterType, String formName, Context context) {
6257
this.view = view;
@@ -68,13 +63,15 @@ public FormAdmissionPresenter(FormAdmissionContract.View view, Long patientID, S
6863
restApi = RestServiceBuilder.createService(RestApi.class);
6964
this.view.setPresenter(this);
7065
this.mContext = context;
66+
this.providerRepository = new ProviderRepository();
7167
}
7268

7369
public FormAdmissionPresenter(FormAdmissionContract.View formAdmissionView, RestApi restApi, Context context) {
7470
this.view = formAdmissionView;
7571
this.restApi = restApi;
7672
this.view.setPresenter(this);
7773
this.mContext = context;
74+
this.providerRepository = new ProviderRepository();
7875
}
7976

8077
@Override
@@ -84,7 +81,6 @@ public void subscribe() {
8481

8582
@Override
8683
public void getProviders(FormAdmissionFragment fragment) {
87-
ProviderRepository providerRepository = new ProviderRepository();
8884
providerRepository.getProvidersWithoutStorage(restApi).observe(fragment, this::updateViews);
8985
}
9086

@@ -98,51 +94,33 @@ public void updateViews(List<Provider> providerList) {
9894
}
9995
}
10096

101-
@Override
10297
public void getLocation(String url) {
103-
if (NetworkUtils.hasNetwork()) {
104-
String locationEndPoint = url + ApplicationConstants.API.REST_ENDPOINT + "location";
105-
Call<Results<LocationEntity>> call =
106-
restApi.getLocations(locationEndPoint, "Admission Location", "full");
107-
call.enqueue(new Callback<Results<LocationEntity>>() {
108-
@Override
109-
public void onResponse(Call<Results<LocationEntity>> call, Response<Results<LocationEntity>> response) {
110-
if (response.isSuccessful()) {
111-
view.updateLocationAdapter(response.body().getResults());
112-
} else {
113-
view.showToast(mContext.getResources().getString(R.string.error_occurred));
114-
view.enableSubmitButton(false);
115-
}
116-
}
98+
providerRepository.getLocation(restApi, url, new CustomLocationResponseCallback() {
99+
@Override
100+
public void onResponse(List<LocationEntity> locationList) {
101+
view.updateLocationAdapter(locationList);
102+
}
117103

118-
@Override
119-
public void onFailure(Call<Results<LocationEntity>> call, Throwable t) {
120-
view.showToast(t.getMessage());
121-
view.enableSubmitButton(false);
122-
}
123-
});
124-
} else {
125-
view.showToast(mContext.getResources().getString(R.string.offline_error_message));
126-
}
104+
@Override
105+
public void onErrorResponse(String errorMessage) {
106+
view.showToast(errorMessage);
107+
view.enableSubmitButton(false);
108+
}
109+
});
127110
}
128111

129112
@Override
130113
public void getEncounterRoles() {
131-
restApi.getEncounterRoles().enqueue(new Callback<Results<Resource>>() {
114+
providerRepository.getEncounterRoles(restApi, new CustomEncounterResponseCallback() {
132115
@Override
133-
public void onResponse(Call<Results<Resource>> call, Response<Results<Resource>> response) {
134-
if (response.isSuccessful()) {
135-
view.updateEncounterRoleList(response.body().getResults());
136-
} else {
137-
view.enableSubmitButton(false);
138-
view.showToast(mContext.getResources().getString(R.string.error_occurred));
139-
}
116+
public void onResponse(List<Resource> encounterRoleList) {
117+
view.updateEncounterRoleList(encounterRoleList);
140118
}
141119

142120
@Override
143-
public void onFailure(Call<Results<Resource>> call, Throwable t) {
144-
view.showToast(t.getMessage());
121+
public void onErrorResponse(String errorMessage) {
145122
view.enableSubmitButton(false);
123+
view.showToast(errorMessage);
146124
}
147125
});
148126
}

openmrs-client/src/main/java/org/openmrs/mobile/api/repository/ProviderRepository.java

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,13 @@
3434
import org.openmrs.mobile.application.OpenMRS;
3535
import org.openmrs.mobile.dao.ProviderRoomDAO;
3636
import org.openmrs.mobile.databases.AppDatabase;
37+
import org.openmrs.mobile.databases.entities.LocationEntity;
38+
import org.openmrs.mobile.listeners.retrofit.CustomEncounterResponseCallback;
39+
import org.openmrs.mobile.listeners.retrofit.CustomLocationResponseCallback;
3740
import org.openmrs.mobile.models.Provider;
41+
import org.openmrs.mobile.models.Resource;
3842
import org.openmrs.mobile.models.Results;
43+
import org.openmrs.mobile.utilities.ApplicationConstants;
3944
import org.openmrs.mobile.utilities.NetworkUtils;
4045
import org.openmrs.mobile.utilities.ToastUtil;
4146

@@ -49,14 +54,16 @@
4954
public class ProviderRepository {
5055
ProviderRoomDAO providerRoomDao;
5156
WorkManager workManager;
57+
//private RestApi restApi;
5258

5359
public ProviderRepository(Context context) {
5460
AppDatabase db = AppDatabase.getDatabase(context);
5561
providerRoomDao = db.providerRoomDAO();
5662
workManager = WorkManager.getInstance(context);
63+
//restApi = RestServiceBuilder.createService(RestApi.class);
5764
}
5865

59-
public ProviderRepository(){
66+
public ProviderRepository() {
6067
}
6168

6269
public void setProviderRoomDao(ProviderRoomDAO providerRoomDao) {
@@ -182,7 +189,7 @@ public void onFailure(@NotNull Call<Provider> call, @NotNull Throwable t) {
182189
Data data = new Data.Builder().putString("first_name", provider.getPerson().getName().getGivenName())
183190
.putString("last_name", provider.getPerson().getName().getGivenName())
184191
.putString("identifier", provider.getIdentifier())
185-
.putLong("id",providerId).build();
192+
.putLong("id", providerId).build();
186193

187194
callback.onSuccess();
188195

@@ -280,9 +287,56 @@ public void onFailure(@NotNull Call<ResponseBody> call, @NotNull Throwable t) {
280287
}
281288
}
282289

290+
public void getLocation(RestApi restApi, String url, CustomLocationResponseCallback callback) {
291+
if (NetworkUtils.hasNetwork()) {
292+
String locationEndPoint = url + ApplicationConstants.API.REST_ENDPOINT + "location";
293+
Call<Results<LocationEntity>> call =
294+
restApi.getLocations(locationEndPoint, "Admission Location", "full");
295+
call.enqueue(new Callback<Results<LocationEntity>>() {
296+
@Override
297+
public void onResponse(Call<Results<LocationEntity>> call, Response<Results<LocationEntity>> response) {
298+
if (callback != null) {
299+
if (response.isSuccessful()) {
300+
callback.onResponse(response.body().getResults());
301+
} else {
302+
callback.onErrorResponse(OpenMRS.getInstance().getString(R.string.error_occurred));
303+
}
304+
}
305+
}
283306

307+
@Override
308+
public void onFailure(Call<Results<LocationEntity>> call, Throwable t) {
309+
callback.onErrorResponse(t.getMessage());
310+
}
311+
});
312+
} else {
313+
if (callback != null) {
314+
callback.onErrorResponse(OpenMRS.getInstance().getString(R.string.error_occurred));
315+
}
316+
}
317+
}
284318

319+
public void getEncounterRoles(RestApi restApi, CustomEncounterResponseCallback callback) {
320+
restApi.getEncounterRoles().enqueue(new Callback<Results<Resource>>() {
321+
@Override
322+
public void onResponse(Call<Results<Resource>> call, Response<Results<Resource>> response) {
323+
if (callback != null) {
324+
if (response.isSuccessful()) {
325+
callback.onResponse(response.body().getResults());
326+
} else {
327+
callback.onErrorResponse(OpenMRS.getInstance().getString(R.string.error_occurred));
328+
}
329+
}
330+
}
285331

332+
@Override
333+
public void onFailure(Call<Results<Resource>> call, Throwable t) {
334+
if (callback != null) {
335+
callback.onErrorResponse(t.getMessage());
336+
}
337+
}
338+
});
339+
}
286340
}
287341

288342

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.openmrs.mobile.listeners.retrofit;
2+
3+
import org.openmrs.mobile.models.Resource;
4+
5+
import java.util.List;
6+
7+
public interface CustomEncounterResponseCallback {
8+
void onResponse(List<Resource> encounterRoleList);
9+
10+
void onErrorResponse(String errorMessage);
11+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package org.openmrs.mobile.listeners.retrofit;
2+
3+
import org.openmrs.mobile.databases.entities.LocationEntity;
4+
5+
import java.util.List;
6+
7+
public interface CustomLocationResponseCallback {
8+
9+
void onResponse(List<LocationEntity> locationList);
10+
11+
void onErrorResponse(String errorMessage);
12+
}

openmrs-client/src/test/java/org/openmrs/mobile/test/presenters/FormAdmissionPresenterTest.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@
5050
import static org.mockito.Mockito.verify;
5151

5252
@PrepareForTest({NetworkUtils.class,
53-
ToastUtil.class,
54-
OpenMRS.class,
55-
OpenMRSLogger.class})
53+
ToastUtil.class,
54+
OpenMRS.class,
55+
OpenMRSLogger.class})
5656
public class FormAdmissionPresenterTest extends ACUnitTestBase {
5757
@Rule
5858
public InstantTaskExecutorRule taskExecutorRule = new InstantTaskExecutorRule();
@@ -72,8 +72,6 @@ public class FormAdmissionPresenterTest extends ACUnitTestBase {
7272
private Context context;
7373
@Mock
7474
private Resources resources;
75-
76-
7775
private FormAdmissionPresenter formAdmissionPresenter;
7876
private FormAdmissionFragment fragment = new FormAdmissionFragment();
7977

@@ -113,7 +111,7 @@ public void shouldGetProviders_Error() {
113111
public void shouldGetAdmissionLocation_AllOK() {
114112
Mockito.lenient().when(NetworkUtils.hasNetwork()).thenReturn(true);
115113
Mockito.lenient().when(restApi.getLocations(any(), anyString(), anyString()))
116-
.thenReturn(mockSuccessCall(Collections.singletonList(new LocationEntity(""))));
114+
.thenReturn(mockSuccessCall(Collections.singletonList(new LocationEntity(""))));
117115
formAdmissionPresenter.getLocation("someUrl");
118116
verify(formAdmissionView).updateLocationAdapter(any());
119117
}
@@ -122,11 +120,11 @@ public void shouldGetAdmissionLocation_AllOK() {
122120
public void shouldLoadLocations_errorResponse() {
123121
Mockito.lenient().when(NetworkUtils.hasNetwork()).thenReturn(true);
124122
Mockito.lenient().when(restApi.getLocations(any(), anyString(), anyString()))
125-
.thenReturn(mockErrorCall(401));
123+
.thenReturn(mockErrorCall(401));
126124

127125
Resources res = Mockito.mock(context.getResources().getClass());
128126
PowerMockito.when(context.getResources()).thenReturn(res);
129-
Mockito.when(res.getString(Mockito.anyInt())).thenReturn("error_message");
127+
Mockito.when(OpenMRS.getInstance().getString(Mockito.anyInt())).thenReturn("error_message");
130128

131129
formAdmissionPresenter.getLocation("someUrl");
132130
verify(formAdmissionView).showToast(anyString());
@@ -137,7 +135,7 @@ public void shouldLoadLocations_errorResponse() {
137135
public void shouldGetEncounterRoles_AllOK() {
138136
Mockito.lenient().when(NetworkUtils.hasNetwork()).thenReturn(true);
139137
Mockito.lenient().when(restApi.getEncounterRoles())
140-
.thenReturn(mockSuccessCall(Collections.singletonList(new Resource())));
138+
.thenReturn(mockSuccessCall(Collections.singletonList(new Resource())));
141139
formAdmissionPresenter.getEncounterRoles();
142140
verify(formAdmissionView).updateEncounterRoleList(any());
143141
}
@@ -146,11 +144,11 @@ public void shouldGetEncounterRoles_AllOK() {
146144
public void shouldLoadEncounterRoles_errorResponse() {
147145
Mockito.lenient().when(NetworkUtils.hasNetwork()).thenReturn(true);
148146
Mockito.lenient().when(restApi.getEncounterRoles())
149-
.thenReturn(mockErrorCall(401));
147+
.thenReturn(mockErrorCall(401));
150148

151149
Resources res = Mockito.mock(context.getResources().getClass());
152150
PowerMockito.when(context.getResources()).thenReturn(res);
153-
Mockito.when(res.getString(Mockito.anyInt())).thenReturn("error_message");
151+
Mockito.when(OpenMRS.getInstance().getString(Mockito.anyInt())).thenReturn("error_message");
154152

155153
formAdmissionPresenter.getEncounterRoles();
156154
verify(formAdmissionView).showToast(anyString());

0 commit comments

Comments
 (0)