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;
}
#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;
- ConversationPtrVector m_conversations;
+ std::vector<std::shared_ptr<MessageConversation>> 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 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());
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));
}
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);
}
}
+} // namespace
-PlatformResult retrieveEmailThreadsFromDatabase(
+PlatformResult MessagingDatabaseManager::retrieveEmailThreadsFromDatabase(
const ConversationCallbackData& findEmailConversationsData,
ConversationPtrVector* conversations) {
ScopeLogger();
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);
}
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();
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;
};