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

opensrp / opensrp-client-core / #182

08 Aug 2024 12:55PM UTC coverage: 68.316% (-0.08%) from 68.395%
#182

Pull #925

github

web-flow
Merge 0883be0a0 into 4fcf06cf5
Pull Request #925: migrate SyncserviceJob to work manager

18308 of 26799 relevant lines covered (68.32%)

0.68 hits per line

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

80.56
opensrp-core/src/main/java/org/smartregister/sync/DrishtiSyncScheduler.java
1
package org.smartregister.sync;
2

3
import android.app.AlarmManager;
4
import android.app.PendingIntent;
5
import android.content.Context;
6
import android.content.Intent;
7
import android.net.ConnectivityManager;
8
import android.net.NetworkInfo;
9

10
import org.smartregister.CoreLibrary;
11
import org.smartregister.event.Listener;
12

13
import static java.text.MessageFormat.format;
14
import static org.joda.time.DateTimeConstants.MILLIS_PER_MINUTE;
15
import static org.joda.time.DateTimeConstants.MILLIS_PER_SECOND;
16
import static org.smartregister.event.Event.ON_LOGOUT;
17
import static org.smartregister.util.Log.logInfo;
18

19
public class DrishtiSyncScheduler {
×
20
    public static final int SYNC_INTERVAL = 2 * MILLIS_PER_MINUTE;
21
    public static final int SYNC_START_DELAY = 5 * MILLIS_PER_SECOND;
22
    private static Listener<Boolean> logoutListener;
23
    private static Object ReceiverClass;
24

25
    public static void setReceiverClass(Class receiverClass) {
26
        ReceiverClass = receiverClass;
1✔
27
    }
1✔
28

29
    public static void start(final Context context) {
30
        if (CoreLibrary.getInstance().context().IsUserLoggedOut()) {
1✔
31
            return;
1✔
32
        }
33

34
        if (ReceiverClass == null) {
1✔
35
            return;
×
36
        }
37

38
        PendingIntent syncBroadcastReceiverIntent = PendingIntent
1✔
39
                .getBroadcast(context, 0, new Intent(context, (Class) ReceiverClass), 0);
1✔
40

41
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
1✔
42
        alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + SYNC_START_DELAY,
1✔
43
                SYNC_INTERVAL, syncBroadcastReceiverIntent);
44

45
        logInfo(format("Scheduled to sync from server every {0} seconds.", SYNC_INTERVAL / 1000));
1✔
46

47
        attachListenerToStopSyncOnLogout(context);
1✔
48
    }
1✔
49

50
    private static void attachListenerToStopSyncOnLogout(final Context context) {
51
        ON_LOGOUT.removeListener(logoutListener);
1✔
52
        logoutListener = new Listener<Boolean>() {
1✔
53
            public void onEvent(Boolean data) {
54
                logInfo("User is logged out. Stopping Dristhi Sync scheduler.");
×
55
                stop(context);
×
56
            }
×
57
        };
58
        ON_LOGOUT.addListener(logoutListener);
1✔
59
    }
1✔
60

61
    public static void startOnlyIfConnectedToNetwork(Context context) {
62
        ConnectivityManager connectivityManager = (ConnectivityManager) context
1✔
63
                .getSystemService(Context.CONNECTIVITY_SERVICE);
1✔
64
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
1✔
65
        if (networkInfo != null && networkInfo.isConnected()) {
1✔
66
            start(context);
1✔
67
        } else {
68
            logInfo("Device not connected to network so not starting sync scheduler.");
×
69
        }
70
    }
1✔
71

72
    public static void stop(Context context) {
73
        if (ReceiverClass == null) {
1✔
74
            return;
×
75
        }
76

77
        PendingIntent syncBroadcastReceiverIntent = PendingIntent
1✔
78
                .getBroadcast(context, 0, new Intent(context, (Class) ReceiverClass), 0);
1✔
79

80
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
1✔
81
        alarmManager.cancel(syncBroadcastReceiverIntent);
1✔
82

83
        logInfo("Unscheduled sync.");
1✔
84
    }
1✔
85
}
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