package com.novoda.downloadmanager.demo.extended.extra_data;
import android.database.Cursor;
import android.os.AsyncTask;
import com.novoda.downloadmanager.lib.DownloadManager;
import com.novoda.downloadmanager.lib.Query;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
public class QueryForExtraDataDownloadsAsyncTask extends AsyncTask<Query, Void, List<ExtraDataDownload>> {
private final DownloadManager downloadManager;
private final WeakReference<Callback> weakCallback;
public static QueryForExtraDataDownloadsAsyncTask newInstance(DownloadManager downloadManager, Callback callback) {
return new QueryForExtraDataDownloadsAsyncTask(downloadManager, new WeakReference<>(callback));
}
QueryForExtraDataDownloadsAsyncTask(DownloadManager downloadManager, WeakReference<Callback> weakCallback) {
this.downloadManager = downloadManager;
this.weakCallback = weakCallback;
}
@Override
protected List<ExtraDataDownload> doInBackground(Query... params) {
Cursor cursor = downloadManager.query(params[0]);
List<ExtraDataDownload> extraDataDownloads = new ArrayList<>();
try {
while (cursor.moveToNext()) {
String title = cursor.getString(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_TITLE));
String fileName = cursor.getString(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_EXTRA_DATA));
extraDataDownloads.add(new ExtraDataDownload(title, fileName));
}
} finally {
cursor.close();
}
return extraDataDownloads;
}
@Override
protected void onPostExecute(List<ExtraDataDownload> extraDataDownloads) {
super.onPostExecute(extraDataDownloads);
Callback callback = weakCallback.get();
if (callback == null) {
return;
}
callback.onQueryResult(extraDataDownloads);
}
public interface Callback {
void onQueryResult(List<ExtraDataDownload> extraDataDownloads);
}
}