From: Pawel Wasowski
Date: Sat, 9 Feb 2019 14:30:47 +0000 (+0100)
Subject: [messaging] Refactor functions used to get email converations from DB
X-Git-Tag: submit/tizen/20190315.163126~5
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=452dfff3c3eecd63e38295ad0455b961d400d1cb;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git
[messaging] Refactor functions used to get email converations from DB
Implementation of the functions has been simplified.
[Verification] tct-messaging-email-tests pass rate did not
change after the change was applied
Change-Id: Id1e28b4c94b502d801dc5674a3fa7cf5f2844e16
Signed-off-by: Pawel Wasowski
---
diff --git a/src/messaging/conversation_callback_data.cc b/src/messaging/conversation_callback_data.cc
index 32670505..eaebee40 100644
--- a/src/messaging/conversation_callback_data.cc
+++ b/src/messaging/conversation_callback_data.cc
@@ -55,7 +55,11 @@ void ConversationCallbackData::addConversation(std::shared_ptr> ConversationCallbackData::getConversations()
+void ConversationCallbackData::setConversations(ConversationPtrVector&& conversations) {
+ m_conversations = conversations;
+}
+
+ConversationPtrVector ConversationCallbackData::getConversations()
const {
return m_conversations;
}
diff --git a/src/messaging/conversation_callback_data.h b/src/messaging/conversation_callback_data.h
index b8203dee..21ebeddb 100644
--- a/src/messaging/conversation_callback_data.h
+++ b/src/messaging/conversation_callback_data.h
@@ -23,6 +23,7 @@
#include "MsgCommon/AttributeFilter.h"
#include "MsgCommon/SortMode.h"
+#include "message_conversation.h"
#include "messaging/callback_user_data.h"
#include "messaging_util.h"
@@ -45,6 +46,7 @@ class ConversationCallbackData : public CallbackUserData {
void setLimit(long limit);
void setOffset(long offset);
void addConversation(std::shared_ptr msg);
+ void setConversations(ConversationPtrVector&& conversations);
std::vector> getConversations() const;
@@ -63,7 +65,7 @@ class ConversationCallbackData : public CallbackUserData {
SortModePtr m_sort;
long m_limit;
long m_offset;
- std::vector> m_conversations;
+ ConversationPtrVector m_conversations;
int m_account_id;
MessageType m_service_type;
};
diff --git a/src/messaging/email_manager.cc b/src/messaging/email_manager.cc
index 8c1207bc..04b6310a 100644
--- a/src/messaging/email_manager.cc
+++ b/src/messaging/email_manager.cc
@@ -1070,24 +1070,6 @@ void EmailManager::findMessages(FindMsgCallbackUserData* callback) {
callback = NULL;
}
-PlatformResult EmailManager::FindConversationsPlatform(ConversationCallbackData* callback) {
- ScopeLogger();
-
- std::lock_guard lock(m_mutex);
- std::vector> conversationsInfo;
- PlatformResult ret =
- MessagingDatabaseManager::getInstance().findEmailConversations(*callback, &conversationsInfo);
- if (ret.IsError()) return ret;
-
- LoggerD("Found %zu conversations", conversationsInfo.size());
-
- for (const auto& conversation : conversationsInfo) {
- callback->addConversation(conversation);
- }
-
- return PlatformResult(ErrorCode::NO_ERROR);
-}
-
void EmailManager::findConversations(ConversationCallbackData* callback) {
ScopeLogger();
@@ -1096,13 +1078,17 @@ void EmailManager::findConversations(ConversationCallbackData* callback) {
return;
}
- PlatformResult ret = FindConversationsPlatform(callback);
- if (ret.IsError()) {
- LoggerE("%d (%s)", static_cast(ret.error_code()), (ret.message()).c_str());
- callback->SetError(ret);
+ PlatformResult result{ErrorCode::NO_ERROR};
+ {
+ std::lock_guard lock(m_mutex);
+ result = MessagingDatabaseManager::getInstance().findEmailConversations(callback);
+ }
+
+ if (result.IsError()) {
+ LoggerE("%d (%s)", static_cast(result.error_code()), (result.message()).c_str());
+ callback->SetError(result);
}
- // Complete task
LoggerD("callback: %p error:%d conversations.size()=%zu", callback, callback->IsError(),
callback->getConversations().size());
@@ -1112,11 +1098,9 @@ void EmailManager::findConversations(ConversationCallbackData* callback) {
LoggerD("Calling success callback");
std::vector response;
- auto messages = callback->getConversations();
- std::for_each(messages.begin(), messages.end(),
- [&response](std::shared_ptr& conversation) {
- response.push_back(MessagingUtil::conversationToJson(conversation));
- });
+ for (ConversationPtr& conversation : callback->getConversations()) {
+ response.push_back(MessagingUtil::conversationToJson(conversation));
+ }
callback->SetSuccess(picojson::value(response));
}
diff --git a/src/messaging/messaging_database_manager.cc b/src/messaging/messaging_database_manager.cc
index 25a6bba1..4bfd947c 100644
--- a/src/messaging/messaging_database_manager.cc
+++ b/src/messaging/messaging_database_manager.cc
@@ -727,24 +727,24 @@ template
using SharedPtrVector = std::vector>;
template
-void filterVector(const AbstractFilter& filter, SharedPtrVector* vec) {
+void filterVector(const AbstractFilterPtr& filter, SharedPtrVector* vec) {
ScopeLogger();
auto toBeFilteredOut = [&filter](const std::shared_ptr& object_ptr) {
- return !filter.isMatching(object_ptr.get());
+ return !filter->isMatching(object_ptr.get());
};
vec->erase(std::remove_if(vec->begin(), vec->end(), toBeFilteredOut), vec->end());
}
template
-void sortVector(const SortMode& sortMode, SharedPtrVector* vec) {
+void sortVector(const SortModePtr& sortMode, SharedPtrVector* vec) {
ScopeLogger();
- const std::string attribute = sortMode.getAttributeName();
+ const std::string attribute = sortMode->getAttributeName();
auto comparator = T::getComparator(attribute);
- if (SortModeOrder::ASC == sortMode.getOrder()) {
+ if (SortModeOrder::ASC == sortMode->getOrder()) {
std::sort(vec->begin(), vec->end(), comparator);
} else {
std::sort(vec->rbegin(), vec->rend(), comparator);
@@ -945,9 +945,8 @@ void convertToMessageConversations(const email_mail_data_t* mailData, int mailDa
}
}
-} // namespace
-PlatformResult MessagingDatabaseManager::retrieveEmailThreadsFromDatabase(
+PlatformResult retrieveEmailThreadsFromDatabase(
const ConversationCallbackData& findEmailConversationsData,
ConversationPtrVector* conversations) {
ScopeLogger();
@@ -996,22 +995,25 @@ PlatformResult MessagingDatabaseManager::retrieveEmailThreadsFromDatabase(
return PlatformResult{ErrorCode::NO_ERROR};
}
+} // namespace
+
PlatformResult MessagingDatabaseManager::findEmailConversations(
- const ConversationCallbackData& findEmailConversationsData,
- ConversationPtrVector* conversations) {
+ ConversationCallbackData* findEmailConversationsData) {
ScopeLogger();
- auto result = retrieveEmailThreadsFromDatabase(findEmailConversationsData, conversations);
+ ConversationPtrVector conversations;
+ auto result = retrieveEmailThreadsFromDatabase(*findEmailConversationsData, &conversations);
if (result.IsError()) {
return result;
}
- filterVector(*findEmailConversationsData.getFilter(), conversations);
+ filterVector(findEmailConversationsData->getFilter(), &conversations);
- if (findEmailConversationsData.getSortMode()) {
- sortVector(*findEmailConversationsData.getSortMode(), conversations);
+ if (findEmailConversationsData->getSortMode()) {
+ sortVector(findEmailConversationsData->getSortMode(), &conversations);
}
+ findEmailConversationsData->setConversations(std::move(conversations));
return PlatformResult(ErrorCode::NO_ERROR);
}
diff --git a/src/messaging/messaging_database_manager.h b/src/messaging/messaging_database_manager.h
index 5ab55738..f88537e7 100644
--- a/src/messaging/messaging_database_manager.h
+++ b/src/messaging/messaging_database_manager.h
@@ -85,8 +85,8 @@ class MessagingDatabaseManager {
std::pair* result);
common::PlatformResult findShortMessageConversations(ConversationCallbackData* callback,
std::vector* result);
- common::PlatformResult findEmailConversations(const ConversationCallbackData& callback,
- ConversationPtrVector* conversations);
+ common::PlatformResult findEmailConversations(
+ ConversationCallbackData* findEmailConversationsData);
private:
MessagingDatabaseManager();
@@ -112,13 +112,9 @@ class MessagingDatabaseManager {
common::PlatformResult addFilters(tizen::AbstractFilterPtr filter, tizen::SortModePtr sortMode,
long limit, long offset, AttributeInfoMap& attributeMap,
MessageType msgType, std::string* result);
- common::PlatformResult retrieveEmailThreadsFromDatabase(
- const ConversationCallbackData& findEmailConversationsData,
- ConversationPtrVector* conversations);
AttributeInfoMap m_msg_attr_map;
AttributeInfoMap m_email_attr_map;
-
AttributeInfoMap m_msg_conv_attr_map;
};