Merge pull request #1526 from mfietz/issue/1522-download-log-NPE

Prevent DownloadLog NPE
This commit is contained in:
Martin Fietz 2016-01-05 14:44:08 +01:00
commit e19c08de8a
3 changed files with 22 additions and 6 deletions

View File

@ -134,12 +134,16 @@ public class DownloadLogAdapter extends BaseAdapter {
} }
} else if(holder.typeId == FeedMedia.FEEDFILETYPE_FEEDMEDIA) { } else if(holder.typeId == FeedMedia.FEEDFILETYPE_FEEDMEDIA) {
FeedMedia media = DBReader.getFeedMedia(holder.id); FeedMedia media = DBReader.getFeedMedia(holder.id);
try { if (media != null) {
DBTasks.downloadFeedItems(context, media.getItem()); try {
Toast.makeText(context, R.string.status_downloading_label, Toast.LENGTH_SHORT).show(); DBTasks.downloadFeedItems(context, media.getItem());
} catch (DownloadRequestException e) { Toast.makeText(context, R.string.status_downloading_label, Toast.LENGTH_SHORT).show();
e.printStackTrace(); } catch (DownloadRequestException e) {
DownloadRequestErrorDialogCreator.newRequestErrorDialog(context, e.getMessage()); e.printStackTrace();
DownloadRequestErrorDialogCreator.newRequestErrorDialog(context, e.getMessage());
}
} else {
Log.wtf(TAG, "Could not find media for id: " + holder.id);
} }
} else { } else {
Log.wtf(TAG, "Unexpected type id: " + holder.typeId); Log.wtf(TAG, "Unexpected type id: " + holder.typeId);

View File

@ -223,6 +223,11 @@ public class DBWriter {
} }
EventDistributor.getInstance().sendFeedUpdateBroadcast(); EventDistributor.getInstance().sendFeedUpdateBroadcast();
// we assume we also removed download log entries for the feed or its media files.
// especially important if download or refresh failed, as the user should not be able
// to retry these
EventDistributor.getInstance().sendDownloadLogUpdateBroadcast();
BackupManager backupManager = new BackupManager(context); BackupManager backupManager = new BackupManager(context);
backupManager.dataChanged(); backupManager.dataChanged();
} }

View File

@ -886,6 +886,10 @@ public class PodDBAdapter {
} }
public void removeFeedMedia(FeedMedia media) { public void removeFeedMedia(FeedMedia media) {
// delete download log entries for feed media
db.delete(TABLE_NAME_DOWNLOAD_LOG, KEY_FEEDFILE + "=? AND " + KEY_FEEDFILETYPE +"=?",
new String[] { String.valueOf(media.getId()), String.valueOf(FeedMedia.FEEDFILETYPE_FEEDMEDIA) });
db.delete(TABLE_NAME_FEED_MEDIA, KEY_ID + "=?", db.delete(TABLE_NAME_FEED_MEDIA, KEY_ID + "=?",
new String[]{String.valueOf(media.getId())}); new String[]{String.valueOf(media.getId())});
} }
@ -930,6 +934,9 @@ public class PodDBAdapter {
removeFeedItem(item); removeFeedItem(item);
} }
} }
// delete download log entries for feed
db.delete(TABLE_NAME_DOWNLOAD_LOG, KEY_FEEDFILE + "=? AND " + KEY_FEEDFILETYPE +"=?",
new String[] { String.valueOf(feed.getId()), String.valueOf(Feed.FEEDFILETYPE_FEED) });
db.delete(TABLE_NAME_FEEDS, KEY_ID + "=?", db.delete(TABLE_NAME_FEEDS, KEY_ID + "=?",
new String[]{String.valueOf(feed.getId())}); new String[]{String.valueOf(feed.getId())});