Revert "[messaging] Refactor functions used to get email converations from DB" 23/201523/1
authorLukasz Bardeli <l.bardeli@samsung.com>
Fri, 15 Mar 2019 07:49:48 +0000 (07:49 +0000)
committerLukasz Bardeli <l.bardeli@samsung.com>
Fri, 15 Mar 2019 07:49:48 +0000 (07:49 +0000)
This reverts commit 452dfff3c3eecd63e38295ad0455b961d400d1cb.

Reason for revert: <INSERT REASONING HERE>

Change-Id: I2373c1fc684ff879af16e08ba9f92d26c4ca77da

src/messaging/conversation_callback_data.cc
src/messaging/conversation_callback_data.h
src/messaging/email_manager.cc
src/messaging/messaging_database_manager.cc
src/messaging/messaging_database_manager.h

index eaebee4..3267050 100644 (file)
@@ -55,11 +55,7 @@ void ConversationCallbackData::addConversation(std::shared_ptr<MessageConversati
   m_conversations.push_back(msg);
 }
 
-void ConversationCallbackData::setConversations(ConversationPtrVector&& conversations) {
-  m_conversations = conversations;
-}
-
-ConversationPtrVector ConversationCallbackData::getConversations()
+std::vector<std::shared_ptr<MessageConversation>> ConversationCallbackData::getConversations()
     const {
   return m_conversations;
 }
index 21ebedd..b8203de 100644 (file)
@@ -23,7 +23,6 @@
 
 #include "MsgCommon/AttributeFilter.h"
 #include "MsgCommon/SortMode.h"
-#include "message_conversation.h"
 #include "messaging/callback_user_data.h"
 #include "messaging_util.h"
 
@@ -46,7 +45,6 @@ class ConversationCallbackData : public CallbackUserData {
   void setLimit(long limit);
   void setOffset(long offset);
   void addConversation(std::shared_ptr<MessageConversation> msg);
-  void setConversations(ConversationPtrVector&& conversations);
 
   std::vector<std::shared_ptr<MessageConversation>> getConversations() const;
 
@@ -65,7 +63,7 @@ class ConversationCallbackData : public CallbackUserData {
   SortModePtr m_sort;
   long m_limit;
   long m_offset;
-  ConversationPtrVector m_conversations;
+  std::vector<std::shared_ptr<MessageConversation>> m_conversations;
   int m_account_id;
   MessageType m_service_type;
 };
index 04b6310..8c1207b 100644 (file)
@@ -1070,6 +1070,24 @@ void EmailManager::findMessages(FindMsgCallbackUserData* callback) {
   callback = NULL;
 }
 
+PlatformResult EmailManager::FindConversationsPlatform(ConversationCallbackData* callback) {
+  ScopeLogger();
+
+  std::lock_guard<std::mutex> lock(m_mutex);
+  std::vector<std::shared_ptr<MessageConversation>> 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();
 
@@ -1078,17 +1096,13 @@ void EmailManager::findConversations(ConversationCallbackData* callback) {
     return;
   }
 
-  PlatformResult result{ErrorCode::NO_ERROR};
-  {
-    std::lock_guard<std::mutex> lock(m_mutex);
-    result = MessagingDatabaseManager::getInstance().findEmailConversations(callback);
-  }
-
-  if (result.IsError()) {
-    LoggerE("%d (%s)", static_cast<int>(result.error_code()), (result.message()).c_str());
-    callback->SetError(result);
+  PlatformResult ret = FindConversationsPlatform(callback);
+  if (ret.IsError()) {
+    LoggerE("%d (%s)", static_cast<int>(ret.error_code()), (ret.message()).c_str());
+    callback->SetError(ret);
   }
 
+  // Complete task
   LoggerD("callback: %p error:%d conversations.size()=%zu", callback, callback->IsError(),
           callback->getConversations().size());
 
@@ -1098,9 +1112,11 @@ void EmailManager::findConversations(ConversationCallbackData* callback) {
     LoggerD("Calling success callback");
 
     std::vector<picojson::value> response;
-    for (ConversationPtr& conversation : callback->getConversations()) {
-      response.push_back(MessagingUtil::conversationToJson(conversation));
-    }
+    auto messages = callback->getConversations();
+    std::for_each(messages.begin(), messages.end(),
+                  [&response](std::shared_ptr<MessageConversation>& conversation) {
+                    response.push_back(MessagingUtil::conversationToJson(conversation));
+                  });
 
     callback->SetSuccess(picojson::value(response));
   }
index 4bfd947..25a6bba 100644 (file)
@@ -727,24 +727,24 @@ template <typename T>
 using SharedPtrVector = std::vector<std::shared_ptr<T>>;
 
 template <typename T>
-void filterVector(const AbstractFilterPtr& filter, SharedPtrVector<T>* vec) {
+void filterVector(const AbstractFilter& filter, SharedPtrVector<T>* vec) {
   ScopeLogger();
 
   auto toBeFilteredOut = [&filter](const std::shared_ptr<T>& 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 <typename T>
-void sortVector(const SortModePtr& sortMode, SharedPtrVector<T>* vec) {
+void sortVector(const SortMode& sortMode, SharedPtrVector<T>* 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,8 +945,9 @@ void convertToMessageConversations(const email_mail_data_t* mailData, int mailDa
   }
 }
 
+}  // namespace
 
-PlatformResult retrieveEmailThreadsFromDatabase(
+PlatformResult MessagingDatabaseManager::retrieveEmailThreadsFromDatabase(
     const ConversationCallbackData& findEmailConversationsData,
     ConversationPtrVector* conversations) {
   ScopeLogger();
@@ -995,25 +996,22 @@ PlatformResult retrieveEmailThreadsFromDatabase(
   return PlatformResult{ErrorCode::NO_ERROR};
 }
 
-}  // namespace
-
 PlatformResult MessagingDatabaseManager::findEmailConversations(
-    ConversationCallbackData* findEmailConversationsData) {
+    const ConversationCallbackData& findEmailConversationsData,
+    ConversationPtrVector* conversations) {
   ScopeLogger();
 
-  ConversationPtrVector conversations;
-  auto result = retrieveEmailThreadsFromDatabase(*findEmailConversationsData, &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);
 }
 
index f88537e..5ab5573 100644 (file)
@@ -85,8 +85,8 @@ class MessagingDatabaseManager {
                                     std::pair<int, email_mail_data_t*>* result);
   common::PlatformResult findShortMessageConversations(ConversationCallbackData* callback,
                                                        std::vector<int>* result);
-  common::PlatformResult findEmailConversations(
-      ConversationCallbackData* findEmailConversationsData);
+  common::PlatformResult findEmailConversations(const ConversationCallbackData& callback,
+                                                ConversationPtrVector* conversations);
 
  private:
   MessagingDatabaseManager();
@@ -112,9 +112,13 @@ 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;
 };