Search in sources :

Example 11 with Payload

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();
    }
}
Also used : OrganisationUnit(org.hisp.dhis.android.core.organisationunit.OrganisationUnit) User(org.hisp.dhis.android.core.user.User) Program(org.hisp.dhis.android.core.program.Program) TrackedEntityCall(org.hisp.dhis.android.core.trackedentity.TrackedEntityCall) ResourceHandler(org.hisp.dhis.android.core.resource.ResourceHandler) GenericCallData(org.hisp.dhis.android.core.common.GenericCallData) Response(retrofit2.Response) Transaction(org.hisp.dhis.android.core.data.database.Transaction) SystemInfoCall(org.hisp.dhis.android.core.systeminfo.SystemInfoCall) UserCall(org.hisp.dhis.android.core.user.UserCall) Payload(org.hisp.dhis.android.core.common.Payload) ProgramStage(org.hisp.dhis.android.core.program.ProgramStage) OptionSetCall(org.hisp.dhis.android.core.option.OptionSetCall) ProgramCall(org.hisp.dhis.android.core.program.ProgramCall)

Example 12 with Payload

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));
}
Also used : Headers(okhttp3.Headers) Payload(org.hisp.dhis.android.core.common.Payload) Test(org.junit.Test)

Example 13 with Payload

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>>() {
    });
}
Also used : Payload(org.hisp.dhis.android.core.common.Payload) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) AssetsFileReader(org.hisp.dhis.android.core.data.file.AssetsFileReader)

Aggregations

Payload (org.hisp.dhis.android.core.common.Payload)13 Transaction (org.hisp.dhis.android.core.data.database.Transaction)6 Test (org.junit.Test)4 ResourceHandler (org.hisp.dhis.android.core.resource.ResourceHandler)3 Response (retrofit2.Response)3 SQLiteConstraintException (android.database.sqlite.SQLiteConstraintException)2 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)2 Headers (okhttp3.Headers)2 Program (org.hisp.dhis.android.core.program.Program)2 Date (java.util.Date)1 CategoryCombo (org.hisp.dhis.android.core.category.CategoryCombo)1 CategoryOption (org.hisp.dhis.android.core.category.CategoryOption)1 GenericCallData (org.hisp.dhis.android.core.common.GenericCallData)1 ObjectWithUid (org.hisp.dhis.android.core.common.ObjectWithUid)1 AssetsFileReader (org.hisp.dhis.android.core.data.file.AssetsFileReader)1 DataElementEndpointCall (org.hisp.dhis.android.core.dataelement.DataElementEndpointCall)1 Indicator (org.hisp.dhis.android.core.indicator.Indicator)1 IndicatorEndpointCall (org.hisp.dhis.android.core.indicator.IndicatorEndpointCall)1 IndicatorTypeEndpointCall (org.hisp.dhis.android.core.indicator.IndicatorTypeEndpointCall)1 OptionSetCall (org.hisp.dhis.android.core.option.OptionSetCall)1