From 5c6000155cc8f2c6111301ceecae08bf41e0b735 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sun, 24 Mar 2024 21:27:30 +0100 Subject: Let the database do the sorting (#7025) --- .../antennapod/core/event/DownloadLogEvent.java | 19 -------- .../de/danoeh/antennapod/core/feed/FeedEvent.java | 32 ------------- .../danoeh/antennapod/core/storage/DBReader.java | 56 ---------------------- .../danoeh/antennapod/core/storage/DBWriter.java | 4 +- .../danoeh/antennapod/core/util/ChapterUtils.java | 9 +++- .../antennapod/core/util/FeedItemPermutors.java | 6 +++ .../comparator/ChapterStartTimeComparator.java | 14 ------ .../util/comparator/DownloadResultComparator.java | 14 ------ .../PlaybackCompletionDateComparator.java | 19 -------- 9 files changed, 16 insertions(+), 157 deletions(-) delete mode 100644 core/src/main/java/de/danoeh/antennapod/core/event/DownloadLogEvent.java delete mode 100644 core/src/main/java/de/danoeh/antennapod/core/feed/FeedEvent.java delete mode 100644 core/src/main/java/de/danoeh/antennapod/core/util/comparator/ChapterStartTimeComparator.java delete mode 100644 core/src/main/java/de/danoeh/antennapod/core/util/comparator/DownloadResultComparator.java delete mode 100644 core/src/main/java/de/danoeh/antennapod/core/util/comparator/PlaybackCompletionDateComparator.java (limited to 'core/src/main/java/de/danoeh') diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/DownloadLogEvent.java b/core/src/main/java/de/danoeh/antennapod/core/event/DownloadLogEvent.java deleted file mode 100644 index 5ab5decf9..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/event/DownloadLogEvent.java +++ /dev/null @@ -1,19 +0,0 @@ -package de.danoeh.antennapod.core.event; - -import androidx.annotation.NonNull; - -public class DownloadLogEvent { - - private DownloadLogEvent() { - } - - public static DownloadLogEvent listUpdated() { - return new DownloadLogEvent(); - } - - @NonNull - @Override - public String toString() { - return "DownloadLogEvent"; - } -} diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedEvent.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedEvent.java deleted file mode 100644 index 044554451..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedEvent.java +++ /dev/null @@ -1,32 +0,0 @@ -package de.danoeh.antennapod.core.feed; - -import androidx.annotation.NonNull; - -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - -public class FeedEvent { - - public enum Action { - FILTER_CHANGED, - SORT_ORDER_CHANGED - } - - private final Action action; - public final long feedId; - - public FeedEvent(Action action, long feedId) { - this.action = action; - this.feedId = feedId; - } - - @NonNull - @Override - public String toString() { - return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) - .append("action", action) - .append("feedId", feedId) - .toString(); - } - -} diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java index 16c12bdd5..5e64fb1a1 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java @@ -16,8 +16,6 @@ import java.util.Map; import de.danoeh.antennapod.core.util.FeedItemPermutors; import de.danoeh.antennapod.core.util.LongList; -import de.danoeh.antennapod.core.util.comparator.DownloadResultComparator; -import de.danoeh.antennapod.core.util.comparator.PlaybackCompletionDateComparator; import de.danoeh.antennapod.model.feed.Chapter; import de.danoeh.antennapod.model.feed.Feed; import de.danoeh.antennapod.model.feed.FeedItem; @@ -341,57 +339,6 @@ public final class DBReader { } } - /** - * Loads the playback history from the database. A FeedItem is in the playback history if playback of the correpsonding episode - * has been completed at least once. - * - * @param limit The maximum number of items to return. - * - * @return The playback history. The FeedItems are sorted by their media's playbackCompletionDate in descending order. - */ - @NonNull - public static List getPlaybackHistory(int offset, int limit) { - Log.d(TAG, "getPlaybackHistory() called"); - - PodDBAdapter adapter = PodDBAdapter.getInstance(); - adapter.open(); - - Cursor mediaCursor = null; - Cursor itemCursor = null; - try { - mediaCursor = adapter.getCompletedMediaCursor(offset, limit); - String[] itemIds = new String[mediaCursor.getCount()]; - for (int i = 0; i < itemIds.length && mediaCursor.moveToPosition(i); i++) { - int index = mediaCursor.getColumnIndex(PodDBAdapter.KEY_FEEDITEM); - itemIds[i] = Long.toString(mediaCursor.getLong(index)); - } - itemCursor = adapter.getFeedItemCursor(itemIds); - List items = extractItemlistFromCursor(adapter, itemCursor); - loadAdditionalFeedItemListData(items); - Collections.sort(items, new PlaybackCompletionDateComparator()); - return items; - } finally { - if (mediaCursor != null) { - mediaCursor.close(); - } - if (itemCursor != null) { - itemCursor.close(); - } - adapter.close(); - } - } - - public static long getPlaybackHistoryLength() { - PodDBAdapter adapter = PodDBAdapter.getInstance(); - adapter.open(); - - try { - return adapter.getCompletedMediaLength(); - } finally { - adapter.close(); - } - } - /** * Loads the download log from the database. * @@ -408,7 +355,6 @@ public final class DBReader { while (cursor.moveToNext()) { downloadLog.add(DownloadResultCursorMapper.convert(cursor)); } - Collections.sort(downloadLog, new DownloadResultComparator()); return downloadLog; } finally { adapter.close(); @@ -432,7 +378,6 @@ public final class DBReader { while (cursor.moveToNext()) { downloadLog.add(DownloadResultCursorMapper.convert(cursor)); } - Collections.sort(downloadLog, new DownloadResultComparator()); return downloadLog; } finally { adapter.close(); @@ -691,7 +636,6 @@ public final class DBReader { try (Cursor itemCursor = adapter.getFeedItemCursorByUrl(urls)) { List items = extractItemlistFromCursor(adapter, itemCursor); loadAdditionalFeedItemListData(items); - Collections.sort(items, new PlaybackCompletionDateComparator()); return items; } finally { adapter.close(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java index 389f2bf5a..811dbfe5a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java @@ -12,7 +12,7 @@ import androidx.documentfile.provider.DocumentFile; import com.google.common.util.concurrent.Futures; -import de.danoeh.antennapod.core.event.DownloadLogEvent; +import de.danoeh.antennapod.event.DownloadLogEvent; import de.danoeh.antennapod.core.feed.LocalFeedUpdater; import de.danoeh.antennapod.net.download.serviceinterface.DownloadServiceInterface; import de.danoeh.antennapod.core.service.playback.PlaybackServiceInterface; @@ -39,7 +39,7 @@ import de.danoeh.antennapod.event.MessageEvent; import de.danoeh.antennapod.event.playback.PlaybackHistoryEvent; import de.danoeh.antennapod.event.QueueEvent; import de.danoeh.antennapod.event.UnreadItemsUpdateEvent; -import de.danoeh.antennapod.core.feed.FeedEvent; +import de.danoeh.antennapod.event.FeedEvent; import de.danoeh.antennapod.storage.preferences.PlaybackPreferences; import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.model.download.DownloadResult; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/ChapterUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/ChapterUtils.java index c32d71005..c058d47fe 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/ChapterUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/ChapterUtils.java @@ -11,7 +11,6 @@ import de.danoeh.antennapod.core.feed.ChapterMerger; import de.danoeh.antennapod.model.feed.FeedMedia; import de.danoeh.antennapod.net.common.AntennapodHttpClient; import de.danoeh.antennapod.core.storage.DBReader; -import de.danoeh.antennapod.core.util.comparator.ChapterStartTimeComparator; import de.danoeh.antennapod.parser.feed.PodcastIndexChapterParser; import de.danoeh.antennapod.parser.media.id3.ChapterReader; import de.danoeh.antennapod.parser.media.id3.ID3ReaderException; @@ -30,6 +29,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InterruptedIOException; import java.util.Collections; +import java.util.Comparator; import java.util.List; /** @@ -232,4 +232,11 @@ public class ChapterUtils { } return true; } + + public static class ChapterStartTimeComparator implements Comparator { + @Override + public int compare(Chapter lhs, Chapter rhs) { + return Long.compare(lhs.getStart(), rhs.getStart()); + } + } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemPermutors.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemPermutors.java index ec9c9e55e..4e39681f4 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemPermutors.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemPermutors.java @@ -78,6 +78,12 @@ public class FeedItemPermutors { case SIZE_LARGE_SMALL: comparator = (f1, f2) -> Long.compare(size(f2), size(f1)); break; + case COMPLETION_DATE_NEW_OLD: + comparator = (f1, f2) -> f2.getMedia().getPlaybackCompletionDate() + .compareTo(f1.getMedia().getPlaybackCompletionDate()); + break; + default: + throw new IllegalArgumentException("Permutor not implemented"); } if (comparator != null) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/ChapterStartTimeComparator.java b/core/src/main/java/de/danoeh/antennapod/core/util/comparator/ChapterStartTimeComparator.java deleted file mode 100644 index 0f75d1237..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/ChapterStartTimeComparator.java +++ /dev/null @@ -1,14 +0,0 @@ -package de.danoeh.antennapod.core.util.comparator; - -import java.util.Comparator; - -import de.danoeh.antennapod.model.feed.Chapter; - -public class ChapterStartTimeComparator implements Comparator { - - @Override - public int compare(Chapter lhs, Chapter rhs) { - return Long.compare(lhs.getStart(), rhs.getStart()); - } - -} diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/DownloadResultComparator.java b/core/src/main/java/de/danoeh/antennapod/core/util/comparator/DownloadResultComparator.java deleted file mode 100644 index d1d50fc8a..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/DownloadResultComparator.java +++ /dev/null @@ -1,14 +0,0 @@ -package de.danoeh.antennapod.core.util.comparator; - -import java.util.Comparator; - -import de.danoeh.antennapod.model.download.DownloadResult; - -/** Compares the completion date of two DownloadResult objects. */ -public class DownloadResultComparator implements Comparator { - - @Override - public int compare(DownloadResult lhs, DownloadResult rhs) { - return rhs.getCompletionDate().compareTo(lhs.getCompletionDate()); - } -} diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/PlaybackCompletionDateComparator.java b/core/src/main/java/de/danoeh/antennapod/core/util/comparator/PlaybackCompletionDateComparator.java deleted file mode 100644 index 26c3a74c4..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/PlaybackCompletionDateComparator.java +++ /dev/null @@ -1,19 +0,0 @@ -package de.danoeh.antennapod.core.util.comparator; - -import java.util.Comparator; - -import de.danoeh.antennapod.model.feed.FeedItem; - -public class PlaybackCompletionDateComparator implements Comparator { - - public int compare(FeedItem lhs, FeedItem rhs) { - if (lhs.getMedia() != null - && lhs.getMedia().getPlaybackCompletionDate() != null - && rhs.getMedia() != null - && rhs.getMedia().getPlaybackCompletionDate() != null) { - return rhs.getMedia().getPlaybackCompletionDate() - .compareTo(lhs.getMedia().getPlaybackCompletionDate()); - } - return 0; - } -} -- cgit v1.2.3