Skip to content

Commit

Permalink
Merge pull request #160 from dhis2/new-TEI-endpoint
Browse files Browse the repository at this point in the history
TrackedEntityInstances endpoint
  • Loading branch information
dhis2-android authored Mar 18, 2018
2 parents 48a8119 + 6052746 commit 8e5e214
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 51 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@


import android.support.annotation.NonNull;
import android.util.Log;

import org.hisp.dhis.android.core.common.Payload;
import org.hisp.dhis.android.core.data.api.Fields;
import org.hisp.dhis.android.core.data.database.DatabaseAdapter;
import org.hisp.dhis.android.core.data.database.Transaction;
import org.hisp.dhis.android.core.organisationunit.OrganisationUnit;
Expand All @@ -17,8 +14,7 @@
import org.hisp.dhis.android.core.systeminfo.SystemInfoService;
import org.hisp.dhis.android.core.systeminfo.SystemInfoStore;
import org.hisp.dhis.android.core.trackedentity.TeiQuery;
import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance;
import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceEndPointCall;
import org.hisp.dhis.android.core.trackedentity.TeisEndPointCall;
import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceHandler;
import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceService;

Expand Down Expand Up @@ -113,7 +109,7 @@ public Response call() throws Exception {
//TODO We may need to refactor the code here. Right now it is not very optimize.
// We need a better sync mechanism, based on? lastupdated?
private Response trackerCall(Date serverDate) throws Exception {
Response<Payload<TrackedEntityInstance>> response = null;
Response response = null;

List<OrganisationUnit> organisationUnits = organisationUnitStore.queryOrganisationUnits();

Expand All @@ -140,28 +136,11 @@ private Response trackerCall(Date serverDate) throws Exception {
.withPageLimit(pageLimit)
.build();

response = trackedEntityInstanceService.getTEIs(teiQuery.getOrgUnit(), fields(),
Boolean.TRUE, teiQuery.getPage(), teiQuery.getPageLimit()).execute();

if (response.isSuccessful() && response.body().items() != null) {
List<TrackedEntityInstance> trackedEntityInstances = response.body().items();
int size = trackedEntityInstances.size();
Response<TrackedEntityInstance> apiResponse = null;

if (teiQuery.getPageLimit() > 0) {
size = teiQuery.getPageLimit();
}

for (int i = 0; i < size; i++) {
apiResponse = new TrackedEntityInstanceEndPointCall(trackedEntityInstanceService,
databaseAdapter, trackedEntityInstanceHandler, resourceHandler, serverDate,
trackedEntityInstances.get(i).uid()).call();

if (apiResponse == null || !apiResponse.isSuccessful()) {
Log.d(this.getClass().getSimpleName(), trackedEntityInstances.get(i).uid() + " conflict");
}
}
response = new TeisEndPointCall(trackedEntityInstanceService, databaseAdapter,
teiQuery, trackedEntityInstanceHandler, resourceHandler, serverDate).call();

if (!response.isSuccessful()) {
return response;
}

teisDownloaded = teisDownloaded + teiQuery.getPageSize();
Expand All @@ -172,15 +151,5 @@ private Response trackerCall(Date serverDate) throws Exception {
return response;
}

private Fields<TrackedEntityInstance> fields() {
return Fields.<TrackedEntityInstance>builder().fields(
TrackedEntityInstance.uid, TrackedEntityInstance.created,
TrackedEntityInstance.lastUpdated,
TrackedEntityInstance.organisationUnit,
TrackedEntityInstance.trackedEntity,
TrackedEntityInstance.deleted
).build();
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,12 @@ public Response<Payload<TrackedEntityInstance>> call() throws Exception {
isExecuted = true;
}

String lastSyncedTEIs = resourceHandler.getLastUpdated(ResourceModel.Type.TRACKED_ENTITY_INSTANCE);

Response<Payload<TrackedEntityInstance>> response;

response = trackedEntityInstanceService.getTEIs(trackerQuery.getOrgUnit(), fields(),
response = trackedEntityInstanceService.getTEIs(trackerQuery.getOrgUnit(),
TrackedEntityInstance.lastUpdated.gt(lastSyncedTEIs), fields(),
Boolean.TRUE, trackerQuery.getPage(), trackerQuery.getPageSize()).execute();

if (response.isSuccessful() && response.body().items() != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ public abstract class TrackedEntityInstance {
private static final String ENROLLMENTS = "enrollments";

public static final Field<TrackedEntityInstance, String> uid = Field.create(UID);
public static final Field<TrackedEntityInstance, Date> created = Field.create(CREATED);
public static final Field<TrackedEntityInstance, Date> lastUpdated = Field.create(LAST_UPDATED);
public static final Field<TrackedEntityInstance, String> created = Field.create(CREATED);
public static final Field<TrackedEntityInstance, String> lastUpdated = Field.create(LAST_UPDATED);
public static final Field<TrackedEntityInstance, String> createdAtClient = Field.create(CREATED_AT_CLIENT);
public static final Field<TrackedEntityInstance, String> lastUpdatedAtClient = Field.create(LAST_UPDATED_AT_CLIENT);
public static final Field<TrackedEntityInstance, String> organisationUnit = Field.create(ORGANISATION_UNIT);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import org.hisp.dhis.android.core.common.Payload;
import org.hisp.dhis.android.core.data.api.Fields;
import org.hisp.dhis.android.core.data.api.Filter;
import org.hisp.dhis.android.core.data.api.Where;
import org.hisp.dhis.android.core.data.api.Which;
import org.hisp.dhis.android.core.imports.WebResponse;

Expand All @@ -13,22 +15,31 @@
import retrofit2.http.Query;

public interface TrackedEntityInstanceService {
String TRACKED_ENTITY_INSTANCES = "trackedEntityInstances";
String TRACKED_ENTITY_INSTANCES_UID = "trackedEntityInstanceUid";
String OU = "ou";
String FIELDS = "fields";
String PAGING = "paging";
String PAGE = "page";
String PAGE_SIZE = "pageSize";
String INCLUDE_DELETED = "includeDeleted";
String FILTER = "filter";

@POST("trackedEntityInstances")
@POST(TRACKED_ENTITY_INSTANCES)
Call<WebResponse> postTrackedEntityInstances(
@Body TrackedEntityInstancePayload trackedEntityInstances);


@GET("trackedEntityInstances/{trackedEntityInstanceUid}")
@GET(TRACKED_ENTITY_INSTANCES + "/{" + TRACKED_ENTITY_INSTANCES_UID + "}")
Call<TrackedEntityInstance> trackedEntityInstance(
@Path("trackedEntityInstanceUid") String trackedEntityInstanceUid,
@Query("fields") @Which Fields<TrackedEntityInstance> fields,
@Query("includeDeleted") boolean includeDeleted);
@Path(TRACKED_ENTITY_INSTANCES_UID) String trackedEntityInstanceUid,
@Query(FIELDS) @Which Fields<TrackedEntityInstance> fields,
@Query(INCLUDE_DELETED) boolean includeDeleted);

@GET("trackedEntityInstances")
@GET(TRACKED_ENTITY_INSTANCES)
Call<Payload<TrackedEntityInstance>> getTEIs(
@Query("ou") String orgUnit,
@Query("fields") @Which Fields<TrackedEntityInstance> fields,
@Query("paging") Boolean paging, @Query("page") int page,
@Query("pageSize") int pageSize);
@Query(OU) String orgUnit,
@Query(FILTER) @Where Filter<TrackedEntityInstance, String> lastUpdated,
@Query(FIELDS) @Which Fields<TrackedEntityInstance> fields,
@Query(PAGING) Boolean paging, @Query(PAGE) int page,
@Query(PAGE_SIZE) int pageSize);
}

0 comments on commit 8e5e214

Please sign in to comment.