From 2a2eb9dfc93a7be9d5d461dff485fd2c079696cc Mon Sep 17 00:00:00 2001 From: Mihail Mitrofanov Date: Mon, 19 May 2025 11:08:47 +0200 Subject: [PATCH] [android] Fix FeatureId check in MapObject This commit fix the way `FeatureId` is checked in `MapObject.equals()`. Instead of checking if `mFeatureId` and `other.getFeatureId()` are not `FeatureId.EMPTY`, it now uses a new `isRealId()` method in `FeatureId` to determine if the IDs are valid for comparison. The `isRealId()` method checks if the `mMwmName` is not empty, `mMwmVersion` is greater than 0, and `mFeatureIndex` is greater than 0. This provides a more robust check for valid feature IDs. Signed-off-by: Mihail Mitrofanov --- .../main/java/app/organicmaps/bookmarks/data/FeatureId.java | 6 ++++++ .../main/java/app/organicmaps/bookmarks/data/MapObject.java | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/android/app/src/main/java/app/organicmaps/bookmarks/data/FeatureId.java b/android/app/src/main/java/app/organicmaps/bookmarks/data/FeatureId.java index 180ac686e..cafa66568 100644 --- a/android/app/src/main/java/app/organicmaps/bookmarks/data/FeatureId.java +++ b/android/app/src/main/java/app/organicmaps/bookmarks/data/FeatureId.java @@ -93,6 +93,12 @@ public class FeatureId implements Parcelable return mFeatureIndex; } + public boolean isRealId() { + return !TextUtils.isEmpty(mMwmName) && + mMwmVersion >= 0 && + mFeatureIndex > 0; + } + @Override public boolean equals(Object o) { diff --git a/android/app/src/main/java/app/organicmaps/bookmarks/data/MapObject.java b/android/app/src/main/java/app/organicmaps/bookmarks/data/MapObject.java index b67f8e48c..0fed9d327 100644 --- a/android/app/src/main/java/app/organicmaps/bookmarks/data/MapObject.java +++ b/android/app/src/main/java/app/organicmaps/bookmarks/data/MapObject.java @@ -178,7 +178,7 @@ public class MapObject implements PlacePageData if (getClass() != other.getClass()) return false; - if (mFeatureId != FeatureId.EMPTY && other.getFeatureId() != FeatureId.EMPTY) + if (mFeatureId.isRealId() && other.getFeatureId().isRealId()) return mFeatureId.equals(other.getFeatureId()); return Double.doubleToLongBits(mLon) == Double.doubleToLongBits(other.mLon) &&