ChangeListenerContainer& ChangeListenerContainer::getInstance()
{
+ LoggerD("Entered");
EmailManager::getInstance(); //make sure that callbacks are registered in email-service
//ShortMsgManager::getInstance(); //make sure that callbacks are registered in msg-service
static ChangeListenerContainer clc;
}
int ChangeListenerContainer::getNextId() {
+ LoggerD("Entered");
// mutex is created only on first call (first call added to constructor
// to initialize mutex correctly
static std::mutex id_mutex;
m_service_type(UNDEFINED),
queue_(queue)
{
+ LoggerD("Entered");
}
ConversationCallbackData::ConversationCallbackData(long cid, PostQueue& queue, bool keep):
m_service_type(UNDEFINED),
queue_(queue)
{
+ LoggerD("Entered");
auto json = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
picojson::object& o = json->get<picojson::object>();
o[JSON_CALLBACK_ID] = picojson::value(static_cast<double>(cid));
ConversationCallbackData::~ConversationCallbackData()
{
+ LoggerD("Entered");
}
void ConversationCallbackData::setFilter(AbstractFilterPtr filter)
void ConversationCallbackData::setError(const std::string& err_name,
const std::string& err_message)
{
+ LoggerD("Entered");
// keep only first error in chain
if (!m_is_error) {
+ LoggerD("Error has not been set yet");
picojson::object& obj = m_json->get<picojson::object>();
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR);
auto objData = picojson::object();
void ConversationCallbackData::SetError(const common::PlatformResult& error)
{
+ LoggerD("Entered");
// keep only first error in chain
if (!m_is_error) {
+ LoggerD("Error has not been set yet");
m_is_error = true;
picojson::object& obj = m_json->get<picojson::object>();
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR);
AbstractFilterPtr filter,
const ConversationPtrVector& source_conversations)
{
+ LoggerD("Entered");
if (filter) {
+ LoggerD("filter pointer is valid");
ConversationPtrVector filtered_conversations;
ConversationPtrVector::const_iterator it = source_conversations.begin();
ConversationPtrVector::const_iterator end_it = source_conversations.end();
return filtered_conversations;
}
else {
+ LoggerD("filter pointer is not valid");
return source_conversations;
}
}
static gboolean addDraftMessageCompleteCB(void *data)
{
+ LoggerD("Entered");
MessageCallbackUserData* callback =
static_cast<MessageCallbackUserData *>(data);
if (!callback) {
picojson::object& obj = json->get<picojson::object>();
if (json->contains(JSON_CALLBACK_ID) && obj.at(JSON_CALLBACK_ID).is<double>()) {
if (callback->isError()) {
+ LoggerD("Calling error callback");
callback->getQueue().resolve(obj.at(JSON_CALLBACK_ID).get<double>(),
json->serialize()
);
callback->getMessage()->setMessageStatus(MessageStatus::STATUS_FAILED);
}
else {
+ LoggerD("Calling success callback");
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
std::vector<picojson::value> recipients;
email_noti_on_network_event status,
int error_code)
{
- LoggerD("Enter");
+ LoggerD("Entered");
std::lock_guard<std::mutex> lock(m_mutex);
//find first request for this mail_id
email_mail_data_t* EmailManager::loadMessage(int msg_id)
{
+ LoggerD("Entered");
email_mail_data_t* mail_data = NULL;
int err = EMAIL_ERROR_NONE;
err = email_get_mail_data(msg_id, &mail_data);
EmailManager::SendReqMapIterator EmailManager::getSendRequest(int mail_id)
{
+ LoggerD("Entered");
for (auto it = m_sendRequests.begin(); it != m_sendRequests.end(); it++) {
if (it->second->getMessage()->getId() == mail_id) {
return it;
void EmailManager::freeMessage(email_mail_data_t* mail_data)
{
+ LoggerD("Entered");
if(!mail_data) {
return;
}
if (NULL != mailbox) {
err = email_free_mailbox(&mailbox, 1);
if (EMAIL_ERROR_NONE != err) {
- LoggerD("Failed to email_free_mailbox - err:%d ", err);
+ LoggerE("Failed to email_free_mailbox - err:%d ", err);
}
mailbox = NULL;
}
EmailManager::DeleteReqVector::iterator EmailManager::getDeleteRequest(
const std::vector<int> &ids)
{
+ LoggerD("Entered");
for (auto idIt = ids.begin(); idIt != ids.end(); ++idIt) {
for (auto reqIt = m_deleteRequests.begin(); reqIt != m_deleteRequests.end(); ++reqIt) {
MessagePtrVector msgs = reqIt->callback->getMessages();
void EmailManager::removeStatusCallback(const std::vector<int> &ids,
email_noti_on_storage_event status)
{
- LoggerD("Enter");
+ LoggerD("Entered");
std::lock_guard<std::mutex> lock(m_mutex);
DeleteReqVector::iterator it = getDeleteRequest(ids);
if (it != m_deleteRequests.end()) {
PlatformResult EmailManager::RemoveMessagesPlatform(MessagesCallbackUserData* callback)
{
+ LoggerD("Entered");
int error;
email_mail_data_t *mail = NULL;
}
PlatformResult EmailManager::UpdateMessagesPlatform(MessagesCallbackUserData* callback) {
+ LoggerD("Entered");
int error;
email_mail_data_t *mail = NULL;
SCOPE_EXIT {
PlatformResult EmailManager::FindMessagesPlatform(FindMsgCallbackUserData* callback)
{
+ LoggerD("Entered");
email_mail_data_t* mailList = NULL;
int mailListCount = 0;
PlatformResult EmailManager::FindConversationsPlatform(ConversationCallbackData* callback)
{
+ LoggerD("Entered");
int convListCount = 0;
std::lock_guard<std::mutex> lock(m_mutex);
void EmailManager::findConversations(ConversationCallbackData* callback)
{
- LoggerE("Entered");
+ LoggerD("Entered");
if(!callback){
LoggerE("Callback is null");
long EmailManager::getUniqueOpId()
{
+ LoggerD("Entered");
// mutex is created only on first call (first call added to constructor
// to initialize mutex correctly)
static std::mutex op_id_mutex;
PlatformResult EmailManager::FindFoldersPlatform(FoldersCallbackData* callback)
{
+ LoggerD("Entered");
int ret = EMAIL_ERROR_UNKNOWN;
int account_id = ACCOUNT_ID_NOT_INITIALIZED;
email_mailbox_t* mailboxes = NULL;
PlatformResult EmailManager::RemoveConversationsPlatform(ConversationCallbackData* callback)
{
+ LoggerD("Entered");
int error;
std::lock_guard<std::mutex> lock(m_mutex);
std::vector<std::shared_ptr<MessageConversation>> conversations =
m_service_type(UNDEFINED),
queue_(queue)
{
+ LoggerD("Entered");
}
FindMsgCallbackUserData::~FindMsgCallbackUserData()
{
+ LoggerD("Entered");
}
void FindMsgCallbackUserData::setFilter(AbstractFilterPtr filter)
void FindMsgCallbackUserData::setError(const std::string& err_name,
const std::string& err_message)
{
+ LoggerD("Entered");
// keep only first error in chain
if (!m_is_error) {
+ LoggerD("Error has not been set yet");
m_is_error = true;
m_err_name = err_name;
m_err_message = err_message;
void FindMsgCallbackUserData::SetError(const common::PlatformResult& error)
{
- // keep only first error in chain
- if (!m_is_error) {
+ LoggerD("Entered");
+ // keep only first error in chain
+ if (!m_is_error) {
+ LoggerD("Error has not been set yet");
m_is_error = true;
picojson::object& obj = m_json->get<picojson::object>();
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR);
m_is_error(false),
queue_(queue)
{
+ LoggerD("Entered");
}
FoldersCallbackData::FoldersCallbackData(long cid, PostQueue& queue, bool keep):
m_is_error(false),
queue_(queue)
{
+ LoggerD("Entered");
auto json = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
picojson::object& o = json->get<picojson::object>();
o[JSON_CALLBACK_ID] = picojson::value(static_cast<double>(cid));
}
FoldersCallbackData::~FoldersCallbackData() {
+ LoggerD("Entered");
}
void FoldersCallbackData::addFolder(std::shared_ptr<MessageFolder> folder)
void FoldersCallbackData::setError(const std::string& err_name,
const std::string& err_message)
{
+ LoggerD("Entered");
// keep only first error in chain
if (!m_is_error) {
+ LoggerD("Error has not been set yet");
m_is_error = true;
m_err_name = err_name;
m_err_message = err_message;
void FoldersCallbackData::SetError(const common::PlatformResult& error)
{
+ LoggerD("Entered");
// keep only first error in chain
if (!m_is_error) {
+ LoggerD("Error has not been set yet");
m_is_error = true;
picojson::object& obj = m_json->get<picojson::object>();
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR);
tizen::AbstractFilterPtr filter,
const FolderPtrVector& source_folders)
{
+ LoggerD("Entered");
if (filter) {
+ LoggerD("filter pointer is valid");
FolderPtrVector filtered_folders;
FolderPtrVector::const_iterator it = source_folders.begin();
FolderPtrVector::const_iterator end_it = source_folders.end();
std::string Message::convertEmailRecipients(const std::vector<std::string> &recipients)
{
+ LoggerD("Entered");
std::string address = "";
unsigned size = recipients.size();
for (unsigned i=0; i<size; ++i)
PlatformResult saveToTempFile(const std::string &data, std::string* file_name)
{
+ LoggerD("Entered");
char buf[] = "XXXXXX";
int res = 0;
PlatformResult removeDirFromTemp(const std::string& dirPath)
{
+ LoggerD("Entered");
if(EINA_TRUE != ecore_file_recursive_rm(dirPath.c_str())) {
return PlatformResult(ErrorCode::UNKNOWN_ERR, "Unknown error while deleting temp directory.");
}
PlatformResult Message::convertPlatformEmail(std::shared_ptr<Message> message,
email_mail_data_t** result_mail_data)
{
+ LoggerD("Entered");
email_mail_data_t* mail_data = nullptr;
if(EMAIL != message->getType()) {
LoggerE("Invalid type");
}
if(message->getBody()) {
+ LoggerD("get Body success");
std::shared_ptr<MessageBody> body;
body = message->getBody();
if(!body->getPlainBody().empty()) {
PlatformResult addSingleEmailAttachment(std::shared_ptr<Message> message,
std::shared_ptr<MessageAttachment> att, AttachmentType attType)
{
+ LoggerD("Entered");
std::string dirPath = "";
PlatformResult ret = copyFileToTemp(att->getFilePath(), &dirPath);
if (ret.IsError()) return ret;
PlatformResult Message::addSMSRecipientsToStruct(const std::vector<std::string> &recipients,
msg_struct_t &msg)
{
+ LoggerD("Entered");
const unsigned size = recipients.size();
for (unsigned int i = 0; i < size; ++i) {
char *address = const_cast<char *>(recipients.at(i).c_str());
PlatformResult Message::addMMSRecipientsToStruct(const std::vector<std::string> &recipients,
msg_struct_t &msg, int type)
{
+ LoggerD("Entered");
const unsigned size = recipients.size();
for (unsigned int i = 0; i < size; ++i) {
std::string Message::getShortMsgSenderFromStruct(msg_struct_t &msg)
{
+ LoggerD("Entered");
msg_list_handle_t addr_list = NULL;
msg_get_list_handle(msg, MSG_MESSAGE_ADDR_LIST_HND, (void **)&addr_list);
PlatformResult Message::getSMSRecipientsFromStruct(msg_struct_t &msg,
std::vector<std::string>* result_address)
{
+ LoggerD("Entered");
std::vector<std::string> address;
msg_list_handle_t addr_list = NULL;
if (MSG_SUCCESS
PlatformResult Message::getMMSRecipientsFromStruct(msg_struct_t &msg,
int type, std::vector<std::string>* result_address)
{
+ LoggerD("Entered");
std::vector<std::string> address;
msg_list_handle_t addr_list = NULL;
if (MSG_SUCCESS
}
PlatformResult Message::convertPlatformShortMessageToObject(msg_struct_t msg, Message** result_message){
+ LoggerD("Entered");
Message *message = nullptr;
int infoInt;
bool infoBool;
std::vector<std::string> recp_list;
PlatformResult ret = message->getSMSRecipientsFromStruct(msg, &recp_list);
if (ret.IsError()) {
+ LoggerE("failed to get SMS recipients from struct");
if (message) delete message;
return ret;
}
std::vector<std::string> recp_list;
PlatformResult ret = getMMSRecipientsFromStruct(msg, MSG_RECIPIENTS_TYPE_TO, &recp_list);
if (ret.IsError()) {
+ LoggerE("failed to get MMS recipients from struct");
if (message) delete message;
return ret;
}
message->setTO(recp_list);
ret = getMMSRecipientsFromStruct(msg, MSG_RECIPIENTS_TYPE_CC, &recp_list);
if (ret.IsError()) {
+ LoggerE("failed to get MMS recipients from struct");
if (message) delete message;
return ret;
}
message->setCC(recp_list);
ret = getMMSRecipientsFromStruct(msg, MSG_RECIPIENTS_TYPE_BCC, &recp_list);
if (ret.IsError()) {
+ LoggerE("failed to get MMS recipients from struct");
if (message) delete message;
return ret;
}
//set attachments
ret = setMMSBodyAndAttachmentsFromStruct(message, msg);
if (ret.IsError()) {
+ LoggerE("failed to set body attachments from struct");
if (message) delete message;
return ret;
}
}
PlatformResult Message::findShortMessageById(const int id, MessagePtr* message) {
+ LoggerD("Entered");
msg_struct_t msg;
PlatformResult ret = ShortMsgManager::getInstance().getMessage(id, &msg);
if (ret.IsError()) {
std::vector<std::string> Message::split(const std::string& input,
char delimiter)
{
+ LoggerD("Entered");
std::vector<std::string> ret;
std::stringstream stream(input);
std::string item;
std::vector<std::string> Message::getEmailRecipientsFromStruct(const char *recipients)
{
+ LoggerD("Entered");
std::vector<std::string> tmp = Message::split(recipients, ';');
for (std::vector<std::string>::iterator it = tmp.begin(); it != tmp.end(); ++it) {
*it = MessagingUtil::ltrim(*it);
std::shared_ptr<MessageBody> Message::convertEmailToMessageBody(
email_mail_data_t& mail)
{
- LoggerD("Enter");
+ LoggerD("Entered");
std::shared_ptr<MessageBody> body (new MessageBody());
body->updateBody(mail);
return body;
PlatformResult Message::convertEmailToMessageAttachment(email_mail_data_t& mail,
AttachmentPtrVector* att)
{
- LoggerD("Enter");
+ LoggerD("Entered");
email_attachment_data_t* attachment = NULL;
int attachmentCount = 0;
PlatformResult Message::convertPlatformEmailToObject(
email_mail_data_t& mail, std::shared_ptr<Message>* result)
{
- LoggerD("Enter");
+ LoggerD("Entered");
Message* message = new MessageEmail();
PlatformResult ret = message->updateEmailMessage(mail);
if (ret.IsError()) {
std::string MessageAttachment::getShortFileName() const
{
+ LoggerD("Entered");
if (!m_isFilePathSet) {
return "";
}
void MessageAttachment::setFilePath(const std::string &value)
{
+ LoggerD("Entered");
std::string tmp = value;
// change to lower case
for (int i = 0; i < tmp.length() && i < 4; i++) {
std::map<unsigned int, std::string>& MessageAttachment::initializeMIMETypeEnumToStringMap()
{
+ LoggerD("Entered");
static std::map<unsigned int, std::string> enumToString;
//0
enumToString[MIME_ASTERISK] = "*/*";
std::map<std::string, unsigned int>& MessageAttachment::initializeMIMETypeStringToEnumMap()
{
+ LoggerD("Entered");
static std::map<std::string, unsigned int> stringToEnum;
//0
stringToEnum["*/*"] = MIME_ASTERISK;
unsigned int MessageAttachment::MIMETypeStringToEnum(std::string str)
{
+ LoggerD("Entered");
std::map<std::string, unsigned int>::iterator it = MIMETypeStringToEnumMap.find(str);
if (it != MIMETypeStringToEnumMap.end()) {
return it->second;
std::string MessageAttachment::MIMETypeEnumToString(unsigned int num)
{
+ LoggerD("Entered");
std::map<unsigned int, std::string>::iterator it = MIMETypeEnumToStringMap.find(num);
if (it != MIMETypeEnumToStringMap.end()) {
return it->second;
void MessageAttachment::updateWithAttachmentData(const email_attachment_data_t& attachment_data)
{
+ LoggerD("Entered");
setId(attachment_data.attachment_id);
setMessageId(attachment_data.mail_id);
if (attachment_data.attachment_mime_type) {
m_plainBody(""),
m_htmlBody("")
{
+ LoggerD("Entered");
}
MessageBody::~MessageBody()
{
+ LoggerD("Entered");
}
// messageId
PlatformResult MessageBody::updateBody(email_mail_data_t& mail)
{
- LoggerD("Enter");
+ LoggerD("Entered");
setMessageId(mail.mail_id);
setLoaded(mail.body_download_status);
m_is_error(false),
queue_(queue)
{
+ LoggerD("Entered");
}
MessageCallbackUserData::~MessageCallbackUserData() {
+ LoggerD("Entered");
}
void MessageCallbackUserData::setMessage(std::shared_ptr<Message> message) {
void MessageCallbackUserData::setError(const std::string& err_name,
const std::string& err_message)
{
+ LoggerD("Entered");
// keep only first error in chain
if (!m_is_error) {
+ LoggerD("Error has not been set yet");
picojson::object& obj = m_json->get<picojson::object>();
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR);
auto objData = picojson::object();
void MessageCallbackUserData::setError(const common::PlatformResult& error)
{
+ LoggerD("Entered");
// keep only first error in chain
if (!m_is_error) {
+ LoggerD("Error has not been set yet");
m_is_error = true;
picojson::object& obj = m_json->get<picojson::object>();
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR);
PlatformResult MessageConversation::convertMsgConversationToObject(
unsigned int threadId, msg_handle_t handle, std::shared_ptr<MessageConversation>* result)
{
+ LoggerD("Entered");
std::shared_ptr<MessageConversation> conversation (new MessageConversation());
msg_struct_t msgInfo = NULL;
PlatformResult MessageConversation::convertEmailConversationToObject(
unsigned int threadId, std::shared_ptr<MessageConversation>* result)
{
+ LoggerD("Entered");
std::shared_ptr<MessageConversation> conversation (new MessageConversation());
email_mail_list_item_t *resultMail = NULL;
PlatformResult MessageEmail::updateEmailMessage(email_mail_data_t& mail)
{
- LoggerD("Enter");
+ LoggerD("Entered");
std::vector<std::string> recp_list;
setId(mail.mail_id);
}
PlatformResult ret = getBody()->updateBody(mail);
- if (ret.IsError()) return ret;
+ if (ret.IsError()) {
+ LoggerE("Update Email body failed");
+ return ret;
+ }
if (mail.mail_id != mail.thread_id) {
setInResponseTo(mail.thread_id);
m_type(type),
m_synchronizable(synchronizable)
{
+ LoggerD("Entered");
}
MessageFolder::MessageFolder(email_mailbox_t mailbox)
{
+ LoggerD("Entered");
m_id = std::to_string(mailbox.mailbox_id);
m_parent_id_set = false;
m_service_id = std::to_string(mailbox.account_id);
MessageFolderType MessageFolder::convertPlatformFolderType(
email_mailbox_type_e folderType)
{
+ LoggerD("Entered");
switch (folderType) {
case email_mailbox_type_e::EMAIL_MAILBOX_TYPE_INBOX:
return MessageFolderType::MESSAGE_FOLDER_TYPE_INBOX;
// *** overrided methods
void MessageMMS::setCC(std::vector<std::string> &cc)
{
+ LoggerD("Entered");
// CC recipient's format validation should be done by email service
m_cc = cc;
void MessageMMS::setBCC(std::vector<std::string> &bcc)
{
+ LoggerD("Entered");
// BCC recipient's format validation should be done by email service
m_bcc = bcc;
void MessageMMS::setMessageAttachments(AttachmentPtrVector &attachments)
{
+ LoggerD("Entered");
m_attachments = attachments;
m_has_attachment = true;
void MessageRecipientsCallbackData::setError(const std::string& err_name,
const std::string& err_message)
{
+ LoggerD("Entered");
// keep only first error in chain
if (!m_is_error) {
+ LoggerD("Error has not been set yet");
m_is_error = true;
picojson::object& obj = m_json->get<picojson::object>();
void MessageRecipientsCallbackData::setError(const PlatformResult& error)
{
+ LoggerD("Entered");
// keep only first error in chain
if (!m_is_error) {
+ LoggerD("Error has not been set yet");
m_is_error = true;
picojson::object& obj = m_json->get<picojson::object>();
bool MessageRecipientsCallbackData::setSimIndex(
int sim_index)
{
+ LoggerD("Entered");
char **cp_list = tel_get_cp_name_list();
int sim_count = 0;
if (cp_list) {
void BaseMessageServiceCallbackData::setError(const std::string& err_name,
const std::string& err_message)
{
+ LoggerD("Entered");
// keep only first error in chain
if (!m_is_error) {
+ LoggerD("Error has not been set yet");
m_is_error = true;
picojson::object& obj = m_json->get<picojson::object>();
void BaseMessageServiceCallbackData::setError(const PlatformResult& error)
{
+ LoggerD("Entered");
// keep only first error in chain
if (!m_is_error) {
+ LoggerD("Error has not been set yet");
m_is_error = true;
picojson::object& obj = m_json->get<picojson::object>();
picojson::object MessageService::toPicoJS() const
{
+ LoggerD("Entered");
picojson::object picojs = picojson::object();
picojs[JSON_SERVICE_ID] = picojson::value(std::to_string(m_id));
picojs[JSON_SERVICE_TYPE] = picojson::value(getMsgServiceTypeString());
PlatformResult MessageServiceShortMsg::sendMessage(MessageRecipientsCallbackData *callback)
{
+ LoggerD("Entered");
if (!callback) {
LoggerE("Callback is null");
return PlatformResult(ErrorCode::UNKNOWN_ERR, "Callback is null");
PlatformResult MessageServiceShortMsg::loadMessageBody(MessageBodyCallbackData *callback)
{
+ LoggerD("Entered");
if (!callback) {
LoggerE("Callback is null");
return PlatformResult(ErrorCode::UNKNOWN_ERR, "Callback is null");
m_service_type(MessageType::UNDEFINED),
queue_(queue)
{
+ LoggerD("Entered");
}
MessagesCallbackUserData::MessagesCallbackUserData(long cid, PostQueue& queue, bool keep):
m_service_type(MessageType::UNDEFINED),
queue_(queue)
{
+ LoggerD("Entered");
auto json = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
picojson::object& o = json->get<picojson::object>();
o[JSON_CALLBACK_ID] = picojson::value(static_cast<double>(cid));
}
MessagesCallbackUserData::~MessagesCallbackUserData() {
+ LoggerD("Entered");
}
void MessagesCallbackUserData::addMessage(std::shared_ptr<Message> msg)
{
+ LoggerD("Entered");
m_messages.push_back(msg);
}
void MessagesCallbackUserData::setError(const std::string& err_name,
const std::string& err_message)
{
+ LoggerD("Entered");
// keep only first error in chain
if (!m_is_error) {
+ LoggerD("Error has not been set yet");
picojson::object& obj = m_json->get<picojson::object>();
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR);
auto objData = picojson::object();
{
// keep only first error in chain
if (!m_is_error) {
+ LoggerD("Error has not been set yet");
m_is_error = true;
picojson::object& obj = m_json->get<picojson::object>();
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_ERROR);
std::string limitedString(const std::string& src,
const size_t max_len = 40)
{
+ LoggerD("Entered");
if(src.length() > max_len) {
return src.substr(0,max_len);
} else {
return filtered_messages;
}
else {
+ LoggerD("Abstract filter pointer is null");
return source_messages;
}
}
sql_type(UNDEFINED_TYPE),
any_type(PrimitiveType_NoType)
{
+ LoggerD("Entered");
}
AttributeInfo::AttributeInfo(const std::string& in_sql_name,
sql_type(in_sql_type),
any_type(in_any_type)
{
+ LoggerD("Entered");
}
AttributeInfo::AttributeInfo(const AttributeInfo& other) :
sql_type(other.sql_type),
any_type(other.any_type)
{
+ LoggerD("Entered");
}
AttributeInfo& AttributeInfo::operator=(const AttributeInfo& other)
MessagingDatabaseManager::MessagingDatabaseManager()
{
+ LoggerD("Entered");
// Attributes map for short messages ==========================================
m_msg_attr_map.insert(std::make_pair("id",
AttributeInfo("A.MSG_ID", INTEGER, PrimitiveType_String)));
MessagingDatabaseManager::~MessagingDatabaseManager()
{
-
+ LoggerD("Entered");
}
MessagingDatabaseManager& MessagingDatabaseManager::getInstance()
{
+ LoggerD("Entered");
static MessagingDatabaseManager instance;
return instance;
}
std::string MessagingDatabaseManager::getMatchString(tizen::AnyPtr match_value,
const PrimitiveType type) const
{
+ LoggerD("Entered");
if(!match_value) {
LoggerD("Warning: match value is NULL");
return std::string();
match_value.c_str());
if ("serviceId" == attribute_name) {
+ LoggerD("Attribute name: serviceId");
int i_matchValue;
std::istringstream iss(match_value);
}
}
else if ("type" == attribute_name) {
+ LoggerD("Attribute name: type");
if ("messaging.sms" == match_value && MessageType::SMS == msgType) {
sqlQuery << "= " << msgType;
} else if ("messaging.mms" == match_value && MessageType::MMS == msgType) {
}
}
else if ("isRead" == attribute_name || "hasAttachment" == attribute_name) {
+ LoggerD("Attribute name: isRead or hasAttachment");
if (attr_filter->getMatchValue()->toBool()) {
sqlQuery << "> 0";
} else {
}
}
else if ("isHighPriority" == attribute_name) {
+ LoggerD("Attribute name: isHighPriority");
if (attr_filter->getMatchValue()->toBool()) {
sqlQuery << "= ";
} else {
}
}
else {
+ LoggerD("Another attribute");
// Addresses which are stored in database can have different form than in filters
if (MessageType::EMAIL == msgType && ("from" == attribute_name ||
"to" == attribute_name || "cc" == attribute_name ||
case ATTRIBUTE_FILTER: {
std::string query;
PlatformResult ret = getAttributeFilterQuery(filters_arr[i], attribute_map, msg_type, &query);
- if (ret.IsError()) return ret;
+ if (ret.IsError()) {
+ LoggerE("Get attribute filter query failed (%s)", ret.message().c_str());
+ return ret;
+ }
sql_query << query;
break;
}
case ATTRIBUTE_RANGE_FILTER: {
std::string query;
PlatformResult ret = getAttributeRangeFilterQuery(filters_arr[i], attribute_map, msg_type, &query);
- if (ret.IsError()) return ret;
+ if (ret.IsError()) {
+ LoggerE("Get attribute filter range filter query failed (%s)", ret.message().c_str());
+ return ret;
+ }
sql_query << query;
break;
}
case COMPOSITE_FILTER: {
std::string query;
PlatformResult ret = getCompositeFilterQuery(filters_arr[i], attribute_map, msg_type, &query);
- if (ret.IsError()) return ret;
+ if (ret.IsError()) {
+ LoggerE("Get composite filter query failed (%s)", ret.message().c_str());
+ return ret;
+ }
sql_query << query;
break;
}
case ATTRIBUTE_FILTER: {
std::string query;
PlatformResult ret = getAttributeFilterQuery(filter, attribute_map, msg_type, &query);
- if (ret.IsError()) return ret;
+ if (ret.IsError()) {
+ LoggerE("Get attribute filter query failed (%s)", ret.message().c_str());
+ return ret;
+ }
sql_query << query;
break;
}
case ATTRIBUTE_RANGE_FILTER: {
std::string query;
PlatformResult ret = getAttributeRangeFilterQuery(filter, attribute_map, msg_type, &query);
- if (ret.IsError()) return ret;
+ if (ret.IsError()) {
+ LoggerE("Get attribute range filter query failed (%s)", ret.message().c_str());
+ return ret;
+ }
sql_query << query;
break;
}
case COMPOSITE_FILTER : {
std::string query;
PlatformResult ret = getCompositeFilterQuery(filter, attribute_map, msg_type, &query);
- if (ret.IsError()) return ret;
+ if (ret.IsError()) {
+ LoggerE("Get composite filter query failed (%s)", ret.message().c_str());
+ return ret;
+ }
sql_query << query;
break;
}
std::string filters_query;
PlatformResult ret = addFilters(filter, sortMode, limit, offset, m_msg_attr_map,
msgType, &filters_query);
- if (ret.IsError()) return ret;
+ if (ret.IsError()) {
+ LoggerE("Add filters failed (%s)", ret.message().c_str());
+ return ret;
+ }
sqlQuery << filters_query;
LoggerD("%s", sqlQuery.str().c_str());
// Getting results from database
msg_error_t err = getTable(sqlQuery.str(), &results, &resultsCount);
if (MSG_SUCCESS != err) {
+ LoggerE("Getting results from database failed [%d]", err);
freeTable(&results);
return PlatformResult(ErrorCode::UNKNOWN_ERR,
"Error while getting data from database.");
std::string filters_query;
PlatformResult ret = addFilters(filter, sortMode, limit, offset,
m_email_attr_map, msgType, &filters_query);
- if (ret.IsError()) return ret;
+ if (ret.IsError()) {
+ LoggerE("Add filters failed (%s)", ret.message().c_str());
+ return ret;
+ }
sqlWhereClause << "WHERE "
<< m_email_attr_map["serviceId"].sql_name << " = " << accountId << " AND "
<< filters_query;
std::string filters_query;
PlatformResult ret = addFilters(filter, sortMode, limit, offset, m_msg_conv_attr_map,
msgType, &filters_query);
- if (ret.IsError()) return ret;
+ if (ret.IsError()) {
+ LoggerE("Add filters failed (%s)", ret.message().c_str());
+ return ret;
+ }
sqlQuery << filters_query;
LoggerD("%s", sqlQuery.str().c_str());
// Getting results from database
msg_error_t err = getTable(sqlQuery.str(), &results, &resultsCount);
if (MSG_SUCCESS != err) {
+ LoggerE("Getting results from database failed [%d]", err);
freeTable(&results);
return PlatformResult(ErrorCode::UNKNOWN_ERR,
"Error while getting data from database.");
std::string filters_query;
PlatformResult ret = addFilters(filter, sortMode, limit, offset, m_email_conv_attr_map,
msgType, &filters_query);
- if (ret.IsError()) return ret;
+ if (ret.IsError()) {
+ LoggerE("Add filters failed (%s)", ret.message().c_str());
+ return ret;
+ }
sqlWhereClause << "WHERE "
<< m_email_conv_attr_map["serviceId"].sql_name << " = " << accountId << " AND "
<< filters_query;
}
MessagingExtension::MessagingExtension() {
+ LoggerD("Entered");
SetExtensionName(kMessaging);
SetJavaScriptAPI(kSource_messaging_api);
const char* entry_points[] = {
SetExtraJSEntryPoints(entry_points);
}
-MessagingExtension::~MessagingExtension() {}
+MessagingExtension::~MessagingExtension() {
+ LoggerD("Entered");
+}
common::Instance* MessagingExtension::CreateInstance() {
LoggerD("Entered");
}
#define POST_AND_RETURN(ret, json, obj, action) \
+ LoggerE("Error occured: (%s)", ret.message().c_str()); \
picojson::object args; \
ReportError(ret, &args); \
obj[JSON_DATA] = picojson::value(args); \
sms_service(nullptr),
mms_service(nullptr),
instance_(instance) {
+ LoggerD("Entered");
}
MessagingManager::MessagingManager(MessagingInstance& instance):
std::string MessagingUtil::messageFolderTypeToString(MessageFolderType type)
{
+ LoggerD("Entered");
switch(type) {
case MessageFolderType::MESSAGE_FOLDER_TYPE_INBOX:
return FOLDER_TYPE_INBOX;
MessageFolderType MessagingUtil::stringToMessageFolderType(std::string type)
{
+ LoggerD("Entered");
if (FOLDER_TYPE_INBOX == type) {
return MessageFolderType::MESSAGE_FOLDER_TYPE_INBOX;
}
PlatformResult MessagingUtil::stringToMessageType(const std::string& str, MessageType* out)
{
+ LoggerD("Entered");
const auto it = stringToTypeMap.find(str);
if (it == stringToTypeMap.end()) {
common::PlatformResult MessagingUtil::messageTypeToString(MessageType type, std::string* out)
{
+ LoggerD("Entered");
const auto it = typeToStringMap.find(type);
if (it == typeToStringMap.end()) {
}
std::string MessagingUtil::messageTypeToString(MessageType type) {
+ LoggerD("Entered");
std::string type_str;
PlatformResult platform_result = messageTypeToString(type, &type_str);
assert(platform_result);
std::string MessagingUtil::ltrim(const std::string& input)
{
+ LoggerD("Entered");
std::string str = input;
std::string::iterator i;
for (i = str.begin(); i != str.end(); i++) {
std::string MessagingUtil::extractSingleEmailAddress(const std::string& address)
{
+ LoggerD("Entered");
std::size_t found_begin = address.rfind('<');
std::size_t found_end = address.rfind('>');
// if both '<' and '>' bracket found and '<' is before '>'
std::vector<std::string> MessagingUtil::extractEmailAddresses(
const std::vector<std::string>& addresses)
{
+ LoggerD("Entered");
std::vector<std::string> extractedAddresses;
for(auto it = addresses.begin(); it != addresses.end(); ++it) {
extractedAddresses.push_back(MessagingUtil::extractSingleEmailAddress(*it));
PlatformResult MessagingUtil::loadFileContentToString(const std::string& file_path, std::string* result)
{
+ LoggerD("Entered");
std::ifstream input_file;
input_file.open(file_path, std::ios::in);
picojson::value MessagingUtil::messageBodyToJson(std::shared_ptr<MessageBody> body)
{
+ LoggerD("Entered");
picojson::object b;
b[MESSAGE_BODY_ATTRIBUTE_MESSAGE_ID] = picojson::value(std::to_string(body->getMessageId()));
b[MESSAGE_BODY_ATTRIBUTE_LOADED] = picojson::value(body->getLoaded());
picojson::value MessagingUtil::messageToJson(std::shared_ptr<Message> message)
{
+ LoggerD("Entered");
picojson::object o;
std::vector<picojson::value> array;
picojson::value MessagingUtil::conversationToJson(std::shared_ptr<MessageConversation> conversation)
{
+ LoggerD("Entered");
picojson::object o;
o[MESSAGE_CONVERSATION_ATTRIBUTE_ID] = picojson::value(std::to_string(conversation->getConversationId()));
PlatformResult MessagingUtil::jsonFilterToAbstractFilter(const picojson::object& filter,
tizen::AbstractFilterPtr* result)
{
+ LoggerD("Entered");
const auto& type = filter.at(JSON_FILTER_TYPE).get<std::string>();
if (JSON_FILTER_ATTRIBUTE_TYPE == type) {
for (const auto& a : filter.at(JSON_TO_FILTER_ARRAY).get<picojson::array>()) {
AbstractFilterPtr filter;
PlatformResult ret = jsonFilterToAbstractFilter(a.get<picojson::object>(), &filter);
- if (ret.IsError()) return ret;
+ if (ret.IsError()) {
+ LoggerD("Convert JSON filter to Abstract filter failed (%s)", ret.message().c_str());
+ return ret;
+ }
compositeFilter->addFilter(filter);
}
msg_struct_t platform_msg = nullptr;
PlatformResult ret = Message::convertPlatformShortMessageToStruct(message.get(),
m_msg_handle, &platform_msg);
- if (ret.IsError()) return ret;
+ if (ret.IsError()) {
+ LoggerD("Convert Platform Short Message to Struct failed (%s)", ret.message().c_str());
+ return ret;
+ }
if (NULL == platform_msg) {
LoggerE("Failed to prepare platform message");
Message* msgInfo = nullptr;
ret = Message::convertPlatformShortMessageToObject(
platform_msg, &msgInfo);
- if (ret.IsError()) return ret;
+ if (ret.IsError()) {
+ LoggerD("Convert Platform Short Message to Object failed (%s)", ret.message().c_str());
+ return ret;
+ }
const int folderId = msgInfo->getFolderId();
message->setFolderId(folderId);
const time_t timestamp = msgInfo->getTimestamp();
PlatformResult ShortMsgManager::SendMessagePlatform(MessageRecipientsCallbackData* callback)
{
+ LoggerD("Entered");
std::lock_guard<std::mutex> lock(m_mutex);
PlatformResult platform_result(ErrorCode::NO_ERROR);
void ShortMsgManager::sendStatusCallback(msg_struct_t sent_status)
{
+ LoggerD("Entered");
int reqId = 0;
int status = MSG_NETWORK_NOT_SEND;
void ShortMsgManager::registerStatusCallback(msg_handle_t msg_handle)
{
+ LoggerD("Entered");
m_msg_handle = msg_handle;
// set message sent status callback
if (MSG_SUCCESS != msg_reg_sent_status_callback(m_msg_handle,
PlatformResult ShortMsgManager::getMessage(int msg_id, msg_struct_t* out_msg)
{
+ LoggerD("Entered");
msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
msg_struct_t msg = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
ConversationPtr conv;
PlatformResult ret = MessageConversation::convertMsgConversationToObject(
conv_id, ShortMsgManager::getInstance().m_msg_handle, &conv);
- if (ret.IsError()) return ret;
+ if (ret.IsError()) {
+ LoggerD("Convert msg conversation to object failed (%s)", ret.message().c_str());
+ return ret;
+ }
LoggerD("Pushed conv=%p", conv.get());
convs.push_back(conv);
}