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 <p.wasowski2@samsung.com>
m_conversations.push_back(msg);
}
-std::vector<std::shared_ptr<MessageConversation>> ConversationCallbackData::getConversations()
+void ConversationCallbackData::setConversations(ConversationPtrVector&& conversations) {
+ m_conversations = conversations;
+}
+
+ConversationPtrVector ConversationCallbackData::getConversations()
const {
return m_conversations;
}
#include "MsgCommon/AttributeFilter.h"
#include "MsgCommon/SortMode.h"
+#include "message_conversation.h"
#include "messaging/callback_user_data.h"
#include "messaging_util.h"
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;
SortModePtr m_sort;
long m_limit;
long m_offset;
- std::vector<std::shared_ptr<MessageConversation>> m_conversations;
+ ConversationPtrVector m_conversations;
int m_account_id;
MessageType m_service_type;
};
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();
return;
}
- PlatformResult ret = FindConversationsPlatform(callback);
- if (ret.IsError()) {
- LoggerE("%d (%s)", static_cast<int>(ret.error_code()), (ret.message()).c_str());
- callback->SetError(ret);
+ 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);
}
- // Complete task
LoggerD("callback: %p error:%d conversations.size()=%zu", callback, callback->IsError(),
callback->getConversations().size());
LoggerD("Calling success callback");
std::vector<picojson::value> response;
- auto messages = callback->getConversations();
- std::for_each(messages.begin(), messages.end(),
- [&response](std::shared_ptr<MessageConversation>& conversation) {
- response.push_back(MessagingUtil::conversationToJson(conversation));
- });
+ for (ConversationPtr& conversation : callback->getConversations()) {
+ response.push_back(MessagingUtil::conversationToJson(conversation));
+ }
callback->SetSuccess(picojson::value(response));
}
using SharedPtrVector = std::vector<std::shared_ptr<T>>;
template <typename T>
-void filterVector(const AbstractFilter& filter, SharedPtrVector<T>* vec) {
+void filterVector(const AbstractFilterPtr& 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 SortMode& sortMode, SharedPtrVector<T>* vec) {
+void sortVector(const SortModePtr& 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);
}
}
-} // namespace
-PlatformResult MessagingDatabaseManager::retrieveEmailThreadsFromDatabase(
+PlatformResult retrieveEmailThreadsFromDatabase(
const ConversationCallbackData& findEmailConversationsData,
ConversationPtrVector* conversations) {
ScopeLogger();
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);
}
std::pair<int, email_mail_data_t*>* result);
common::PlatformResult findShortMessageConversations(ConversationCallbackData* callback,
std::vector<int>* result);
- common::PlatformResult findEmailConversations(const ConversationCallbackData& callback,
- ConversationPtrVector* conversations);
+ common::PlatformResult findEmailConversations(
+ ConversationCallbackData* findEmailConversationsData);
private:
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;
};