use of org.hisp.dhis.android.core.common.Payload in project dhis2-android-sdk by dhis2.
the class MetadataCall method call.
@SuppressWarnings("PMD.NPathComplexity")
@Override
public Response call() throws Exception {
synchronized (this) {
if (isExecuted) {
throw new IllegalStateException("Already executed");
}
isExecuted = true;
}
Response response = null;
Transaction transaction = databaseAdapter.beginNewTransaction();
try {
response = new SystemInfoCall(databaseAdapter, systemInfoStore, systemInfoService, resourceStore).call();
if (!response.isSuccessful()) {
return response;
}
GenericCallData data = GenericCallData.create(databaseAdapter, new ResourceHandler(resourceStore), retrofit);
Response<User> userResponse = new UserCall(userService, databaseAdapter, userStore, userCredentialsStore, userRoleStore, resourceStore, data.serverDate()).call();
response = userResponse;
if (!response.isSuccessful()) {
return response;
}
response = downloadCategories(data.serverDate());
if (!response.isSuccessful()) {
return response;
}
response = downloadCategoryCombos(data.serverDate());
if (!response.isSuccessful()) {
return response;
}
Response<Payload<Program>> programAccessResponse = ProgramAccessEndpointCall.FACTORY.create(data, programService).call();
response = programAccessResponse;
if (!response.isSuccessful()) {
return response;
}
Set<String> programUids = getProgramUidsWithDataReadAccess(programAccessResponse.body().items());
response = new ProgramCall(programService, databaseAdapter, resourceStore, programUids, programStore, data.serverDate(), trackedEntityAttributeStore, programTrackedEntityAttributeStore, programRuleVariableStore, programIndicatorStore, programStageSectionProgramIndicatorLinkStore, programRuleActionStore, programRuleStore, relationshipStore, styleHandler, renderTypeHandler).call();
if (!response.isSuccessful()) {
return response;
}
List<Program> programs = ((Response<Payload<Program>>) response).body().items();
Set<String> assignedProgramStageUids = getAssignedProgramStageUids(programs);
Response programStageResponse = programStageCallFactory.create(data, assignedProgramStageUids).call();
if (!programStageResponse.isSuccessful()) {
return programStageResponse;
}
Set<String> trackedEntityUids = getAssignedTrackedEntityUids(programs);
response = new TrackedEntityCall(trackedEntityUids, databaseAdapter, trackedEntityStore, resourceStore, trackedEntityService, data.serverDate()).call();
if (!response.isSuccessful()) {
return response;
}
User user = userResponse.body();
Response<Payload<OrganisationUnit>> organisationUnitResponse = organisationUnitCallFactory.create(data, user, programUids).call();
if (!organisationUnitResponse.isSuccessful()) {
return organisationUnitResponse;
}
List<ProgramStage> programStages = ((Response<Payload<ProgramStage>>) programStageResponse).body().items();
Set<String> optionSetUids = getAssignedOptionSetUids(programs, programStages);
response = new OptionSetCall(data, optionSetService, optionSetHandler, optionSetUids).call();
if (!response.isSuccessful()) {
return response;
}
List<OrganisationUnit> organisationUnits = organisationUnitResponse.body().items();
response = dataSetParentCallFactory.create(user, data, organisationUnits).call();
if (!response.isSuccessful()) {
return response;
}
transaction.setSuccessful();
return response;
} finally {
transaction.end();
}
}
use of org.hisp.dhis.android.core.common.Payload in project dhis2-android-sdk by dhis2.
the class OrganisationUnitCallUnitShould method invoke_handler_if_request_succeeds.
@Test
@SuppressWarnings("unchecked")
public void invoke_handler_if_request_succeeds() throws Exception {
Headers headers = new Headers.Builder().add(HeaderUtils.DATE, lastUpdated.toString()).build();
Response<Payload<OrganisationUnit>> response = Response.success(payload, headers);
when(retrofitCall.execute()).thenReturn(response);
organisationUnitCall.call();
verify(databaseAdapter, times(1)).beginNewTransaction();
verify(transaction, times(1)).setSuccessful();
verify(transaction, times(1)).end();
verify(organisationUnitHandler).handleMany(eq(organisationUnits), any(OrganisationUnitModelBuilder.class));
}
use of org.hisp.dhis.android.core.common.Payload in project dhis2-android-sdk by dhis2.
the class EventEndPointCallMockIntegrationShould method parseEventResponse.
private Payload<Event> parseEventResponse(String file) throws IOException {
String expectedEventsResponseJson = new AssetsFileReader().getStringFromFile(file);
ObjectMapper objectMapper = new ObjectMapper().setDateFormat(BaseIdentifiableObject.DATE_FORMAT.raw());
return objectMapper.readValue(expectedEventsResponseJson, new TypeReference<Payload<Event>>() {
});
}
Aggregations