diff --git a/opensrp-reveal/build.gradle b/opensrp-reveal/build.gradle index 892948ef67..504581f1bd 100644 --- a/opensrp-reveal/build.gradle +++ b/opensrp-reveal/build.gradle @@ -49,8 +49,8 @@ android { applicationId "org.smartregister.reveal" minSdkVersion 18 targetSdkVersion 28 - versionCode 29 - versionName "5.3.16" + versionCode 30 + versionName "5.3.17" multiDexEnabled true buildConfigField "long", "MAX_SERVER_TIME_DIFFERENCE", "1800000l" buildConfigField "boolean", "TIME_CHECK", "false" @@ -125,7 +125,7 @@ android { zipAlignEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' resValue "string", 'opensrp_base_url', '"https://reveal-zm.smartregister.org/opensrp/"' - buildConfigField "Integer", "DATABASE_VERSION", '12' + buildConfigField "Integer", "DATABASE_VERSION", '13' buildConfigField "int", "OPENMRS_UNIQUE_ID_INITIAL_BATCH_SIZE", '250' buildConfigField "int", "OPENMRS_UNIQUE_ID_BATCH_SIZE", '100' buildConfigField "int", "OPENMRS_UNIQUE_ID_SOURCE", '2' @@ -143,7 +143,7 @@ android { debug { resValue "string", 'opensrp_base_url', '"https://reveal-stage.smartregister.org/opensrp/"' - buildConfigField "Integer", "DATABASE_VERSION", '12' + buildConfigField "Integer", "DATABASE_VERSION", '13' buildConfigField "int", "OPENMRS_UNIQUE_ID_INITIAL_BATCH_SIZE", '250' buildConfigField "int", "OPENMRS_UNIQUE_ID_BATCH_SIZE", '100' buildConfigField "int", "OPENMRS_UNIQUE_ID_SOURCE", '2' @@ -180,8 +180,7 @@ android { tasks.withType(Test) { jacoco.includeNoLocationClasses = true - maxHeapSize = "2g" - //testLogging.showStandardStreams = true + maxHeapSize = "4g" testLogging { events TestLogEvent.FAILED diff --git a/opensrp-reveal/src/main/java/org/smartregister/reveal/repository/RevealRepository.java b/opensrp-reveal/src/main/java/org/smartregister/reveal/repository/RevealRepository.java index 5ffc50a336..97fafe00e1 100644 --- a/opensrp-reveal/src/main/java/org/smartregister/reveal/repository/RevealRepository.java +++ b/opensrp-reveal/src/main/java/org/smartregister/reveal/repository/RevealRepository.java @@ -135,6 +135,9 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { case 12: upgradeToVersion12(db); break; + case 13: + upgradeToVersion13(db); + break; default: break; } @@ -285,6 +288,10 @@ private void upgradeToVersion12(SQLiteDatabase db) { TaskRepository.updatePriorityToEnumAndAddRestrictions(db); } + private void upgradeToVersion13(SQLiteDatabase db) { + db.execSQL(String.format("UPDATE %s set %s = ? WHERE %s=? ", EVENT_TABLE, DatabaseKeys.SYNC_STATUS, DatabaseKeys.SYNC_STATUS), new String[]{BaseRepository.TYPE_Unsynced, BaseRepository.TYPE_Task_Unprocessed}); + } + private void clientProcessEvents(List eventTypes) { //client process events after 5 seconds so that get calls to getDatabase return new Timer().schedule(new TimerTask() { diff --git a/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/LocationTaskIntentService.java b/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/LocationTaskIntentService.java index 5e134c350b..48e7bcd116 100644 --- a/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/LocationTaskIntentService.java +++ b/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/LocationTaskIntentService.java @@ -2,17 +2,15 @@ import android.app.IntentService; import android.content.Intent; + import androidx.annotation.Nullable; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import org.smartregister.domain.FetchStatus; import org.smartregister.domain.Location; import org.smartregister.domain.Task; -import org.smartregister.domain.db.EventClient; import org.smartregister.job.SyncServiceJob; import org.smartregister.receiver.SyncStatusBroadcastReceiver; -import org.smartregister.repository.BaseRepository; -import org.smartregister.repository.EventClientRepository; import org.smartregister.repository.TaskRepository; import org.smartregister.reveal.application.RevealApplication; import org.smartregister.reveal.job.RevealSyncSettingsServiceJob; @@ -25,10 +23,7 @@ import org.smartregister.util.NetworkUtils; import org.smartregister.util.SyncUtils; -import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; import timber.log.Timber; @@ -114,8 +109,6 @@ private void doSync() { LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(intent); } - clientProcessEvents(extractStructureIds(syncedStructures, synchedTasks)); - if (!org.smartregister.util.Utils.isEmptyCollection(syncedStructures) || !org.smartregister.util.Utils.isEmptyCollection(synchedTasks)) { doSync(); @@ -162,41 +155,5 @@ private boolean hasChangesInCurrentOperationalArea(List syncedStructur return false; } - /** - * Extracts a set of Structures ids from syched structures and tasks - * - * @param syncedStructures the list of synced structures - * @param synchedTasks the list of synced tasks - * @return a set of baseEntityIds - */ - private Set extractStructureIds(List syncedStructures, List synchedTasks) { - Set structureIds = new HashSet<>(); - if (!org.smartregister.util.Utils.isEmptyCollection(syncedStructures)) { - for (Location structure : syncedStructures) { - structureIds.add(structure.getId()); - } - } - if (!org.smartregister.util.Utils.isEmptyCollection(synchedTasks)) { - for (Task task : synchedTasks) { - structureIds.add(task.getForEntity()); - } - } - return structureIds; - } - - /** - * Clients Processes events of a set of structure baseEntityIds that have the task status TYPE_Task_Unprocessed - * - * @param syncedStructuresIds the set of structure baseEntityIds to client process - */ - private void clientProcessEvents(Set syncedStructuresIds) { - if (org.smartregister.util.Utils.isEmptyCollection(syncedStructuresIds)) - return; - EventClientRepository ecRepository = RevealApplication.getInstance().getContext().getEventClientRepository(); - List eventClients = ecRepository.getEventsByBaseEntityIdsAndSyncStatus(BaseRepository.TYPE_Task_Unprocessed, new ArrayList<>(syncedStructuresIds)); - if (!eventClients.isEmpty()) { - RevealClientProcessor.getInstance(getApplicationContext()).processClient(eventClients); - } - } } diff --git a/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/RevealClientProcessor.java b/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/RevealClientProcessor.java index 8df5d33b17..52b4658ef6 100644 --- a/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/RevealClientProcessor.java +++ b/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/RevealClientProcessor.java @@ -278,14 +278,9 @@ private String updateTask(Event event, boolean localEvents) { if (localEvents && BaseRepository.TYPE_Synced.equals(task.getSyncStatus())) { task.setSyncStatus(BaseRepository.TYPE_Unsynced); revealApplication.setSynced(false); - } else if (!localEvents && event.getServerVersion() != 0 && !CoreLibrary.getInstance().isPeerToPeerProcessing()) { - // for events synced from server and task exists mark events as being fully synced - eventClientRepository.markEventAsSynced(event.getFormSubmissionId()); } taskRepository.addOrUpdate(task); operationalAreaId = task.getGroupIdentifier(); - } else if (!localEvents) { - eventClientRepository.markEventAsTaskUnprocessed(event.getFormSubmissionId()); } return operationalAreaId; } diff --git a/opensrp-reveal/src/test/java/org/smartregister/reveal/sync/RevealClientProcessorPowerMockTest.java b/opensrp-reveal/src/test/java/org/smartregister/reveal/sync/RevealClientProcessorPowerMockTest.java index 6b5a5606a2..e9e4245f60 100644 --- a/opensrp-reveal/src/test/java/org/smartregister/reveal/sync/RevealClientProcessorPowerMockTest.java +++ b/opensrp-reveal/src/test/java/org/smartregister/reveal/sync/RevealClientProcessorPowerMockTest.java @@ -152,7 +152,7 @@ public void testUpdateTaskShouldMarkEventAsTaskUnprocessed() throws Exception { Whitebox.invokeMethod(clientProcessor, "updateTask", event, false); - verify(eventClientRepository).markEventAsTaskUnprocessed(eq(FORM_SUBMISSION_ID)); + verify(eventClientRepository,never()).markEventAsTaskUnprocessed(eq(FORM_SUBMISSION_ID)); } @Test @@ -175,7 +175,7 @@ public void testUpdateTaskShouldMarkEventAsSynced() throws Exception { Whitebox.invokeMethod(clientProcessor, "updateTask", event, false); - verify(eventClientRepository).markEventAsSynced(eq(FORM_SUBMISSION_ID)); + verify(eventClientRepository,never()).markEventAsSynced(eq(FORM_SUBMISSION_ID)); } @Test diff --git a/opensrp-reveal/src/test/java/org/smartregister/reveal/sync/RevealClientProcessorTest.java b/opensrp-reveal/src/test/java/org/smartregister/reveal/sync/RevealClientProcessorTest.java index 84889f3134..058bd045d2 100644 --- a/opensrp-reveal/src/test/java/org/smartregister/reveal/sync/RevealClientProcessorTest.java +++ b/opensrp-reveal/src/test/java/org/smartregister/reveal/sync/RevealClientProcessorTest.java @@ -172,7 +172,7 @@ public void testProcessEventClientWithoutTasksAndLocations() { Whitebox.setInternalState(clientProcessor, "eventClientRepository", eventClientRepository); clientProcessor.processClient(Arrays.asList(new EventClient(event, null), new EventClient(sprayedEvent, null)), false); - verify(eventClientRepository, times(2)).markEventAsTaskUnprocessed(anyString()); + verify(eventClientRepository, never()).markEventAsTaskUnprocessed(anyString()); } @Test @@ -182,7 +182,7 @@ public void testProcessEventClientShouldUpdateTaskStatusOnlyForRemoteEvents() { clientProcessor.processClient(Collections.singletonList(new EventClient(sprayedEvent, null))); verify(eventClientRepository, never()).markEventAsTaskUnprocessed(sprayedEvent.getFormSubmissionId()); - verify(eventClientRepository).markEventAsSynced(sprayedEvent.getFormSubmissionId()); + verify(eventClientRepository,never()).markEventAsSynced(sprayedEvent.getFormSubmissionId()); verify(taskRepository).addOrUpdate(taskCaptor.capture());