From 75dfc89a445c84e22639d101c229b0cfef6346f0 Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Wed, 9 Sep 2015 14:05:58 +0200 Subject: Refactor database access --- .../de/test/antennapod/AntennaPodTestRunner.java | 2 + .../playback/PlaybackServiceMediaPlayerTest.java | 15 +- .../playback/PlaybackServiceTaskManagerTest.java | 14 +- .../de/test/antennapod/storage/DBReaderTest.java | 130 +++++------ .../de/test/antennapod/storage/DBTasksTest.java | 43 ++-- .../de/test/antennapod/storage/DBTestUtils.java | 14 +- .../de/test/antennapod/storage/DBWriterTest.java | 133 ++++++----- .../de/test/antennapod/ui/MainActivityTest.java | 8 +- .../java/de/test/antennapod/ui/PlaybackTest.java | 245 ++++++++++++++++----- .../java/de/test/antennapod/ui/UITestUtils.java | 18 +- .../main/java/de/danoeh/antennapod/PodcastApp.java | 2 + .../java/de/danoeh/antennapod/UpdateManager.java | 6 +- .../antennapod/activity/AudioplayerActivity.java | 49 ++--- .../antennapod/activity/FeedInfoActivity.java | 7 +- .../danoeh/antennapod/activity/MainActivity.java | 52 ++--- .../activity/OnlineFeedViewActivity.java | 4 +- .../antennapod/adapter/ActionButtonUtils.java | 2 +- .../adapter/DefaultActionButtonCallback.java | 8 +- .../antennapod/adapter/DownloadLogAdapter.java | 4 +- .../antennapod/asynctask/OpmlExportWorker.java | 2 +- .../dialog/EpisodesApplyActionFragment.java | 4 +- .../antennapod/fragment/AllEpisodesFragment.java | 12 +- .../fragment/CompletedDownloadsFragment.java | 2 +- .../antennapod/fragment/DownloadLogFragment.java | 4 +- .../fragment/ItemDescriptionFragment.java | 2 +- .../danoeh/antennapod/fragment/ItemFragment.java | 5 +- .../antennapod/fragment/ItemlistFragment.java | 4 +- .../antennapod/fragment/NewEpisodesFragment.java | 6 +- .../fragment/PlaybackHistoryFragment.java | 8 +- .../danoeh/antennapod/fragment/QueueFragment.java | 16 +- .../fragment/RunningDownloadsFragment.java | 4 +- .../menuhandler/FeedItemMenuHandler.java | 14 +- .../antennapod/menuhandler/FeedMenuHandler.java | 4 +- .../antennapod/service/PlayerWidgetService.java | 4 +- 34 files changed, 479 insertions(+), 368 deletions(-) (limited to 'app') diff --git a/app/src/androidTest/java/de/test/antennapod/AntennaPodTestRunner.java b/app/src/androidTest/java/de/test/antennapod/AntennaPodTestRunner.java index 24cd6e669..c321e6494 100644 --- a/app/src/androidTest/java/de/test/antennapod/AntennaPodTestRunner.java +++ b/app/src/androidTest/java/de/test/antennapod/AntennaPodTestRunner.java @@ -2,6 +2,7 @@ package de.test.antennapod; import android.test.InstrumentationTestRunner; import android.test.suitebuilder.TestSuiteBuilder; + import junit.framework.TestSuite; public class AntennaPodTestRunner extends InstrumentationTestRunner { @@ -13,4 +14,5 @@ public class AntennaPodTestRunner extends InstrumentationTestRunner { .excludePackages("de.test.antennapod.gpodnet") .build(); } + } diff --git a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceMediaPlayerTest.java b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceMediaPlayerTest.java index 4ee372d68..133d4152a 100644 --- a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceMediaPlayerTest.java +++ b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceMediaPlayerTest.java @@ -1,7 +1,6 @@ package de.test.antennapod.service.playback; import android.content.Context; -import android.media.RemoteControlClient; import android.test.InstrumentationTestCase; import junit.framework.AssertionFailedError; @@ -45,7 +44,7 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase { @Override protected void tearDown() throws Exception { super.tearDown(); - PodDBAdapter.deleteDatabase(getInstrumentation().getTargetContext()); + PodDBAdapter.deleteDatabase(); httpServer.stop(); } @@ -54,16 +53,16 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase { super.setUp(); assertionError = null; - final Context context = getInstrumentation().getTargetContext(); - context.deleteDatabase(PodDBAdapter.DATABASE_NAME); - // make sure database is created - PodDBAdapter adapter = new PodDBAdapter(context); + // create new database + PodDBAdapter.deleteDatabase(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.close(); httpServer = new HTTPBin(); httpServer.start(); + final Context context = getInstrumentation().getTargetContext(); File cacheDir = context.getExternalFilesDir("testFiles"); if (cacheDir == null) cacheDir = context.getExternalFilesDir("testFiles"); @@ -119,12 +118,12 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase { Feed f = new Feed(0, new Date(), "f", "l", "d", null, null, null, null, "i", null, null, "l", false); FeedPreferences prefs = new FeedPreferences(f.getId(), false, FeedPreferences.AutoDeleteAction.NO, null, null); f.setPreferences(prefs); - f.setItems(new ArrayList()); + f.setItems(new ArrayList<>()); FeedItem i = new FeedItem(0, "t", "i", "l", new Date(), FeedItem.UNPLAYED, f); f.getItems().add(i); FeedMedia media = new FeedMedia(0, i, 0, 0, 0, "audio/wav", fileUrl, downloadUrl, fileUrl != null, null, 0); i.setMedia(media); - PodDBAdapter adapter = new PodDBAdapter(c); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(f); assertTrue(media.getId() != 0); diff --git a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java index 385201f25..869a13127 100644 --- a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java +++ b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java @@ -26,16 +26,16 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase { @Override protected void tearDown() throws Exception { super.tearDown(); - assertTrue(PodDBAdapter.deleteDatabase(getInstrumentation().getTargetContext())); + PodDBAdapter.deleteDatabase(); } @Override protected void setUp() throws Exception { super.setUp(); - final Context context = getInstrumentation().getTargetContext(); - context.deleteDatabase(PodDBAdapter.DATABASE_NAME); - // make sure database is created - PodDBAdapter adapter = new PodDBAdapter(context); + + // create new database + PodDBAdapter.deleteDatabase(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.close(); } @@ -49,11 +49,11 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase { final Context c = getInstrumentation().getTargetContext(); final int NUM_ITEMS = 10; Feed f = new Feed(0, new Date(), "title", "link", "d", null, null, null, null, "id", null, "null", "url", false); - f.setItems(new ArrayList()); + f.setItems(new ArrayList<>()); for (int i = 0; i < NUM_ITEMS; i++) { f.getItems().add(new FeedItem(0, pref + i, pref + i, "link", new Date(), FeedItem.PLAYED, f)); } - PodDBAdapter adapter = new PodDBAdapter(c); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(f); adapter.setQueue(f.getItems()); diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java b/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java index 11a34813a..6873cb9a6 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java @@ -15,7 +15,6 @@ import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.FeedItemStatistics; import de.danoeh.antennapod.core.storage.PodDBAdapter; import de.danoeh.antennapod.core.util.LongList; -import de.danoeh.antennapod.core.util.flattr.FlattrStatus; import static de.test.antennapod.storage.DBTestUtils.saveFeedlist; @@ -27,25 +26,23 @@ public class DBReaderTest extends InstrumentationTestCase { @Override protected void tearDown() throws Exception { super.tearDown(); - final Context context = getInstrumentation().getTargetContext(); - assertTrue(PodDBAdapter.deleteDatabase(context)); + assertTrue(PodDBAdapter.deleteDatabase()); } @Override protected void setUp() throws Exception { super.setUp(); - final Context context = getInstrumentation().getTargetContext(); - context.deleteDatabase(PodDBAdapter.DATABASE_NAME); - // make sure database is created - PodDBAdapter adapter = new PodDBAdapter(context); + + // create new database + PodDBAdapter.deleteDatabase(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.close(); } public void testGetFeedList() { - final Context context = getInstrumentation().getTargetContext(); - List feeds = saveFeedlist(context, 10, 0, false); - List savedFeeds = DBReader.getFeedList(context); + List feeds = saveFeedlist(10, 0, false); + List savedFeeds = DBReader.getFeedList(); assertNotNull(savedFeeds); assertEquals(feeds.size(), savedFeeds.size()); for (int i = 0; i < feeds.size(); i++) { @@ -54,8 +51,7 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetFeedListSortOrder() { - final Context context = getInstrumentation().getTargetContext(); - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); Feed feed1 = new Feed(0, new Date(), "A", "link", "d", null, null, null, "rss", "A", null, "", "", true); @@ -73,7 +69,7 @@ public class DBReaderTest extends InstrumentationTestCase { adapter.close(); - List saved = DBReader.getFeedList(context); + List saved = DBReader.getFeedList(); assertNotNull(saved); assertEquals("Wrong size: ", 4, saved.size()); @@ -84,9 +80,8 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testFeedListDownloadUrls() { - final Context context = getInstrumentation().getTargetContext(); - List feeds = saveFeedlist(context, 10, 0, false); - List urls = DBReader.getFeedListDownloadUrls(context); + List feeds = saveFeedlist(10, 0, false); + List urls = DBReader.getFeedListDownloadUrls(); assertNotNull(urls); assertTrue(urls.size() == feeds.size()); for (int i = 0; i < urls.size(); i++) { @@ -98,8 +93,8 @@ public class DBReaderTest extends InstrumentationTestCase { final Context context = getInstrumentation().getTargetContext(); final int numFeeds = 10; final int numItems = 1; - List feeds = saveFeedlist(context, numFeeds, numItems, false); - List items = new ArrayList(); + List feeds = saveFeedlist(numFeeds, numItems, false); + List items = new ArrayList<>(); for (Feed f : feeds) { for (FeedItem item : f.getItems()) { item.setFeed(null); @@ -107,7 +102,7 @@ public class DBReaderTest extends InstrumentationTestCase { items.add(item); } } - DBReader.loadFeedDataOfFeedItemlist(context, items); + DBReader.loadFeedDataOfFeedItemlist(items); for (int i = 0; i < numFeeds; i++) { for (int j = 0; j < numItems; j++) { FeedItem item = feeds.get(i).getItems().get(j); @@ -119,13 +114,12 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetFeedItemList() { - final Context context = getInstrumentation().getTargetContext(); final int numFeeds = 1; final int numItems = 10; - Feed feed = saveFeedlist(context, numFeeds, numItems, false).get(0); + Feed feed = saveFeedlist(numFeeds, numItems, false).get(0); List items = feed.getItems(); feed.setItems(null); - List savedItems = DBReader.getFeedItemList(context, feed); + List savedItems = DBReader.getFeedItemList(feed); assertNotNull(savedItems); assertTrue(savedItems.size() == items.size()); for (int i = 0; i < savedItems.size(); i++) { @@ -137,22 +131,21 @@ public class DBReaderTest extends InstrumentationTestCase { if (numItems <= 0) { throw new IllegalArgumentException("numItems<=0"); } - final Context context = getInstrumentation().getTargetContext(); - List feeds = saveFeedlist(context, numItems, numItems, false); - List allItems = new ArrayList(); + List feeds = saveFeedlist(numItems, numItems, false); + List allItems = new ArrayList<>(); for (Feed f : feeds) { allItems.addAll(f.getItems()); } // take random items from every feed Random random = new Random(); - List queue = new ArrayList(); + List queue = new ArrayList<>(); while (queue.size() < numItems) { int index = random.nextInt(numItems); if (!queue.contains(allItems.get(index))) { queue.add(allItems.get(index)); } } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setQueue(queue); adapter.close(); @@ -160,10 +153,9 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetQueueIDList() { - final Context context = getInstrumentation().getTargetContext(); final int numItems = 10; List queue = saveQueue(numItems); - LongList ids = DBReader.getQueueIDList(context); + LongList ids = DBReader.getQueueIDList(); assertNotNull(ids); assertTrue(queue.size() == ids.size()); for (int i = 0; i < queue.size(); i++) { @@ -173,10 +165,9 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetQueue() { - final Context context = getInstrumentation().getTargetContext(); final int numItems = 10; List queue = saveQueue(numItems); - List savedQueue = DBReader.getQueue(context); + List savedQueue = DBReader.getQueue(); assertNotNull(savedQueue); assertTrue(queue.size() == savedQueue.size()); for (int i = 0; i < queue.size(); i++) { @@ -189,13 +180,12 @@ public class DBReaderTest extends InstrumentationTestCase { if (numItems <= 0) { throw new IllegalArgumentException("numItems<=0"); } - final Context context = getInstrumentation().getTargetContext(); - List feeds = saveFeedlist(context, numItems, numItems, true); - List items = new ArrayList(); + List feeds = saveFeedlist(numItems, numItems, true); + List items = new ArrayList<>(); for (Feed f : feeds) { items.addAll(f.getItems()); } - List downloaded = new ArrayList(); + List downloaded = new ArrayList<>(); Random random = new Random(); while (downloaded.size() < numItems) { @@ -207,7 +197,7 @@ public class DBReaderTest extends InstrumentationTestCase { downloaded.add(item); } } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setFeedItemlist(downloaded); adapter.close(); @@ -215,10 +205,9 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetDownloadedItems() { - final Context context = getInstrumentation().getTargetContext(); final int numItems = 10; List downloaded = saveDownloadedItems(numItems); - List downloaded_saved = DBReader.getDownloadedItems(context); + List downloaded_saved = DBReader.getDownloadedItems(); assertNotNull(downloaded_saved); assertTrue(downloaded_saved.size() == downloaded.size()); for (FeedItem item : downloaded_saved) { @@ -232,13 +221,12 @@ public class DBReaderTest extends InstrumentationTestCase { if (numItems <= 0) { throw new IllegalArgumentException("numItems<=0"); } - final Context context = getInstrumentation().getTargetContext(); - List feeds = saveFeedlist(context, numItems, numItems, true); - List items = new ArrayList(); + List feeds = saveFeedlist(numItems, numItems, true); + List items = new ArrayList<>(); for (Feed f : feeds) { items.addAll(f.getItems()); } - List unread = new ArrayList(); + List unread = new ArrayList<>(); Random random = new Random(); while (unread.size() < numItems) { @@ -249,7 +237,7 @@ public class DBReaderTest extends InstrumentationTestCase { unread.add(item); } } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setFeedItemlist(unread); adapter.close(); @@ -257,11 +245,10 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetUnreadItemsList() { - final Context context = getInstrumentation().getTargetContext(); final int numItems = 10; List unread = saveUnreadItems(numItems); - List unreadSaved = DBReader.getUnreadItemsList(context); + List unreadSaved = DBReader.getUnreadItemsList(); assertNotNull(unreadSaved); assertTrue(unread.size() == unreadSaved.size()); for (FeedItem item : unreadSaved) { @@ -270,7 +257,6 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetNewItemIds() { - final Context context = getInstrumentation().getTargetContext(); final int numItems = 10; List unread = saveUnreadItems(numItems); @@ -278,7 +264,7 @@ public class DBReaderTest extends InstrumentationTestCase { for (int i = 0; i < unread.size(); i++) { unreadIds[i] = unread.get(i).getId(); } - List unreadSaved = DBReader.getUnreadItemsList(context); + List unreadSaved = DBReader.getUnreadItemsList(); assertNotNull(unreadSaved); assertTrue(unread.size() == unreadSaved.size()); for(int i=0; i < unreadSaved.size(); i++) { @@ -295,16 +281,15 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetPlaybackHistory() { - final Context context = getInstrumentation().getTargetContext(); final int numItems = (DBReader.PLAYBACK_HISTORY_SIZE + 1) * 2; final int playedItems = DBReader.PLAYBACK_HISTORY_SIZE + 1; final int numReturnedItems = Math.min(playedItems, DBReader.PLAYBACK_HISTORY_SIZE); final int numFeeds = 1; - Feed feed = DBTestUtils.saveFeedlist(context, numFeeds, numItems, true).get(0); + Feed feed = DBTestUtils.saveFeedlist(numFeeds, numItems, true).get(0); long[] ids = new long[playedItems]; - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); for (int i = 0; i < playedItems; i++) { FeedMedia m = feed.getItems().get(i).getMedia(); @@ -314,7 +299,7 @@ public class DBReaderTest extends InstrumentationTestCase { } adapter.close(); - List saved = DBReader.getPlaybackHistory(context); + List saved = DBReader.getPlaybackHistory(); assertNotNull(saved); assertEquals("Wrong size: ", numReturnedItems, saved.size()); for (int i = 0; i < numReturnedItems; i++) { @@ -325,11 +310,10 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetFeedStatisticsCheckOrder() { - final Context context = getInstrumentation().getTargetContext(); final int NUM_FEEDS = 10; final int NUM_ITEMS = 10; - List feeds = DBTestUtils.saveFeedlist(context, NUM_FEEDS, NUM_ITEMS, false); - List statistics = DBReader.getFeedStatisticsList(context); + List feeds = DBTestUtils.saveFeedlist(NUM_FEEDS, NUM_ITEMS, false); + List statistics = DBReader.getFeedStatisticsList(); assertNotNull(statistics); assertEquals(feeds.size(), statistics.size()); for (int i = 0; i < NUM_FEEDS; i++) { @@ -338,31 +322,29 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetNavDrawerDataQueueEmptyNoUnreadItems() { - final Context context = getInstrumentation().getTargetContext(); final int NUM_FEEDS = 10; final int NUM_ITEMS = 10; - List feeds = DBTestUtils.saveFeedlist(context, NUM_FEEDS, NUM_ITEMS, true); - DBReader.NavDrawerData navDrawerData = DBReader.getNavDrawerData(context); + List feeds = DBTestUtils.saveFeedlist(NUM_FEEDS, NUM_ITEMS, true); + DBReader.NavDrawerData navDrawerData = DBReader.getNavDrawerData(); assertEquals(NUM_FEEDS, navDrawerData.feeds.size()); assertEquals(0, navDrawerData.numNewItems); assertEquals(0, navDrawerData.queueSize); } public void testGetNavDrawerDataQueueNotEmptyWithUnreadItems() { - final Context context = getInstrumentation().getTargetContext(); final int NUM_FEEDS = 10; final int NUM_ITEMS = 10; final int NUM_QUEUE = 1; final int NUM_NEW = 2; - List feeds = DBTestUtils.saveFeedlist(context, NUM_FEEDS, NUM_ITEMS, true); - PodDBAdapter adapter = new PodDBAdapter(context); + List feeds = DBTestUtils.saveFeedlist(NUM_FEEDS, NUM_ITEMS, true); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); for (int i = 0; i < NUM_NEW; i++) { FeedItem item = feeds.get(0).getItems().get(i); item.setNew(); adapter.setSingleFeedItem(item); } - List queue = new ArrayList(); + List queue = new ArrayList<>(); for (int i = 0; i < NUM_QUEUE; i++) { FeedItem item = feeds.get(1).getItems().get(i); queue.add(item); @@ -371,7 +353,7 @@ public class DBReaderTest extends InstrumentationTestCase { adapter.close(); - DBReader.NavDrawerData navDrawerData = DBReader.getNavDrawerData(context); + DBReader.NavDrawerData navDrawerData = DBReader.getNavDrawerData(); assertEquals(NUM_FEEDS, navDrawerData.feeds.size()); assertEquals(NUM_NEW, navDrawerData.numNewItems); assertEquals(NUM_QUEUE, navDrawerData.queueSize); @@ -379,7 +361,7 @@ public class DBReaderTest extends InstrumentationTestCase { public void testGetFeedItemlistCheckChaptersFalse() throws Exception { Context context = getInstrumentation().getTargetContext(); - List feeds = DBTestUtils.saveFeedlist(context, 10, 10, false, false, 0); + List feeds = DBTestUtils.saveFeedlist(10, 10, false, false, 0); for (Feed feed : feeds) { for (FeedItem item : feed.getItems()) { assertFalse(item.hasChapters()); @@ -388,8 +370,7 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetFeedItemlistCheckChaptersTrue() throws Exception { - Context context = getInstrumentation().getTargetContext(); - List feeds = saveFeedlist(context, 10, 10, false, true, 10); + List feeds = saveFeedlist(10, 10, false, true, 10); for (Feed feed : feeds) { for (FeedItem item : feed.getItems()) { assertTrue(item.hasChapters()); @@ -398,13 +379,12 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testLoadChaptersOfFeedItemNoChapters() throws Exception { - Context context = getInstrumentation().getTargetContext(); - List feeds = saveFeedlist(context, 1, 3, false, false, 0); - saveFeedlist(context, 1, 3, false, true, 3); + List feeds = saveFeedlist(1, 3, false, false, 0); + saveFeedlist(1, 3, false, true, 3); for (Feed feed : feeds) { for (FeedItem item : feed.getItems()) { assertFalse(item.hasChapters()); - DBReader.loadChaptersOfFeedItem(context, item); + DBReader.loadChaptersOfFeedItem(item); assertFalse(item.hasChapters()); assertNull(item.getChapters()); } @@ -412,14 +392,13 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testLoadChaptersOfFeedItemWithChapters() throws Exception { - Context context = getInstrumentation().getTargetContext(); final int NUM_CHAPTERS = 3; - DBTestUtils.saveFeedlist(context, 1, 3, false, false, 0); - List feeds = saveFeedlist(context, 1, 3, false, true, NUM_CHAPTERS); + DBTestUtils.saveFeedlist(1, 3, false, false, 0); + List feeds = saveFeedlist(1, 3, false, true, NUM_CHAPTERS); for (Feed feed : feeds) { for (FeedItem item : feed.getItems()) { assertTrue(item.hasChapters()); - DBReader.loadChaptersOfFeedItem(context, item); + DBReader.loadChaptersOfFeedItem(item); assertTrue(item.hasChapters()); assertNotNull(item.getChapters()); assertEquals(NUM_CHAPTERS, item.getChapters().size()); @@ -428,11 +407,10 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetItemWithChapters() throws Exception { - Context context = getInstrumentation().getTargetContext(); final int NUM_CHAPTERS = 3; - List feeds = saveFeedlist(context, 1, 1, false, true, NUM_CHAPTERS); + List feeds = saveFeedlist(1, 1, false, true, NUM_CHAPTERS); FeedItem item1 = feeds.get(0).getItems().get(0); - FeedItem item2 = DBReader.getFeedItem(context, item1.getId()); + FeedItem item2 = DBReader.getFeedItem(item1.getId()); assertTrue(item2.hasChapters()); assertEquals(item1.getChapters(), item2.getChapters()); } diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java b/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java index 944fc7792..024b506d9 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java @@ -12,7 +12,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; -import java.util.concurrent.TimeUnit; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedItem; @@ -21,7 +20,6 @@ import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.storage.PodDBAdapter; -import de.danoeh.antennapod.core.util.flattr.FlattrStatus; import static de.test.antennapod.storage.DBTestUtils.saveFeedlist; @@ -40,7 +38,8 @@ public class DBTasksTest extends InstrumentationTestCase { @Override protected void tearDown() throws Exception { super.tearDown(); - assertTrue(PodDBAdapter.deleteDatabase(context)); + + assertTrue(PodDBAdapter.deleteDatabase()); for (File f : destFolder.listFiles()) { assertTrue(f.delete()); @@ -58,9 +57,9 @@ public class DBTasksTest extends InstrumentationTestCase { assertTrue(destFolder.exists()); assertTrue(destFolder.canWrite()); - context.deleteDatabase(PodDBAdapter.DATABASE_NAME); - // make sure database is created - PodDBAdapter adapter = new PodDBAdapter(context); + // create new database + PodDBAdapter.deleteDatabase(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.close(); @@ -76,9 +75,9 @@ public class DBTasksTest extends InstrumentationTestCase { final int NUM_ITEMS = EPISODE_CACHE_SIZE * 2; Feed feed = new Feed("url", new Date(), "title"); - List items = new ArrayList(); + List items = new ArrayList<>(); feed.setItems(items); - List files = new ArrayList(); + List files = new ArrayList<>(); for (int i = 0; i < NUM_ITEMS; i++) { FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), FeedItem.PLAYED, feed); @@ -89,7 +88,7 @@ public class DBTasksTest extends InstrumentationTestCase { items.add(item); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -128,7 +127,7 @@ public class DBTasksTest extends InstrumentationTestCase { items.add(item); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -149,9 +148,9 @@ public class DBTasksTest extends InstrumentationTestCase { final int NUM_ITEMS = EPISODE_CACHE_SIZE * 2; Feed feed = new Feed("url", new Date(), "title"); - List items = new ArrayList(); + List items = new ArrayList<>(); feed.setItems(items); - List files = new ArrayList(); + List files = new ArrayList<>(); for (int i = 0; i < NUM_ITEMS; i++) { FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), FeedItem.PLAYED, feed); @@ -163,7 +162,7 @@ public class DBTasksTest extends InstrumentationTestCase { items.add(item); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.setQueue(items); @@ -188,14 +187,14 @@ public class DBTasksTest extends InstrumentationTestCase { @FlakyTest(tolerance = 3) public void testPerformAutoCleanupShouldNotDeleteBecauseInQueue_withFeedsWithNoMedia() throws IOException { // add feed with no enclosures so that item ID != media ID - saveFeedlist(context, 1, 10, false); + saveFeedlist(1, 10, false); // add candidate for performAutoCleanup - List feeds = saveFeedlist(context, 1, 1, true); + List feeds = saveFeedlist(1, 1, true); FeedMedia m = feeds.get(0).getItems().get(0).getMedia(); m.setDownloaded(true); m.setFile_url("file"); - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setMedia(m); adapter.close(); @@ -208,7 +207,7 @@ public class DBTasksTest extends InstrumentationTestCase { final int NUM_ITEMS = 10; Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList()); + feed.setItems(new ArrayList<>()); for (int i = 0; i < NUM_ITEMS; i++) { feed.getItems().add(new FeedItem(0, "item " + i, "id " + i, "link " + i, new Date(), FeedItem.UNPLAYED, feed)); } @@ -228,8 +227,8 @@ public class DBTasksTest extends InstrumentationTestCase { Feed feed1 = new Feed("url1", new Date(), "title"); Feed feed2 = new Feed("url2", new Date(), "title"); - feed1.setItems(new ArrayList()); - feed2.setItems(new ArrayList()); + feed1.setItems(new ArrayList<>()); + feed2.setItems(new ArrayList<>()); Feed savedFeed1 = DBTasks.updateFeed(context, feed1)[0]; Feed savedFeed2 = DBTasks.updateFeed(context, feed2)[0]; @@ -242,11 +241,11 @@ public class DBTasksTest extends InstrumentationTestCase { final int NUM_ITEMS_NEW = 10; final Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList()); + feed.setItems(new ArrayList<>()); for (int i = 0; i < NUM_ITEMS_OLD; i++) { feed.getItems().add(new FeedItem(0, "item " + i, "id " + i, "link " + i, new Date(i), FeedItem.PLAYED, feed)); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -271,7 +270,7 @@ public class DBTasksTest extends InstrumentationTestCase { updatedFeedTest(newFeed, feedID, itemIDs, NUM_ITEMS_OLD, NUM_ITEMS_NEW); - final Feed feedFromDB = DBReader.getFeed(context, newFeed.getId()); + final Feed feedFromDB = DBReader.getFeed(newFeed.getId()); assertNotNull(feedFromDB); assertTrue(feedFromDB.getId() == newFeed.getId()); updatedFeedTest(feedFromDB, feedID, itemIDs, NUM_ITEMS_OLD, NUM_ITEMS_NEW); diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java b/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java index c6f702f3d..0af8afa83 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java @@ -1,7 +1,5 @@ package de.test.antennapod.storage; -import android.content.Context; - import junit.framework.Assert; import java.util.ArrayList; @@ -26,14 +24,14 @@ public class DBTestUtils { /** * Use this method when tests don't involve chapters. */ - public static List saveFeedlist(Context context, int numFeeds, int numItems, boolean withMedia) { - return saveFeedlist(context, numFeeds, numItems, withMedia, false, 0); + public static List saveFeedlist(int numFeeds, int numItems, boolean withMedia) { + return saveFeedlist(numFeeds, numItems, withMedia, false, 0); } /** * Use this method when tests involve chapters. */ - public static List saveFeedlist(Context context, int numFeeds, int numItems, boolean withMedia, + public static List saveFeedlist(int numFeeds, int numItems, boolean withMedia, boolean withChapters, int numChapters) { if (numFeeds <= 0) { throw new IllegalArgumentException("numFeeds<=0"); @@ -42,13 +40,13 @@ public class DBTestUtils { throw new IllegalArgumentException("numItems<0"); } - List feeds = new ArrayList(); - PodDBAdapter adapter = new PodDBAdapter(context); + List feeds = new ArrayList<>(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); for (int i = 0; i < numFeeds; i++) { Feed f = new Feed(0, new Date(), "feed " + i, "link" + i, "descr", null, null, null, null, "id" + i, null, null, "url" + i, false, new FlattrStatus(), false, null, null, false); - f.setItems(new ArrayList()); + f.setItems(new ArrayList<>()); for (int j = 0; j < numItems; j++) { FeedItem item = new FeedItem(0, "item " + j, "id" + j, "link" + j, new Date(), FeedItem.PLAYED, f, withChapters); diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java b/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java index c5fa2f131..2a63ef4b3 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java @@ -29,6 +29,7 @@ import de.danoeh.antennapod.core.storage.PodDBAdapter; * Test class for DBWriter */ public class DBWriterTest extends InstrumentationTestCase { + private static final String TAG = "DBWriterTest"; private static final String TEST_FOLDER = "testDBWriter"; private static final long TIMEOUT = 5L; @@ -36,9 +37,10 @@ public class DBWriterTest extends InstrumentationTestCase { @Override protected void tearDown() throws Exception { super.tearDown(); - final Context context = getInstrumentation().getTargetContext(); - assertTrue(PodDBAdapter.deleteDatabase(getInstrumentation().getTargetContext())); + assertTrue(PodDBAdapter.deleteDatabase()); + + final Context context = getInstrumentation().getTargetContext(); File testDir = context.getExternalFilesDir(TEST_FOLDER); assertNotNull(testDir); for (File f : testDir.listFiles()) { @@ -49,10 +51,10 @@ public class DBWriterTest extends InstrumentationTestCase { @Override protected void setUp() throws Exception { super.setUp(); - final Context context = getInstrumentation().getTargetContext(); - context.deleteDatabase(PodDBAdapter.DATABASE_NAME); - // make sure database is created - PodDBAdapter adapter = new PodDBAdapter(context); + + // create new database + PodDBAdapter.deleteDatabase(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.close(); } @@ -63,7 +65,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(dest.createNewFile()); Feed feed = new Feed("url", new Date(), "title"); - List items = new ArrayList(); + List items = new ArrayList<>(); feed.setItems(items); FeedItem item = new FeedItem(0, "Item", "Item", "url", new Date(), FeedItem.PLAYED, feed); @@ -72,7 +74,7 @@ public class DBWriterTest extends InstrumentationTestCase { items.add(item); - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext()); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -80,7 +82,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(item.getId() != 0); DBWriter.deleteFeedMediaOfItem(getInstrumentation().getTargetContext(), media.getId()).get(); - media = DBReader.getFeedMedia(getInstrumentation().getTargetContext(), media.getId()); + media = DBReader.getFeedMedia(media.getId()); assertNotNull(media); assertFalse(dest.exists()); assertFalse(media.isDownloaded()); @@ -92,7 +94,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertNotNull(destFolder); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList()); + feed.setItems(new ArrayList<>()); // create Feed image File imgFile = new File(destFolder, "image"); @@ -118,7 +120,7 @@ public class DBWriterTest extends InstrumentationTestCase { item.getChapters().add(new SimpleChapter(0, "item " + i, item, "example.com")); } - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -139,7 +141,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertFalse(f.exists()); } - adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor c = adapter.getFeedCursor(feed.getId()); assertEquals(0, c.getCount()); @@ -164,7 +166,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertNotNull(destFolder); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList()); + feed.setItems(new ArrayList<>()); feed.setImage(null); @@ -182,7 +184,7 @@ public class DBWriterTest extends InstrumentationTestCase { item.setMedia(media); } - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -200,7 +202,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertFalse(f.exists()); } - adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor c = adapter.getFeedCursor(feed.getId()); assertTrue(c.getCount() == 0); @@ -229,7 +231,7 @@ public class DBWriterTest extends InstrumentationTestCase { image.setOwner(feed); feed.setImage(image); - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -242,7 +244,7 @@ public class DBWriterTest extends InstrumentationTestCase { // check if files still exist assertFalse(imgFile.exists()); - adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor c = adapter.getFeedCursor(feed.getId()); assertTrue(c.getCount() == 0); @@ -257,7 +259,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertNotNull(destFolder); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList()); + feed.setItems(new ArrayList<>()); // create Feed image File imgFile = new File(destFolder, "image"); @@ -273,7 +275,7 @@ public class DBWriterTest extends InstrumentationTestCase { } - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -289,7 +291,7 @@ public class DBWriterTest extends InstrumentationTestCase { // check if files still exist assertFalse(imgFile.exists()); - adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor c = adapter.getFeedCursor(feed.getId()); assertTrue(c.getCount() == 0); @@ -309,7 +311,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertNotNull(destFolder); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList()); + feed.setItems(new ArrayList<>()); // create Feed image File imgFile = new File(destFolder, "image"); @@ -327,7 +329,7 @@ public class DBWriterTest extends InstrumentationTestCase { item.setImage(itemImage); } - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -344,7 +346,7 @@ public class DBWriterTest extends InstrumentationTestCase { // check if files still exist assertFalse(imgFile.exists()); - adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor c = adapter.getFeedCursor(feed.getId()); assertTrue(c.getCount() == 0); @@ -367,7 +369,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertNotNull(destFolder); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList()); + feed.setItems(new ArrayList<>()); // create Feed image File imgFile = new File(destFolder, "image"); @@ -388,7 +390,7 @@ public class DBWriterTest extends InstrumentationTestCase { item.setMedia(media); } - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -460,7 +462,7 @@ public class DBWriterTest extends InstrumentationTestCase { item.setMedia(media); } - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -474,7 +476,7 @@ public class DBWriterTest extends InstrumentationTestCase { DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(TIMEOUT, TimeUnit.SECONDS); - adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor c = adapter.getFeedCursor(feed.getId()); assertTrue(c.getCount() == 0); @@ -500,7 +502,7 @@ public class DBWriterTest extends InstrumentationTestCase { FeedMedia media = new FeedMedia(0, item, 10, 0, 1, "mime", null, "url", false, playbackCompletionDate, 0); feed.getItems().add(item); item.setMedia(media); - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -509,13 +511,11 @@ public class DBWriterTest extends InstrumentationTestCase { } public void testAddItemToPlaybackHistoryNotPlayedYet() throws ExecutionException, InterruptedException { - final Context context = getInstrumentation().getTargetContext(); - FeedMedia media = playbackHistorySetup(null); - DBWriter.addItemToPlaybackHistory(context, media).get(); - PodDBAdapter adapter = new PodDBAdapter(context); + DBWriter.addItemToPlaybackHistory(media).get(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); - media = DBReader.getFeedMedia(context, media.getId()); + media = DBReader.getFeedMedia(media.getId()); adapter.close(); assertNotNull(media); @@ -524,13 +524,12 @@ public class DBWriterTest extends InstrumentationTestCase { public void testAddItemToPlaybackHistoryAlreadyPlayed() throws ExecutionException, InterruptedException { final long OLD_DATE = 0; - final Context context = getInstrumentation().getTargetContext(); FeedMedia media = playbackHistorySetup(new Date(OLD_DATE)); - DBWriter.addItemToPlaybackHistory(getInstrumentation().getTargetContext(), media).get(); - PodDBAdapter adapter = new PodDBAdapter(context); + DBWriter.addItemToPlaybackHistory(media).get(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); - media = DBReader.getFeedMedia(context, media.getId()); + media = DBReader.getFeedMedia(media.getId()); adapter.close(); assertNotNull(media); @@ -541,13 +540,13 @@ public class DBWriterTest extends InstrumentationTestCase { private Feed queueTestSetupMultipleItems(final int NUM_ITEMS) throws InterruptedException, ExecutionException, TimeoutException { final Context context = getInstrumentation().getTargetContext(); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList()); + feed.setItems(new ArrayList<>()); for (int i = 0; i < NUM_ITEMS; i++) { FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), FeedItem.PLAYED, feed); feed.getItems().add(item); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -568,11 +567,11 @@ public class DBWriterTest extends InstrumentationTestCase { public void testAddQueueItemSingleItem() throws InterruptedException, ExecutionException, TimeoutException { final Context context = getInstrumentation().getTargetContext(); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList()); + feed.setItems(new ArrayList<>()); FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), FeedItem.PLAYED, feed); feed.getItems().add(item); - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -580,7 +579,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(item.getId() != 0); DBWriter.addQueueItem(context, item.getId()).get(TIMEOUT, TimeUnit.SECONDS); - adapter = new PodDBAdapter(context); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor cursor = adapter.getQueueIDCursor(); assertTrue(cursor.moveToFirst()); @@ -592,11 +591,11 @@ public class DBWriterTest extends InstrumentationTestCase { public void testAddQueueItemSingleItemAlreadyInQueue() throws InterruptedException, ExecutionException, TimeoutException { final Context context = getInstrumentation().getTargetContext(); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList()); + feed.setItems(new ArrayList<>()); FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), FeedItem.PLAYED, feed); feed.getItems().add(item); - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -604,7 +603,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(item.getId() != 0); DBWriter.addQueueItem(context, item.getId()).get(TIMEOUT, TimeUnit.SECONDS); - adapter = new PodDBAdapter(context); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor cursor = adapter.getQueueIDCursor(); assertTrue(cursor.moveToFirst()); @@ -613,7 +612,7 @@ public class DBWriterTest extends InstrumentationTestCase { adapter.close(); DBWriter.addQueueItem(context, item.getId()).get(TIMEOUT, TimeUnit.SECONDS); - adapter = new PodDBAdapter(context); + adapter = PodDBAdapter.getInstance(); adapter.open(); cursor = adapter.getQueueIDCursor(); assertTrue(cursor.moveToFirst()); @@ -628,7 +627,7 @@ public class DBWriterTest extends InstrumentationTestCase { final int NUM_ITEMS = 10; Feed feed = queueTestSetupMultipleItems(NUM_ITEMS); - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor cursor = adapter.getQueueIDCursor(); assertTrue(cursor.moveToFirst()); @@ -642,12 +641,11 @@ public class DBWriterTest extends InstrumentationTestCase { } public void testClearQueue() throws InterruptedException, ExecutionException, TimeoutException { - final Context context = getInstrumentation().getTargetContext(); final int NUM_ITEMS = 10; Feed feed = queueTestSetupMultipleItems(NUM_ITEMS); - DBWriter.clearQueue(context).get(TIMEOUT, TimeUnit.SECONDS); - PodDBAdapter adapter = new PodDBAdapter(context); + DBWriter.clearQueue().get(TIMEOUT, TimeUnit.SECONDS); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor cursor = adapter.getQueueIDCursor(); assertFalse(cursor.moveToFirst()); @@ -659,13 +657,13 @@ public class DBWriterTest extends InstrumentationTestCase { final int NUM_ITEMS = 10; final Context context = getInstrumentation().getTargetContext(); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList()); + feed.setItems(new ArrayList<>()); for (int i = 0; i < NUM_ITEMS; i++) { FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), FeedItem.PLAYED, feed); feed.getItems().add(item); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -675,13 +673,13 @@ public class DBWriterTest extends InstrumentationTestCase { } for (int removeIndex = 0; removeIndex < NUM_ITEMS; removeIndex++) { final FeedItem item = feed.getItems().get(removeIndex); - adapter = new PodDBAdapter(context); + adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setQueue(feed.getItems()); adapter.close(); DBWriter.removeQueueItem(context, item, false).get(TIMEOUT, TimeUnit.SECONDS); - adapter = new PodDBAdapter(context); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor queue = adapter.getQueueIDCursor(); assertTrue(queue.getCount() == NUM_ITEMS - 1); @@ -703,15 +701,14 @@ public class DBWriterTest extends InstrumentationTestCase { public void testMoveQueueItem() throws InterruptedException, ExecutionException, TimeoutException { final int NUM_ITEMS = 10; - final Context context = getInstrumentation().getTargetContext(); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList()); + feed.setItems(new ArrayList<>()); for (int i = 0; i < NUM_ITEMS; i++) { FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), FeedItem.PLAYED, feed); feed.getItems().add(item); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -727,13 +724,13 @@ public class DBWriterTest extends InstrumentationTestCase { Log.d(TAG, String.format("testMoveQueueItem: From=%d, To=%d", from, to)); final long fromID = feed.getItems().get(from).getId(); - adapter = new PodDBAdapter(context); + adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setQueue(feed.getItems()); adapter.close(); - DBWriter.moveQueueItem(context, from, to, false).get(TIMEOUT, TimeUnit.SECONDS); - adapter = new PodDBAdapter(context); + DBWriter.moveQueueItem(from, to, false).get(TIMEOUT, TimeUnit.SECONDS); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor queue = adapter.getQueueIDCursor(); assertTrue(queue.getCount() == NUM_ITEMS); @@ -749,7 +746,6 @@ public class DBWriterTest extends InstrumentationTestCase { } public void testMarkFeedRead() throws InterruptedException, ExecutionException, TimeoutException { - final Context context = getInstrumentation().getTargetContext(); final int NUM_ITEMS = 10; Feed feed = new Feed("url", new Date(), "title"); feed.setItems(new ArrayList()); @@ -758,7 +754,7 @@ public class DBWriterTest extends InstrumentationTestCase { feed.getItems().add(item); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -768,24 +764,23 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(item.getId() != 0); } - DBWriter.markFeedRead(context, feed.getId()).get(TIMEOUT, TimeUnit.SECONDS); - List loadedItems = DBReader.getFeedItemList(context, feed); + DBWriter.markFeedRead(feed.getId()).get(TIMEOUT, TimeUnit.SECONDS); + List loadedItems = DBReader.getFeedItemList(feed); for (FeedItem item : loadedItems) { assertTrue(item.isPlayed()); } } public void testMarkAllItemsReadSameFeed() throws InterruptedException, ExecutionException, TimeoutException { - final Context context = getInstrumentation().getTargetContext(); final int NUM_ITEMS = 10; Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList()); + feed.setItems(new ArrayList<>()); for (int i = 0; i < NUM_ITEMS; i++) { FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), FeedItem.UNPLAYED, feed); feed.getItems().add(item); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -795,8 +790,8 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(item.getId() != 0); } - DBWriter.markAllItemsRead(context).get(TIMEOUT, TimeUnit.SECONDS); - List loadedItems = DBReader.getFeedItemList(context, feed); + DBWriter.markAllItemsRead().get(TIMEOUT, TimeUnit.SECONDS); + List loadedItems = DBReader.getFeedItemList(feed); for (FeedItem item : loadedItems) { assertTrue(item.isPlayed()); } diff --git a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java index 4988d1020..f6c3d0e7d 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java @@ -44,8 +44,10 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2 { + private static final String TAG = PlaybackTest.class.getSimpleName(); + private Solo solo; private UITestUtils uiTestUtils; private Context context; + private PlaybackController controller; + protected FeedMedia currentMedia; + + private PlaybackController createController(Activity activity) { + return new PlaybackController(activity, false) { + + @Override + public void setupGUI() { + } + + @Override + public void onPositionObserverUpdate() { + } + + @Override + public void onBufferStart() { + } + + @Override + public void onBufferEnd() { + } + + @Override + public void onBufferUpdate(float progress) { + } + + @Override + public void handleError(int code) { + } + + @Override + public void onReloadNotification(int code) { + } + + @Override + public void onSleepTimerUpdate() { + } + + @Override + public ImageButton getPlayButton() { + return null; + } + + @Override + public void postStatusMsg(int msg) { + } + + @Override + public void clearStatusMsg() { + } + + @Override + public boolean loadMediaInfo() { + Playable playable = controller.getMedia(); + if(playable == null) { + currentMedia = null; + return true; + } else if(playable instanceof FeedMedia) { + currentMedia = (FeedMedia) playable; + return true; + } else { + return false; + } + } + + @Override + public void onAwaitingVideoSurface() { + } + + @Override + public void onServiceQueried() { + } + + @Override + public void onShutdownNotification() { + } + + @Override + public void onPlaybackEnd() { + currentMedia = null; + } + + @Override + public void onPlaybackSpeedChange() { + } + + @Override + protected void setScreenOn(boolean enable) { + } + }; + } + public PlaybackTest() { super(MainActivity.class); } @@ -38,30 +138,36 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2 @Override public void setUp() throws Exception { super.setUp(); + + PodDBAdapter.deleteDatabase(); + + controller = createController(getActivity()); + controller.init(); + solo = new Solo(getInstrumentation(), getActivity()); - context = getInstrumentation().getContext(); + context = getInstrumentation().getTargetContext(); uiTestUtils = new UITestUtils(context); uiTestUtils.setup(); // create database - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.close(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); prefs.edit() + .clear() .putBoolean(UserPreferences.PREF_UNPAUSE_ON_HEADSET_RECONNECT, false) .putBoolean(UserPreferences.PREF_PAUSE_ON_HEADSET_DISCONNECT, false) - .putString(UserPreferences.PREF_HIDDEN_DRAWER_ITEMS, "") .commit(); } @Override public void tearDown() throws Exception { - uiTestUtils.tearDown(); + controller.release(); solo.finishOpenedActivities(); - PodDBAdapter.deleteDatabase(context); + uiTestUtils.tearDown(); // shut down playback service skipEpisode(); @@ -85,87 +191,106 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2 } private void startLocalPlayback() { - openNavDrawer(); - solo.clickOnText(solo.getString(R.string.episodes_label)); - solo.clickOnText(solo.getString(R.string.all_episodes_short_label)); - final List episodes = DBReader.getRecentlyPublishedEpisodes(context, 10); + String allEpisodesLabel = solo.getString(R.string.all_episodes_label); + if(!getActivity().getSupportActionBar().getTitle().equals(allEpisodesLabel)) { + openNavDrawer(); + solo.clickOnText(solo.getString(R.string.episodes_label)); + solo.clickOnText(solo.getString(R.string.all_episodes_short_label)); + } + final List episodes = DBReader.getRecentlyPublishedEpisodes(10); assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction))); solo.clickOnView(solo.getView(R.id.butSecondaryAction)); - assertTrue(solo.waitForView(solo.getView(R.id.butPlay))); - solo.waitForCondition(new Condition() { - @Override - public boolean isSatisfied() { - return episodes.get(0).getMedia().isCurrentlyPlaying(); + long mediaId = episodes.get(0).getMedia().getId(); + boolean playing = solo.waitForCondition(() -> { + if (currentMedia != null) { + return currentMedia.getId() == mediaId; + } else { + return false; } - }, Timeout.getLargeTimeout()); + }, Timeout.getSmallTimeout()); + assertTrue(playing); } private void startLocalPlaybackFromQueue() { + openNavDrawer(); + + solo.clickOnText(solo.getString(R.string.queue_label)); + assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction))); - final List queue = DBReader.getQueue(context); + final List queue = DBReader.getQueue(); solo.clickOnImageButton(1); assertTrue(solo.waitForView(solo.getView(R.id.butPlay))); - solo.waitForCondition(new Condition() { - @Override - public boolean isSatisfied() { - return queue.get(0).getMedia().isCurrentlyPlaying(); + long mediaId = queue.get(0).getMedia().getId(); + boolean playing = solo.waitForCondition(() -> { + if(currentMedia != null) { + return currentMedia.getId() == mediaId; + } else { + return false; } - }, Timeout.getLargeTimeout()); + }, Timeout.getSmallTimeout()); + assertTrue(playing); } public void testStartLocal() throws Exception { uiTestUtils.addLocalFeedData(true); - DBWriter.clearQueue(context).get(); + DBWriter.clearQueue().get(); startLocalPlayback(); } public void testContinousPlaybackOffSingleEpisode() throws Exception { setContinuousPlaybackPreference(false); uiTestUtils.addLocalFeedData(true); - DBWriter.clearQueue(context).get(); + DBWriter.clearQueue().get(); startLocalPlayback(); } - + @FlakyTest(tolerance = 3) public void testContinousPlaybackOffMultipleEpisodes() throws Exception { setContinuousPlaybackPreference(false); uiTestUtils.addLocalFeedData(true); - List queue = DBReader.getQueue(context); + List queue = DBReader.getQueue(); final FeedItem first = queue.get(0); - final FeedItem second = queue.get(1); startLocalPlaybackFromQueue(); - solo.waitForCondition(new Condition() { - @Override - public boolean isSatisfied() { - return first.getMedia().isCurrentlyPlaying() == false; + boolean stopped = solo.waitForCondition(() -> { + if (currentMedia != null) { + return currentMedia.getId() != first.getMedia().getId(); + } else { + return false; } - }, 10000); + }, Timeout.getSmallTimeout()); + assertTrue(stopped); Thread.sleep(1000); - assertTrue(second.getMedia().isCurrentlyPlaying() == false); + PlayerStatus status = controller.getStatus(); + assertFalse(status.equals(PlayerStatus.PLAYING)); } + @FlakyTest(tolerance = 3) public void testContinuousPlaybackOnMultipleEpisodes() throws Exception { setContinuousPlaybackPreference(true); uiTestUtils.addLocalFeedData(true); - List queue = DBReader.getQueue(context); + List queue = DBReader.getQueue(); final FeedItem first = queue.get(0); final FeedItem second = queue.get(1); startLocalPlaybackFromQueue(); - solo.waitForCondition(new Condition() { - @Override - public boolean isSatisfied() { - return first.getMedia().isCurrentlyPlaying() == false; + boolean firstPlaying = solo.waitForCondition(() -> { + if (currentMedia != null) { + return currentMedia.getId() == first.getMedia().getId(); + } else { + return false; } - }, 10000); - solo.waitForCondition(new Condition() { - @Override - public boolean isSatisfied() { - return second.getMedia().isCurrentlyPlaying() == true; + }, Timeout.getSmallTimeout()); + assertTrue(firstPlaying); + boolean secondPlaying = solo.waitForCondition(() -> { + if (currentMedia != null) { + return currentMedia.getId() == second.getMedia().getId(); + } else { + return false; } - }, 10000); + }, Timeout.getLargeTimeout()); + assertTrue(secondPlaying); } /** @@ -174,24 +299,34 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2 private void replayEpisodeCheck(boolean followQueue) throws Exception { setContinuousPlaybackPreference(followQueue); uiTestUtils.addLocalFeedData(true); - DBWriter.clearQueue(context).get(); - final List episodes = DBReader.getRecentlyPublishedEpisodes(context, 10); + DBWriter.clearQueue().get(); + final List episodes = DBReader.getRecentlyPublishedEpisodes(10); startLocalPlayback(); - solo.waitForCondition(new Condition() { - @Override - public boolean isSatisfied() { - return false == episodes.get(0).getMedia().isCurrentlyPlaying(); + long mediaId = episodes.get(0).getMedia().getId(); + boolean startedPlaying = solo.waitForCondition(() -> { + if (currentMedia != null) { + return currentMedia.getId() == mediaId; + } else { + return false; } + }, Timeout.getSmallTimeout()); + assertTrue(startedPlaying); + + boolean stoppedPlaying = solo.waitForCondition(() -> { + return currentMedia == null || currentMedia.getId() != mediaId; }, Timeout.getLargeTimeout()); + assertTrue(stoppedPlaying); startLocalPlayback(); - solo.waitForCondition(new Condition() { - @Override - public boolean isSatisfied() { - return false == episodes.get(0).getMedia().isCurrentlyPlaying(); + boolean startedReplay = solo.waitForCondition(() -> { + if(currentMedia != null) { + return currentMedia.getId() == mediaId; + } else { + return false; } }, Timeout.getLargeTimeout()); + assertTrue(startedReplay); } public void testReplayEpisodeContinuousPlaybackOn() throws Exception { diff --git a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java index 7bbc6e462..9859e7534 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java @@ -4,6 +4,7 @@ import android.annotation.TargetApi; import android.content.Context; import android.graphics.Bitmap; import android.os.Build; +import android.util.Log; import junit.framework.Assert; @@ -38,6 +39,8 @@ import de.test.antennapod.util.syndication.feedgenerator.RSS2Generator; @TargetApi(Build.VERSION_CODES.HONEYCOMB) public class UITestUtils { + private static final String TAG = UITestUtils.class.getSimpleName(); + private static final String DATA_FOLDER = "test/UITestUtils"; public static final int NUM_FEEDS = 5; @@ -79,7 +82,7 @@ public class UITestUtils { server.stop(); if (localFeedDataAdded) { - PodDBAdapter.deleteDatabase(context); + PodDBAdapter.deleteDatabase(); } } @@ -174,16 +177,15 @@ public class UITestUtils { */ public void addLocalFeedData(boolean downloadEpisodes) throws Exception { if (localFeedDataAdded) { - throw new IllegalStateException("addLocalFeedData was called twice on the same instance"); + Log.w(TAG, "addLocalFeedData was called twice on the same instance"); + // might be a flaky test, this is actually not that severe + return; } if (!feedDataHosted) { addHostedFeedData(); } - List queue = new ArrayList(); - - PodDBAdapter adapter = new PodDBAdapter(context); - adapter.open(); + List queue = new ArrayList<>(); for (Feed feed : hostedFeeds) { feed.setDownloaded(true); if (feed.getImage() != null) { @@ -206,6 +208,10 @@ public class UITestUtils { queue.add(feed.getItems().get(0)); feed.getItems().get(1).getMedia().setPlaybackCompletionDate(new Date()); } + localFeedDataAdded = true; + + PodDBAdapter adapter = PodDBAdapter.getInstance(); + adapter.open(); adapter.setCompleteFeed(hostedFeeds.toArray(new Feed[hostedFeeds.size()])); adapter.setQueue(queue); adapter.close(); diff --git a/app/src/main/java/de/danoeh/antennapod/PodcastApp.java b/app/src/main/java/de/danoeh/antennapod/PodcastApp.java index 5442c6988..66d7a25f0 100644 --- a/app/src/main/java/de/danoeh/antennapod/PodcastApp.java +++ b/app/src/main/java/de/danoeh/antennapod/PodcastApp.java @@ -9,6 +9,7 @@ import com.joanzapata.iconify.fonts.FontAwesomeModule; import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.core.preferences.PlaybackPreferences; import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.core.storage.PodDBAdapter; import de.danoeh.antennapod.core.util.NetworkUtils; import de.danoeh.antennapod.spa.SPAUtil; @@ -40,6 +41,7 @@ public class PodcastApp extends Application { singleton = this; LOGICAL_DENSITY = getResources().getDisplayMetrics().density; + PodDBAdapter.init(this); UpdateManager.init(this); UserPreferences.init(this); PlaybackPreferences.init(this); diff --git a/app/src/main/java/de/danoeh/antennapod/UpdateManager.java b/app/src/main/java/de/danoeh/antennapod/UpdateManager.java index 2f6bb1b50..b1d7fffc8 100644 --- a/app/src/main/java/de/danoeh/antennapod/UpdateManager.java +++ b/app/src/main/java/de/danoeh/antennapod/UpdateManager.java @@ -65,9 +65,9 @@ public class UpdateManager { // from now on, Glide will handle caching images new Thread() { public void run() { - List feeds = DBReader.getFeedList(context); + List feeds = DBReader.getFeedList(); for (Feed podcast : feeds) { - List episodes = DBReader.getFeedItemList(context, podcast); + List episodes = DBReader.getFeedItemList(podcast); for (FeedItem episode : episodes) { FeedImage image = episode.getImage(); if (image != null && image.isDownloaded() && image.getFile_url() != null) { @@ -76,7 +76,7 @@ public class UpdateManager { imageFile.delete(); } image.setFile_url(null); // calls setDownloaded(false) - DBWriter.setFeedImage(context, image); + DBWriter.setFeedImage(image); } } } diff --git a/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java index c3d82c41d..417d49e83 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java @@ -6,7 +6,6 @@ import android.content.SharedPreferences; import android.content.res.Configuration; import android.content.res.TypedArray; import android.graphics.drawable.BitmapDrawable; -import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; @@ -60,6 +59,10 @@ import de.danoeh.antennapod.fragment.CoverFragment; import de.danoeh.antennapod.fragment.ItemDescriptionFragment; import de.danoeh.antennapod.menuhandler.NavDrawerActivity; import de.danoeh.antennapod.preferences.PreferenceController; +import rx.Observable; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; /** * Activity for playing audio files. @@ -104,6 +107,8 @@ public class AudioplayerActivity extends MediaplayerActivity implements ItemDesc private ImageButton butNavChaptersShownotes; private ImageButton butShowCover; + private Subscription subscription; + private PopupWindow popupWindow; private void resetFragmentView() { @@ -145,7 +150,9 @@ public class AudioplayerActivity extends MediaplayerActivity implements ItemDesc protected void onStop() { super.onStop(); Log.d(TAG, "onStop()"); - cancelLoadTask(); + if(subscription != null) { + subscription.unsubscribe(); + } EventDistributor.getInstance().unregister(contentUpdate); } @@ -716,10 +723,10 @@ public class AudioplayerActivity extends MediaplayerActivity implements ItemDesc Feed feed = navDrawerData.feeds.get(position - navAdapter.getSubscriptionOffset()); switch(item.getItemId()) { case R.id.mark_all_seen_item: - DBWriter.markFeedSeen(this, feed.getId()); + DBWriter.markFeedSeen(feed.getId()); return true; case R.id.mark_all_read_item: - DBWriter.markFeedRead(this, feed.getId()); + DBWriter.markFeedRead(feed.getId()); return true; case R.id.remove_item: final FeedRemover remover = new FeedRemover(this, feed) { @@ -747,32 +754,22 @@ public class AudioplayerActivity extends MediaplayerActivity implements ItemDesc private DBReader.NavDrawerData navDrawerData; - private AsyncTask loadTask; private void loadData() { - loadTask = new AsyncTask() { - @Override - protected DBReader.NavDrawerData doInBackground(Void... params) { - return DBReader.getNavDrawerData(AudioplayerActivity.this); - } - - @Override - protected void onPostExecute(DBReader.NavDrawerData result) { - super.onPostExecute(result); - navDrawerData = result; - if (navAdapter != null) { - navAdapter.notifyDataSetChanged(); - } - } - }; - loadTask.execute(); + subscription = Observable.defer(() -> Observable.just(DBReader.getNavDrawerData())) + .subscribeOn(Schedulers.newThread()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(result -> { + navDrawerData = result; + if (navAdapter != null) { + navAdapter.notifyDataSetChanged(); + } + }, error -> { + Log.e(TAG, Log.getStackTraceString(error)); + }); } - private void cancelLoadTask() { - if (loadTask != null) { - loadTask.cancel(true); - } - } + private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { diff --git a/app/src/main/java/de/danoeh/antennapod/activity/FeedInfoActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/FeedInfoActivity.java index cc4d459c8..80883e4ae 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/FeedInfoActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/FeedInfoActivity.java @@ -26,7 +26,6 @@ import android.widget.TextView; import android.widget.Toast; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.joanzapata.iconify.Iconify; import de.danoeh.antennapod.R; @@ -111,7 +110,7 @@ public class FeedInfoActivity extends ActionBarActivity { @Override protected Feed doInBackground(Long... params) { - return DBReader.getFeed(FeedInfoActivity.this, params[0]); + return DBReader.getFeed(params[0]); } @Override @@ -239,7 +238,7 @@ public class FeedInfoActivity extends ActionBarActivity { prefs.setPassword(etxtPassword.getText().toString()); } if (authInfoChanged || autoDeleteChanged) { - DBWriter.setFeedPreferences(this, prefs); + DBWriter.setFeedPreferences(prefs); } authInfoChanged = false; autoDeleteChanged = false; @@ -299,7 +298,7 @@ public class FeedInfoActivity extends ActionBarActivity { @Override public void onConfirmButtonPressed(DialogInterface dialog) { - DBWriter.setFeedsItemsAutoDownload(context, feed, autoDownload); + DBWriter.setFeedsItemsAutoDownload(feed, autoDownload); } } diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index 9caa35b5b..76d657585 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -58,6 +58,10 @@ import de.danoeh.antennapod.fragment.QueueFragment; import de.danoeh.antennapod.menuhandler.NavDrawerActivity; import de.danoeh.antennapod.preferences.PreferenceController; import de.greenrobot.event.EventBus; +import rx.Observable; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; /** * The activity that is shown when the user launches the app. @@ -106,6 +110,8 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity private ProgressDialog pd; + private Subscription subscription; + @Override public void onCreate(Bundle savedInstanceState) { setTheme(UserPreferences.getNoTitleTheme()); @@ -478,9 +484,11 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity @Override protected void onStop() { super.onStop(); - cancelLoadTask(); EventDistributor.getInstance().unregister(contentUpdate); EventBus.getDefault().unregister(this); + if(subscription != null) { + subscription.unsubscribe(); + } if(pd != null) { pd.dismiss(); } @@ -551,10 +559,10 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity Feed feed = navDrawerData.feeds.get(position - navAdapter.getSubscriptionOffset()); switch(item.getItemId()) { case R.id.mark_all_seen_item: - DBWriter.markFeedSeen(this, feed.getId()); + DBWriter.markFeedSeen(feed.getId()); return true; case R.id.mark_all_read_item: - DBWriter.markFeedRead(this, feed.getId()); + DBWriter.markFeedRead(feed.getId()); return true; case R.id.remove_item: final FeedRemover remover = new FeedRemover(this, feed) { @@ -629,33 +637,21 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity }; private void loadData() { - cancelLoadTask(); - loadTask = new AsyncTask() { - @Override - protected DBReader.NavDrawerData doInBackground(Void... params) { - return DBReader.getNavDrawerData(MainActivity.this); - } - - @Override - protected void onPostExecute(DBReader.NavDrawerData result) { - super.onPostExecute(navDrawerData); - boolean handleIntent = (navDrawerData == null); + subscription = Observable.defer(() -> Observable.just(DBReader.getNavDrawerData())) + .subscribeOn(Schedulers.newThread()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(result -> { + boolean handleIntent = (navDrawerData == null); - navDrawerData = result; - navAdapter.notifyDataSetChanged(); + navDrawerData = result; + navAdapter.notifyDataSetChanged(); - if (handleIntent) { - handleNavIntent(); - } - } - }; - loadTask.execute(); - } - - private void cancelLoadTask() { - if (loadTask != null) { - loadTask.cancel(true); - } + if (handleIntent) { + handleNavIntent(); + } + }, error -> { + Log.e(TAG, Log.getStackTraceString(error)); + }); } public void onEvent(QueueEvent event) { diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java index 13d5e7acf..a629b8758 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java @@ -109,7 +109,7 @@ public class OnlineFeedViewActivity extends ActionBarActivity { @Override public void update(EventDistributor eventDistributor, Integer arg) { if ((arg & EventDistributor.FEED_LIST_UPDATE) != 0) { - updater = Observable.defer(() -> Observable.just(DBReader.getFeedList(OnlineFeedViewActivity.this))) + updater = Observable.defer(() -> Observable.just(DBReader.getFeedList())) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(feeds -> { @@ -263,7 +263,7 @@ public class OnlineFeedViewActivity extends ActionBarActivity { download = Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { - feeds = DBReader.getFeedList(OnlineFeedViewActivity.this); + feeds = DBReader.getFeedList(); downloader = new HttpDownloader(request); downloader.call(); Log.d(TAG, "Download was completed"); diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonUtils.java b/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonUtils.java index aca2b359a..d60888a43 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonUtils.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonUtils.java @@ -64,7 +64,7 @@ public class ActionButtonUtils { butSecondary.setContentDescription(context.getString(labels[1])); } else { // item is not downloaded and not being downloaded - LongList queueIds = DBReader.getQueueIDList(context); + LongList queueIds = DBReader.getQueueIDList(); if(DefaultActionButtonCallback.userAllowedMobileDownloads() || !DefaultActionButtonCallback.userChoseAddToQueue() || queueIds.contains(item.getId())) { butSecondary.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java b/app/src/main/java/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java index b9247e76b..f17f0ba0f 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java @@ -57,7 +57,7 @@ public class DefaultActionButtonCallback implements ActionButtonCallback { final FeedMedia media = item.getMedia(); boolean isDownloading = DownloadRequester.getInstance().isDownloadingFile(media); if (!isDownloading && !media.isDownloaded()) { - LongList queueIds = DBReader.getQueueIDList(context); + LongList queueIds = DBReader.getQueueIDList(); if (NetworkUtils.isDownloadAllowed() || userAllowedMobileDownloads()) { try { DBTasks.downloadFeedItems(context, item); @@ -75,7 +75,7 @@ public class DefaultActionButtonCallback implements ActionButtonCallback { } else if (isDownloading) { DownloadRequester.getInstance().cancelDownload(context, media); if(UserPreferences.isEnableAutodownload()) { - DBWriter.setFeedItemAutoDownload(context, media.getItem(), false); + DBWriter.setFeedItemAutoDownload(media.getItem(), false); Toast.makeText(context, R.string.download_canceled_autodownload_enabled_msg, Toast.LENGTH_LONG).show(); } else { Toast.makeText(context, R.string.download_canceled_msg, Toast.LENGTH_LONG).show(); @@ -93,7 +93,7 @@ public class DefaultActionButtonCallback implements ActionButtonCallback { } } else { if (!item.isPlayed()) { - DBWriter.markItemPlayed(context, item, FeedItem.PLAYED, true); + DBWriter.markItemPlayed(item, FeedItem.PLAYED, true); } } } @@ -117,7 +117,7 @@ public class DefaultActionButtonCallback implements ActionButtonCallback { } } }); - LongList queueIds = DBReader.getQueueIDList(context); + LongList queueIds = DBReader.getQueueIDList(); if(!queueIds.contains(item.getId())) { builder.setNeutralButton(context.getText(R.string.confirm_mobile_download_dialog_only_add_to_queue), new DialogInterface.OnClickListener() { diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java index 6961cf5c1..4ccff39af 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java @@ -123,7 +123,7 @@ public class DownloadLogAdapter extends BaseAdapter { public void onClick(View v) { ButtonHolder holder = (ButtonHolder) v.getTag(); if(holder.typeId == Feed.FEEDFILETYPE_FEED) { - Feed feed = DBReader.getFeed(context, holder.id); + Feed feed = DBReader.getFeed(holder.id); if (feed != null) { feed.setLastUpdate(new Date(0)); // force refresh try { @@ -135,7 +135,7 @@ public class DownloadLogAdapter extends BaseAdapter { Log.wtf(TAG, "Could not find feed for feed id: " + holder.id); } } else if(holder.typeId == FeedMedia.FEEDFILETYPE_FEEDMEDIA) { - FeedMedia media = DBReader.getFeedMedia(context, holder.id); + FeedMedia media = DBReader.getFeedMedia(holder.id); try { DBTasks.downloadFeedItems(context, media.getItem()); Toast.makeText(context, R.string.status_downloading_label, Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlExportWorker.java b/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlExportWorker.java index f12b0fe3a..3656c3638 100644 --- a/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlExportWorker.java +++ b/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlExportWorker.java @@ -59,7 +59,7 @@ public class OpmlExportWorker extends AsyncTask { OutputStreamWriter writer = null; try { writer = new OutputStreamWriter(new FileOutputStream(output), LangUtils.UTF_8); - opmlWriter.writeDocument(DBReader.getFeedList(context), writer); + opmlWriter.writeDocument(DBReader.getFeedList(), writer); } catch (IOException e) { e.printStackTrace(); exception = e; diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java index dbc99b21a..37ca0ad26 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java @@ -372,12 +372,12 @@ public class EpisodesApplyActionFragment extends Fragment { } private void markedCheckedPlayed() { - DBWriter.markItemPlayed(getActivity(), FeedItem.PLAYED, checkedIds.toArray()); + DBWriter.markItemPlayed(FeedItem.PLAYED, checkedIds.toArray()); close(); } private void markedCheckedUnplayed() { - DBWriter.markItemPlayed(getActivity(), FeedItem.UNPLAYED, checkedIds.toArray()); + DBWriter.markItemPlayed(FeedItem.UNPLAYED, checkedIds.toArray()); close(); } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java index d55466b10..5d0edb638 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java @@ -38,6 +38,7 @@ import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; +import de.danoeh.antennapod.core.feed.QueueEvent; import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.core.service.download.Downloader; import de.danoeh.antennapod.core.storage.DBReader; @@ -57,6 +58,7 @@ public class AllEpisodesFragment extends Fragment { public static final String TAG = "AllEpisodesFragment"; private static final int EVENTS = EventDistributor.DOWNLOAD_HANDLED | + EventDistributor.FEED_LIST_UPDATE | EventDistributor.DOWNLOAD_QUEUED | EventDistributor.UNREAD_ITEMS_UPDATE | EventDistributor.PLAYER_STATUS_UPDATE; @@ -251,7 +253,7 @@ public class AllEpisodesFragment extends Fragment { public void onConfirmButtonPressed( DialogInterface dialog) { dialog.dismiss(); - DBWriter.markAllItemsRead(getActivity()); + DBWriter.markAllItemsRead(); Toast.makeText(getActivity(), R.string.mark_all_read_msg, Toast.LENGTH_SHORT).show(); } }; @@ -485,14 +487,14 @@ public class AllEpisodesFragment extends Fragment { if (context != null) { if(showOnlyNewEpisodes) { return new Object[] { - DBReader.getNewItemsList(context), - DBReader.getQueueIDList(context), + DBReader.getNewItemsList(), + DBReader.getQueueIDList(), null // see ItemAccess.isNew }; } else { return new Object[]{ - DBReader.getRecentlyPublishedEpisodes(context, RECENT_EPISODES_LIMIT), - DBReader.getQueueIDList(context) + DBReader.getRecentlyPublishedEpisodes(RECENT_EPISODES_LIMIT), + DBReader.getQueueIDList() }; } } else { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java index 3ca5b3c89..278928f3d 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java @@ -179,7 +179,7 @@ public class CompletedDownloadsFragment extends ListFragment { protected List doInBackground(Void... params) { Context context = getActivity(); if (context != null) { - return DBReader.getDownloadedItems(context); + return DBReader.getDownloadedItems(); } return Collections.emptyList(); } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java index 074a87ea0..da2c05a69 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java @@ -142,7 +142,7 @@ public class DownloadLogFragment extends ListFragment { if (!super.onOptionsItemSelected(item)) { switch (item.getItemId()) { case R.id.clear_history_item: - DBWriter.clearDownloadLog(getActivity()); + DBWriter.clearDownloadLog(); return true; default: return false; @@ -170,7 +170,7 @@ public class DownloadLogFragment extends ListFragment { protected List doInBackground(Void... params) { Context context = getActivity(); if (context != null) { - return DBReader.getDownloadLog(context); + return DBReader.getDownloadLog(); } return null; } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java index 9693e6886..faa4413bb 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java @@ -210,7 +210,7 @@ public class ItemDescriptionFragment extends Fragment { @Override protected FeedItem doInBackground(Void... voids) { - return DBReader.getFeedItem(getActivity(), getArguments().getLong(ARG_FEEDITEM_ID)); + return DBReader.getFeedItem(getArguments().getLong(ARG_FEEDITEM_ID)); } @Override diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java index 4edb7f36f..353d8149c 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java @@ -36,7 +36,6 @@ import android.widget.TextView; import android.widget.Toast; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; import java.util.List; @@ -497,12 +496,12 @@ public class ItemFragment extends Fragment implements LoaderManager.LoaderCallba return new DBTaskLoader>(getActivity()) { @Override public Pair loadInBackground() { - FeedItem data1 = DBReader.getFeedItem(getContext(), itemID); + FeedItem data1 = DBReader.getFeedItem(itemID); if (data1 != null) { Timeline t = new Timeline(getActivity(), data1); webviewData = t.processShownotes(false); } - LongList data2 = DBReader.getQueueIDList(getContext()); + LongList data2 = DBReader.getQueueIDList(); return Pair.create(data1, data2); } }; diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java index 18a9d09d6..38c9b645a 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java @@ -630,12 +630,12 @@ public class ItemlistFragment extends ListFragment { long feedID = params[0]; Context context = getActivity(); if (context != null) { - Feed feed = DBReader.getFeed(context, feedID); + Feed feed = DBReader.getFeed(feedID); if(feed != null && feed.getItemFilter() != null) { FeedItemFilter filter = feed.getItemFilter(); feed.setItems(filter.filter(context, feed.getItems())); } - LongList queuedItemsIds = DBReader.getQueueIDList(context); + LongList queuedItemsIds = DBReader.getQueueIDList(); return new Object[] { feed, queuedItemsIds }; } else { return null; diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java index 6c2271d79..6177f2a50 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java @@ -73,7 +73,7 @@ public class NewEpisodesFragment extends AllEpisodesFragment { FeedItem item = (FeedItem) listView.getAdapter().getItem(which); // we're marking it as unplayed since the user didn't actually play it // but they don't want it considered 'NEW' anymore - DBWriter.markItemPlayed(getActivity(), FeedItem.UNPLAYED, item.getId()); + DBWriter.markItemPlayed(FeedItem.UNPLAYED, item.getId()); undoBarController.showUndoBar(false, getString(R.string.marked_as_read_label), new FeedItemUndoToken(item, which) @@ -89,14 +89,14 @@ public class NewEpisodesFragment extends AllEpisodesFragment { public void onUndo(FeedItemUndoToken token) { if (token != null) { long itemId = token.getFeedItemId(); - DBWriter.markItemPlayed(context, FeedItem.NEW, itemId); + DBWriter.markItemPlayed(FeedItem.NEW, itemId); } } @Override public void onHide(FeedItemUndoToken token) { if (token != null && context != null) { long itemId = token.getFeedItemId(); - FeedItem item = DBReader.getFeedItem(context, itemId); + FeedItem item = DBReader.getFeedItem(itemId); FeedMedia media = item.getMedia(); if(media != null && media.hasAlmostEnded() && item.getFeed().getPreferences().getCurrentAutoDelete()) { DBWriter.deleteFeedMediaOfItem(context, media.getId()); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java index b094133d3..530883667 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java @@ -164,7 +164,7 @@ public class PlaybackHistoryFragment extends ListFragment { if (!super.onOptionsItemSelected(item)) { switch (item.getItemId()) { case R.id.clear_history_item: - DBWriter.clearPlaybackHistory(getActivity()); + DBWriter.clearPlaybackHistory(); return true; default: return false; @@ -267,9 +267,9 @@ public class PlaybackHistoryFragment extends ListFragment { protected Pair,LongList> doInBackground(Void... params) { Context context = activity.get(); if (context != null) { - List history = DBReader.getPlaybackHistory(context); - LongList queue = DBReader.getQueueIDList(context); - DBReader.loadFeedDataOfFeedItemlist(context, history); + List history = DBReader.getPlaybackHistory(); + LongList queue = DBReader.getQueueIDList(); + DBReader.loadFeedDataOfFeedItemlist(history); return Pair.create(history, queue); } else { return null; diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java index 24c9fc425..63c319e03 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -269,7 +269,7 @@ public class QueueFragment extends Fragment { public void onConfirmButtonPressed( DialogInterface dialog) { dialog.dismiss(); - DBWriter.clearQueue(getActivity()); + DBWriter.clearQueue(); } }; conDialog.createNewDialog().show(); @@ -402,7 +402,7 @@ public class QueueFragment extends Fragment { final FeedItem item = queue.remove(from); queue.add(to, item); listAdapter.notifyDataSetChanged(); - DBWriter.moveQueueItem(getActivity(), from, to, true); + DBWriter.moveQueueItem(from, to, true); } @Override @@ -432,10 +432,12 @@ public class QueueFragment extends Fragment { public void onHide(FeedItemUndoToken token) { if (token != null && context != null) { long itemId = token.getFeedItemId(); - FeedItem item = DBReader.getFeedItem(context, itemId); - FeedMedia media = item.getMedia(); - if(media != null && media.hasAlmostEnded() && item.getFeed().getPreferences().getCurrentAutoDelete()) { - DBWriter.deleteFeedMediaOfItem(context, media.getId()); + FeedItem item = DBReader.getFeedItem(itemId); + if(item != null) { + FeedMedia media = item.getMedia(); + if (media != null && media.hasAlmostEnded() && item.getFeed().getPreferences().getCurrentAutoDelete()) { + DBWriter.deleteFeedMediaOfItem(context, media.getId()); + } } } } @@ -608,7 +610,7 @@ public class QueueFragment extends Fragment { protected List doInBackground(Void... params) { Context context = activity.get(); if (context != null) { - return DBReader.getQueue(context); + return DBReader.getQueue(); } return null; } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java index eb4d18328..544bdfc43 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java @@ -81,8 +81,8 @@ public class RunningDownloadsFragment extends ListFragment { if(downloadRequest.getFeedfileType() == FeedMedia.FEEDFILETYPE_FEEDMEDIA && UserPreferences.isEnableAutodownload()) { - FeedMedia media = DBReader.getFeedMedia(getActivity(), downloadRequest.getFeedfileId()); - DBWriter.setFeedItemAutoDownload(getActivity(), media.getItem(), false); + FeedMedia media = DBReader.getFeedMedia(downloadRequest.getFeedfileId()); + DBWriter.setFeedItemAutoDownload(media.getItem(), false); Toast.makeText(getActivity(), R.string.download_canceled_autodownload_enabled_msg, Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getActivity(), R.string.download_canceled_msg, Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java index 014b44078..510ea2760 100644 --- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java @@ -155,7 +155,7 @@ public class FeedItemMenuHandler { break; case R.id.mark_read_item: selectedItem.setPlayed(true); - DBWriter.markItemPlayed(context, selectedItem, FeedItem.PLAYED, false); + DBWriter.markItemPlayed(selectedItem, FeedItem.PLAYED, false); if(GpodnetPreferences.loggedIn()) { FeedMedia media = selectedItem.getMedia(); // not all items have media, Gpodder only cares about those that do @@ -173,7 +173,7 @@ public class FeedItemMenuHandler { break; case R.id.mark_unread_item: selectedItem.setPlayed(false); - DBWriter.markItemPlayed(context, selectedItem, FeedItem.UNPLAYED, false); + DBWriter.markItemPlayed(selectedItem, FeedItem.UNPLAYED, false); if(GpodnetPreferences.loggedIn()) { GpodnetEpisodeAction actionNew = new GpodnetEpisodeAction.Builder(selectedItem, Action.NEW) .currentDeviceId() @@ -183,10 +183,10 @@ public class FeedItemMenuHandler { } break; case R.id.move_to_top_item: - DBWriter.moveQueueItemToTop(context, selectedItem.getId(), true); + DBWriter.moveQueueItemToTop(selectedItem.getId(), true); return true; case R.id.move_to_bottom_item: - DBWriter.moveQueueItemToBottom(context, selectedItem.getId(), true); + DBWriter.moveQueueItemToBottom(selectedItem.getId(), true); case R.id.add_to_queue_item: DBWriter.addQueueItem(context, selectedItem.getId()); break; @@ -195,15 +195,15 @@ public class FeedItemMenuHandler { break; case R.id.reset_position: selectedItem.getMedia().setPosition(0); - DBWriter.markItemPlayed(context, selectedItem, FeedItem.UNPLAYED, true); + DBWriter.markItemPlayed(selectedItem, FeedItem.UNPLAYED, true); break; case R.id.activate_auto_download: selectedItem.setAutoDownload(true); - DBWriter.setFeedItemAutoDownload(context, selectedItem, true); + DBWriter.setFeedItemAutoDownload(selectedItem, true); break; case R.id.deactivate_auto_download: selectedItem.setAutoDownload(false); - DBWriter.setFeedItemAutoDownload(context, selectedItem, false); + DBWriter.setFeedItemAutoDownload(selectedItem, false); break; case R.id.visit_website_item: Uri uri = Uri.parse(selectedItem.getLink()); diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java index 3df59724d..f32a1c2ee 100644 --- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java @@ -78,7 +78,7 @@ public class FeedMenuHandler { public void onConfirmButtonPressed( DialogInterface dialog) { dialog.dismiss(); - DBWriter.markFeedRead(context, selectedFeed.getId()); + DBWriter.markFeedRead(selectedFeed.getId()); } }; conDialog.createNewDialog().show(); @@ -138,7 +138,7 @@ public class FeedMenuHandler { @Override public void onClick(DialogInterface dialog, int which) { feed.setHiddenItemProperties(hidden.toArray(new String[hidden.size()])); - DBWriter.setFeedItemsFilter(context, feed.getId(), hidden); + DBWriter.setFeedItemsFilter(feed.getId(), hidden); } }); builder.setNegativeButton(R.string.cancel_label, null); diff --git a/app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java b/app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java index 0f726f214..d7a049a32 100644 --- a/app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java +++ b/app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java @@ -58,9 +58,9 @@ public class PlayerWidgetService extends Service { if (media.hasAlmostEnded()) { Log.d(TAG, "smart mark as read"); FeedItem item = media.getItem(); - DBWriter.markItemPlayed(this, item, FeedItem.PLAYED, false); + DBWriter.markItemPlayed(item, FeedItem.PLAYED, false); DBWriter.removeQueueItem(this, item, false); - DBWriter.addItemToPlaybackHistory(this, media); + DBWriter.addItemToPlaybackHistory(media); if (item.getFeed().getPreferences().getCurrentAutoDelete()) { Log.d(TAG, "Delete " + media.toString()); DBWriter.deleteFeedMediaOfItem(this, media.getId()); -- cgit v1.2.3