summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2012-07-01 22:21:06 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2012-07-01 22:21:06 +0200
commit3b4bf9374a161e08ffc1104ab64f7dc9813614b5 (patch)
tree8057a2f3422a4ea299beb673c4e212d8aa868c4f
parent5a0f1f49c99576d45ec94ef63a38a298a79bcff7 (diff)
downloadAntennaPod-3b4bf9374a161e08ffc1104ab64f7dc9813614b5.zip
Fixed feed update
-rw-r--r--src/de/podfetcher/feed/FeedItemPubdateComparator.java14
-rw-r--r--src/de/podfetcher/feed/FeedManager.java13
-rw-r--r--src/de/podfetcher/util/FeedItemPubdateComparator.java4
3 files changed, 13 insertions, 18 deletions
diff --git a/src/de/podfetcher/feed/FeedItemPubdateComparator.java b/src/de/podfetcher/feed/FeedItemPubdateComparator.java
deleted file mode 100644
index 90967b72b..000000000
--- a/src/de/podfetcher/feed/FeedItemPubdateComparator.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package de.podfetcher.feed;
-
-import java.util.Comparator;
-
-/** Compares the pubDate of two FeedItems */
-public class FeedItemPubdateComparator implements Comparator<FeedItem> {
-
- @Override
- public int compare(FeedItem lhs, FeedItem rhs) {
- long diff = lhs.getPubDate().getTime() - rhs.getPubDate().getTime();
- return (int) Math.signum(diff);
- }
-
-}
diff --git a/src/de/podfetcher/feed/FeedManager.java b/src/de/podfetcher/feed/FeedManager.java
index 0cf1504ae..324bff5e7 100644
--- a/src/de/podfetcher/feed/FeedManager.java
+++ b/src/de/podfetcher/feed/FeedManager.java
@@ -9,6 +9,7 @@ import de.podfetcher.activity.MediaplayerActivity;
import de.podfetcher.asynctask.DownloadStatus;
import de.podfetcher.service.PlaybackService;
import de.podfetcher.storage.*;
+import de.podfetcher.util.FeedItemPubdateComparator;
import de.podfetcher.util.FeedtitleComparator;
import android.content.Context;
import android.content.Intent;
@@ -243,9 +244,9 @@ public class FeedManager {
* adapter.setFeedItem(item); } else { feed.getItems().add(item); item.id =
* adapter.setFeedItem(item); } }
*/
- public void updateFeed(Context context, Feed newFeed) {
+ public void updateFeed(Context context, final Feed newFeed) {
// Look up feed in the feedslist
- Feed savedFeed = searchFeedByLink(newFeed.getLink());
+ final Feed savedFeed = searchFeedByLink(newFeed.getLink());
if (savedFeed == null) {
Log.d(TAG,
"Found no existing Feed with title " + newFeed.getTitle()
@@ -257,17 +258,20 @@ public class FeedManager {
Log.d(TAG, "Feed with title " + newFeed.getTitle()
+ " already exists. Syncing new with existing one.");
// Look for new or updated Items
- for (FeedItem item : newFeed.getItems()) {
+ for (int idx = 0; idx < newFeed.getItems().size(); idx++) {
+ FeedItem item = newFeed.getItems().get(idx);
FeedItem oldItem = searchFeedItemByLink(savedFeed,
item.getLink());
if (oldItem == null) {
// item is new
- savedFeed.getItems().add(item);
+ item.setFeed(savedFeed);
+ savedFeed.getItems().add(idx, item);
markItemRead(context, item, false);
}
}
savedFeed.setLastUpdate(newFeed.getLastUpdate());
setFeed(context, savedFeed);
+
}
}
@@ -568,6 +572,7 @@ public class FeedManager {
items.add(item);
} while (itemlistCursor.moveToNext());
}
+ Collections.sort(items, new FeedItemPubdateComparator());
return items;
}
diff --git a/src/de/podfetcher/util/FeedItemPubdateComparator.java b/src/de/podfetcher/util/FeedItemPubdateComparator.java
index 0eb009349..f58c229c2 100644
--- a/src/de/podfetcher/util/FeedItemPubdateComparator.java
+++ b/src/de/podfetcher/util/FeedItemPubdateComparator.java
@@ -7,6 +7,10 @@ import de.podfetcher.feed.FeedItem;
/** Compares the pubDate of two FeedItems for sorting*/
public class FeedItemPubdateComparator implements Comparator<FeedItem> {
+ /** Returns a new instance of this comparator in reverse order.
+ public static FeedItemPubdateComparator newInstance() {
+ FeedItemPubdateComparator
+ }*/
@Override
public int compare(FeedItem lhs, FeedItem rhs) {
return -lhs.getPubDate().compareTo(rhs.getPubDate());