From 4bc0b38280f5d1fa3bc1d0988dd6d2607e65314f Mon Sep 17 00:00:00 2001 From: flofriday Date: Wed, 24 Apr 2024 21:06:12 +0200 Subject: [PATCH] Implement missing equals and hashcode methods for feeditem (#7132) Till 5713b1826795598848c95f31df906b7af5ce7076 many classes like FeedItem used to inherit from FeedComponent which provided those two methods. However since that commit the component no longer exists and now the classes need to implement it on their own. Without this, ArrayList.remove breaks. --- .../danoeh/antennapod/model/feed/Chapter.java | 19 ++++++++++++++++++ .../de/danoeh/antennapod/model/feed/Feed.java | 20 +++++++++++++++++++ .../antennapod/model/feed/FeedItem.java | 19 ++++++++++++++++++ .../antennapod/model/feed/FeedMedia.java | 11 +++++++++- 4 files changed, 68 insertions(+), 1 deletion(-) diff --git a/model/src/main/java/de/danoeh/antennapod/model/feed/Chapter.java b/model/src/main/java/de/danoeh/antennapod/model/feed/Chapter.java index 3683a2a44..f6a5205d2 100644 --- a/model/src/main/java/de/danoeh/antennapod/model/feed/Chapter.java +++ b/model/src/main/java/de/danoeh/antennapod/model/feed/Chapter.java @@ -1,6 +1,7 @@ package de.danoeh.antennapod.model.feed; import java.util.List; +import java.util.Objects; public class Chapter { private long id; @@ -88,4 +89,22 @@ public class Chapter { } return chapters.size() - 1; } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + Chapter chapter = (Chapter) o; + return id == chapter.id; + } + + @Override + public int hashCode() { + return Objects.hash(id); + } } 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 15d256c24..99e7ca9dc 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 @@ -5,6 +5,8 @@ import androidx.annotation.Nullable; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Objects; + import org.apache.commons.lang3.StringUtils; /** @@ -468,4 +470,22 @@ public class Feed { public boolean isLocalFeed() { return downloadUrl.startsWith(PREFIX_LOCAL_FOLDER); } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + Feed feed = (Feed) o; + return id == feed.id; + } + + @Override + public int hashCode() { + return Objects.hash(id); + } } diff --git a/model/src/main/java/de/danoeh/antennapod/model/feed/FeedItem.java b/model/src/main/java/de/danoeh/antennapod/model/feed/FeedItem.java index df4cc8f9c..2a62e3e34 100644 --- a/model/src/main/java/de/danoeh/antennapod/model/feed/FeedItem.java +++ b/model/src/main/java/de/danoeh/antennapod/model/feed/FeedItem.java @@ -11,6 +11,7 @@ import java.io.Serializable; import java.util.Date; import java.util.HashSet; import java.util.List; +import java.util.Objects; import java.util.Set; /** @@ -418,4 +419,22 @@ public class FeedItem implements Serializable { public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE); } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + FeedItem feedItem = (FeedItem) o; + return id == feedItem.id; + } + + @Override + public int hashCode() { + return Objects.hash(id); + } } diff --git a/model/src/main/java/de/danoeh/antennapod/model/feed/FeedMedia.java b/model/src/main/java/de/danoeh/antennapod/model/feed/FeedMedia.java index 698cdf34e..1f0786875 100644 --- a/model/src/main/java/de/danoeh/antennapod/model/feed/FeedMedia.java +++ b/model/src/main/java/de/danoeh/antennapod/model/feed/FeedMedia.java @@ -501,12 +501,21 @@ public class FeedMedia implements Playable { @Override public boolean equals(Object o) { + if (this == o) { + return true; + } if (o == null) { return false; } if (o instanceof RemoteMedia) { return o.equals(this); } - return super.equals(o); + + if (getClass() != o.getClass()) { + return false; + } + + FeedMedia feedMedia = (FeedMedia) o; + return id == feedMedia.id; } }