package org.wikipedia.recurring; import android.content.Context; import android.support.annotation.NonNull; import org.wikipedia.R; import org.wikipedia.WikipediaApp; import org.wikipedia.analytics.DailyStatsFunnel; import java.util.Date; import java.util.concurrent.TimeUnit; public class DailyEventTask extends RecurringTask { @NonNull private final String name; public DailyEventTask(Context context) { this(context.getString(R.string.preference_key_daily_event_time_task_name)); } public DailyEventTask(@NonNull String name) { this.name = name; } @Override protected boolean shouldRun(Date lastRun) { return isDailyEventDue(lastRun); } @Override protected void run(Date lastRun) { onDailyEvent(); } @Override @NonNull protected String getName() { return name; } private void onDailyEvent() { logDailyEventReport(); } private void logDailyEventReport() { new DailyStatsFunnel(WikipediaApp.getInstance()).log(WikipediaApp.getInstance()); } private boolean isDailyEventDue(Date lastRun) { return timeSinceLastDailyEvent(lastRun) > TimeUnit.DAYS.toMillis(1); } private long timeSinceLastDailyEvent(Date lastRun) { return Math.min(Integer.MAX_VALUE, Math.max(0, getAbsoluteTime() - lastRun.getTime())); } }