package com.boardgamegeek.service; import android.content.Context; import android.support.annotation.NonNull; import com.boardgamegeek.R; import com.boardgamegeek.io.BggService; import com.boardgamegeek.provider.BggContract.Buddies; import com.boardgamegeek.util.MathUtils; import com.boardgamegeek.util.ResolverUtils; import java.util.ArrayList; import java.util.List; /** * Syncs roughly 7% of buddies that haven't been updated in the longer while. */ public class SyncBuddiesDetailOldest extends SyncBuddiesDetail { public SyncBuddiesDetailOldest(Context context, BggService service) { super(context, service); } @Override public int getSyncType() { return SyncService.FLAG_SYNC_BUDDIES; } @NonNull @Override protected String getLogMessage() { return "Syncing oldest buddies..."; } @Override protected List<String> getBuddyNames() { int count = ResolverUtils.queryInt(context.getContentResolver(), Buddies.CONTENT_URI, "count(*) AS count"); if (count == 0) return new ArrayList<>(0); int syncLimit = count / 14; // will sync all buddies every 2 weeks syncLimit = MathUtils.constrain(syncLimit, 1, 16); return ResolverUtils.queryStrings(context.getContentResolver(), Buddies.CONTENT_URI, Buddies.BUDDY_NAME, null, null, Buddies.UPDATED + " LIMIT " + syncLimit); } @Override public int getNotificationSummaryMessageId() { return R.string.sync_notification_buddies_oldest; } }