From 8d2c6f9381f4eb0f39e39f718a4c7847d496929d Mon Sep 17 00:00:00 2001 From: "r.kuznetsov" Date: Wed, 10 Oct 2018 16:23:14 +0300 Subject: [PATCH] Review fixes --- .../maps/bookmarks/data/BookmarkManager.cpp | 17 +++++++++++++++++ .../maps/bookmarks/data/BookmarkManager.java | 15 +++++++++++++++ map/bookmark_catalog.cpp | 9 +++++++++ map/bookmark_manager.cpp | 14 ++++++++++++++ map/bookmark_manager.hpp | 2 ++ 5 files changed, 57 insertions(+) diff --git a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp index 855914f5d8..564c15ccc0 100644 --- a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp +++ b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp @@ -462,6 +462,14 @@ Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeSetCategoryTags( categoryTags); } +JNIEXPORT void JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeSetCategoryAccessRules( + JNIEnv * env, jobject, jlong catId, jint accessRules) +{ + frm()->GetBookmarkManager().GetEditSession().SetCategoryAccessRules( + static_cast(catId), static_cast(accessRules)); +} + JNIEXPORT jstring JNICALL Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetCategoryName( JNIEnv * env, jobject thiz, jlong catId) @@ -479,6 +487,15 @@ Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetCategoryAuthor( return ToJavaString(env, data.m_authorName); } +JNIEXPORT jint JNICALL +Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetCategoryAccessRules( + JNIEnv * env, jobject thiz, jlong catId) +{ + auto const & data = frm()->GetBookmarkManager().GetCategoryData( + static_cast(catId)); + return static_cast(data.m_accessRules); +} + JNIEXPORT jint JNICALL Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetBookmarksCount( JNIEnv * env, jobject thiz, jlong catId) diff --git a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java index e7416f17f0..03bddbf1a6 100644 --- a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java +++ b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java @@ -47,6 +47,16 @@ public enum BookmarkManager public static final List ICONS = new ArrayList<>(); + @Retention(RetentionPolicy.SOURCE) + @IntDef({ ACCESS_RULES_LOCAL, ACCESS_RULES_PUBLIC, ACCESS_RULES_DIRECT_LINK, + ACCESS_RULES_P2P, ACCESS_RULES_PAID }) + public @interface AccessRules {} + public static final int ACCESS_RULES_LOCAL = 0; + public static final int ACCESS_RULES_PUBLIC = 1; + public static final int ACCESS_RULES_DIRECT_LINK = 2; + public static final int ACCESS_RULES_P2P = 3; + public static final int ACCESS_RULES_PAID = 4; + @NonNull private final List mListeners = new ArrayList<>(); @@ -587,9 +597,14 @@ public enum BookmarkManager private native void nativeSetCategoryTags(long catId, @NonNull String[] tagsIds); + private native void nativeSetCategoryAccessRules(long catId, @AccessRules int accessRules); + @NonNull private native String nativeGetCategoryAuthor(long catId); + @AccessRules + private native int nativeGetCategoryAccessRules(long catId); + private static native void nativeLoadBookmarks(); private native boolean nativeDeleteCategory(long catId); diff --git a/map/bookmark_catalog.cpp b/map/bookmark_catalog.cpp index 3bf38b60cc..6a037140be 100644 --- a/map/bookmark_catalog.cpp +++ b/map/bookmark_catalog.cpp @@ -174,10 +174,19 @@ void BookmarkCatalog::RequestTagGroups(std::string const & language, if (resultCode >= 200 && resultCode < 300) // Ok. { TagsResponseData tagsResponseData; + try { coding::DeserializerJson des(request.ServerResponse()); des(tagsResponseData); } + catch (coding::DeserializerJson::Exception const & ex) + { + LOG(LWARNING, ("Tags request deserialization error:", ex.Msg())); + if (callback) + callback(false /* success */, {}); + return; + } + TagGroups result; result.reserve(tagsResponseData.m_tags.size()); for (auto const & t : tagsResponseData.m_tags) diff --git a/map/bookmark_manager.cpp b/map/bookmark_manager.cpp index 52aebf6990..8945b819eb 100644 --- a/map/bookmark_manager.cpp +++ b/map/bookmark_manager.cpp @@ -819,6 +819,14 @@ void BookmarkManager::SetCategoryTags(kml::MarkGroupId categoryId, std::vectorSetTags(tags); } +void BookmarkManager::SetCategoryAccessRules(kml::MarkGroupId categoryId, kml::AccessRules accessRules) +{ + CHECK_THREAD_CHECKER(m_threadChecker, ()); + auto category = GetBmCategory(categoryId); + CHECK(category != nullptr, ()); + category->SetAccessRules(accessRules); +} + std::string BookmarkManager::GetCategoryFileName(kml::MarkGroupId categoryId) const { CHECK_THREAD_CHECKER(m_threadChecker, ()); @@ -2523,6 +2531,12 @@ void BookmarkManager::EditSession::SetCategoryTags(kml::MarkGroupId categoryId, m_bmManager.SetCategoryTags(categoryId, tags); } +void BookmarkManager::EditSession::SetCategoryAccessRules(kml::MarkGroupId categoryId, kml::AccessRules accessRules) +{ + CHECK(m_bmManager.IsEditableCategory(categoryId), ()); + m_bmManager.SetCategoryAccessRules(categoryId, accessRules); +} + bool BookmarkManager::EditSession::DeleteBmCategory(kml::MarkGroupId groupId) { return m_bmManager.DeleteBmCategory(groupId); diff --git a/map/bookmark_manager.hpp b/map/bookmark_manager.hpp index ac8c6377ad..c76aa1d743 100644 --- a/map/bookmark_manager.hpp +++ b/map/bookmark_manager.hpp @@ -126,6 +126,7 @@ public: void SetCategoryName(kml::MarkGroupId categoryId, std::string const & name); void SetCategoryTags(kml::MarkGroupId categoryId, std::vector const & tags); + void SetCategoryAccessRules(kml::MarkGroupId categoryId, kml::AccessRules accessRules); bool DeleteBmCategory(kml::MarkGroupId groupId); void NotifyChanges(); @@ -427,6 +428,7 @@ private: void SetCategoryName(kml::MarkGroupId categoryId, std::string const & name); void SetCategoryTags(kml::MarkGroupId categoryId, std::vector const & tags); + void SetCategoryAccessRules(kml::MarkGroupId categoryId, kml::AccessRules accessRules); bool DeleteBmCategory(kml::MarkGroupId groupId); void ClearCategories();