• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

opensrp / opensrp-client-core / #176

pending completion
#176

Pull #922

github-actions

web-flow
Merge 92b6dfb69 into 2b50eaf02
Pull Request #922: Update doSync method access

18304 of 26768 relevant lines covered (68.38%)

0.68 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

87.23
opensrp-core/src/main/java/org/smartregister/sync/helper/TaskServiceProcessor.java
1
package org.smartregister.sync.helper;
2

3
import org.json.JSONObject;
4
import org.smartregister.AllConstants;
5
import org.smartregister.CoreLibrary;
6
import org.smartregister.domain.Event;
7
import org.smartregister.domain.Task;
8
import org.smartregister.domain.db.EventClient;
9
import org.smartregister.repository.BaseRepository;
10
import org.smartregister.repository.EventClientRepository;
11
import org.smartregister.repository.TaskRepository;
12
import org.smartregister.view.activity.DrishtiApplication;
13

14
import java.util.ArrayList;
15
import java.util.Collections;
16
import java.util.List;
17
import java.util.Set;
18

19
import timber.log.Timber;
20

21
/**
22
 * Created by Richard Kareko on 2/5/21.
23
 */
24

25
public class TaskServiceProcessor {
26

27
    protected static TaskServiceProcessor instance;
28
    private TaskRepository taskRepository;
29
    private EventClientRepository eventClientRepository;
30

31
    public static TaskServiceProcessor getInstance() {
32
        if (instance == null) {
1✔
33
            instance = new TaskServiceProcessor(CoreLibrary.getInstance().context().getTaskRepository(),
1✔
34
                    CoreLibrary.getInstance().context().getEventClientRepository() );
1✔
35
        }
36
        return instance;
1✔
37
    }
38

39
    public  TaskServiceProcessor(TaskRepository taskRepository, EventClientRepository eventClientRepository) {
1✔
40
        this.taskRepository = taskRepository;
1✔
41
        this.eventClientRepository = eventClientRepository;
1✔
42
    }
1✔
43

44
    public void processDuplicateTasks() {
45
        List<EventClient> eventsToProcess = new ArrayList<>();
1✔
46
        List<String> entityIds = taskRepository.getEntityIdsWithDuplicateTasks();
1✔
47
        for (String entityId: entityIds) {
1✔
48
            processTasks(taskRepository.getDuplicateTasksForEntity(entityId), eventsToProcess);
1✔
49
        }
1✔
50
        //trigger client processing for updated events
51
        try {
52
            DrishtiApplication.getInstance().getClientProcessor().processClient(eventsToProcess);
1✔
53
        } catch (Exception e) {
×
54
            Timber.e(e);
×
55
        }
1✔
56
    }
1✔
57

58
    protected void processTasks(Set<Task> duplicateTasks, List<EventClient> eventsToProcess) {
59
        if ((duplicateTasks == null) || (duplicateTasks.size()<2)) {
1✔
60
            return;
1✔
61
        }
62
        Task localTask;
63
        Task serverTask;
64
        List<Task> duplicateTaskList = new ArrayList<>(duplicateTasks);
1✔
65

66
        if (duplicateTaskList.get(0).getServerVersion() > duplicateTaskList.get(1).getServerVersion()){
1✔
67
            serverTask = duplicateTaskList.get(0);
1✔
68
            localTask = duplicateTaskList.get(1);
1✔
69
        } else {
70
            serverTask = duplicateTaskList.get(1);
×
71
            localTask = duplicateTaskList.get(0);
×
72
        }
73

74
        if (Task.TaskStatus.READY.equals(localTask.getStatus())){
1✔
75
            // delete local task
76
            taskRepository.deleteTasksByIds(Collections.singletonList(localTask.getIdentifier()));
×
77
            return;
×
78
        }
79

80
        populateTaskDetails(serverTask, localTask);
1✔
81

82
        // Fetch event & update taskIdentifier value
83
        List<Event> localEvents = eventClientRepository.getEventsByTaskIds(Collections.singleton(localTask.getIdentifier()));
1✔
84
        if (localEvents != null && !localEvents.isEmpty()) {
1✔
85
            Event localEvent = localEvents.get(0);
1✔
86
            localEvent.getDetails().put(AllConstants.TASK_IDENTIFIER, serverTask.getIdentifier());
1✔
87
            JSONObject localEventJSON = eventClientRepository.convertToJson(localEvent);
1✔
88
            eventClientRepository.addEvent(localEvent.getBaseEntityId(), localEventJSON,BaseRepository.TYPE_Unsynced);
1✔
89
            eventsToProcess.add(new EventClient(localEvent));
1✔
90
        }
91

92
        // delete local task
93
        taskRepository.deleteTasksByIds(Collections.singletonList(localTask.getIdentifier()));
1✔
94
        taskRepository.addOrUpdate(serverTask,true);
1✔
95

96
    }
1✔
97

98
    protected void populateTaskDetails(Task serverTask, Task localTask) {
99

100
        serverTask.setStatus(localTask.getStatus());
1✔
101
        serverTask.setBusinessStatus(localTask.getBusinessStatus());
1✔
102
        serverTask.setOwner(localTask.getOwner());
1✔
103
        serverTask.setRestriction(localTask.getRestriction());
1✔
104
        serverTask.setNotes(localTask.getNotes());
1✔
105
        serverTask.setSyncStatus(BaseRepository.TYPE_Unsynced);
1✔
106

107
    }
1✔
108

109
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc