package es.usc.citius.servando.calendula.jobs;
import android.support.annotation.NonNull;
import android.util.Log;
import com.evernote.android.job.Job;
import com.evernote.android.job.JobManager;
import com.evernote.android.job.JobRequest;
import org.joda.time.Duration;
import es.usc.citius.servando.calendula.util.HtmlCacheManager;
/**
* Created by alvaro.brey.vilas on 17/11/16.
*/
public class PurgeCacheJob extends Job {
public final static String TAG = "PurgeCacheJob";
private static final Integer PERIOD_DAYS = 30;
PurgeCacheJob() {
}
@NonNull
@Override
protected Result onRunJob(Params params) {
Log.d(TAG, "onRunJob: Job started");
Integer purged = HtmlCacheManager.getInstance().purgeCache();
Log.d(TAG, "onRunJob: Purged " + purged + " entries");
return Result.SUCCESS;
}
public static void scheduleJob() {
// if there's already exactly one purge job running, leave it be
int jobs = JobManager.instance().getAllJobsForTag(PurgeCacheJob.TAG).size();
int requests = JobManager.instance().getAllJobRequestsForTag(PurgeCacheJob.TAG).size();
Log.d(TAG, "scheduleJob: There are " + jobs + " running and " + requests + " requests already");
if (jobs + requests != 1) {
// if not, cancel all jobs just to be safe:
Log.v(TAG, "Removing duplicate jobs/requests");
JobManager.instance().cancelAllForTag(PurgeCacheJob.TAG);
//and create one
Log.v(TAG, "Scheduling new job");
new JobRequest.Builder(PurgeCacheJob.TAG)
.setPeriodic(Duration.standardDays(PERIOD_DAYS).getMillis())
.setRequiresDeviceIdle(true)
.setPersisted(true)
.build()
.schedule();
}
}
}