@Override
 public boolean trackAvailable(Track track) {
   for (DownloadJob dJob : mCompletedJobs) {
     if (track.getId() == dJob.getPlaylistEntry().getTrack().getId()) {
       return true;
     }
   }
   return false;
 }
  public boolean queueDownload(DownloadJob downloadJob) {
    for (DownloadJob dJob : mCompletedJobs) {
      if (dJob.getPlaylistEntry().getTrack().getId()
          == downloadJob.getPlaylistEntry().getTrack().getId()) return false;
    }

    for (DownloadJob dJob : mQueuedJobs) {
      if (dJob.getPlaylistEntry().getTrack().getId()
          == downloadJob.getPlaylistEntry().getTrack().getId()) return false;
    }

    if (mDb.addToLibrary(downloadJob.getPlaylistEntry())) {
      mQueuedJobs.add(downloadJob);
      mDownloadManager.notifyObservers();
      return true;
    } else {
      return false;
    }
  }
 private void loadOldDownloads() {
   ArrayList<DownloadJob> oldDownloads = mDb.getAllDownloadJobs();
   for (DownloadJob dJob : oldDownloads) {
     if (dJob.getProgress() == 100) {
       mCompletedJobs.add(dJob);
     } else {
       mDownloadManager.download(dJob.getPlaylistEntry());
     }
   }
   mDownloadManager.notifyObservers();
 }
 public void downloadCompleted(DownloadJob job) {
   mQueuedJobs.remove(job);
   mCompletedJobs.add(job);
   mDb.setStatus(job.getPlaylistEntry(), true);
   mDownloadManager.notifyObservers();
 }