Search in sources :

Example 16 with FeedItem

use of de.danoeh.antennapod.model.feed.FeedItem in project AntennaPod by AntennaPod.

the class DBReader method getPlayedItems.

/**
 * Loads a list of FeedItems whose episode has been played.
 *
 * @return A list of FeedItems whose episdoe has been played.
 */
@NonNull
public static List<FeedItem> getPlayedItems() {
    Log.d(TAG, "getPlayedItems() called");
    PodDBAdapter adapter = PodDBAdapter.getInstance();
    adapter.open();
    try (Cursor cursor = adapter.getPlayedItemsCursor()) {
        List<FeedItem> items = extractItemlistFromCursor(adapter, cursor);
        loadAdditionalFeedItemListData(items);
        return items;
    } finally {
        adapter.close();
    }
}
Also used : FeedItem(de.danoeh.antennapod.model.feed.FeedItem) Cursor(android.database.Cursor) NonNull(androidx.annotation.NonNull)

Example 17 with FeedItem

use of de.danoeh.antennapod.model.feed.FeedItem in project AntennaPod by AntennaPod.

the class DBReader method getNewItemsList.

/**
 * Loads a list of FeedItems that are considered new.
 * Excludes items from feeds that do not have keep updated enabled.
 *
 * @param offset The first episode that should be loaded.
 * @param limit The maximum number of episodes that should be loaded.
 * @return A list of FeedItems that are considered new.
 */
public static List<FeedItem> getNewItemsList(int offset, int limit) {
    Log.d(TAG, "getNewItemsList() called");
    PodDBAdapter adapter = PodDBAdapter.getInstance();
    adapter.open();
    try (Cursor cursor = adapter.getNewItemsCursor(offset, limit)) {
        List<FeedItem> items = extractItemlistFromCursor(adapter, cursor);
        loadAdditionalFeedItemListData(items);
        return items;
    } finally {
        adapter.close();
    }
}
Also used : FeedItem(de.danoeh.antennapod.model.feed.FeedItem) Cursor(android.database.Cursor)

Example 18 with FeedItem

use of de.danoeh.antennapod.model.feed.FeedItem in project AntennaPod by AntennaPod.

the class DBReader method getPlaybackHistory.

/**
 * 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.
 *
 * @return The playback history. The FeedItems are sorted by their media's playbackCompletionDate in descending order.
 * The size of the returned list is limited by {@link #PLAYBACK_HISTORY_SIZE}.
 */
@NonNull
public static List<FeedItem> getPlaybackHistory() {
    Log.d(TAG, "getPlaybackHistory() called");
    PodDBAdapter adapter = PodDBAdapter.getInstance();
    adapter.open();
    Cursor mediaCursor = null;
    Cursor itemCursor = null;
    try {
        mediaCursor = adapter.getCompletedMediaCursor(PLAYBACK_HISTORY_SIZE);
        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<FeedItem> 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();
    }
}
Also used : FeedItem(de.danoeh.antennapod.model.feed.FeedItem) PlaybackCompletionDateComparator(de.danoeh.antennapod.core.util.comparator.PlaybackCompletionDateComparator) Cursor(android.database.Cursor) NonNull(androidx.annotation.NonNull)

Example 19 with FeedItem

use of de.danoeh.antennapod.model.feed.FeedItem in project AntennaPod by AntennaPod.

the class DBReader method extractItemlistFromCursor.

@NonNull
private static List<FeedItem> extractItemlistFromCursor(PodDBAdapter adapter, Cursor cursor) {
    List<FeedItem> result = new ArrayList<>(cursor.getCount());
    if (cursor.moveToFirst()) {
        int indexMediaId = cursor.getColumnIndexOrThrow(PodDBAdapter.SELECT_KEY_MEDIA_ID);
        do {
            FeedItem item = FeedItemCursorMapper.convert(cursor);
            result.add(item);
            if (!cursor.isNull(indexMediaId)) {
                item.setMedia(FeedMediaCursorMapper.convert(cursor));
            }
        } while (cursor.moveToNext());
    }
    return result;
}
Also used : FeedItem(de.danoeh.antennapod.model.feed.FeedItem) ArrayList(java.util.ArrayList) NonNull(androidx.annotation.NonNull)

Example 20 with FeedItem

use of de.danoeh.antennapod.model.feed.FeedItem in project AntennaPod by AntennaPod.

the class DBReader method getDownloadedItems.

/**
 * Loads a list of FeedItems whose episode has been downloaded.
 *
 * @return A list of FeedItems whose episdoe has been downloaded.
 */
@NonNull
public static List<FeedItem> getDownloadedItems() {
    Log.d(TAG, "getDownloadedItems() called");
    PodDBAdapter adapter = PodDBAdapter.getInstance();
    adapter.open();
    try (Cursor cursor = adapter.getDownloadedItemsCursor()) {
        List<FeedItem> items = extractItemlistFromCursor(adapter, cursor);
        loadAdditionalFeedItemListData(items);
        Collections.sort(items, new FeedItemPubdateComparator());
        return items;
    } finally {
        adapter.close();
    }
}
Also used : FeedItemPubdateComparator(de.danoeh.antennapod.core.util.comparator.FeedItemPubdateComparator) FeedItem(de.danoeh.antennapod.model.feed.FeedItem) Cursor(android.database.Cursor) NonNull(androidx.annotation.NonNull)

Aggregations

FeedItem (de.danoeh.antennapod.model.feed.FeedItem)178 Feed (de.danoeh.antennapod.model.feed.Feed)74 Test (org.junit.Test)64 ArrayList (java.util.ArrayList)48 Date (java.util.Date)47 FeedMedia (de.danoeh.antennapod.model.feed.FeedMedia)46 File (java.io.File)26 Cursor (android.database.Cursor)20 NonNull (androidx.annotation.NonNull)15 Nullable (androidx.annotation.Nullable)11 Subscribe (org.greenrobot.eventbus.Subscribe)9 Intent (android.content.Intent)7 FeedFilter (de.danoeh.antennapod.model.feed.FeedFilter)7 View (android.view.View)6 LongList (de.danoeh.antennapod.core.util.LongList)6 SQLException (android.database.SQLException)5 Playable (de.danoeh.antennapod.model.playback.Playable)5 EpisodeAction (de.danoeh.antennapod.net.sync.model.EpisodeAction)5 ExecutionException (java.util.concurrent.ExecutionException)5 FeedItemPubdateComparator (de.danoeh.antennapod.core.util.comparator.FeedItemPubdateComparator)4