From a065d3fc338371d1e5f0782bb99a847cc5a9ea93 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sat, 23 Mar 2024 18:06:02 +0100 Subject: [PATCH] Remove check for updated attributes, just update them (#7018) --- .../antennapod/core/storage/DBTasks.java | 10 +-- .../danoeh/antennapod/core/feed/FeedTest.java | 82 ++++--------------- .../core/util/FeedItemUtilTest.java | 2 +- .../de/danoeh/antennapod/model/feed/Feed.java | 66 --------------- .../model/feed/FeedPreferences.java | 19 ----- 5 files changed, 17 insertions(+), 162 deletions(-) diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java index 52307912a..1fb0991dd 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java @@ -216,18 +216,12 @@ public final class DBTasks { Collections.sort(newFeed.getItems(), new FeedItemPubdateComparator()); if (newFeed.getPageNr() == savedFeed.getPageNr()) { - if (savedFeed.compareWithOther(newFeed)) { - Log.d(TAG, "Feed has updated attribute values. Updating old feed's attributes"); - savedFeed.updateFromOther(newFeed); - } + savedFeed.updateFromOther(newFeed); + savedFeed.getPreferences().updateFromOther(newFeed.getPreferences()); } else { Log.d(TAG, "New feed has a higher page number."); savedFeed.setNextPageLink(newFeed.getNextPageLink()); } - if (savedFeed.getPreferences().compareWithOther(newFeed.getPreferences())) { - Log.d(TAG, "Feed has updated preferences. Updating old feed's preferences"); - savedFeed.getPreferences().updateFromOther(newFeed.getPreferences()); - } // get the most recent date now, before we start changing the list FeedItem priorMostRecent = savedFeed.getMostRecentItem(); diff --git a/core/src/test/java/de/danoeh/antennapod/core/feed/FeedTest.java b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedTest.java index c256fea11..078f29ad7 100644 --- a/core/src/test/java/de/danoeh/antennapod/core/feed/FeedTest.java +++ b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedTest.java @@ -8,9 +8,7 @@ import de.danoeh.antennapod.model.feed.SortOrder; import static de.danoeh.antennapod.core.feed.FeedMother.anyFeed; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.junit.Assert.assertThrows; public class FeedTest { @@ -24,92 +22,40 @@ public class FeedTest { } @Test - public void testCompareWithOther_feedImageDownloadUrlChanged() throws Exception { - setNewFeedImageDownloadUrl(); - feedHasChanged(); - } - - @Test - public void testCompareWithOther_sameFeedImage() throws Exception { - changedFeed.setImageUrl(FeedMother.IMAGE_URL); - feedHasNotChanged(); - } - - @Test - public void testCompareWithOther_feedImageRemoved() throws Exception { - feedImageRemoved(); - feedHasNotChanged(); - } - - @Test - public void testUpdateFromOther_feedImageDownloadUrlChanged() throws Exception { - setNewFeedImageDownloadUrl(); + public void testUpdateFromOther_feedImageDownloadUrlChanged() { + changedFeed.setImageUrl("http://example.com/new_picture"); original.updateFromOther(changedFeed); - feedImageWasUpdated(); + assertEquals(original.getImageUrl(), changedFeed.getImageUrl()); } @Test - public void testUpdateFromOther_feedImageRemoved() throws Exception { - feedImageRemoved(); + public void testUpdateFromOther_feedImageRemoved() { + changedFeed.setImageUrl(null); original.updateFromOther(changedFeed); - feedImageWasNotUpdated(); + assertEquals(anyFeed().getImageUrl(), original.getImageUrl()); } @Test - public void testUpdateFromOther_feedImageAdded() throws Exception { - feedHadNoImage(); - setNewFeedImageDownloadUrl(); + public void testUpdateFromOther_feedImageAdded() { + original.setImageUrl(null); + changedFeed.setImageUrl("http://example.com/new_picture"); original.updateFromOther(changedFeed); - feedImageWasUpdated(); + assertEquals(original.getImageUrl(), changedFeed.getImageUrl()); } @Test - public void testSetSortOrder_OnlyIntraFeedSortAllowed() throws Exception { + public void testSetSortOrder_OnlyIntraFeedSortAllowed() { for (SortOrder sortOrder : SortOrder.values()) { if (sortOrder.scope == SortOrder.Scope.INTRA_FEED) { original.setSortOrder(sortOrder); // should be okay } else { - try { - original.setSortOrder(sortOrder); - fail("SortOrder " + sortOrder + " should not be allowed on a feed"); - } catch (IllegalArgumentException iae) { - // expected exception - } + assertThrows(IllegalArgumentException.class, () -> original.setSortOrder(sortOrder)); } } } @Test - public void testSetSortOrder_NullAllowed() throws Exception { + public void testSetSortOrder_NullAllowed() { original.setSortOrder(null); // should be okay } - - private void feedHasNotChanged() { - assertFalse(original.compareWithOther(changedFeed)); - } - - private void feedHadNoImage() { - original.setImageUrl(null); - } - - private void setNewFeedImageDownloadUrl() { - changedFeed.setImageUrl("http://example.com/new_picture"); - } - - private void feedHasChanged() { - assertTrue(original.compareWithOther(changedFeed)); - } - - private void feedImageRemoved() { - changedFeed.setImageUrl(null); - } - - private void feedImageWasUpdated() { - assertEquals(original.getImageUrl(), changedFeed.getImageUrl()); - } - - private void feedImageWasNotUpdated() { - assertEquals(anyFeed().getImageUrl(), original.getImageUrl()); - } - } \ No newline at end of file diff --git a/core/src/test/java/de/danoeh/antennapod/core/util/FeedItemUtilTest.java b/core/src/test/java/de/danoeh/antennapod/core/util/FeedItemUtilTest.java index 6bc3c09a2..df9617ab4 100644 --- a/core/src/test/java/de/danoeh/antennapod/core/util/FeedItemUtilTest.java +++ b/core/src/test/java/de/danoeh/antennapod/core/util/FeedItemUtilTest.java @@ -94,7 +94,7 @@ public class FeedItemUtilTest { } private static FeedItem createFeedItem(String feedLink, String itemLink) { - Feed feed = new Feed(); + Feed feed = new Feed("http://example.com/feed", null); feed.setLink(feedLink); FeedItem feedItem = new FeedItem(); feedItem.setLink(itemLink); diff --git a/model/src/main/java/de/danoeh/antennapod/model/feed/Feed.java b/model/src/main/java/de/danoeh/antennapod/model/feed/Feed.java index 80ef8547f..6b7c40095 100644 --- a/model/src/main/java/de/danoeh/antennapod/model/feed/Feed.java +++ b/model/src/main/java/de/danoeh/antennapod/model/feed/Feed.java @@ -3,7 +3,6 @@ package de.danoeh.antennapod.model.feed; import android.text.TextUtils; import androidx.annotation.Nullable; -import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.Date; @@ -149,13 +148,6 @@ public class Feed { imageUrl, fileUrl, downloadUrl, downloaded, false, null, null, null, false); } - /** - * This constructor can be used when parsing feed data. Only the 'lastUpdate' and 'items' field are initialized. - */ - public Feed() { - super(); - } - /** * This constructor is used for requesting a feed download (it must not be used for anything else!). It should NOT be * used if the title of the feed is already known. @@ -257,64 +249,6 @@ public class Feed { } } - /** - * Compare's this FeedFile's attribute values with another FeedFile's - * attribute values. This method will only compare attributes which were - * read from the feed. - * - * @return true if attribute values are different, false otherwise - */ - public boolean compareWithOther(Feed other) { - if (!StringUtils.equals(downloadUrl, other.downloadUrl)) { - return true; - } - if (other.imageUrl != null) { - if (imageUrl == null || !TextUtils.equals(imageUrl, other.imageUrl)) { - return true; - } - } - if (!TextUtils.equals(feedTitle, other.feedTitle)) { - return true; - } - if (other.feedIdentifier != null) { - if (feedIdentifier == null || !feedIdentifier.equals(other.feedIdentifier)) { - return true; - } - } - if (other.link != null) { - if (link == null || !link.equals(other.link)) { - return true; - } - } - if (other.description != null) { - if (description == null || !description.equals(other.description)) { - return true; - } - } - if (other.language != null) { - if (language == null || !language.equals(other.language)) { - return true; - } - } - if (other.author != null) { - if (author == null || !author.equals(other.author)) { - return true; - } - } - if (other.fundingList != null) { - if (fundingList == null || !fundingList.equals(other.fundingList)) { - return true; - } - } - if (other.isPaged() && !this.isPaged()) { - return true; - } - if (!TextUtils.equals(other.getNextPageLink(), this.getNextPageLink())) { - return true; - } - return false; - } - public FeedItem getMostRecentItem() { // we could sort, but we don't need to, a simple search is fine... Date mostRecentDate = new Date(0); diff --git a/model/src/main/java/de/danoeh/antennapod/model/feed/FeedPreferences.java b/model/src/main/java/de/danoeh/antennapod/model/feed/FeedPreferences.java index 02f09693e..04c3849a2 100644 --- a/model/src/main/java/de/danoeh/antennapod/model/feed/FeedPreferences.java +++ b/model/src/main/java/de/danoeh/antennapod/model/feed/FeedPreferences.java @@ -149,25 +149,6 @@ public class FeedPreferences implements Serializable { this.keepUpdated = keepUpdated; } - /** - * Compare another FeedPreferences with this one. The feedID, autoDownload and AutoDeleteAction attribute are excluded from the - * comparison. - * - * @return True if the two objects are different. - */ - public boolean compareWithOther(FeedPreferences other) { - if (other == null) { - return true; - } - if (!TextUtils.equals(username, other.username)) { - return true; - } - if (!TextUtils.equals(password, other.password)) { - return true; - } - return false; - } - /** * Update this FeedPreferences object from another one. The feedID, autoDownload and AutoDeleteAction attributes are excluded * from the update.