package com.novoda.downloadmanager.lib;
import android.content.ContentResolver;
public class BatchPauseResumeController {
private final BatchRepository batchRepository;
private final DownloadsRepository downloadsRepository;
private final ContentResolver contentResolver;
private final DownloadsUriProvider downloadsUriProvider;
BatchPauseResumeController(ContentResolver contentResolver,
DownloadsUriProvider downloadsUriProvider,
BatchRepository batchRepository,
DownloadsRepository downloadsRepository) {
this.contentResolver = contentResolver;
this.batchRepository = batchRepository;
this.downloadsRepository = downloadsRepository;
this.downloadsUriProvider = downloadsUriProvider;
}
/**
* Returns true if the batch was paused, false otherwise
*/
public boolean pauseBatch(long batchId) {
int batchStatus = batchRepository.getBatchStatus(batchId);
if (DownloadStatus.isRunning(batchStatus)) {
downloadsRepository.pauseDownloadWithBatchId(batchId);
return true;
} else {
return false;
}
}
/**
* Returns true if the batch was resumed, false otherwise
*/
public boolean resumeBatch(long batchId) {
int batchStatus = batchRepository.getBatchStatus(batchId);
if (DownloadStatus.isPausedByApp(batchStatus)) {
downloadsRepository.resumeDownloadWithBatchId(batchId);
batchRepository.updateBatchStatus(batchId, DownloadStatus.PENDING);
notifyBatchesHaveChanged();
return true;
} else {
return false;
}
}
private void notifyBatchesHaveChanged() {
contentResolver.notifyChange(downloadsUriProvider.getBatchesUri(), null);
contentResolver.notifyChange(downloadsUriProvider.getBatchesWithoutProgressUri(), null);
}
}