diff options
Diffstat (limited to 'src/de')
-rw-r--r-- | src/de/podfetcher/activity/AddFeedActivity.java | 15 | ||||
-rw-r--r-- | src/de/podfetcher/feed/FeedManager.java | 20 | ||||
-rw-r--r-- | src/de/podfetcher/storage/PodDBAdapter.java | 23 |
3 files changed, 42 insertions, 16 deletions
diff --git a/src/de/podfetcher/activity/AddFeedActivity.java b/src/de/podfetcher/activity/AddFeedActivity.java index e1da778eb..83fb073d0 100644 --- a/src/de/podfetcher/activity/AddFeedActivity.java +++ b/src/de/podfetcher/activity/AddFeedActivity.java @@ -66,7 +66,11 @@ public class AddFeedActivity extends SherlockActivity { requester.cancelDownload(getContext(), downloadId); } - unregisterReceiver(downloadCompleted); + try { + unregisterReceiver(downloadCompleted); + } catch (IllegalArgumentException e) { + // ignore + } dismiss(); } @@ -131,9 +135,12 @@ public class AddFeedActivity extends SherlockActivity { long statusId = manager.addDownloadStatus( AddFeedActivity.this, new DownloadStatus( feed, reason, false)); - Intent intent = new Intent(DownloadService.ACTION_DOWNLOAD_HANDLED); - intent.putExtra(DownloadService.EXTRA_DOWNLOAD_ID, downloadId); - intent.putExtra(DownloadService.EXTRA_STATUS_ID, statusId); + Intent intent = new Intent( + DownloadService.ACTION_DOWNLOAD_HANDLED); + intent.putExtra(DownloadService.EXTRA_DOWNLOAD_ID, + downloadId); + intent.putExtra(DownloadService.EXTRA_STATUS_ID, + statusId); AddFeedActivity.this.sendBroadcast(intent); } }); diff --git a/src/de/podfetcher/feed/FeedManager.java b/src/de/podfetcher/feed/FeedManager.java index b39cfe25a..c564f0070 100644 --- a/src/de/podfetcher/feed/FeedManager.java +++ b/src/de/podfetcher/feed/FeedManager.java @@ -145,6 +145,7 @@ public class FeedManager { * instead of the setters of FeedItem. */ public void markItemRead(Context context, FeedItem item, boolean read) { + Log.d(TAG, "Setting item with title " + item.getTitle() + " as read/unread"); item.read = read; setFeedItem(context, item); if (read == true) { @@ -246,10 +247,7 @@ public class FeedManager { Collections.sort(feeds, new FeedtitleComparator()); PodDBAdapter adapter = new PodDBAdapter(context); adapter.open(); - feed.setId(setFeed(feed, adapter)); - for (FeedItem item : feed.getItems()) { - setFeedItem(item, adapter); - } + adapter.setCompleteFeed(feed); adapter.close(); } @@ -266,7 +264,7 @@ public class FeedManager { "Found no existing Feed with title " + newFeed.getTitle() + ". Adding as new one."); // Add a new Feed - markItemRead(context, newFeed.getItems().get(0), false); + newFeed.getItems().get(0).read = false; addNewFeed(context, newFeed); return newFeed; } else { @@ -275,8 +273,8 @@ public class FeedManager { // Look for new or updated Items for (int idx = 0; idx < newFeed.getItems().size(); idx++) { FeedItem item = newFeed.getItems().get(idx); - FeedItem oldItem = searchFeedItemByLink(savedFeed, - item.getLink()); + FeedItem oldItem = searchFeedItemByTitle(savedFeed, + item.getTitle()); if (oldItem == null) { // item is new item.setFeed(savedFeed); @@ -302,9 +300,9 @@ public class FeedManager { } /** Get a FeedItem by its link */ - private FeedItem searchFeedItemByLink(Feed feed, String link) { + private FeedItem searchFeedItemByTitle(Feed feed, String title) { for (FeedItem item : feed.getItems()) { - if (item.getLink().equals(link)) { + if (item.getTitle().equals(title)) { return item; } } @@ -324,7 +322,7 @@ public class FeedManager { /** Updates Information of an existing Feeditem. Uses external adapter. */ public long setFeedItem(FeedItem item, PodDBAdapter adapter) { if (adapter != null) { - return adapter.setFeedItem(item); + return adapter.setSingleFeedItem(item); } else { Log.w(TAG, "Adapter in setFeedItem was null"); return 0; @@ -373,7 +371,7 @@ public class FeedManager { public long setFeedItem(Context context, FeedItem item) { PodDBAdapter adapter = new PodDBAdapter(context); adapter.open(); - long result = adapter.setFeedItem(item); + long result = adapter.setSingleFeedItem(item); adapter.close(); return result; } diff --git a/src/de/podfetcher/storage/PodDBAdapter.java b/src/de/podfetcher/storage/PodDBAdapter.java index 7974d1269..4a798b289 100644 --- a/src/de/podfetcher/storage/PodDBAdapter.java +++ b/src/de/podfetcher/storage/PodDBAdapter.java @@ -252,13 +252,32 @@ public class PodDBAdapter { } return media.getId(); } + + /** Insert all FeedItems of a feed and the feed object itself in a single transaction */ + public void setCompleteFeed(Feed feed) { + db.beginTransaction(); + setFeed(feed); + for (FeedItem item : feed.getItems()) { + setFeedItem(item); + } + db.setTransactionSuccessful(); + db.endTransaction(); + } + + public long setSingleFeedItem(FeedItem item) { + db.beginTransaction(); + long result = setFeedItem(item); + db.setTransactionSuccessful(); + db.endTransaction(); + return result; + } /** * Inserts or updates a feeditem entry * * @return the id of the entry */ - public long setFeedItem(FeedItem item) { + private long setFeedItem(FeedItem item) { ContentValues values = new ContentValues(); values.put(KEY_TITLE, item.getTitle()); values.put(KEY_LINK, item.getLink()); @@ -279,8 +298,10 @@ public class PodDBAdapter { values.put(KEY_READ, item.isRead()); if (item.getId() == 0) { + Log.d(TAG, "inserting new feeditem into db"); item.setId(db.insert(TABLE_NAME_FEED_ITEMS, null, values)); } else { + Log.d(TAG, "updating existing feeditem in db"); db.update(TABLE_NAME_FEED_ITEMS, values, KEY_ID + "=?", new String[] { String.valueOf(item.getId()) }); } |