From ff116ccd8c3f47de709d207008d9c38ff3ee2d75 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sun, 20 Sep 2020 12:24:11 +0200 Subject: Fixed items without pubdate getting assigned the current date on every single refresh --- .../java/de/danoeh/antennapod/core/feed/Feed.java | 2 +- .../service/download/handler/FeedParserTask.java | 8 -------- .../antennapod/core/storage/PodDBAdapter.java | 6 ++++++ .../util/comparator/FeedItemPubdateComparator.java | 22 +++++++++++++--------- 4 files changed, 20 insertions(+), 18 deletions(-) (limited to 'core/src/main/java/de/danoeh') diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java index 0889e5182..3657bcdc6 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java @@ -352,7 +352,7 @@ public class Feed extends FeedFile implements ImageResource { Date mostRecentDate = new Date(0); FeedItem mostRecentItem = null; for (FeedItem item : items) { - if (item.getPubDate().after(mostRecentDate)) { + if (item.getPubDate() != null && item.getPubDate().after(mostRecentDate)) { mostRecentDate = item.getPubDate(); mostRecentItem = item; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java index c50162788..18c5fce27 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java @@ -18,7 +18,6 @@ import org.xml.sax.SAXException; import javax.xml.parsers.ParserConfigurationException; import java.io.File; import java.io.IOException; -import java.util.Date; import java.util.concurrent.Callable; public class FeedParserTask implements Callable { @@ -104,13 +103,6 @@ public class FeedParserTask implements Callable { if (item.getTitle() == null) { throw new InvalidFeedException("Item has no title: " + item); } - if (item.getPubDate() == null) { - Log.e(TAG, "Item has no pubDate. Using current time as pubDate"); - if (item.getTitle() != null) { - Log.e(TAG, "Title of invalid item: " + item.getTitle()); - } - item.setPubDate(new Date()); - } } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java index 8a3f44e18..4b585d796 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java @@ -21,6 +21,7 @@ import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.Locale; import java.util.Set; @@ -593,6 +594,11 @@ public class PodDBAdapter { * @return the id of the entry */ private long setFeedItem(FeedItem item, boolean saveFeed) { + if (item.getId() == 0 && item.getPubDate() == null) { + Log.e(TAG, "Newly saved item has no pubDate. Using current date as pubDate"); + item.setPubDate(new Date()); + } + ContentValues values = new ContentValues(); values.put(KEY_TITLE, item.getTitle()); values.put(KEY_LINK, item.getLink()); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/FeedItemPubdateComparator.java b/core/src/main/java/de/danoeh/antennapod/core/util/comparator/FeedItemPubdateComparator.java index 51fe2da78..ad81a1d17 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/FeedItemPubdateComparator.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/comparator/FeedItemPubdateComparator.java @@ -4,16 +4,20 @@ import java.util.Comparator; import de.danoeh.antennapod.core.feed.FeedItem; -/** Compares the pubDate of two FeedItems for sorting*/ +/** + * Compares the pubDate of two FeedItems for sorting. + */ public class FeedItemPubdateComparator implements Comparator { - /** Returns a new instance of this comparator in reverse order. - public static FeedItemPubdateComparator newInstance() { - FeedItemPubdateComparator - }*/ - @Override - public int compare(FeedItem lhs, FeedItem rhs) { - return rhs.getPubDate().compareTo(lhs.getPubDate()); - } + /** + * Returns a new instance of this comparator in reverse order. + */ + @Override + public int compare(FeedItem lhs, FeedItem rhs) { + if (rhs.getPubDate() == null || lhs.getPubDate() == null) { + return 0; + } + return rhs.getPubDate().compareTo(lhs.getPubDate()); + } } -- cgit v1.2.3