diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/FeedItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/FeedItemlistFragment.java index aa82be162..518b51beb 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/FeedItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/FeedItemlistFragment.java @@ -589,8 +589,8 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem private void showErrorDetails() { Maybe.fromCallable( () -> { - List feedDownloadLog = DBReader.getFeedDownloadLog(feedID); - if (feedDownloadLog.size() == 0 || feedDownloadLog.get(0).isSuccessful()) { + List feedDownloadLog = DBReader.getFeedDownloadLog(feedID, 1); + if (feedDownloadLog.isEmpty() || feedDownloadLog.get(0).isSuccessful()) { return null; } return feedDownloadLog.get(0); diff --git a/net/download/service/src/main/java/de/danoeh/antennapod/net/download/service/feed/FeedUpdateWorker.java b/net/download/service/src/main/java/de/danoeh/antennapod/net/download/service/feed/FeedUpdateWorker.java index 6690866be..054abc2d4 100644 --- a/net/download/service/src/main/java/de/danoeh/antennapod/net/download/service/feed/FeedUpdateWorker.java +++ b/net/download/service/src/main/java/de/danoeh/antennapod/net/download/service/feed/FeedUpdateWorker.java @@ -244,7 +244,7 @@ public class FeedUpdateWorker extends Worker { return savedFeed; // No download logs for new subscriptions } // we create a 'successful' download log if the feed's last refresh failed - List log = DBReader.getFeedDownloadLog(request.getFeedfileId()); + List log = DBReader.getFeedDownloadLog(request.getFeedfileId(), 1); if (!log.isEmpty() && !log.get(0).isSuccessful()) { DBWriter.addDownloadStatus(parserTask.getDownloadStatus()); } diff --git a/net/download/service/src/main/java/de/danoeh/antennapod/net/download/service/feed/local/LocalFeedUpdater.java b/net/download/service/src/main/java/de/danoeh/antennapod/net/download/service/feed/local/LocalFeedUpdater.java index b9431ac54..f90f3b54f 100644 --- a/net/download/service/src/main/java/de/danoeh/antennapod/net/download/service/feed/local/LocalFeedUpdater.java +++ b/net/download/service/src/main/java/de/danoeh/antennapod/net/download/service/feed/local/LocalFeedUpdater.java @@ -18,7 +18,6 @@ import java.io.InputStream; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.Iterator; @@ -68,7 +67,8 @@ public class LocalFeedUpdater { } Feed updatedFeed = tryUpdateFeed(feed, context, documentFolder.getUri(), updaterProgressListener); - if (mustReportDownloadSuccessful(feed)) { + List downloadResults = DBReader.getFeedDownloadLog(feed.getId(), 1); + if (downloadResults.isEmpty() || !downloadResults.get(0).isSuccessful()) { reportSuccess(feed); } return updatedFeed; @@ -269,27 +269,6 @@ public class LocalFeedUpdater { DBWriter.setFeedLastUpdateFailed(feed.getId(), false); } - /** - * Answers if reporting success is needed for the given feed. - */ - private static boolean mustReportDownloadSuccessful(Feed feed) { - List downloadResults = DBReader.getFeedDownloadLog(feed.getId()); - - if (downloadResults.isEmpty()) { - // report success if never reported before - return true; - } - - Collections.sort(downloadResults, (downloadStatus1, downloadStatus2) -> - downloadStatus1.getCompletionDate().compareTo(downloadStatus2.getCompletionDate())); - - DownloadResult lastDownloadResult = downloadResults.get(downloadResults.size() - 1); - - // report success if the last update was not successful - // (avoid logging success again if the last update was ok) - return !lastDownloadResult.isSuccessful(); - } - @FunctionalInterface public interface UpdaterProgressListener { void onLocalFileScanned(int scanned, int totalFiles); diff --git a/storage/database/src/main/java/de/danoeh/antennapod/storage/database/DBReader.java b/storage/database/src/main/java/de/danoeh/antennapod/storage/database/DBReader.java index 9e1524fc2..30464c649 100644 --- a/storage/database/src/main/java/de/danoeh/antennapod/storage/database/DBReader.java +++ b/storage/database/src/main/java/de/danoeh/antennapod/storage/database/DBReader.java @@ -321,13 +321,13 @@ public final class DBReader { * @return A list with DownloadStatus objects that represent the feed's download log, * newest events first. */ - public static List getFeedDownloadLog(long feedId) { + public static List getFeedDownloadLog(long feedId, long limit) { Log.d(TAG, "getFeedDownloadLog() called with: " + "feed = [" + feedId + "]"); PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); try (DownloadResultCursor cursor = new DownloadResultCursor( - adapter.getDownloadLog(Feed.FEEDFILETYPE_FEED, feedId))) { + adapter.getDownloadLog(Feed.FEEDFILETYPE_FEED, feedId, limit))) { List downloadLog = new ArrayList<>(cursor.getCount()); while (cursor.moveToNext()) { downloadLog.add(cursor.getDownloadResult()); diff --git a/storage/database/src/main/java/de/danoeh/antennapod/storage/database/PodDBAdapter.java b/storage/database/src/main/java/de/danoeh/antennapod/storage/database/PodDBAdapter.java index edc6934b4..89ac7cd12 100644 --- a/storage/database/src/main/java/de/danoeh/antennapod/storage/database/PodDBAdapter.java +++ b/storage/database/src/main/java/de/danoeh/antennapod/storage/database/PodDBAdapter.java @@ -1015,10 +1015,10 @@ public class PodDBAdapter { ); } - public final Cursor getDownloadLog(final int feedFileType, final long feedFileId) { + public final Cursor getDownloadLog(final int feedFileType, final long feedFileId, final long limit) { final String query = "SELECT * FROM " + TABLE_NAME_DOWNLOAD_LOG + " WHERE " + KEY_FEEDFILE + "=" + feedFileId + " AND " + KEY_FEEDFILETYPE + "=" + feedFileType - + " ORDER BY " + KEY_COMPLETION_DATE + " DESC"; + + " ORDER BY " + KEY_COMPLETION_DATE + " DESC LIMIT " + limit; return db.rawQuery(query, null); }