/*
-* Copyright 2012 Samsung Electronics Co., Ltd
-*
-* Licensed under the Flora License, Version 1.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.tizenopensource.org/license
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd. All rights reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
#include <stdio.h>
#include "MsgStorageHandler.h"
#include "MsgNotificationWrapper.h"
#include "MsgMmsMessage.h"
+#include "MsgDevicedWrapper.h"
+
using namespace std;
/*==================================================================================================
VARIABLES
==================================================================================================*/
-extern MsgDbHandler dbHandle;
Mutex delNotiMx;
CndVar delNoticv;
/*==================================================================================================
FUNCTION FOR THREAD
==================================================================================================*/
-static gboolean updateUnreadMsgCount(void *pVoid)
+static gboolean resetNotification(void *pVoid)
{
MSG_BEGIN();
- int smsCnt = 0;
- int mmsCnt = 0;
-
- smsCnt = MsgStoGetUnreadCnt(&dbHandle, MSG_SMS_TYPE);
- mmsCnt = MsgStoGetUnreadCnt(&dbHandle, MSG_MMS_TYPE);
-
- MsgSettingSetIndicator(smsCnt, mmsCnt);
+ MsgRefreshAllNotification(true, false, false);
MSG_END();
/*==================================================================================================
FUNCTION IMPLEMENTATION
==================================================================================================*/
+
msg_error_t MsgStoAddMessage(MSG_MESSAGE_INFO_S *pMsg, MSG_SENDINGOPT_INFO_S *pSendOptInfo)
{
MSG_BEGIN();
char sqlQuery[MAX_QUERY_LEN+1];
- dbHandle.beginTrans();
+ MsgDbHandler *dbHandle = getDbHandle();
+
+ dbHandle->beginTrans();
if (pMsg->nAddressCnt > 0) {
- err = MsgStoAddAddress(&dbHandle, pMsg, &convId);
+ err = MsgStoAddAddress(dbHandle, pMsg, &convId);
if (err != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ dbHandle->endTrans(false);
return err;
}
pMsg->threadId = convId;
}
-
- ///////// temporary code for draft message in conversation view.
- if(convId > 0 && pMsg->folderId == MSG_DRAFT_ID) {
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
-
- snprintf(sqlQuery, sizeof(sqlQuery),
- "DELETE FROM %s WHERE CONV_ID = %d AND FOLDER_ID = %d;",
- MSGFW_MESSAGE_TABLE_NAME, convId, MSG_DRAFT_ID);
-
- MSG_DEBUG("sqlQuery [%s]", sqlQuery);
-
- err = dbHandle.execQuery(sqlQuery);
-
+ if (pMsg->msgId > 0) {
+ rowId = pMsg->msgId;
+ } else {
+ // get rowId
+ err = dbHandle->getRowId(MSGFW_MESSAGE_TABLE_NAME, &rowId);
if (err != MSG_SUCCESS) {
- MSG_DEBUG("fail to delete draft messages.");
+ dbHandle->endTrans(false);
+ return err;
}
+ pMsg->msgId = (msg_message_id_t)rowId;
}
- ////////
-
- err = dbHandle.getRowId(MSGFW_MESSAGE_TABLE_NAME, &rowId);
-
- if (err != MSG_SUCCESS) {
- dbHandle.endTrans(false);
- return err;
- }
-
- pMsg->msgId = (msg_message_id_t)rowId;
int fileSize = 0;
+ gchar *contents = NULL;
char *pFileData = NULL;
AutoPtr<char> buf(&pFileData);
- // Get File Data
- if (pMsg->bTextSms == false) {
- if (MsgOpenAndReadFile(pMsg->msgData, &pFileData, &fileSize) == false) {
- dbHandle.endTrans(false);
- return MSG_ERR_STORAGE_ERROR;
- }
- MSG_DEBUG("file size [%d]", fileSize);
- }
+ char keyName[MAX_VCONFKEY_NAME_LEN];
+ memset(keyName, 0x00, sizeof(keyName));
+ sprintf(keyName, "%s/%d", MSG_SIM_SUBS_ID, pMsg->sim_idx);
+
+ char *imsi = MsgSettingGetString(keyName);
// Add Message
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, %d, %d, %d, %d, %d, %ld, %d, %d, %d, %d, %d, %d, %ld, %d, ?, ?, ?, ?, 0);",
+ snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, %d, %d, %d, %d, %d, %u, %d, %d, %d, %d, %d, %d, %d, %d, ?, '', '', ?, 0, %d, '%s');",
MSGFW_MESSAGE_TABLE_NAME, rowId, convId, pMsg->folderId, pMsg->storageId, pMsg->msgType.mainType, pMsg->msgType.subType,
- pMsg->displayTime, pMsg->dataSize, pMsg->networkStatus, pMsg->bRead, pMsg->bProtected, pMsg->priority, pMsg->direction,
- 0, pMsg->bBackup);
+ (unsigned int)pMsg->displayTime, pMsg->dataSize, pMsg->networkStatus, pMsg->bRead, pMsg->bProtected, pMsg->priority, pMsg->direction,
+ 0, pMsg->bBackup, (int)pMsg->sim_idx, imsi);
MSG_DEBUG("QUERY : %s", sqlQuery);
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ g_free(imsi);
+ imsi = NULL;
+
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
- dbHandle.bindText(pMsg->subject, 1);
+ dbHandle->bindText(pMsg->subject, 1);
- dbHandle.bindText(pMsg->msgData, 2);
+ if (pMsg->msgType.subType == MSG_NOTIFICATIONIND_MMS) {
+ dbHandle->bindText("", 2);
+ } else {
+ if (pMsg->bTextSms == false) {
+ //CID 47860: pMsg->msgData is an array, hence null check is not required
+ char fn[MSG_FILEPATH_LEN_MAX];
+ memset(fn,0x00,MSG_FILEPATH_LEN_MAX);
+ snprintf(fn, MSG_FILEPATH_LEN_MAX, "%s%s", MSG_IPC_DATA_PATH, pMsg->msgData);
+
+ if (g_file_get_contents(fn, &contents, NULL, NULL)) {
+ MSG_DEBUG("g_file_get_contents() Success!!");
+ dbHandle->bindText(contents, 2);
+ } else {
+ MSG_DEBUG("g_file_get_contents() Failed!!");
+ dbHandle->bindText("", 2);
+ }
- dbHandle.bindText(pMsg->thumbPath, 3);
+ } else
+ dbHandle->bindText(pMsg->msgText, 2);
+ }
- if (pMsg->bTextSms == false)
- dbHandle.bindText(pFileData, 4);
- else
- dbHandle.bindText(pMsg->msgText, 4);
+ if (dbHandle->stepQuery() != MSG_ERR_DB_DONE) {
+ dbHandle->finalizeQuery();
+ dbHandle->endTrans(false);
+ //free contents
+ if (contents) {
+ g_free(contents);
+ contents = NULL;
+ }
- if (dbHandle.stepQuery() != MSG_ERR_DB_DONE) {
- dbHandle.finalizeQuery();
- dbHandle.endTrans(false);
return MSG_ERR_DB_EXEC;
}
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
+
+ //free contents
+ if (contents) {
+ g_free(contents);
+ contents = NULL;
+ }
if (pMsg->msgType.subType != MSG_SENDREQ_MMS) {
- err = MsgStoUpdateConversation(&dbHandle, convId);
+ err = MsgStoUpdateConversation(dbHandle, convId);
if (err != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ dbHandle->endTrans(false);
return err;
}
}
- dbHandle.endTrans(true);
-
+#if 0
/* In the case of MMS Message, load the MMS plugin to save MMS PDU */
if (pMsg->msgType.mainType == MSG_MMS_TYPE) {
- MMS_MESSAGE_DATA_S mmsMsg;
- memset(&mmsMsg, 0x00, sizeof(MMS_MESSAGE_DATA_S));
if (pMsg->msgType.subType != MSG_DELIVERYIND_MMS && pMsg->msgType.subType != MSG_READORGIND_MMS) {
+
MsgPlugin *plg = MsgPluginManager::instance()->getPlugin(MSG_MMS_TYPE);
+ if (pFileData == NULL) {
+ if (MsgOpenAndReadFile(pMsg->msgData, &pFileData, &fileSize) == false) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_STORAGE_ERROR;
+ }
+
+ MSG_DEBUG("file size [%d]", fileSize);
+ }
+
err = plg->addMessage(pMsg, pSendOptInfo, pFileData);
- if (err != MSG_SUCCESS)
+ if (err != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_STORAGE_ERROR;
+ }
+
+ if (pMsg->msgType.subType == MSG_SENDREQ_MMS
+ || pMsg->msgType.subType == MSG_RETRIEVE_MMS
+ || pMsg->msgType.subType == MSG_RETRIEVE_AUTOCONF_MMS
+ || pMsg->msgType.subType == MSG_RETRIEVE_MANUALCONF_MMS) {
- if (pMsg->msgType.subType == MSG_SENDREQ_MMS) {
MSG_DEBUG("pMsg->msgText: %s, pMsg->thumbPath: %s ", pMsg->msgText, pMsg->thumbPath);
err = MsgStoUpdateMMSMessage(pMsg);
- if (err != MSG_SUCCESS)
+ if (err != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_STORAGE_ERROR;
+ }
+
+ }
+ }
+ } else if (pMsg->msgType.mainType == MSG_SMS_TYPE && pSendOptInfo != NULL) {
+ MsgPlugin *plg = MsgPluginManager::instance()->getPlugin(MSG_SMS_TYPE);
+ if (plg) err = plg->addMessage(pMsg, pSendOptInfo, NULL);
+ if (err != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_STORAGE_ERROR;
+ }
+ }
+#else
+ if (pMsg->msgType.mainType == MSG_MMS_TYPE) {
+ char *pMmsSerializedData = NULL;
+ AutoPtr<char> buf_mms(&pMmsSerializedData);
+
+ if (pMsg->msgType.subType != MSG_DELIVERYIND_MMS && pMsg->msgType.subType != MSG_READORGIND_MMS) {
+
+ MsgPlugin *plg = MsgPluginManager::instance()->getPlugin(MSG_MMS_TYPE);
+
+ if (pMmsSerializedData == NULL) {
+ if (MsgOpenAndReadFile(pMsg->msgData, &pMmsSerializedData, &fileSize) == false) {
+ dbHandle->endTrans(false);
return MSG_ERR_STORAGE_ERROR;
+ }
+
+ MSG_DEBUG("file size [%d]", fileSize);
+ }
+
+ err = plg->addMessage(pMsg, pSendOptInfo, pMmsSerializedData);
+
+ if (err != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_STORAGE_ERROR;
+ }
+
+// if (pMsg->msgText[0] != '\0') {
+// g_file_get_contents(pMsg->msgText, &pFileData, (gsize *)&fileSize, NULL);
+// MSG_DEBUG("file size [%d]", fileSize);
+// }
+
+ if (pMsg->msgType.subType == MSG_SENDREQ_MMS
+ || pMsg->msgType.subType == MSG_RETRIEVE_MMS
+ || pMsg->msgType.subType == MSG_RETRIEVE_AUTOCONF_MMS
+ || pMsg->msgType.subType == MSG_RETRIEVE_MANUALCONF_MMS)
+ {
+ MSG_DEBUG("pMsg->msgText: %s, pMsg->thumbPath: %s ", pMsg->msgText, pMsg->thumbPath);
+
+ err = MsgStoUpdateMMSMessage(pMsg);
+ }
+ }
+ } else {
+
+ // Get File Data
+ if (pMsg->bTextSms == false) {
+ if (MsgOpenAndReadFile(pMsg->msgData, &pFileData, &fileSize) == false) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_STORAGE_ERROR;
}
+ MSG_DEBUG("file size [%d]", fileSize);
}
}
+#endif
+ dbHandle->endTrans(true);
MSG_END();
char sqlQuery[MAX_QUERY_LEN+1];
msg_thread_id_t convId = 0;
+ MsgDbHandler *dbHandle = getDbHandle();
+ dbHandle->beginTrans();
+
+ MSG_MAIN_TYPE_T prevType;
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MAIN_TYPE FROM %s WHERE MSG_ID = %d;",
+ MSGFW_MESSAGE_TABLE_NAME, pMsg->msgId);
+
+ MSG_DEBUG("QUERY : %s", sqlQuery);
+
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_DB_PREPARE;
+ }
+
+ if (dbHandle->stepQuery() != MSG_ERR_DB_ROW) {
+ dbHandle->finalizeQuery();
+ dbHandle->endTrans(false);
+ return MSG_ERR_STORAGE_ERROR;
+ }
+
+ prevType = dbHandle->columnInt(0);
+ dbHandle->finalizeQuery();
- dbHandle.beginTrans();
+ //check msg type with previous type
+ if (prevType != pMsg->msgType.mainType) {
+ MSG_DEBUG("different msg type to update [prev : %d], [current : %d]", prevType, pMsg->msgType.mainType);
+
+ err = MsgStoDeleteMessage(pMsg->msgId, false);
+ if (err != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return err;
+ }
+
+ err = MsgStoAddMessage(pMsg, pSendOptInfo);
+ if (err != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return err;
+ }
+
+ dbHandle->endTrans(false);
+ return err;
+ }
if (pMsg->nAddressCnt > 0) {
- err = MsgStoAddAddress(&dbHandle, pMsg, &convId);
+ pMsg->threadId = 0;
+ err = MsgStoAddAddress(dbHandle, pMsg, &convId);
if (err != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ dbHandle->endTrans(false);
return err;
}
}
// Get File Data
if (pMsg->bTextSms == false) {
if (MsgOpenAndReadFile(pMsg->msgData, &pFileData, &fileSize) == false) {
- dbHandle.endTrans(false);
+ dbHandle->endTrans(false);
return MSG_ERR_STORAGE_ERROR;
}
}
snprintf(sqlQuery, sizeof(sqlQuery), "UPDATE %s SET CONV_ID = %d, FOLDER_ID = %d, STORAGE_ID = %d, MAIN_TYPE = %d, SUB_TYPE = %d, \
DISPLAY_TIME = %lu, DATA_SIZE = %d, NETWORK_STATUS = %d, READ_STATUS = %d, PROTECTED = %d, PRIORITY = %d, MSG_DIRECTION = %d, \
- BACKUP = %d, SUBJECT = ?, MSG_DATA = ?, THUMB_PATH = ?, MSG_TEXT = ? \
+ BACKUP = %d, SUBJECT = ?, MSG_TEXT = ? \
WHERE MSG_ID = %d;",
MSGFW_MESSAGE_TABLE_NAME, convId, pMsg->folderId, pMsg->storageId, pMsg->msgType.mainType, pMsg->msgType.subType, pMsg->displayTime, pMsg->dataSize,
- pMsg->networkStatus, pMsg->bRead, pMsg->bProtected, pMsg->priority, pMsg->direction, pMsg->bBackup, pMsg->msgId);
+ pMsg->networkStatus, pMsg->bRead, pMsg->bProtected, pMsg->priority, pMsg->direction, pMsg->bBackup, (int)pMsg->msgId);
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
- dbHandle.bindText(pMsg->subject, 1);
-
- dbHandle.bindText(pMsg->msgData, 2);
-
- dbHandle.bindText(pMsg->thumbPath, 3);
+ dbHandle->bindText(pMsg->subject, 1);
if (pMsg->msgType.mainType == MSG_SMS_TYPE && pMsg->bTextSms == false)
- dbHandle.bindText(pFileData, 4);
+ dbHandle->bindText(pFileData, 2);
else
- dbHandle.bindText(pMsg->msgText, 4);
+ dbHandle->bindText(pMsg->msgText, 2);
MSG_DEBUG("%s", sqlQuery);
- if (dbHandle.stepQuery() != MSG_ERR_DB_DONE) {
- dbHandle.finalizeQuery();
- dbHandle.endTrans(false);
+ if (dbHandle->stepQuery() != MSG_ERR_DB_DONE) {
+ dbHandle->finalizeQuery();
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
if (pMsg->msgType.mainType == MSG_SMS_TYPE && pSendOptInfo != NULL) {
if (pSendOptInfo->bSetting == true) {
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "UPDATE %s SET \
- DELREP_REQ = %d, KEEP_COPY = %d, REPLY_PATH = %d \
- WHERE MSG_ID = %d;",
- MSGFW_SMS_SENDOPT_TABLE_NAME, pSendOptInfo->bDeliverReq,
- pSendOptInfo->bKeepCopy, pSendOptInfo->option.smsSendOptInfo.bReplyPath, pMsg->msgId);
-
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ snprintf(sqlQuery, sizeof(sqlQuery), "UPDATE %s SET "
+ "DELREP_REQ = %d, "
+ "KEEP_COPY = %d, "
+ "REPLY_PATH = %d, "
+ "ENCODE_TYPE = %d "
+ "WHERE MSG_ID = %d;",
+ MSGFW_SMS_SENDOPT_TABLE_NAME,
+ pSendOptInfo->bDeliverReq,
+ pSendOptInfo->bKeepCopy,
+ pSendOptInfo->option.smsSendOptInfo.bReplyPath,
+ pMsg->encodeType,
+ pMsg->msgId);
+
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
}
err = plg->updateMessage(pMsg, pSendOptInfo, pFileData);
if (err != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ dbHandle->endTrans(false);
return MSG_ERR_STORAGE_ERROR;
}
+
+ if (pMsg->msgType.subType == MSG_SENDREQ_MMS) {
+ MSG_SEC_DEBUG("pMsg->msgText: %s, pMsg->thumbPath: %s ", pMsg->msgText, pMsg->thumbPath);
+
+ err = MsgStoUpdateMMSMessage(pMsg);
+
+ if (err != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_STORAGE_ERROR;
+ }
+ }
}
- err = MsgStoUpdateConversation(&dbHandle, convId);
+ err = MsgStoUpdateConversation(dbHandle, convId);
if (err != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ dbHandle->endTrans(false);
return MSG_ERR_STORAGE_ERROR;
}
- err = MsgStoClearConversationTable(&dbHandle);
+ err = MsgStoClearConversationTable(dbHandle);
if (err != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ dbHandle->endTrans(false);
return MSG_ERR_STORAGE_ERROR;
}
- dbHandle.endTrans(true);
+ dbHandle->endTrans(true);
return MSG_SUCCESS;
}
msg_storage_id_t storageId;
- if (MsgStoSetReadStatus(&dbHandle, msgId, bRead) != MSG_SUCCESS) {
+ MsgDbHandler *dbHandle = getDbHandle();
+ if (MsgStoSetReadStatus(dbHandle, msgId, bRead) != MSG_SUCCESS) {
MSG_DEBUG("MsgStoSetReadStatus() Error");
return MSG_ERR_STORAGE_ERROR;
}
+ MsgRefreshAllNotification(true, false, false);
+
// Get STORAGE_ID
memset(sqlQuery, 0x00, sizeof(sqlQuery));
snprintf(sqlQuery, sizeof(sqlQuery), "SELECT STORAGE_ID FROM %s WHERE MSG_ID = %d;",
MSGFW_MESSAGE_TABLE_NAME, msgId);
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS)
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS)
return MSG_ERR_DB_PREPARE;
- if (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- storageId = dbHandle.columnInt(0);
+ if (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ storageId = dbHandle->columnInt(0);
} else {
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
return MSG_ERR_DB_STEP;
}
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
MSG_DEBUG("StorageId:[%d]", storageId);
+#ifndef FEATURE_SMS_CDMA
// Update Read Status for SIM Msg
if (storageId == MSG_STORAGE_SIM) {
MsgPlugin *plg = MsgPluginManager::instance()->getPlugin(MSG_SMS_TYPE);
// Get SIM Msg ID
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT SIM_ID FROM %s WHERE MSG_ID = %d;",
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT SIM_SLOT_ID, SIM_ID FROM %s WHERE MSG_ID = %d;",
MSGFW_SIM_MSG_TABLE_NAME, msgId);
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS)
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS)
return MSG_ERR_DB_PREPARE;
msg_sim_id_t simId;
+ msg_sim_slot_id_t sim_idx;
- while (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- simId = dbHandle.columnInt(0);
+ while (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ sim_idx = dbHandle->columnInt(0);
+ simId = dbHandle->columnInt(1);
- if (plg->setReadStatus(simId) != MSG_SUCCESS) {
+ if (plg->setReadStatus(sim_idx, simId) != MSG_SUCCESS) {
MSG_DEBUG("Fail to Set Read Status for SIM SMS");
continue;
}
}
-
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
}
-
+#endif
return MSG_SUCCESS;
}
-msg_error_t MsgStoUpdateThreadReadStatus(msg_thread_id_t threadId)
+msg_error_t MsgStoUpdateThreadReadStatus(msg_thread_id_t threadId, msg_id_list_s *pMsgIdList)
{
MSG_BEGIN();
msg_error_t err = MSG_SUCCESS;
- int rowCnt = 0;
char sqlQuery[MAX_QUERY_LEN+1];
- // Get sim MSG_ID
+ /*** Get msg id list **/
+ int rowCnt = 0;
+ int index = 1;
+ pMsgIdList->nCount = 0;
+ MsgDbHandler *dbHandle = getDbHandle();
+
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID FROM %s A \
- WHERE CONV_ID = %d AND READ_STATUS = 0 AND STORAGE_ID = %d;",
- MSGFW_MESSAGE_TABLE_NAME, threadId, MSG_STORAGE_SIM);
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID FROM %s "
+ "WHERE CONV_ID = %d AND READ_STATUS = 0 AND STORAGE_ID = %d AND FOLDER_ID < %d;",
+ MSGFW_MESSAGE_TABLE_NAME,
+ threadId, MSG_STORAGE_PHONE, MSG_SPAMBOX_ID);
- rowCnt = 0;
- err = dbHandle.getTable(sqlQuery, &rowCnt);
+ err = dbHandle->getTable(sqlQuery, &rowCnt);
if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
- dbHandle.freeTable();
+ MSG_DEBUG("Fail to getTable().");
+ dbHandle->freeTable();
return err;
}
- for (int i = 1; i <= rowCnt; i++) {
- MsgStoUpdateReadStatus(dbHandle.getColumnToInt(i), true);
+ if (rowCnt <= 0) {
+ dbHandle->freeTable();
+ return MSG_SUCCESS;
}
- dbHandle.freeTable();
+ pMsgIdList->nCount = rowCnt;
+ MSG_DEBUG("pMsgIdList->nCount [%d]", pMsgIdList->nCount);
+
+ pMsgIdList->msgIdList = (msg_message_id_t *)new char[sizeof(msg_message_id_t) * rowCnt];
+
+ for (int i = 0; i < rowCnt; i++)
+ pMsgIdList->msgIdList[i] = dbHandle->getColumnToInt(index++);
+
+ dbHandle->freeTable();
+ /*** **/
// set read status
+ dbHandle->beginTrans();
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "UPDATE %s SET READ_STATUS = %d \
- WHERE CONV_ID = %d AND READ_STATUS = 0;",
- MSGFW_MESSAGE_TABLE_NAME, 1, threadId);
+ snprintf(sqlQuery, sizeof(sqlQuery), "UPDATE %s SET READ_STATUS = %d "
+ "WHERE CONV_ID = %d AND READ_STATUS = 0 AND STORAGE_ID = %d AND FOLDER_ID < %d;",
+ MSGFW_MESSAGE_TABLE_NAME, 1,
+ threadId, MSG_STORAGE_PHONE, MSG_SPAMBOX_ID);
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
+ }
- if (MsgStoUpdateConversation(&dbHandle, threadId) != MSG_SUCCESS) {
+ if (MsgStoUpdateConversation(dbHandle, threadId) != MSG_SUCCESS) {
MSG_DEBUG("MsgStoUpdateConversation() Error");
+ dbHandle->endTrans(false);
return MSG_ERR_STORAGE_ERROR;
}
- if (g_idle_add(updateUnreadMsgCount, NULL) == 0) {
- MSG_DEBUG("updateUnreadMsgCount() Error");
+ dbHandle->endTrans(true);
+ if (g_idle_add(resetNotification, NULL) == 0) {
+ MSG_DEBUG("resetNotification() Error");
}
- MsgRefreshNoti();
-
MSG_END();
return MSG_SUCCESS;
msg_error_t MsgStoUpdateProtectedStatus(msg_message_id_t msgId, bool bProtected)
{
char sqlQuery[MAX_QUERY_LEN+1];
+ MsgDbHandler *dbHandle = getDbHandle();
memset(sqlQuery, 0x00, sizeof(sqlQuery));
snprintf(sqlQuery, sizeof(sqlQuery), "UPDATE %s SET PROTECTED = %d WHERE MSG_ID = %d;",
MSGFW_MESSAGE_TABLE_NAME, (int)bProtected, msgId);
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS)
return MSG_ERR_DB_EXEC;
return MSG_SUCCESS;
msg_error_t err = MSG_SUCCESS;
char sqlQuery[MAX_QUERY_LEN+1];
+ MsgDbHandler *dbHandle = getDbHandle();
+
+ // delete report notification
+ char tempAddr[MAX_ADDRESS_VAL_LEN+1];
+ memset(tempAddr, 0x00, sizeof(tempAddr));
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT B.ADDRESS_VAL FROM %s A, %s B WHERE A.CONV_ID = B.CONV_ID AND A.MSG_ID = %d;"
+ , MSGFW_MESSAGE_TABLE_NAME, MSGFW_ADDRESS_TABLE_NAME, msgId);
+
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS)
+ return MSG_ERR_DB_PREPARE;
+
+ if (dbHandle->stepQuery() != MSG_ERR_DB_ROW) {
+ dbHandle->finalizeQuery();
+ return MSG_ERR_DB_DONE;
+ }
+
+ snprintf(tempAddr, sizeof(tempAddr), "%s", dbHandle->columnText(0));
+
+ MSG_SEC_DEBUG("Updated address = %s", tempAddr);
+
+ MsgDeleteReportNotification(tempAddr);
+
+ dbHandle->finalizeQuery();
// Get SUB_TYPE, STORAGE_ID
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT A.MAIN_TYPE, A.SUB_TYPE, A.FOLDER_ID, A.STORAGE_ID, A.READ_STATUS, B.CONV_ID \
- FROM %s A, %s B WHERE A.MSG_ID = %d AND A.CONV_ID = B.CONV_ID;",
- MSGFW_MESSAGE_TABLE_NAME, MSGFW_CONVERSATION_TABLE_NAME, msgId);
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MAIN_TYPE, SUB_TYPE, FOLDER_ID, STORAGE_ID, READ_STATUS, CONV_ID, SIM_INDEX \
+ FROM %s WHERE MSG_ID = %d;", MSGFW_MESSAGE_TABLE_NAME, msgId);
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS) {
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS) {
MSG_DEBUG("Query Failed [%s]", sqlQuery);
return MSG_ERR_DB_PREPARE;
}
msg_folder_id_t folderId;
msg_storage_id_t storageId;
msg_thread_id_t convId;
+ msg_sim_slot_id_t simIndex;
bool bRead;
- if (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- msgType.mainType = dbHandle.columnInt(0);
- msgType.subType = dbHandle.columnInt(1);
- folderId = dbHandle.columnInt(2);
- storageId = dbHandle.columnInt(3);
- bRead = dbHandle.columnInt(4);
- convId = dbHandle.columnInt(5);
+ if (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ msgType.mainType = dbHandle->columnInt(0);
+ msgType.subType = dbHandle->columnInt(1);
+ folderId = dbHandle->columnInt(2);
+ storageId = dbHandle->columnInt(3);
+ bRead = dbHandle->columnInt(4);
+ convId = dbHandle->columnInt(5);
+ simIndex = dbHandle->columnInt(6);
- MSG_DEBUG("Main Type:[%d] SubType:[%d] FolderId:[%d] StorageId:[%d] ConversationId:[%d]", msgType.mainType, msgType.subType, folderId, storageId, convId);
+ MSG_DEBUG("Main Type:[%d] SubType:[%d] FolderId:[%d] StorageId:[%d] ReadStatus:[%d] ConversationId:[%d], simIndex=[%d]", msgType.mainType, msgType.subType, folderId, storageId, bRead, convId, simIndex);
} else {
MSG_DEBUG("MsgStepQuery() Error [%s]", sqlQuery);
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
return MSG_ERR_DB_STEP;
}
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
MsgPlugin *plg = MsgPluginManager::instance()->getPlugin(MSG_SMS_TYPE);
return MSG_ERR_NULL_POINTER;
}
- dbHandle.beginTrans();
+ dbHandle->beginTrans();
+#ifndef FEATURE_SMS_CDMA
// Check sim message
if (storageId == MSG_STORAGE_SIM) {
- // get sim message id
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT SIM_ID FROM %s WHERE MSG_ID = %d;",
- MSGFW_SIM_MSG_TABLE_NAME, msgId);
+ msg_sim_id_t simMsgId;
+ msg_sim_slot_id_t sim_idx;
- MSG_DEBUG("sqlQuery is [%s]", sqlQuery);
+ while (true) {
+ // get sim message id
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT SIM_SLOT_ID, SIM_ID FROM %s WHERE MSG_ID = %d;",
+ MSGFW_SIM_MSG_TABLE_NAME, msgId);
- msg_sim_id_t simMsgId;
+ MSG_DEBUG("sqlQuery is [%s]", sqlQuery);
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
- return MSG_ERR_DB_PREPARE;
- }
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_DB_PREPARE;
+ }
+
+ if (dbHandle->stepQuery() != MSG_ERR_DB_ROW) {
+ break;
+ }
- while (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- simMsgId = dbHandle.columnInt(0);
+ sim_idx = dbHandle->columnInt(0);
+ simMsgId = dbHandle->columnInt(1);
MSG_DEBUG("SIM Msg Id : [%d]", simMsgId);
- err = plg->deleteSimMessage(simMsgId);
+ err = plg->deleteSimMessage(sim_idx, simMsgId);
if (err != MSG_SUCCESS) {
- dbHandle.finalizeQuery();
- dbHandle.endTrans(false);
+ dbHandle->finalizeQuery();
+ dbHandle->endTrans(false);
return err;
}
+ dbHandle->finalizeQuery();
+
//Sim message delete in db table
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s WHERE SIM_ID = %d;", MSGFW_SIM_MSG_TABLE_NAME, simMsgId);
+ snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s WHERE SIM_ID = %d AND SIM_SLOT_ID =%d;", MSGFW_SIM_MSG_TABLE_NAME, simMsgId, sim_idx);
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.finalizeQuery();
- dbHandle.endTrans(false);
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->finalizeQuery();
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
}
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
}
-
+#endif
/* each type has to be handled in plug in ? */
if (msgType.mainType == MSG_SMS_TYPE) {
memset(sqlQuery, 0x00, sizeof(sqlQuery));
MSGFW_SMS_SENDOPT_TABLE_NAME, msgId);
// Delete SMS Send Option
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_DB_EXEC;
+ }
+
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s WHERE MSG_ID = %d;",
+ MSGFW_SMS_REPORT_TABLE_NAME, msgId);
+
+ // Delete Data from SMS_REPORT table
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
MSGFW_CB_MSG_TABLE_NAME, msgId);
// Delete Push Message from push table
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
} else if (msgType.subType >= MSG_WAP_SI_SMS && msgType.subType <= MSG_WAP_CO_SMS) {
MSGFW_PUSH_MSG_TABLE_NAME, msgId);
// Delete Push Message from push table
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
} else if (msgType.subType == MSG_SYNCML_CP) {
MSGFW_SYNCML_MSG_TABLE_NAME, msgId);
// Delete SyncML Message from syncML table
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
}
} else if (msgType.mainType == MSG_MMS_TYPE) {
- char filePath[MSG_FILEPATH_LEN_MAX] = {0,};
- char dirPath[MSG_FILEPATH_LEN_MAX]= {0,};
+ char filePath[MSG_FILEPATH_LEN_MAX + 1] = {0,};
+ char dirPath[MSG_FILEPATH_LEN_MAX + 1]= {0,};
+
+ {//remove multipart
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT FILE_PATH FROM %s WHERE MSG_ID = %d;",
+ MSGFW_MMS_MULTIPART_TABLE_NAME, msgId);
+
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_DB_PREPARE;
+ }
+
+ while (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ memset(filePath, 0x00, sizeof(filePath));
+ strncpy(filePath, (char *)dbHandle->columnText(0), MSG_FILEPATH_LEN_MAX);
+ if (remove(filePath) == -1)
+ MSG_SEC_DEBUG("Fail to delete file [%s]", filePath);
+ else
+ MSG_SEC_DEBUG("Success to delete file [%s]", filePath);
+ }
+ dbHandle->finalizeQuery();
+
+ // Delete Data from Multipart table
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s WHERE MSG_ID = %d;",
+ MSGFW_MMS_MULTIPART_TABLE_NAME, msgId);
+
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_DB_EXEC;
+ }
+ }
+
memset(sqlQuery, 0x00, sizeof(sqlQuery));
snprintf(sqlQuery, sizeof(sqlQuery), "SELECT FILE_PATH FROM %s WHERE MSG_ID = %d;",
MMS_PLUGIN_MESSAGE_TABLE_NAME, msgId);
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_PREPARE;
}
- if (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- strncpy(filePath, (char *)dbHandle.columnText(0), MSG_FILEPATH_LEN_MAX);
+ if (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ strncpy(filePath, (char *)dbHandle->columnText(0), MSG_FILEPATH_LEN_MAX);
snprintf(dirPath, MSG_FILEPATH_LEN_MAX, "%s.dir", filePath);
if (remove(filePath) == -1)
- MSG_DEBUG("Fail to delete file [%s]", filePath);
+ MSG_SEC_DEBUG("Fail to delete file [%s]", filePath);
else
- MSG_DEBUG("Success to delete file [%s]", filePath);
+ MSG_SEC_DEBUG("Success to delete file [%s]", filePath);
MsgRmRf(dirPath);
} else {
MSG_DEBUG("MsgStepQuery() Error [%s]", sqlQuery);
- dbHandle.finalizeQuery();
- dbHandle.endTrans(false);
+ dbHandle->finalizeQuery();
+ dbHandle->endTrans(false);
return MSG_ERR_DB_STEP;
}
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
// remove thumbnail file
memset(sqlQuery, 0x00, sizeof(sqlQuery));
"WHERE MSG_ID = %d AND (TYPE=%d OR TYPE=%d);",
MSGFW_MMS_PREVIEW_TABLE_NAME, msgId, MSG_MMS_ITEM_TYPE_IMG, MSG_MMS_ITEM_TYPE_VIDEO);
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_PREPARE;
}
- while (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
+ while (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
memset(filePath, 0x00, sizeof(filePath));
- strncpy(filePath, (char *)dbHandle.columnText(0), MSG_FILEPATH_LEN_MAX);
+ strncpy(filePath, (char *)dbHandle->columnText(0), MSG_FILEPATH_LEN_MAX);
if (remove(filePath) == -1)
- MSG_DEBUG("Fail to delete file [%s]", filePath);
+ MSG_SEC_DEBUG("Fail to delete file [%s]", filePath);
else
- MSG_DEBUG("Success to delete file [%s]", filePath);
+ MSG_SEC_DEBUG("Success to delete file [%s]", filePath);
}
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
memset(sqlQuery, 0x00, sizeof(sqlQuery));
snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s WHERE MSG_ID = %d;",
MSGFW_MMS_PREVIEW_TABLE_NAME, msgId);
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
MMS_PLUGIN_MESSAGE_TABLE_NAME, msgId);
// Delete Data from MMS table
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
MSGFW_REPORT_TABLE_NAME, msgId);
// Delete Data from MMS STATUS table
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
}
snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s WHERE MSG_ID = %d;", MSGFW_MESSAGE_TABLE_NAME, msgId);
// Delete Message from msg table
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
- // Clear Conversation table
- if (MsgStoClearConversationTable(&dbHandle) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+#ifdef FEATURE_SMS_CDMA
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s WHERE MSG_ID = %d;", MSGFW_UNIQUENESS_INFO_TABLE_NAME, msgId);
+
+ // Delete Message from uniqueness table
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
+#endif
- // Update conversation table.
- if (MsgStoUpdateConversation(&dbHandle, convId) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
- return MSG_ERR_STORAGE_ERROR;
- }
+ if (convId > 0) {
+ // Clear Conversation table
+ if (MsgStoClearConversationTable(dbHandle) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_DB_EXEC;
+ }
- dbHandle.endTrans(true);
+ // Update conversation table.
+ if (MsgStoUpdateConversation(dbHandle, convId) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_STORAGE_ERROR;
+ }
+ }
+ dbHandle->endTrans(true);
if (msgType.mainType == MSG_SMS_TYPE && folderId == MSG_INBOX_ID) {
msgType.classType = MSG_CLASS_NONE;
// Set memory status in SIM
- if (MsgStoCheckMsgCntFull(&dbHandle, &msgType, folderId) == MSG_SUCCESS) {
+ if (MsgStoCheckMsgCntFull(dbHandle, &msgType, folderId) == MSG_SUCCESS) {
MSG_DEBUG("Set Memory Status");
+#ifndef FEATURE_SMS_CDMA
+ plg->setMemoryStatus(simIndex, MSG_SUCCESS);
+#else
plg->setMemoryStatus(MSG_SUCCESS);
+#endif
}
}
if (bCheckIndication == true) {
MSG_DEBUG("bCheckIndication is true.");
-
- int smsCnt = 0;
- int mmsCnt = 0;
-
- smsCnt = MsgStoGetUnreadCnt(&dbHandle, MSG_SMS_TYPE);
- mmsCnt = MsgStoGetUnreadCnt(&dbHandle, MSG_MMS_TYPE);
-
- MsgSettingSetIndicator(smsCnt, mmsCnt);
-
-// MsgDeleteNotiByMsgId(msgId);
- MsgRefreshNoti();
+ MsgRefreshAllNotification(true, false, false);
}
- //Delete phone log
-// MsgDeletePhoneLog(msgId);
-
return MSG_SUCCESS;
}
queue<msg_thread_id_t> threadList;
+#ifdef FEATURE_SMS_CDMA
+ const char *tableList[] = {MSGFW_PUSH_MSG_TABLE_NAME, MSGFW_CB_MSG_TABLE_NAME,
+ MSGFW_SYNCML_MSG_TABLE_NAME, MSGFW_SMS_SENDOPT_TABLE_NAME,
+ MMS_PLUGIN_MESSAGE_TABLE_NAME, MSGFW_MMS_PREVIEW_TABLE_NAME,
+ MSGFW_REPORT_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME,
+ MSGFW_UNIQUENESS_INFO_TABLE_NAME};
+#else
const char *tableList[] = {MSGFW_PUSH_MSG_TABLE_NAME, MSGFW_CB_MSG_TABLE_NAME,
MSGFW_SYNCML_MSG_TABLE_NAME, MSGFW_SMS_SENDOPT_TABLE_NAME,
MMS_PLUGIN_MESSAGE_TABLE_NAME, MSGFW_MMS_PREVIEW_TABLE_NAME,
MSGFW_REPORT_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME};
+#endif
int listCnt = sizeof(tableList)/sizeof(char *);
int rowCnt = 0;
+ MsgDbHandler *dbHandle = getDbHandle();
// Get conversation ID from Folder
memset(sqlQuery, 0x00, sizeof(sqlQuery));
snprintf(sqlQuery, sizeof(sqlQuery), "SELECT DISTINCT(CONV_ID) FROM %s WHERE FOLDER_ID = %d",
MSGFW_MESSAGE_TABLE_NAME, folderId);
- err = dbHandle.getTable(sqlQuery, &rowCnt);
+ err = dbHandle->getTable(sqlQuery, &rowCnt);
if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
- MSG_DEBUG("sql query is %s.", sqlQuery);
-
- dbHandle.freeTable();
+ MSG_DEBUG("Fail to getTable().");
+ dbHandle->freeTable();
return err;
}
if (rowCnt <= 0) {
- dbHandle.freeTable();
-
+ dbHandle->freeTable();
return MSG_SUCCESS;
}
for (int i = 1; i <= rowCnt; i++) {
- MSG_DEBUG("thread ID : %d", dbHandle.getColumnToInt(i));
- threadList.push((msg_thread_id_t)dbHandle.getColumnToInt(i));
+ MSG_DEBUG("thread ID : %d", dbHandle->getColumnToInt(i));
+ threadList.push((msg_thread_id_t)dbHandle->getColumnToInt(i));
}
- dbHandle.freeTable();
+ dbHandle->freeTable();
/*** Get msg id list **/
msg_id_list_s *pToDeleteMsgIdList = NULL;
rowCnt = 0;
int index = 1;
- err = dbHandle.getTable(sqlQuery, &rowCnt);
+ err = dbHandle->getTable(sqlQuery, &rowCnt);
if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
- MSG_DEBUG("sqlQuery [%s]", sqlQuery);
-
- dbHandle.freeTable();
-
+ MSG_DEBUG("Fail to getTable().");
+ dbHandle->freeTable();
goto FREE_MEMORY;
}
if (rowCnt <= 0) {
- dbHandle.freeTable();
+ dbHandle->freeTable();
err = MSG_SUCCESS;
goto FREE_MEMORY;
pToDeleteMsgIdList->msgIdList = (msg_message_id_t *)new char[sizeof(msg_message_id_t) * rowCnt];
for (int i = 0; i < rowCnt; i++)
- pToDeleteMsgIdList->msgIdList[i] = dbHandle.getColumnToInt(index++);
+ pToDeleteMsgIdList->msgIdList[i] = dbHandle->getColumnToInt(index++);
- dbHandle.freeTable();
+ dbHandle->freeTable();
/*** **/
/*** Delete Sim Message In Folder **/
snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID FROM %s WHERE FOLDER_ID = %d AND STORAGE_ID = %d",
MSGFW_MESSAGE_TABLE_NAME, folderId, MSG_STORAGE_SIM);
- MSG_DEBUG("sql query is %s.", sqlQuery);
-
rowCnt = 0;
- err = dbHandle.getTable(sqlQuery, &rowCnt);
-
+ err = dbHandle->getTable(sqlQuery, &rowCnt);
if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
- dbHandle.freeTable();
-
+ dbHandle->freeTable();
goto FREE_MEMORY;
}
for (int i = 1; i <= rowCnt; i++) {
- err = MsgStoDeleteMessage(dbHandle.getColumnToInt(i), false);
+ err = MsgStoDeleteMessage(dbHandle->getColumnToInt(i), false);
if (err != MSG_SUCCESS) {
MSG_DEBUG("MsgStoDeleteMessage() Error!!!");
- dbHandle.freeTable();
+ dbHandle->freeTable();
goto FREE_MEMORY;
}
//Delete phone log
-// MsgDeletePhoneLog(dbHandle.getColumnToInt(i));
+// MsgDeletePhoneLog(dbHandle->getColumnToInt(i));
}
- dbHandle.freeTable();
+ dbHandle->freeTable();
}
- dbHandle.beginTrans();
+ dbHandle->beginTrans();
for (int i = 0; i < listCnt; i++) {
if (!strcmp(tableList[i], MMS_PLUGIN_MESSAGE_TABLE_NAME)) {
char filePath[MSG_FILEPATH_LEN_MAX] = {0,};
char dirPath[MSG_FILEPATH_LEN_MAX] = {0,};
+ {//remove multipart
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT FILE_PATH FROM %s;",
+ MSGFW_MMS_MULTIPART_TABLE_NAME);
+
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_DB_PREPARE;
+ }
+
+ while (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ memset(filePath, 0x00, sizeof(filePath));
+ strncpy(filePath, (char *)dbHandle->columnText(0), MSG_FILEPATH_LEN_MAX);
+ if (remove(filePath) == -1)
+ MSG_SEC_DEBUG("Fail to delete file [%s]", filePath);
+ else
+ MSG_SEC_DEBUG("Success to delete file [%s]", filePath);
+ }
+ dbHandle->finalizeQuery();
+
+ // Delete Data from Multipart table
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s;",
+ MSGFW_MMS_MULTIPART_TABLE_NAME);
+
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ err = MSG_ERR_DB_EXEC;
+ dbHandle->endTrans(false);
+ goto FREE_MEMORY;
+ }
+ }
+
//get mms msg id list
memset(sqlQuery, 0x00, sizeof(sqlQuery));
snprintf(sqlQuery, sizeof(sqlQuery), "SELECT B.FILE_PATH FROM %s A, %s B \
WHERE A.FOLDER_ID = %d AND A.MAIN_TYPE = %d AND A.MSG_ID = B.MSG_ID",
MSGFW_MESSAGE_TABLE_NAME, MMS_PLUGIN_MESSAGE_TABLE_NAME, folderId, MSG_MMS_TYPE);
- MSG_DEBUG("sqlQuery [%s]", sqlQuery);
-
- err = dbHandle.getTable(sqlQuery, &rowCnt);
+ err = dbHandle->getTable(sqlQuery, &rowCnt);
MSG_DEBUG("rowCnt %d", rowCnt);
if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
- MSG_DEBUG("sqlQuery [%s]", sqlQuery);
+ MSG_DEBUG("Fail to getTable().");
- dbHandle.freeTable();
- dbHandle.endTrans(false);
+ dbHandle->freeTable();
+ dbHandle->endTrans(false);
goto FREE_MEMORY;
}
for (int i = 1; i <= rowCnt; i++) {
memset(filePath, 0x00, sizeof(filePath));
- dbHandle.getColumnToString(i, MSG_FILEPATH_LEN_MAX, filePath);
+ dbHandle->getColumnToString(i, MSG_FILEPATH_LEN_MAX, filePath);
- MSG_DEBUG("filePath [%s]", filePath);
+ MSG_SEC_DEBUG("filePath [%s]", filePath);
//delete raw file
snprintf(dirPath, sizeof(dirPath), "%s.dir", filePath);
if (remove(filePath) == -1)
- MSG_DEBUG("Fail to delete file [%s]", filePath);
+ MSG_SEC_DEBUG("Fail to delete file [%s]", filePath);
else
- MSG_DEBUG("Success to delete file [%s]", filePath);
+ MSG_SEC_DEBUG("Success to delete file [%s]", filePath);
MsgRmRf(dirPath);
}
- dbHandle.freeTable();
+ dbHandle->freeTable();
}
// delete thumbnail
"AND (MSG_ID IN (SELECT MSG_ID FROM %s WHERE FOLDER_ID = %d));",
MSGFW_MMS_PREVIEW_TABLE_NAME, MSG_MMS_ITEM_TYPE_IMG, MSG_MMS_ITEM_TYPE_VIDEO, MSGFW_MESSAGE_TABLE_NAME, folderId);
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_PREPARE;
}
- while (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
+ while (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
memset(filePath, 0x00, sizeof(filePath));
- strncpy(filePath, (char *)dbHandle.columnText(0), MSG_FILEPATH_LEN_MAX);
+ strncpy(filePath, (char *)dbHandle->columnText(0), MSG_FILEPATH_LEN_MAX);
if (remove(filePath) == -1)
- MSG_DEBUG("Fail to delete file [%s]", filePath);
+ MSG_SEC_DEBUG("Fail to delete file [%s]", filePath);
else
- MSG_DEBUG("Success to delete file [%s]", filePath);
+ MSG_SEC_DEBUG("Success to delete file [%s]", filePath);
}
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
memset(sqlQuery, 0x00, sizeof(sqlQuery));
tableList[i], MSGFW_MESSAGE_TABLE_NAME, folderId);
// Delete Message in specific folder from table
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
MSG_DEBUG("sqlQuery [%s]", sqlQuery);
- dbHandle.endTrans(false);
+ dbHandle->endTrans(false);
err = MSG_ERR_DB_EXEC;
goto FREE_MEMORY;
}
// Clear Conversation table
- if (MsgStoClearConversationTable(&dbHandle) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (MsgStoClearConversationTable(dbHandle) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
err = MSG_ERR_DB_EXEC;
goto FREE_MEMORY;
// Update Address
while (!threadList.empty()) {
- err = MsgStoUpdateConversation(&dbHandle, threadList.front());
+ err = MsgStoUpdateConversation(dbHandle, threadList.front());
threadList.pop();
if (err != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ dbHandle->endTrans(false);
goto FREE_MEMORY;
}
}
- dbHandle.endTrans(true);
-
- if (folderId == MSG_INBOX_ID) {
- int smsCnt = 0;
- int mmsCnt = 0;
-
- smsCnt = MsgStoGetUnreadCnt(&dbHandle, MSG_SMS_TYPE);
- mmsCnt = MsgStoGetUnreadCnt(&dbHandle, MSG_MMS_TYPE);
-
- MsgSettingSetIndicator(smsCnt, mmsCnt);
- }
+ dbHandle->endTrans(true);
/*** Set pMsgIdList **/
if (pMsgIdList != NULL && pToDeleteMsgIdList->nCount > 0) {
// err = MSG_ERR_UNKNOWN;
// }
- MsgRefreshNoti();
+ MsgRefreshAllNotification(true, false, false);
}
}
/*** **/
msg_error_t MsgStoDeleteMessageByList(msg_id_list_s *pMsgIdList)
{
+ std::string q;
+
MSG_BEGIN();
+
msg_error_t err = MSG_SUCCESS;
+ if (pMsgIdList->nCount < 1) {
+ MSG_DEBUG("pMsgIdList->nCount < 1");
+ return err;
+ }
char sqlQuery[MAX_QUERY_LEN+1];
- char whereQuery[MAX_QUERY_LEN+1];
- char sqlQuerySubset[(MAX_QUERY_LEN/5)+1];
- queue<msg_thread_id_t> threadList;
+ queue<msg_thread_id_t> threadList1, threadList2;
- const char *tableList[] = {MSGFW_PUSH_MSG_TABLE_NAME, MSGFW_CB_MSG_TABLE_NAME,
+#ifdef FEATURE_SMS_CDMA
+ const char *tableList[] = {MMS_PLUGIN_MESSAGE_TABLE_NAME, MSGFW_MMS_PREVIEW_TABLE_NAME,
+ MSGFW_PUSH_MSG_TABLE_NAME, MSGFW_CB_MSG_TABLE_NAME,
+ MSGFW_SYNCML_MSG_TABLE_NAME, MSGFW_SMS_SENDOPT_TABLE_NAME,
+ MSGFW_REPORT_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME,
+ MSGFW_SMS_REPORT_TABLE_NAME, MSGFW_MMS_MULTIPART_TABLE_NAME,
+ MSGFW_UNIQUENESS_INFO_TABLE_NAME};
+#else
+ const char *tableList[] = {MMS_PLUGIN_MESSAGE_TABLE_NAME, MSGFW_MMS_PREVIEW_TABLE_NAME,
+ MSGFW_PUSH_MSG_TABLE_NAME, MSGFW_CB_MSG_TABLE_NAME,
MSGFW_SYNCML_MSG_TABLE_NAME, MSGFW_SMS_SENDOPT_TABLE_NAME,
- MSGFW_MMS_PREVIEW_TABLE_NAME, MSGFW_REPORT_TABLE_NAME,
- MMS_PLUGIN_MESSAGE_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME};
+ MSGFW_REPORT_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME,
+ MSGFW_SMS_REPORT_TABLE_NAME, MSGFW_MMS_MULTIPART_TABLE_NAME};
+#endif
int listCnt = sizeof(tableList)/sizeof(char *);
int rowCnt = 0;
+ MsgDbHandler *dbHandle = getDbHandle();
- memset(whereQuery, 0x00, sizeof(whereQuery));
+ dbHandle->beginTrans();
+ // reset msgid temp table
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s;", MSGFW_TMP_MSGID_TABLE_NAME);
+ MSG_DEBUG("[%s]", sqlQuery);
- if (pMsgIdList->nCount < 1) {
- return MSG_SUCCESS;
- } else {
- for (int i=0; i < pMsgIdList->nCount; i++) {
- memset(sqlQuerySubset, 0x00, sizeof(sqlQuerySubset));
- if (i==0)
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "(MSG_ID = %d ", pMsgIdList->msgIdList[i]);
- else
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "OR MSG_ID = %d ", pMsgIdList->msgIdList[i]);
- strncat(whereQuery, sqlQuerySubset, MAX_QUERY_LEN-strlen(whereQuery));
- }
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_DB_EXEC;
}
- strncat(whereQuery, ");", MAX_QUERY_LEN-strlen(whereQuery));
- // Get conversation ID from Folder
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT DISTINCT(CONV_ID) FROM %s WHERE ", MSGFW_MESSAGE_TABLE_NAME);
- strncat(sqlQuery, whereQuery, MAX_QUERY_LEN-strlen(sqlQuery));
+ if (dbHandle->stepQuery() != MSG_ERR_DB_DONE) {
+ dbHandle->finalizeQuery();
+ dbHandle->endTrans(false);
+ return MSG_ERR_DB_EXEC;
+ }
+
+ dbHandle->finalizeQuery();
+
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (?)", MSGFW_TMP_MSGID_TABLE_NAME);
+ MSG_DEBUG("[%s]", sqlQuery);
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_DB_PREPARE;
+ }
- err = dbHandle.getTable(sqlQuery, &rowCnt);
+ for (int i = 0; i < pMsgIdList->nCount; i++) {
+ dbHandle->resetQuery();
+ dbHandle->bindInt(pMsgIdList->msgIdList[i], 1);
+ if (dbHandle->stepQuery() != MSG_ERR_DB_DONE) {
+ dbHandle->finalizeQuery();
+ dbHandle->endTrans(false);
+ return MSG_ERR_DB_EXEC;
+ }
+ }
+
+ dbHandle->finalizeQuery();
+ dbHandle->endTrans(true);
+
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT DISTINCT(CONV_ID) FROM %s WHERE MSG_ID IN %s;", MSGFW_MESSAGE_TABLE_NAME, MSGFW_TMP_MSGID_TABLE_NAME);
+
+ err = dbHandle->getTable(sqlQuery, &rowCnt);
if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
- MSG_DEBUG("sql query is %s.", sqlQuery);
- dbHandle.freeTable();
+ MSG_DEBUG("Fail to getTable().");
+ dbHandle->freeTable();
return err;
}
- if (rowCnt <= 0) {
- dbHandle.freeTable();
+ MSG_DEBUG("rowCnt [%d]", rowCnt);
+
+ if (rowCnt < 1) {
+ dbHandle->freeTable();
return MSG_SUCCESS;
}
for (int i = 1; i <= rowCnt; i++) {
- MSG_DEBUG("thread ID : %d", dbHandle.getColumnToInt(i));
- threadList.push((msg_thread_id_t)dbHandle.getColumnToInt(i));
+ MSG_DEBUG("thread ID : %d", dbHandle->getColumnToInt(i));
+ threadList1.push((msg_thread_id_t)dbHandle->getColumnToInt(i));
+ threadList2.push((msg_thread_id_t)dbHandle->getColumnToInt(i));
+ }
+ dbHandle->freeTable();
+
+ // delete report notification
+ char tempAddr[MAX_ADDRESS_VAL_LEN+1];
+ while (!threadList1.empty()) {
+ memset(tempAddr, 0x00, sizeof(tempAddr));
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT B.ADDRESS_VAL FROM %s A, %s B WHERE A.CONV_ID = B.CONV_ID AND A.CONV_ID = %d;"
+ , MSGFW_MESSAGE_TABLE_NAME, MSGFW_ADDRESS_TABLE_NAME, threadList1.front());
+
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS)
+ return MSG_ERR_DB_PREPARE;
+
+ if (dbHandle->stepQuery() != MSG_ERR_DB_ROW) {
+ dbHandle->finalizeQuery();
+ return MSG_ERR_DB_DONE;
+ }
+
+ snprintf(tempAddr, sizeof(tempAddr), "%s", dbHandle->columnText(0));
+
+ MSG_SEC_DEBUG("Updated address = %s", tempAddr);
+
+ MsgDeleteReportNotification(tempAddr);
+
+ dbHandle->finalizeQuery();
+
+ threadList1.pop();
}
- dbHandle.freeTable();
- /*** Delete Sim Message In Folder **/
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID FROM %s WHERE STORAGE_ID = %d AND ", MSGFW_MESSAGE_TABLE_NAME, MSG_STORAGE_SIM);
- strncat(sqlQuery, whereQuery, MAX_QUERY_LEN-strlen(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID FROM %s WHERE STORAGE_ID = %d AND MSG_ID IN %s;",
+ MSGFW_MESSAGE_TABLE_NAME, MSG_STORAGE_SIM, MSGFW_TMP_MSGID_TABLE_NAME);
rowCnt = 0;
-
- err = dbHandle.getTable(sqlQuery, &rowCnt);
+ err = dbHandle->getTable(sqlQuery, &rowCnt);
if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
- MSG_DEBUG("sql query is %s.", sqlQuery);
- dbHandle.freeTable();
- return err;
+ MSG_DEBUG("Fail to getTable().");
+ dbHandle->freeTable();
+ rowCnt = 0;
}
for (int i = 1; i <= rowCnt; i++) {
- err = MsgStoDeleteMessage(dbHandle.getColumnToInt(i), false);
-
+ err = MsgStoDeleteMessage(dbHandle->getColumnToInt(i), false);
if (err != MSG_SUCCESS) {
MSG_DEBUG("MsgStoDeleteMessage() Error!!!");
- dbHandle.freeTable();
- return err;
}
}
-
- dbHandle.freeTable();
+ dbHandle->freeTable();
/*** **/
- dbHandle.beginTrans();
-
+ dbHandle->beginTrans();
for (int i = 0; i < listCnt; i++) {
- if (!strcmp(tableList[i], MMS_PLUGIN_MESSAGE_TABLE_NAME)) {
+ if ( !i ) {
- int rowCnt = 0;
+ char filePath[MSG_FILEPATH_LEN_MAX];
+ char dirPath[MSG_FILEPATH_LEN_MAX];
- char filePath[MSG_FILEPATH_LEN_MAX] = {0,};
- char dirPath[MSG_FILEPATH_LEN_MAX] = {0,};
- char thumbnailPath[MSG_FILEPATH_LEN_MAX] = {0,};
+ rowCnt = 0;
- //get mms msg id list
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT FILE_PATH FROM %s WHERE ", MMS_PLUGIN_MESSAGE_TABLE_NAME);
- strncat(sqlQuery, whereQuery, MAX_QUERY_LEN-strlen(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT FILE_PATH FROM %s WHERE MSG_ID IN %s;", MMS_PLUGIN_MESSAGE_TABLE_NAME, MSGFW_TMP_MSGID_TABLE_NAME);
- err = dbHandle.getTable(sqlQuery, &rowCnt);
- MSG_DEBUG("rowCnt %d", rowCnt);
+ err = dbHandle->getTable(sqlQuery, &rowCnt);
if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
- MSG_DEBUG("sqlQuery [%s]", sqlQuery);
- dbHandle.freeTable();
- dbHandle.endTrans(false);
- return err;
+ MSG_DEBUG("Fail to getTable().");
+ rowCnt = 0;
}
+ MSG_DEBUG("rowCnt %d", rowCnt);
+
for (int i = 1; i <= rowCnt; i++) {
- memset(filePath, 0x00, sizeof(filePath));
- dbHandle.getColumnToString(i, MSG_FILEPATH_LEN_MAX, filePath);
+ dbHandle->getColumnToString(i, MSG_FILEPATH_LEN_MAX, filePath);
- MSG_DEBUG("filePath [%s]", filePath);
+ MSG_SEC_DEBUG("filePath [%s]", filePath);
- //delete raw file
+ // Delete raw file.
snprintf(dirPath, sizeof(dirPath), "%s.dir", filePath);
if (remove(filePath) == -1)
- MSG_DEBUG("Fail to delete file [%s]", filePath);
+ MSG_SEC_DEBUG("Fail to delete file [%s]", filePath);
else
- MSG_DEBUG("Success to delete file [%s]", filePath);
+ MSG_SEC_DEBUG("Success to delete file [%s]", filePath);
MsgRmRf(dirPath);
rmdir(dirPath);
}
+ dbHandle->freeTable();
+
+ } else if (i == 1) {
- dbHandle.freeTable();
- } else if (!strcmp(tableList[i], MSGFW_MMS_PREVIEW_TABLE_NAME)) {
char filePath[MSG_FILEPATH_LEN_MAX] = {0,};
+
+ rowCnt = 0;
+
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery),
- "SELECT VALUE FROM %s "
- "WHERE (TYPE=%d OR TYPE=%d) "
- "AND ",
- MSGFW_MMS_PREVIEW_TABLE_NAME, MSG_MMS_ITEM_TYPE_IMG, MSG_MMS_ITEM_TYPE_VIDEO);
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT VALUE FROM %s WHERE (TYPE = %d OR TYPE = %d) AND MSG_ID IN %s;",
+ MSGFW_MMS_PREVIEW_TABLE_NAME, MSG_MMS_ITEM_TYPE_IMG, MSG_MMS_ITEM_TYPE_VIDEO, MSGFW_TMP_MSGID_TABLE_NAME);
- strncat(sqlQuery, whereQuery, MAX_QUERY_LEN-strlen(sqlQuery));
+ err = dbHandle->getTable(sqlQuery, &rowCnt);
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
- return MSG_ERR_DB_PREPARE;
+ if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
+ MSG_DEBUG("Fail to getTable().");
+ rowCnt = 0;
}
- while (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- memset(filePath, 0x00, sizeof(filePath));
+ MSG_DEBUG("rowCnt %d", rowCnt);
- strncpy(filePath, (char *)dbHandle.columnText(0), MSG_FILEPATH_LEN_MAX);
+ for (int i = 1; i <= rowCnt; i++) {
+ memset(filePath, 0x00, sizeof(filePath));
+ dbHandle->getColumnToString(i, MSG_FILEPATH_LEN_MAX, filePath);
if (remove(filePath) == -1)
- MSG_DEBUG("Fail to delete file [%s]", filePath);
+ MSG_SEC_DEBUG("Fail to delete file [%s]", filePath);
else
- MSG_DEBUG("Success to delete file [%s]", filePath);
+ MSG_SEC_DEBUG("Success to delete file [%s]", filePath);
}
+ dbHandle->freeTable();
+ } else if (!strcmp(tableList[i], MSGFW_MMS_MULTIPART_TABLE_NAME)) {
+ // MMS file path to delete.
+ char filePath[MSG_FILEPATH_LEN_MAX] = {0,};
- dbHandle.finalizeQuery();
- }
-
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ rowCnt = 0;
- snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s WHERE ", tableList[i]);
- strncat(sqlQuery, whereQuery, MAX_QUERY_LEN-strlen(sqlQuery));
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT FILE_PATH FROM %s WHERE MSG_ID IN %s;", MSGFW_MMS_MULTIPART_TABLE_NAME, MSGFW_TMP_MSGID_TABLE_NAME);
- // Delete Message in specific folder from table
- err = dbHandle.execQuery(sqlQuery);
- if (err != MSG_SUCCESS) {
- MSG_DEBUG("sqlQuery [%s]", sqlQuery);
- dbHandle.endTrans(false);
- return err;
- }
- }
+ err = dbHandle->getTable(sqlQuery, &rowCnt);
- // Clear Conversation table
- err = MsgStoClearConversationTable(&dbHandle);
- if (err != MSG_SUCCESS) {
- dbHandle.endTrans(false);
- return err;
- }
+ if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
+ MSG_DEBUG("Fail to getTable().");
+ rowCnt = 0;
+ }
- // Update Address
- while (!threadList.empty()) {
- err = MsgStoUpdateConversation(&dbHandle, threadList.front());
+ MSG_DEBUG("rowCnt %d", rowCnt);
- threadList.pop();
+ for (int i = 1; i <= rowCnt; i++) {
+ memset(filePath, 0x00, sizeof(filePath));
+ dbHandle->getColumnToString(i, MSG_FILEPATH_LEN_MAX, filePath);
+ if (filePath[0] != '\0') {
+ if (remove(filePath) == -1)
+ MSG_SEC_DEBUG("Fail to delete file [%s]", filePath);
+ else
+ MSG_SEC_DEBUG("Success to delete file [%s]", filePath);
+ }
+ }
+ dbHandle->freeTable();
- if (err != MSG_SUCCESS) {
- dbHandle.endTrans(false);
- return err;
- }
- }
+ // MMS thumbnail path to delete
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT THUMB_FILE_PATH FROM %s WHERE MSG_ID IN %s;", MSGFW_MMS_MULTIPART_TABLE_NAME, MSGFW_TMP_MSGID_TABLE_NAME);
- dbHandle.endTrans(true);
+ err = dbHandle->getTable(sqlQuery, &rowCnt);
- int smsCnt = 0;
- int mmsCnt = 0;
+ if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
+ MSG_DEBUG("Fail to getTable().");
+ rowCnt = 0;
+ }
- smsCnt = MsgStoGetUnreadCnt(&dbHandle, MSG_SMS_TYPE);
- mmsCnt = MsgStoGetUnreadCnt(&dbHandle, MSG_MMS_TYPE);
+ MSG_DEBUG("rowCnt %d", rowCnt);
- MsgSettingSetIndicator(smsCnt, mmsCnt);
+ for (int i = 1; i <= rowCnt; i++) {
+ memset(filePath, 0x00, sizeof(filePath));
+ dbHandle->getColumnToString(i, MSG_FILEPATH_LEN_MAX, filePath);
+ if (filePath[0] != '\0') {
+ if (remove(filePath) == -1)
+ MSG_SEC_DEBUG("Fail to delete file [%s]", filePath);
+ else
+ MSG_SEC_DEBUG("Success to delete file [%s]", filePath);
+ }
+ }
-#if 0
-/*** Create thread for noti and phone log delete. **/
- if (pMsgIdList->nCount > 0) {
- msg_id_list_s *pToDeleteMsgIdList = NULL;
- pToDeleteMsgIdList = (msg_id_list_s *)new char[sizeof(msg_id_list_s)];
- memset(pToDeleteMsgIdList, 0x00, sizeof(msg_id_list_s));
- pToDeleteMsgIdList->nCount = pMsgIdList->nCount;
- pToDeleteMsgIdList->msgIdList = (msg_message_id_t *)new char[sizeof(msg_message_id_t)*pMsgIdList->nCount];
- memcpy(pToDeleteMsgIdList->msgIdList, pMsgIdList->msgIdList, sizeof(msg_message_id_t)*pMsgIdList->nCount);
-
- msg_id_list_s *pToDeleteMsgIdListCpy = NULL;
- pToDeleteMsgIdListCpy = (msg_id_list_s *)new char[sizeof(msg_id_list_s)];
- memset(pToDeleteMsgIdListCpy, 0x00, sizeof(msg_id_list_s));
- pToDeleteMsgIdListCpy->nCount = pMsgIdList->nCount;
- pToDeleteMsgIdListCpy->msgIdList = (msg_message_id_t *)new char[sizeof(msg_message_id_t)*pMsgIdList->nCount];
- memcpy(pToDeleteMsgIdListCpy->msgIdList, pMsgIdList->msgIdList, sizeof(msg_message_id_t)*pMsgIdList->nCount);
-
- if (g_idle_add(startToDeleteNoti, (void *)pToDeleteMsgIdList) == 0) {
- MSG_DEBUG("startToDeleteNoti not invoked: %s", strerror(errno));
- // memory free
- if (pToDeleteMsgIdList != NULL) {
- //free peer info list
- if (pToDeleteMsgIdList->msgIdList != NULL)
- delete [] pToDeleteMsgIdList->msgIdList;
-
- delete [] pToDeleteMsgIdList;
- }
- err = MSG_ERR_UNKNOWN;
+ dbHandle->freeTable();
}
- if (g_idle_add(startToDeletePhoneLog, (void *)pToDeleteMsgIdListCpy) == 0) {
- MSG_DEBUG("startToDeletePhoneLog not invoked: %s", strerror(errno));
- // memory free
- if (pToDeleteMsgIdListCpy != NULL) {
- //free peer info list
- if (pToDeleteMsgIdListCpy->msgIdList != NULL)
- delete [] pToDeleteMsgIdListCpy->msgIdList;
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s WHERE MSG_ID IN %s;", tableList[i], MSGFW_TMP_MSGID_TABLE_NAME);
- delete [] pToDeleteMsgIdListCpy;
- }
- err = MSG_ERR_UNKNOWN;
+ // Delete Message in specific folder from table
+ err = dbHandle->execQuery(sqlQuery);
+ if (err != MSG_SUCCESS) {
+ MSG_DEBUG("Fail to execQuery().");
}
}
-/*** **/
-#endif
- MsgRefreshNoti();
+ // Clear Conversation table
+ err = MsgStoClearConversationTable(dbHandle);
+ if (err != MSG_SUCCESS) MSG_DEBUG("Fail to MsgStoClearConversationTable().");
+
+ // Update Address
+ while (!threadList2.empty()) {
+ err = MsgStoUpdateConversation(dbHandle, threadList2.front());
+ if (err != MSG_SUCCESS) MSG_DEBUG("Fail to MsgStoUpdateConversation().");
+ threadList2.pop();
+ }
+ err = dbHandle->endTrans(true);
+ if (err != MSG_SUCCESS) {
+ MSG_DEBUG("Fail to endTrans(true).");
+ dbHandle->endTrans(false);
+ return err;
+ }
+
+ if (g_idle_add(resetNotification, NULL) == 0) {
+ MSG_DEBUG("resetNotification() Error");
+ }
MSG_END();
return MSG_SUCCESS;
MsgStoGetMsgType(msgId, &msgType);
char sqlQuery[MAX_QUERY_LEN+1];
+ MsgDbHandler *dbHandle = getDbHandle();
memset(sqlQuery, 0x00, sizeof(sqlQuery));
else
snprintf(sqlQuery, sizeof(sqlQuery), "UPDATE %s SET FOLDER_ID = %d WHERE MSG_ID = %d;", MSGFW_MESSAGE_TABLE_NAME, destFolderId, msgId);
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS)
return MSG_ERR_DB_EXEC;
/* get conversation id */
snprintf(sqlQuery, sizeof(sqlQuery), "SELECT CONV_ID FROM %s WHERE MSG_ID = %d;",
MSGFW_MESSAGE_TABLE_NAME, msgId);
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS)
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS)
return MSG_ERR_DB_PREPARE;
- if (dbHandle.stepQuery() == MSG_ERR_DB_ROW)
- convId = dbHandle.columnInt(0);
+ if (dbHandle->stepQuery() == MSG_ERR_DB_ROW)
+ convId = dbHandle->columnInt(0);
MSG_DEBUG("convId : %d", convId);
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
/* update conversation table */
- err = MsgStoUpdateConversation(&dbHandle, convId);
+ err = MsgStoUpdateConversation(dbHandle, convId);
+
+ /* update notification */
+ MsgRefreshAllNotification(true, false, false);
return err;
}
msg_error_t err = MSG_SUCCESS;
char sqlQuery[MAX_QUERY_LEN+1];
+ MsgDbHandler *dbHandle = getDbHandle();
MSG_DEBUG("msgId : %d, destStorageId : %d", msgId, destStorageId);
switch (destStorageId) {
case MSG_STORAGE_SIM : // Move message to sim card
+ case MSG_STORAGE_SIM2 :
{
MSG_MESSAGE_INFO_S msgInfo;
SMS_SIM_ID_LIST_S simIdList;
MsgPlugin *plg = MsgPluginManager::instance()->getPlugin(MSG_SMS_TYPE);
+ if (destStorageId == MSG_STORAGE_SIM)
+ msgInfo.sim_idx = 1;
+ else if (destStorageId == MSG_STORAGE_SIM2)
+ msgInfo.sim_idx = 2;
+
if ((err = plg->saveSimMessage(&msgInfo, &simIdList)) != MSG_SUCCESS)
return err;
- dbHandle.beginTrans();
+ dbHandle->beginTrans();
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "UPDATE %s SET STORAGE_ID = %d WHERE MSG_ID = %d;",
- MSGFW_MESSAGE_TABLE_NAME, destStorageId, msgId);
+ snprintf(sqlQuery, sizeof(sqlQuery), "UPDATE %s SET STORAGE_ID = %d, SIM_INDEX = %d WHERE MSG_ID = %d;",
+ MSGFW_MESSAGE_TABLE_NAME, MSG_STORAGE_SIM, msgInfo.sim_idx, msgId);
+ MSG_DEBUG("SQL query=[%s]", sqlQuery);
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
for (unsigned int i = 0; i < simIdList.count; i++) {
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, %d);",
- MSGFW_SIM_MSG_TABLE_NAME, msgId, simIdList.simId[i]);
+ snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, %d, %d);",
+ MSGFW_SIM_MSG_TABLE_NAME, msgInfo.sim_idx, simIdList.simId[i], msgId);
+ MSG_DEBUG("SQL query=[%s]", sqlQuery);
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
}
- dbHandle.endTrans(true);
+ dbHandle->endTrans(true);
}
break;
snprintf(sqlQuery, sizeof(sqlQuery), "SELECT STORAGE_ID FROM %s WHERE MSG_ID = %d;",
MSGFW_MESSAGE_TABLE_NAME, msgId);
- err = dbHandle.getTable(sqlQuery, &rowCnt);
+ err = dbHandle->getTable(sqlQuery, &rowCnt);
if (err != MSG_SUCCESS) {
- dbHandle.freeTable();
+ MSG_DEBUG("Fail to getTable().");
+ dbHandle->freeTable();
return err;
}
- if (dbHandle.getColumnToInt(1) == MSG_STORAGE_SIM) {
+ if (dbHandle->getColumnToInt(1) == MSG_STORAGE_SIM) {
MSG_DEBUG("It is SIM Message");
bSimMsg = true;
}
- dbHandle.freeTable();
+ dbHandle->freeTable();
+#ifndef FEATURE_SMS_CDMA
if (bSimMsg == true) {
msg_sim_id_t simMsgId;
+ msg_sim_slot_id_t sim_idx;
// get sim message id
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT SIM_ID FROM %s WHERE MSG_ID = %d;",
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT SIM_SLOT_ID, SIM_ID FROM %s WHERE MSG_ID = %d;",
MSGFW_SIM_MSG_TABLE_NAME, msgId);
- MSG_DEBUG("sqlQuery is %s.", sqlQuery);
-
- err = dbHandle.getTable(sqlQuery, &rowCnt);
+ err = dbHandle->getTable(sqlQuery, &rowCnt);
if (err != MSG_SUCCESS) {
- dbHandle.freeTable();
+ MSG_DEBUG("Fail to getTable().");
+ dbHandle->freeTable();
return err;
}
//Delete messages in sim card
MsgPlugin *plg = MsgPluginManager::instance()->getPlugin(MSG_SMS_TYPE);
+ int index = 2;
for (int i = 0; i < rowCnt; i++) {
- simMsgId = dbHandle.getColumnToInt(i+1);
+ sim_idx = dbHandle->getColumnToInt(index++);
+ simMsgId = dbHandle->getColumnToInt(index++);
MSG_DEBUG("simMsgId is %d.", simMsgId);
- if ((err = plg->deleteSimMessage(simMsgId)) != MSG_SUCCESS) {
- dbHandle.freeTable();
+ if ((err = plg->deleteSimMessage(sim_idx, simMsgId)) != MSG_SUCCESS) {
+ dbHandle->freeTable();
return err;
}
}
- dbHandle.freeTable();
+ dbHandle->freeTable();
- dbHandle.beginTrans();
+ dbHandle->beginTrans();
//Delete Messages in SIM Msg table
memset(sqlQuery, 0x00, sizeof(sqlQuery));
snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s WHERE MSG_ID = %d;",
MSGFW_SIM_MSG_TABLE_NAME, msgId);
+ MSG_DEBUG("SQL query=[%s]", sqlQuery);
- MSG_DEBUG("sqlQuery is %s.", sqlQuery);
-
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
memset(sqlQuery, 0x00, sizeof(sqlQuery));
snprintf(sqlQuery, sizeof(sqlQuery), "UPDATE %s SET STORAGE_ID = %d WHERE MSG_ID = %d;",
MSGFW_MESSAGE_TABLE_NAME, destStorageId, msgId);
+ MSG_DEBUG("SQL query=[%s]", sqlQuery);
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
- dbHandle.endTrans(true);
+ dbHandle->endTrans(true);
}
+#endif
}
+ break;
}
return MSG_SUCCESS;
}
char sqlQuery[MAX_QUERY_LEN+1];
+ MsgDbHandler *dbHandle = getDbHandle();
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(MSG_ID) FROM %s WHERE FOLDER_ID = %d AND READ_STATUS = 1 \
- UNION ALL SELECT COUNT(MSG_ID) FROM %s WHERE FOLDER_ID = %d AND READ_STATUS = 0 \
- UNION ALL SELECT COUNT(MSG_ID) FROM %s WHERE FOLDER_ID = %d AND MAIN_TYPE = %d \
- UNION ALL SELECT COUNT(MSG_ID) FROM %s WHERE FOLDER_ID = %d AND MAIN_TYPE = %d;",
- MSGFW_MESSAGE_TABLE_NAME, folderId,
- MSGFW_MESSAGE_TABLE_NAME, folderId,
- MSGFW_MESSAGE_TABLE_NAME, folderId, MSG_SMS_TYPE,
- MSGFW_MESSAGE_TABLE_NAME, folderId, MSG_MMS_TYPE);
-
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS)
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(MSG_ID) FROM %s WHERE FOLDER_ID = %d AND READ_STATUS = 1 AND STORAGE_ID = %d "
+ "UNION ALL SELECT COUNT(MSG_ID) FROM %s WHERE FOLDER_ID = %d AND READ_STATUS = 0 AND STORAGE_ID = %d "
+ "UNION ALL SELECT COUNT(MSG_ID) FROM %s WHERE FOLDER_ID = %d AND MAIN_TYPE = %d AND STORAGE_ID = %d "
+ "UNION ALL SELECT COUNT(MSG_ID) FROM %s WHERE FOLDER_ID = %d AND MAIN_TYPE = %d AND STORAGE_ID = %d;",
+ MSGFW_MESSAGE_TABLE_NAME, folderId, MSG_STORAGE_PHONE,
+ MSGFW_MESSAGE_TABLE_NAME, folderId, MSG_STORAGE_PHONE,
+ MSGFW_MESSAGE_TABLE_NAME, folderId, MSG_SMS_TYPE, MSG_STORAGE_PHONE,
+ MSGFW_MESSAGE_TABLE_NAME, folderId, MSG_MMS_TYPE, MSG_STORAGE_PHONE);
+
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS)
return MSG_ERR_DB_PREPARE;
- if (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- pCountInfo->nReadCnt = dbHandle.columnInt(0);
+ if (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ pCountInfo->nReadCnt = dbHandle->columnInt(0);
} else {
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
return MSG_ERR_DB_STEP;
}
- if (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- pCountInfo->nUnreadCnt = dbHandle.columnInt(0);
+ if (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ pCountInfo->nUnreadCnt = dbHandle->columnInt(0);
} else {
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
return MSG_ERR_DB_STEP;
}
- if (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- pCountInfo->nSms = dbHandle.columnInt(0);
+ if (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ pCountInfo->nSms = dbHandle->columnInt(0);
} else {
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
return MSG_ERR_DB_STEP;
}
- if (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- pCountInfo->nMms = dbHandle.columnInt(0);
+ if (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ pCountInfo->nMms = dbHandle->columnInt(0);
} else {
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
return MSG_ERR_DB_STEP;
}
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
return MSG_SUCCESS;
}
char sqlQuery[MAX_QUERY_LEN+1];
memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ MsgDbHandler *dbHandle = getDbHandle();
// SMS
if ((pMsgType->mainType == MSG_SMS_TYPE) &&
(pMsgType->subType == MSG_NORMAL_SMS || pMsgType->subType == MSG_STATUS_REPORT_SMS || pMsgType->subType == MSG_CONCAT_SIM_SMS)) {
return MSG_ERR_INVALID_PARAMETER;
}
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS)
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS)
return MSG_ERR_DB_PREPARE;
- if (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- *pMsgCount = dbHandle.columnInt(0);
+ if (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ *pMsgCount = dbHandle->columnInt(0);
} else {
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
return MSG_ERR_DB_STEP;
}
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
return MSG_SUCCESS;
}
msg_error_t MsgStoGetMessage(msg_message_id_t msgId, MSG_MESSAGE_INFO_S *pMsg, MSG_SENDINGOPT_INFO_S *pSendOptInfo)
{
char sqlQuery[MAX_QUERY_LEN+1];
-
- int order = MsgGetContactNameOrder();
-
memset(sqlQuery, 0x00, sizeof(sqlQuery));
snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID, CONV_ID, FOLDER_ID, STORAGE_ID, MAIN_TYPE, \
SUB_TYPE, DISPLAY_TIME, DATA_SIZE, NETWORK_STATUS, READ_STATUS, PROTECTED, \
- BACKUP, PRIORITY, MSG_DIRECTION, SCHEDULED_TIME, SUBJECT, MSG_TEXT, THUMB_PATH \
+ BACKUP, PRIORITY, MSG_DIRECTION, SCHEDULED_TIME, SUBJECT, MSG_TEXT, THUMB_PATH, SIM_INDEX \
FROM %s WHERE MSG_ID = %d;",
MSGFW_MESSAGE_TABLE_NAME, msgId);
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS)
+ MsgDbHandler *dbHandle = getDbHandle();
+
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS)
return MSG_ERR_DB_PREPARE;
- if (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- pMsg->msgId = dbHandle.columnInt(0);
- pMsg->threadId = dbHandle.columnInt(1);
- pMsg->folderId = dbHandle.columnInt(2);
- pMsg->storageId = dbHandle.columnInt(3);
- pMsg->msgType.mainType = dbHandle.columnInt(4);
- pMsg->msgType.subType = dbHandle.columnInt(5);
- pMsg->displayTime = (time_t)dbHandle.columnInt(6);
- pMsg->dataSize = dbHandle.columnInt(7);
- pMsg->networkStatus = dbHandle.columnInt(8);
- pMsg->bRead = dbHandle.columnInt(9);
- pMsg->bProtected = dbHandle.columnInt(10);
- pMsg->bBackup = dbHandle.columnInt(11);
- pMsg->priority = dbHandle.columnInt(12);
- pMsg->direction= dbHandle.columnInt(13);
-
- strncpy(pMsg->subject, (char *)dbHandle.columnText(15), MAX_SUBJECT_LEN);
+ if (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ pMsg->msgId = dbHandle->columnInt(0);
+ pMsg->threadId = dbHandle->columnInt(1);
+ pMsg->folderId = dbHandle->columnInt(2);
+ pMsg->storageId = dbHandle->columnInt(3);
+ pMsg->msgType.mainType = dbHandle->columnInt(4);
+ pMsg->msgType.subType = dbHandle->columnInt(5);
+ pMsg->displayTime = (time_t)dbHandle->columnInt(6);
+ pMsg->dataSize = dbHandle->columnInt(7);
+ pMsg->networkStatus = dbHandle->columnInt(8);
+ pMsg->bRead = dbHandle->columnInt(9);
+ pMsg->bProtected = dbHandle->columnInt(10);
+ pMsg->bBackup = dbHandle->columnInt(11);
+ pMsg->priority = dbHandle->columnInt(12);
+ pMsg->direction= dbHandle->columnInt(13);
+
+ strncpy(pMsg->subject, (char *)dbHandle->columnText(15), MAX_SUBJECT_LEN);
/* Temp_File_Handling */
if (pMsg->msgType.mainType == MSG_SMS_TYPE || pMsg->msgType.subType == MSG_NOTIFICATIONIND_MMS) {
char msgData[pMsg->dataSize+1];
memset(msgData, 0x00, sizeof(msgData));
- strncpy(msgData, (char *)dbHandle.columnText(16), pMsg->dataSize);
+ strncpy(msgData, (char *)dbHandle->columnText(16), pMsg->dataSize);
// Save Message Data into File
- char fileName[MAX_COMMON_INFO_SIZE+1];
+ char fileName[MSG_FILENAME_LEN_MAX+1];
memset(fileName, 0x00, sizeof(fileName));
if (MsgCreateFileName(fileName) == false) {
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
return MSG_ERR_STORAGE_ERROR;
}
- MSG_DEBUG("Save Message Data into file : size[%d] name[%s]\n", pMsg->dataSize, fileName);
+ MSG_SEC_DEBUG("Save Message Data into file : size[%d] name[%s]\n", pMsg->dataSize, fileName);
if (MsgWriteIpcFile(fileName, msgData, pMsg->dataSize) == false) {
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
return MSG_ERR_STORAGE_ERROR;
}
pMsg->bTextSms = false;
} else {
memset(pMsg->msgText, 0x00, sizeof(pMsg->msgText));
- strncpy(pMsg->msgText, (char *)dbHandle.columnText(16), pMsg->dataSize);
+ strncpy(pMsg->msgText, (char *)dbHandle->columnText(16), pMsg->dataSize);
// For WAP PUSH SI Message
if (pMsg->msgType.subType == MSG_WAP_SI_SMS) {
strncat(pMsg->msgText, "\n", MAX_MSG_TEXT_LEN-strlen(pMsg->msgText));
strncat(pMsg->msgText, pMsg->subject, MAX_MSG_TEXT_LEN-strlen(pMsg->msgText));
- MSG_DEBUG("pMsg->msgText : [%s]", pMsg->msgText);
+ MSG_SEC_DEBUG("pMsg->msgText : [%s]", pMsg->msgText);
pMsg->dataSize = sizeof(pMsg->msgText);
}
pMsg->bTextSms = true;
}
} else {
- if (dbHandle.columnText(16) != NULL)
- strncpy(pMsg->msgText, (char *)dbHandle.columnText(16), MAX_MSG_TEXT_LEN);
+ if (dbHandle->columnText(16) != NULL)
+ strncpy(pMsg->msgText, (char *)dbHandle->columnText(16), MAX_MSG_TEXT_LEN);
}
// thumbnail path
- if (dbHandle.columnText(17)!=NULL && ((char *)dbHandle.columnText(17))[0] != '\0') {
- strncpy(pMsg->thumbPath, (char *)dbHandle.columnText(17), MSG_FILEPATH_LEN_MAX);
+ if (dbHandle->columnText(17)!= NULL && ((char *)dbHandle->columnText(17))[0] != '\0') {
+ strncpy(pMsg->thumbPath, (char *)dbHandle->columnText(17), MSG_FILEPATH_LEN_MAX);
MSG_DEBUG("pMsg->thumbPath : [%s]", pMsg->thumbPath);
}
+ pMsg->sim_idx = dbHandle->columnInt(18);
} else {
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
MSG_DEBUG("%s", sqlQuery);
return MSG_ERR_DB_STEP;
}
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
// get address information.
- MsgStoGetAddressByMsgId(&dbHandle, pMsg->msgId, order, &pMsg->nAddressCnt, pMsg->addressList);
+ //contacts-service is not used for gear
+ //contactNameOrder is never used
+#ifndef MSG_CONTACTS_SERVICE_NOT_SUPPORTED
+ MsgStoGetAddressByMsgId(dbHandle, pMsg->msgId, MsgGetContactNameOrder(), &pMsg->nAddressCnt, &pMsg->addressList);
+#else
+// MsgStoGetAddressByMsgId(dbHandle, pMsg->msgId, &pMsg->nAddressCnt, &pMsg->addressList);
+#endif //MSG_CONTACTS_SERVICE_NOT_SUPPORTED
// Get MMS body if it is MMS.
if ((pMsg->networkStatus == MSG_NETWORK_RETRIEVE_SUCCESS &&
- (pMsg->msgType.subType == MSG_RETRIEVE_AUTOCONF_MMS || pMsg->msgType.subType == MSG_RETRIEVE_MANUALCONF_MMS)) ||
- pMsg->msgType.subType == MSG_SENDREQ_MMS || pMsg->msgType.subType == MSG_SENDCONF_MMS) {
+ (pMsg->msgType.subType == MSG_RETRIEVE_MMS || pMsg->msgType.subType == MSG_RETRIEVE_AUTOCONF_MMS || pMsg->msgType.subType == MSG_RETRIEVE_MANUALCONF_MMS)) ||
+ pMsg->msgType.subType == MSG_SENDREQ_MMS || pMsg->msgType.subType == MSG_SENDCONF_MMS || pMsg->msgType.subType == MSG_NOTIFICATIONIND_MMS) {
msg_error_t err = MSG_SUCCESS;
- MMS_MESSAGE_DATA_S mmsMsg;
char *pDestMsg = NULL;
int temp_size = pMsg->dataSize;//save raw file size;
+
// call mms plugin to get mms specific message data
MsgPlugin *plg = MsgPluginManager::instance()->getPlugin(pMsg->msgType.mainType);
- memset(&mmsMsg, 0, sizeof(MMS_MESSAGE_DATA_S));
- err = plg->getMmsMessage(pMsg, pSendOptInfo, &mmsMsg, &pDestMsg);
+ err = plg->getMmsMessage(pMsg, pSendOptInfo, &pDestMsg);
if (err != MSG_SUCCESS) {
if (pDestMsg) {
free(pDestMsg);
}
return MSG_ERR_STORAGE_ERROR;
}
- MSG_DEBUG("Save Message Data into file : size[%d] name[%s]\n", pMsg->dataSize, tempFileName);
+ MSG_SEC_DEBUG("Save Message Data into file : size[%d] name[%s]\n", pMsg->dataSize, tempFileName);
if (MsgWriteIpcFile(tempFileName, pDestMsg, pMsg->dataSize) == false) {
if(pDestMsg) {
// Get SMS Sending Options
if (pMsg->msgType.mainType == MSG_SMS_TYPE && pSendOptInfo != NULL)
- MsgStoGetSmsSendOpt(pMsg->msgId, pSendOptInfo);
+ MsgStoGetSmsSendOpt(pMsg, pSendOptInfo);
return MSG_SUCCESS;
}
-
-msg_error_t MsgStoGetFolderViewList(msg_folder_id_t folderId, const MSG_SORT_RULE_S *pSortRule, msg_struct_list_s *pMsgFolderViewList)
+msg_error_t MsgStoGetFailedMessage(int **failed_msg_list, int *count)
{
- if (pMsgFolderViewList == NULL) {
- MSG_DEBUG("pMsgFolderViewList is NULL");
- return MSG_ERR_NULL_POINTER;
- }
-
- int rowCnt = 0;
- int index = 19; // numbers of index
-
+ MSG_BEGIN();
+ msg_error_t err = MSG_SUCCESS;
char sqlQuery[MAX_QUERY_LEN+1];
- char sqlSort[64];
-
- // Get Name Order
- int order = MsgGetContactNameOrder();
+ int rowCnt = 0;
+ int index = 1;
+ MsgDbHandler *dbHandle = getDbHandle();
- // Get Message In Folder
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- if (folderId == MSG_ALLBOX_ID) {
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID, CONV_ID, FOLDER_ID, STORAGE_ID, MAIN_TYPE, SUB_TYPE, \
- DISPLAY_TIME, DATA_SIZE, NETWORK_STATUS, READ_STATUS, PROTECTED, BACKUP, PRIORITY, \
- MSG_DIRECTION, SCHEDULED_TIME, SUBJECT, MSG_TEXT, ATTACHMENT_COUNT, THUMB_PATH \
- FROM %s WHERE FOLDER_ID < %d ",
- MSGFW_MESSAGE_TABLE_NAME, MSG_SPAMBOX_ID);
- } else {
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID, CONV_ID, FOLDER_ID, STORAGE_ID, MAIN_TYPE, SUB_TYPE, \
- DISPLAY_TIME, DATA_SIZE, NETWORK_STATUS, READ_STATUS, PROTECTED, BACKUP, PRIORITY, \
- MSG_DIRECTION, SCHEDULED_TIME, SUBJECT, MSG_TEXT, ATTACHMENT_COUNT, THUMB_PATH \
- FROM %s WHERE FOLDER_ID = %d ",
- MSGFW_MESSAGE_TABLE_NAME, folderId);
- }
-
- memset(sqlSort, 0x00, sizeof(sqlSort));
- MsgMakeSortRule(pSortRule, sqlSort);
- strncat(sqlQuery, sqlSort, strlen(sqlSort));
-
- msg_error_t err = dbHandle.getTable(sqlQuery, &rowCnt);
-
- if (err == MSG_ERR_DB_NORECORD) {
- pMsgFolderViewList->nCount = 0;
- pMsgFolderViewList->msg_struct_info = NULL;
-
- dbHandle.freeTable();
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID FROM %s WHERE NETWORK_STATUS = %d AND FOLDER_ID = %d;",
+ MSGFW_MESSAGE_TABLE_NAME, MSG_NETWORK_SEND_PENDING, MSG_OUTBOX_ID);
+ err = dbHandle->getTable(sqlQuery, &rowCnt);
+ if(err == MSG_ERR_DB_NORECORD){
+ dbHandle->freeTable();
return MSG_SUCCESS;
- } else if (err != MSG_SUCCESS) {
- MSG_DEBUG("sqlQuery is - %s", sqlQuery);
- dbHandle.freeTable();
- return err;
}
+ *count = rowCnt;
+ int *list = new int[rowCnt];
- pMsgFolderViewList->nCount = rowCnt;
-
- MSG_DEBUG("pMsgCommInfoList->nCount [%d]", pMsgFolderViewList->nCount);
-
- pMsgFolderViewList->msg_struct_info = (msg_struct_t *)new char[sizeof(msg_struct_t) * rowCnt];
-
- msg_struct_s *msg = NULL;
- MSG_MESSAGE_HIDDEN_S *pTmp = NULL;
-
- for (int i = 0; i < rowCnt; i++) {
- pMsgFolderViewList->msg_struct_info[i] = (msg_struct_t)new char[sizeof(msg_struct_s)];;
-
- msg = (msg_struct_s *)pMsgFolderViewList->msg_struct_info[i];
-
- msg->type = MSG_STRUCT_MESSAGE_INFO;
- msg->data = new char[sizeof(MSG_MESSAGE_HIDDEN_S)];
-
- pTmp = (MSG_MESSAGE_HIDDEN_S *)msg->data;
-
- pTmp->pData = NULL;
- pTmp->pMmsData = NULL;
-
- pTmp->msgId = dbHandle.getColumnToInt(index++);
- pTmp->threadId = dbHandle.getColumnToInt(index++);
- pTmp->folderId = dbHandle.getColumnToInt(index++);
- pTmp->storageId = dbHandle.getColumnToInt(index++);
- pTmp->mainType = dbHandle.getColumnToInt(index++);
- pTmp->subType = dbHandle.getColumnToInt(index++);
- pTmp->displayTime = (time_t)dbHandle.getColumnToInt(index++);
- pTmp->dataSize = dbHandle.getColumnToInt(index++);
- pTmp->networkStatus = dbHandle.getColumnToInt(index++);
- pTmp->bRead = dbHandle.getColumnToInt(index++);
- pTmp->bProtected = dbHandle.getColumnToInt(index++);
- pTmp->bBackup = dbHandle.getColumnToInt(index++);
- pTmp->priority = dbHandle.getColumnToInt(index++);
- pTmp->direction= dbHandle.getColumnToInt(index++);
- index++; // This field is reserved.
-
- dbHandle.getColumnToString(index++, MAX_SUBJECT_LEN, pTmp->subject);
-
- if (pTmp->mainType == MSG_MMS_TYPE &&
- (pTmp->networkStatus == MSG_NETWORK_RETRIEVING || pTmp->networkStatus == MSG_NETWORK_RETRIEVE_FAIL || pTmp->subType == MSG_NOTIFICATIONIND_MMS)) {
- pTmp->pData = NULL;
- index++;
- } else {
- pTmp->pData = (void *)new char[pTmp->dataSize + 2];
- memset(pTmp->pData, 0x00, pTmp->dataSize + 2);
-
- dbHandle.getColumnToString(index++, pTmp->dataSize+1, (char *)pTmp->pData);
- }
-
- // get address information from db.
- msg_struct_list_s *addr_list = (msg_struct_list_s *)new msg_struct_list_s;
-
- MsgStoGetAddressByMsgId(&dbHandle, pTmp->msgId, order, addr_list);
-
- pTmp->addr_list = addr_list;
-
- pTmp->attachCount = dbHandle.getColumnToInt(index++);
-
- dbHandle.getColumnToString(index++, MSG_FILEPATH_LEN_MAX, pTmp->thumbPath);
+ for(int i=0; i<rowCnt; ++i){
+ list[i] = dbHandle->getColumnToInt(index++);
}
+ *failed_msg_list = list;
+ dbHandle->freeTable();
- dbHandle.freeTable();
-
- return MSG_SUCCESS;
+ MSG_END();
+ return err;
}
-
msg_error_t MsgStoAddSyncMLMessage(MSG_MESSAGE_INFO_S *pMsgInfo, int extId, int pinCode)
{
MSG_BEGIN();
unsigned int rowId = 0;
msg_thread_id_t convId = 0;
+ MsgDbHandler *dbHandle = getDbHandle();
- dbHandle.beginTrans();
+ dbHandle->beginTrans();
if (pMsgInfo->nAddressCnt > 0) {
- err = MsgStoAddAddress(&dbHandle, pMsgInfo, &convId);
+ err = MsgStoAddAddress(dbHandle, pMsgInfo, &convId);
if (err != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ dbHandle->endTrans(false);
return err;
}
}
// Add Message Table
pMsgInfo->threadId = convId;
- rowId = MsgStoAddMessageTable(&dbHandle, pMsgInfo);
+ rowId = MsgStoAddMessageTable(dbHandle, pMsgInfo);
if (rowId <= 0) {
- dbHandle.endTrans(false);
+ dbHandle->endTrans(false);
return MSG_ERR_DB_ROW;
}
snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, %d, %d);",
MSGFW_SYNCML_MSG_TABLE_NAME, rowId, extId, pinCode);
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_DB_EXEC;
}
- if (MsgStoUpdateConversation(&dbHandle, convId) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
+ if (MsgStoUpdateConversation(dbHandle, convId) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
return MSG_ERR_STORAGE_ERROR;
}
- dbHandle.endTrans(true);
+ dbHandle->endTrans(true);
pMsgInfo->msgId = (msg_message_id_t)rowId;
- MsgSoundPlayStart(false);
-
- int smsCnt = 0;
- int mmsCnt = 0;
-
- smsCnt = MsgStoGetUnreadCnt(&dbHandle, MSG_SMS_TYPE);
- mmsCnt = MsgStoGetUnreadCnt(&dbHandle, MSG_MMS_TYPE);
-
- MsgSettingHandleNewMsg(smsCnt, mmsCnt);
-
- MsgInsertNoti(&dbHandle, pMsgInfo);
+ MsgInsertNotification(pMsgInfo);
+ MsgChangePmState();
MSG_END();
msg_error_t MsgStoGetMsgType(msg_message_id_t msgId, MSG_MESSAGE_TYPE_S *pMsgType)
{
+ MsgDbHandler *dbHandle = getDbHandle();
char sqlQuery[MAX_QUERY_LEN+1];
memset(sqlQuery, 0x00, sizeof(sqlQuery));
snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MAIN_TYPE, SUB_TYPE FROM %s WHERE MSG_ID = %d;",
MSGFW_MESSAGE_TABLE_NAME, msgId);
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS)
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS)
return MSG_ERR_DB_PREPARE;
- if (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- pMsgType->mainType = dbHandle.columnInt(0);
- pMsgType->subType = dbHandle.columnInt(1);
+ if (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ pMsgType->mainType = dbHandle->columnInt(0);
+ pMsgType->subType = dbHandle->columnInt(1);
}
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
return MSG_SUCCESS;
}
{
msg_error_t err = MSG_SUCCESS;
+ MsgDbHandler *dbHandle = getDbHandle();
char sqlQuery[MAX_QUERY_LEN+1];
memset(sqlQuery, 0x00, sizeof(sqlQuery));
// Get Message ID
msg_message_id_t msgId;
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS)
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS)
return MSG_ERR_DB_PREPARE;
- if (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- msgId = dbHandle.columnInt(0);
+ if (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ msgId = dbHandle->columnInt(0);
} else {
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
return MSG_ERR_DB_STEP;
}
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
// Get Message Info
err = MsgStoGetMessage(msgId, pMsg, NULL);
}
-msg_error_t MsgStoGetThreadViewList(const MSG_SORT_RULE_S *pSortRule, msg_struct_list_s *pThreadViewList)
+msg_error_t MsgStoDeleteThreadMessageList(msg_thread_id_t threadId, bool bIncludeProtect, msg_id_list_s *pMsgIdList)
{
- pThreadViewList->nCount = 0;
- pThreadViewList->msg_struct_info = NULL;
+ msg_error_t err = MSG_SUCCESS;
+ MsgDbHandler *dbHandle = getDbHandle();
+ char sqlQuery[MAX_QUERY_LEN+1];
+
+ /*** Get msg id list **/
int rowCnt = 0;
- int index = 11; // numbers of index
+ int index = 1;
- char sqlQuery[MAX_QUERY_LEN+1];
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT A.CONV_ID, A.UNREAD_CNT, A.SMS_CNT, A.MMS_CNT, \
- A.MAIN_TYPE, A.SUB_TYPE, A.MSG_DIRECTION, A.DISPLAY_TIME, A.DISPLAY_NAME, A.MSG_TEXT, \
- (SELECT COUNT(*) FROM %s B WHERE B.CONV_ID = A.CONV_ID AND B.PROTECTED = 1) AS PROTECTED \
- FROM %s A WHERE A.SMS_CNT > 0 OR A.MMS_CNT > 0 ORDER BY A.DISPLAY_TIME DESC;",
- MSGFW_MESSAGE_TABLE_NAME, MSGFW_CONVERSATION_TABLE_NAME);
+#ifdef MSG_NOTI_INTEGRATION
+ if (bIncludeProtect) {
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID FROM %s WHERE \
+ CONV_ID = %d AND FOLDER_ID > %d AND FOLDER_ID < %d AND STORAGE_ID = %d;",
+ MSGFW_MESSAGE_TABLE_NAME, threadId, MSG_ALLBOX_ID, MSG_SPAMBOX_ID, MSG_STORAGE_PHONE);
+ } else {
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID FROM %s WHERE \
+ CONV_ID = %d AND FOLDER_ID > %d AND FOLDER_ID < %d AND STORAGE_ID = %d AND PROTECTED = 0;",
+ MSGFW_MESSAGE_TABLE_NAME, threadId, MSG_ALLBOX_ID, MSG_SPAMBOX_ID, MSG_STORAGE_PHONE);
+ }
+#else
+ if (bIncludeProtect) {
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID FROM %s WHERE \
+ CONV_ID = %d AND FOLDER_ID > %d AND FOLDER_ID < %d AND STORAGE_ID = %d;",
+ MSGFW_MESSAGE_TABLE_NAME, threadId, MSG_ALLBOX_ID, MSG_CBMSGBOX_ID, MSG_STORAGE_PHONE);
+ } else {
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID FROM %s WHERE \
+ CONV_ID = %d AND FOLDER_ID > %d AND FOLDER_ID < %d AND STORAGE_ID = %d AND PROTECTED = 0;",
+ MSGFW_MESSAGE_TABLE_NAME, threadId, MSG_ALLBOX_ID, MSG_CBMSGBOX_ID, MSG_STORAGE_PHONE);
+ }
+#endif
- msg_error_t err = dbHandle.getTable(sqlQuery, &rowCnt);
+ err = dbHandle->getTable(sqlQuery, &rowCnt);
- if (err == MSG_ERR_DB_NORECORD) {
- dbHandle.freeTable();
- return MSG_SUCCESS;
- } else if (err != MSG_SUCCESS) {
- MSG_DEBUG("%s", sqlQuery);
- dbHandle.freeTable();
+ if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
+ MSG_DEBUG("Fail to getTable().");
+ dbHandle->freeTable();
return err;
}
- if (rowCnt < 1) {
- MSG_DEBUG("rowCnt is %d", rowCnt);
- dbHandle.freeTable();
- return err;
+ if (rowCnt <= 0) {
+// dbHandle->freeTable();
+ err = MSG_SUCCESS;
}
- pThreadViewList->nCount = rowCnt;
-
- MSG_DEBUG("pThreadViewList->nCount [%d]", pThreadViewList->nCount);
+ pMsgIdList->nCount = rowCnt;
- pThreadViewList->msg_struct_info = (msg_struct_t *)new char[sizeof(msg_struct_t)*rowCnt];
+ MSG_DEBUG("pMsgIdList->nCount [%d]", pMsgIdList->nCount);
- MSG_THREAD_VIEW_S *pTmp = NULL;
- msg_struct_s *thread_t = NULL;
+ pMsgIdList->msgIdList = (msg_message_id_t *)new char[sizeof(msg_message_id_t) * rowCnt];
- for (int i = 0; i < rowCnt; i++) {
- thread_t = (msg_struct_s *)new msg_struct_s;
- pThreadViewList->msg_struct_info[i] = (msg_struct_t)thread_t;
+ for (int i = 0; i < rowCnt; i++)
+ pMsgIdList->msgIdList[i] = dbHandle->getColumnToInt(index++);
- thread_t->type = MSG_STRUCT_THREAD_INFO;
- thread_t->data = new MSG_THREAD_VIEW_S;
+ dbHandle->freeTable();
+ /*** **/
- pTmp = (MSG_THREAD_VIEW_S *)thread_t->data;
- memset(pTmp, 0x00, sizeof(MSG_THREAD_VIEW_S));
+ err = MsgStoDeleteMessageByList(pMsgIdList);
- pTmp->threadId = dbHandle.getColumnToInt(index++);
+ return err;
+}
- pTmp->unreadCnt = dbHandle.getColumnToInt(index++);
- pTmp->smsCnt = dbHandle.getColumnToInt(index++);
- pTmp->mmsCnt = dbHandle.getColumnToInt(index++);
- pTmp->mainType = dbHandle.getColumnToInt(index++);
- pTmp->subType = dbHandle.getColumnToInt(index++);
+msg_error_t MsgStoCountMsgByContact(const MSG_THREAD_LIST_INDEX_S *pAddrInfo, MSG_THREAD_COUNT_INFO_S *pThreadCountInfo)
+{
+ MsgDbHandler *dbHandle = getDbHandle();
+ char sqlQuery[MAX_QUERY_LEN+1];
- pTmp->direction = dbHandle.getColumnToInt(index++);
- pTmp->threadTime = (time_t)dbHandle.getColumnToInt(index++);
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
- memset(pTmp->threadName, 0x00, sizeof(pTmp->threadName));
- dbHandle.getColumnToString(index++, MAX_THREAD_NAME_LEN, pTmp->threadName);
+ if (pAddrInfo->contactId > 0) {
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) AS TOTAL, \
+ SUM(CASE WHEN READ_STATUS=0 AND FOLDER_ID=%d THEN 1 ELSE 0 END), \
+ SUM(CASE WHEN MAIN_TYPE=%d THEN 1 ELSE 0 END), \
+ SUM(CASE WHEN MAIN_TYPE=%d THEN 1 ELSE 0 END) \
+ FROM (SELECT * FROM %s A JOIN %s B ON A.CONV_ID = B.CONV_ID WHERE B.CONTACT_ID = %d)",
+ MSG_INBOX_ID, MSG_SMS_TYPE, MSG_MMS_TYPE, MSGFW_MESSAGE_TABLE_NAME, MSGFW_ADDRESS_TABLE_NAME, pAddrInfo->contactId);
+ } else {
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) AS TOTAL, \
+ SUM(CASE WHEN READ_STATUS=0 AND FOLDER_ID=%d THEN 1 ELSE 0 END), \
+ SUM(CASE WHEN MAIN_TYPE=%d THEN 1 ELSE 0 END), \
+ SUM(CASE WHEN MAIN_TYPE=%d THEN 1 ELSE 0 END) \
+ FROM (SELECT * FROM %s A JOIN %s B ON A.CONV_ID = B.CONV_ID WHERE B.ADDRESS_VAL = '%s')",
+ MSG_INBOX_ID, MSG_SMS_TYPE, MSG_MMS_TYPE, MSGFW_MESSAGE_TABLE_NAME, MSGFW_ADDRESS_TABLE_NAME, pAddrInfo->msgAddrInfo.addressVal);
+ }
- memset(pTmp->threadData, 0x00, sizeof(pTmp->threadData));
- dbHandle.getColumnToString(index++, MAX_THREAD_DATA_LEN, pTmp->threadData);
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS)
+ return MSG_ERR_DB_PREPARE;
- int protectedCnt = dbHandle.getColumnToInt(index++);
- if (protectedCnt > 0)
- pTmp->bProtected = true;
+ if (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ pThreadCountInfo->totalCount = dbHandle->columnInt(0);
+ pThreadCountInfo->unReadCount = dbHandle->columnInt(1);
+ pThreadCountInfo->smsMsgCount = dbHandle->columnInt(2);
+ pThreadCountInfo->mmsMsgCount = dbHandle->columnInt(3);
+ } else {
+ dbHandle->finalizeQuery();
+ return MSG_ERR_DB_STEP;
}
- dbHandle.freeTable();
+ dbHandle->finalizeQuery();
return MSG_SUCCESS;
}
-msg_error_t MsgStoGetConversationPreview(MSG_CONVERSATION_VIEW_S *pConv)
+
+msg_error_t MsgStoGetSyncMLExtId(msg_message_id_t msgId, int *extId)
{
- MsgDbHandler dbHandleForInner;
- char sqlQuery[MAX_QUERY_LEN + 1];
- int rowCnt;
- int index = 3;
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ MsgDbHandler *dbHandle = getDbHandle();
+ char sqlQuery[MAX_QUERY_LEN+1];
- if (pConv == NULL)
- return MSG_ERR_NULL_POINTER;
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
- //(MSG_ID INTEGER, TYPE INTEGER, VALUE TEXT, COUNT INTEGER)
- snprintf(sqlQuery, sizeof(sqlQuery),
- "SELECT TYPE, VALUE, COUNT "
- "FROM %s WHERE MSG_ID=%d;",
- MSGFW_MMS_PREVIEW_TABLE_NAME, pConv->msgId);
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT EXT_ID FROM %s WHERE MSG_ID = %d;",
+ MSGFW_SYNCML_MSG_TABLE_NAME, msgId);
- MSG_DEBUG("QUERY : [%s]", sqlQuery);
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS)
+ return MSG_ERR_DB_PREPARE;
- msg_error_t err = dbHandleForInner.getTable(sqlQuery, &rowCnt);
- if (err == MSG_SUCCESS) {
- for (int i = 0; i < rowCnt; i++) {
- int type = dbHandleForInner.getColumnToInt(index++);
- if (type == MSG_MMS_ITEM_TYPE_IMG) {
- dbHandleForInner.getColumnToString(index++, MSG_FILEPATH_LEN_MAX, pConv->imageThumbPath);
- dbHandleForInner.getColumnToInt(index++);
- } else if (type == MSG_MMS_ITEM_TYPE_VIDEO) {
- dbHandleForInner.getColumnToString(index++, MSG_FILEPATH_LEN_MAX, pConv->videoThumbPath);
- dbHandleForInner.getColumnToInt(index++);
- } else if (type == MSG_MMS_ITEM_TYPE_AUDIO) {
- dbHandleForInner.getColumnToString(index++, MSG_FILENAME_LEN_MAX, pConv->audioFileName);
- dbHandleForInner.getColumnToInt(index++);
- } else if (type == MSG_MMS_ITEM_TYPE_ATTACH) {
- dbHandleForInner.getColumnToString(index++, MSG_FILENAME_LEN_MAX, pConv->attachFileName);
- dbHandleForInner.getColumnToInt(index++);
- } else if (type == MSG_MMS_ITEM_TYPE_PAGE) {
- index++;
- pConv->pageCount = dbHandleForInner.getColumnToInt(index++);
- } else {
- MSG_DEBUG("Unknown item type [%d]", type);
- index+=2;
- }
- }
+ if (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ *extId = dbHandle->columnInt(0);
+ } else {
+ dbHandle->finalizeQuery();
+ return MSG_ERR_DB_STEP;
}
- dbHandleForInner.freeTable();
+ dbHandle->finalizeQuery();
+
return MSG_SUCCESS;
}
-msg_error_t MsgStoGetConversationViewItem(msg_message_id_t msgId, MSG_CONVERSATION_VIEW_S *pConv)
+
+msg_error_t MsgStoGetSmsReportStatus(msg_message_id_t msgId, int *count, MSG_REPORT_STATUS_INFO_S **pReportStatus)
{
- int rowCnt = 0;
- int index = 16; /** numbers of index */
+ MsgDbHandler *dbHandle = getDbHandle();
char sqlQuery[MAX_QUERY_LEN+1];
+ msg_error_t err = MSG_SUCCESS;
memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery),
+ "SELECT ADDRESS_VAL, STATUS_TYPE, STATUS, TIME "
+ "FROM %s "
+ "WHERE MSG_ID = %d "
+ "order by TIME ASC;"
+ , MSGFW_SMS_REPORT_TABLE_NAME, msgId);
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID, CONV_ID, FOLDER_ID, STORAGE_ID, MAIN_TYPE, SUB_TYPE, \
- DISPLAY_TIME, DATA_SIZE, NETWORK_STATUS, READ_STATUS, PROTECTED, \
- MSG_DIRECTION, SCHEDULED_TIME, SUBJECT, MSG_TEXT, ATTACHMENT_COUNT \
- FROM %s WHERE MSG_ID=%d;",
- MSGFW_MESSAGE_TABLE_NAME, msgId);
+ int rowCnt;
+ err = dbHandle->getTable(sqlQuery, &rowCnt);
- msg_error_t err = dbHandle.getTable(sqlQuery, &rowCnt);
+ if (err != MSG_SUCCESS) {
+ MSG_DEBUG("Fail to getTable().");
+ dbHandle->freeTable();
+ return err;
+ }
- if (err == MSG_ERR_DB_NORECORD) {
- dbHandle.freeTable();
- return MSG_SUCCESS;
- } else if (err != MSG_SUCCESS) {
- MSG_DEBUG("%s", sqlQuery);
- dbHandle.freeTable();
- return err;
- }
-
- memset(pConv, 0x00, sizeof(MSG_CONVERSATION_VIEW_S));
- pConv->pText = NULL;
-
- pConv->msgId = dbHandle.getColumnToInt(index++);
- pConv->threadId = dbHandle.getColumnToInt(index++);
- pConv->folderId = dbHandle.getColumnToInt(index++);
- pConv->storageId = dbHandle.getColumnToInt(index++);
- pConv->mainType = dbHandle.getColumnToInt(index++);
- pConv->subType = dbHandle.getColumnToInt(index++);
- pConv->displayTime = (time_t)dbHandle.getColumnToInt(index++);
- pConv->textSize = dbHandle.getColumnToInt(index++);
- pConv->networkStatus = dbHandle.getColumnToInt(index++);
- pConv->bRead = dbHandle.getColumnToInt(index++);
- pConv->bProtected = dbHandle.getColumnToInt(index++);
- pConv->direction = dbHandle.getColumnToInt(index++);
- pConv->scheduledTime = (time_t)dbHandle.getColumnToInt(index++);
-
- dbHandle.getColumnToString(index++, MAX_SUBJECT_LEN, pConv->subject);
-
- if (pConv->mainType == MSG_MMS_TYPE &&
- (pConv->networkStatus == MSG_NETWORK_RETRIEVING || pConv->networkStatus == MSG_NETWORK_RETRIEVE_FAIL || pConv->subType == MSG_NOTIFICATIONIND_MMS)) {
- pConv->pText = NULL;
- pConv->textSize = 0;
- index++;
- } else {
- if (pConv->mainType == MSG_SMS_TYPE) {
- pConv->pText = new char[pConv->textSize+2];
- memset(pConv->pText, 0x00, pConv->textSize+2);
- dbHandle.getColumnToString(index++, pConv->textSize+1, pConv->pText);
- } else {
- char tmpMmsText[MAX_MMS_TEXT_LEN+1];
- memset(tmpMmsText, 0x00, MAX_MMS_TEXT_LEN+1);
-
- dbHandle.getColumnToString(index++, MAX_MMS_TEXT_LEN, tmpMmsText);
-
- pConv->textSize = strlen(tmpMmsText);
-
- pConv->pText = new char[pConv->textSize+2];
- memset(pConv->pText, 0x00, pConv->textSize+2);
-
- strncpy(pConv->pText, tmpMmsText, pConv->textSize+1);
-
- MsgStoGetConversationPreview(pConv);
- }
- }
-
- pConv->attachCount = dbHandle.getColumnToInt(index++);
-
- MSG_END();
-
- return MSG_SUCCESS;
-}
-
-msg_error_t MsgStoGetConversationViewList(msg_thread_id_t threadId, msg_struct_list_s *pConvViewList)
-{
- MSG_BEGIN();
-
- pConvViewList->nCount = 0;
- pConvViewList->msg_struct_info = NULL;
-
- int rowCnt = 0;
- int index = 16; /** numbers of index */
- char sqlQuery[MAX_QUERY_LEN+1];
-
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
-
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID, CONV_ID, FOLDER_ID, STORAGE_ID, MAIN_TYPE, SUB_TYPE, \
- DISPLAY_TIME, DATA_SIZE, NETWORK_STATUS, READ_STATUS, PROTECTED, \
- MSG_DIRECTION, SCHEDULED_TIME, SUBJECT, MSG_TEXT, ATTACHMENT_COUNT \
- FROM %s WHERE CONV_ID = %d AND FOLDER_ID > %d AND FOLDER_ID < %d AND STORAGE_ID = %d ORDER BY DISPLAY_TIME, MSG_ID ASC;",
- MSGFW_MESSAGE_TABLE_NAME, threadId, MSG_ALLBOX_ID, MSG_CBMSGBOX_ID, MSG_STORAGE_PHONE);
-
- msg_error_t err = dbHandle.getTable(sqlQuery, &rowCnt);
-
- if (err == MSG_ERR_DB_NORECORD) {
- dbHandle.freeTable();
- return MSG_SUCCESS;
- } else if (err != MSG_SUCCESS) {
- MSG_DEBUG("%s", sqlQuery);
- dbHandle.freeTable();
- return err;
- }
-
- pConvViewList->nCount = rowCnt;
-
- MSG_DEBUG("pConvViewList->nCount [%d]", pConvViewList->nCount);
-
- pConvViewList->msg_struct_info = (msg_struct_t *)new char[sizeof(msg_struct_t) * rowCnt];
- memset(pConvViewList->msg_struct_info, 0x00, sizeof(msg_struct_t) * rowCnt);
-
- msg_struct_s *conv = NULL;
- MSG_CONVERSATION_VIEW_S *pTmp = NULL;
-
- for (int i = 0; i < rowCnt; i++) {
- pConvViewList->msg_struct_info[i] = (msg_struct_t)new char[sizeof(msg_struct_s)];;
- memset(pConvViewList->msg_struct_info[i], 0x00, sizeof(msg_struct_s));
-
- conv = (msg_struct_s *)pConvViewList->msg_struct_info[i];
-
- conv->type = MSG_STRUCT_CONV_INFO;
- conv->data = new char[sizeof(MSG_CONVERSATION_VIEW_S)];
- memset(conv->data, 0x00, sizeof(MSG_CONVERSATION_VIEW_S));
-
- pTmp = (MSG_CONVERSATION_VIEW_S *)conv->data;
-
- pTmp->pText = NULL;
-
- pTmp->msgId = dbHandle.getColumnToInt(index++);
- pTmp->threadId = dbHandle.getColumnToInt(index++);
- pTmp->folderId = dbHandle.getColumnToInt(index++);
- pTmp->storageId = dbHandle.getColumnToInt(index++);
- pTmp->mainType = dbHandle.getColumnToInt(index++);
- pTmp->subType = dbHandle.getColumnToInt(index++);
- pTmp->displayTime = (time_t)dbHandle.getColumnToInt(index++);
- pTmp->textSize = dbHandle.getColumnToInt(index++);
- pTmp->networkStatus = dbHandle.getColumnToInt(index++);
- pTmp->bRead = dbHandle.getColumnToInt(index++);
- pTmp->bProtected = dbHandle.getColumnToInt(index++);
- pTmp->direction = dbHandle.getColumnToInt(index++);
- index++; // This field is reserved.
-
- dbHandle.getColumnToString(index++, MAX_SUBJECT_LEN, pTmp->subject);
-
- if (pTmp->mainType == MSG_MMS_TYPE &&
- (pTmp->networkStatus == MSG_NETWORK_RETRIEVING || pTmp->networkStatus == MSG_NETWORK_RETRIEVE_FAIL || pTmp->subType == MSG_NOTIFICATIONIND_MMS)) {
- pTmp->pText = NULL;
- pTmp->textSize = 0;
- index++;
- } else {
- if (pTmp->mainType == MSG_SMS_TYPE) {
- pTmp->pText = new char[pTmp->textSize+2];
- memset(pTmp->pText, 0x00, pTmp->textSize+2);
- dbHandle.getColumnToString(index++, pTmp->textSize+1, pTmp->pText);
- } else {
- char tmpMmsText[MAX_MMS_TEXT_LEN+1];
- memset(tmpMmsText, 0x00, MAX_MMS_TEXT_LEN+1);
-
- dbHandle.getColumnToString(index++, MAX_MMS_TEXT_LEN, tmpMmsText);
-
- pTmp->textSize = strlen(tmpMmsText);
-
- pTmp->pText = new char[pTmp->textSize+2];
- memset(pTmp->pText, 0x00, pTmp->textSize+2);
-
- strncpy(pTmp->pText, tmpMmsText, pTmp->textSize+1);
- }
- }
-
- pTmp->attachCount = dbHandle.getColumnToInt(index++);
-
- MsgStoGetConversationPreview(pTmp);
- }
-
- dbHandle.freeTable();
-
- MSG_END();
-
- return MSG_SUCCESS;
-}
-
-
-msg_error_t MsgStoDeleteThreadMessageList(msg_thread_id_t threadId, bool bIncludeProtect, msg_id_list_s *pMsgIdList)
-{
- msg_error_t err = MSG_SUCCESS;
-
-#if 1
- char sqlQuery[MAX_QUERY_LEN+1];
-
- /*** Get msg id list **/
- int rowCnt = 0;
- int index = 1;
-
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
-
- if (bIncludeProtect) {
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID FROM %s WHERE \
- CONV_ID = %d AND FOLDER_ID > %d AND FOLDER_ID < %d AND STORAGE_ID = %d;",
- MSGFW_MESSAGE_TABLE_NAME, threadId, MSG_ALLBOX_ID, MSG_CBMSGBOX_ID, MSG_STORAGE_PHONE);
- } else {
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID FROM %s WHERE \
- CONV_ID = %d AND FOLDER_ID > %d AND FOLDER_ID < %d AND STORAGE_ID = %d AND PROTECTED = 0;",
- MSGFW_MESSAGE_TABLE_NAME, threadId, MSG_ALLBOX_ID, MSG_CBMSGBOX_ID, MSG_STORAGE_PHONE);
- }
-
- err = dbHandle.getTable(sqlQuery, &rowCnt);
-
- if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
- MSG_DEBUG("sqlQuery [%s]", sqlQuery);
- dbHandle.freeTable();
- }
-
- if (rowCnt <= 0) {
- dbHandle.freeTable();
- err = MSG_SUCCESS;
- }
-
- pMsgIdList->nCount = rowCnt;
-
- MSG_DEBUG("pMsgIdList->nCount [%d]", pMsgIdList->nCount);
-
- pMsgIdList->msgIdList = (msg_message_id_t *)new char[sizeof(msg_message_id_t) * rowCnt];
-
- for (int i = 0; i < rowCnt; i++)
- pMsgIdList->msgIdList[i] = dbHandle.getColumnToInt(index++);
-
- dbHandle.freeTable();
- /*** **/
-
- err = MsgStoDeleteMessageByList(pMsgIdList);
-
-#else
- char sqlQuery[MAX_QUERY_LEN+1];
- /*** Get msg id list **/
- msg_id_list_s *pToDeleteMsgIdList = NULL;
-
- int rowCnt = 0;
- int index = 1;
- // Set Indicator
- int smsCnt = 0;
- int mmsCnt = 0;
-
- const char *tableList[] = {MSGFW_PUSH_MSG_TABLE_NAME, MSGFW_CB_MSG_TABLE_NAME,
- MSGFW_SYNCML_MSG_TABLE_NAME, MSGFW_SMS_SENDOPT_TABLE_NAME,
- MMS_PLUGIN_MESSAGE_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME};
-
- int listCnt = sizeof(tableList)/sizeof(char *);
-
- pToDeleteMsgIdList = (msg_id_list_s *)new char[sizeof(msg_id_list_s)];
- memset(pToDeleteMsgIdList, 0x00, sizeof(msg_id_list_s));
-
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID FROM %s WHERE CONV_ID = %d;", MSGFW_MESSAGE_TABLE_NAME, threadId);
-
- err = dbHandle.getTable(sqlQuery, &rowCnt);
-
- if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
- MSG_DEBUG("sqlQuery [%s]", sqlQuery);
-
- dbHandle.freeTable();
-
- goto FREE_MEMORY;
- }
-
- if (rowCnt <= 0) {
- dbHandle.freeTable();
- err = MSG_SUCCESS;
-
- goto FREE_MEMORY;
- }
-
- pToDeleteMsgIdList->nCount = rowCnt;
-
- MSG_DEBUG("pToDeleteMsgIdList->nCount [%d]", pToDeleteMsgIdList->nCount);
-
- pToDeleteMsgIdList->msgIdList = (msg_message_id_t *)new char[sizeof(msg_message_id_t) * rowCnt];
-
- for (int i = 0; i < rowCnt; i++)
- pToDeleteMsgIdList->msgIdList[i] = dbHandle.getColumnToInt(index++);
-
- dbHandle.freeTable();
- /*** **/
-
- /*** Delete Sim Message **/
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
-
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID FROM %s WHERE CONV_ID = %d AND STORAGE_ID = %d",
- MSGFW_MESSAGE_TABLE_NAME, threadId, MSG_STORAGE_SIM);
-
- rowCnt = 0;
-
- err = dbHandle.getTable(sqlQuery, &rowCnt);
-
- if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
- MSG_DEBUG("sqlQuery [%s]", sqlQuery);
-
- dbHandle.freeTable();
-
- goto FREE_MEMORY;
- }
-
- for (int i = 1; i <= rowCnt; i++) {
- err = MsgStoDeleteMessage(dbHandle.getColumnToInt(i), false);
-
- if (err != MSG_SUCCESS) {
- MSG_DEBUG("MsgStoDeleteMessage() Error!!!");
-
- dbHandle.freeTable();
-
- goto FREE_MEMORY;
- }
- }
-
- dbHandle.freeTable();
- /*** **/
-
- dbHandle.beginTrans();
-
- for (int i = 0; i < listCnt; i++) {
- if (!strcmp(tableList[i], MMS_PLUGIN_MESSAGE_TABLE_NAME)) {
-
- int rowCnt = 0;
-
- //get mms msg id list
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT FILE_PATH FROM %s A, %s B\
- WHERE A.CONV_ID = %d AND A.MAIN_TYPE = %d AND A.MSG_ID = B.MSG_ID;",
- MSGFW_MESSAGE_TABLE_NAME, MMS_PLUGIN_MESSAGE_TABLE_NAME, threadId, MSG_MMS_TYPE);
-
- err = dbHandle.getTable(sqlQuery, &rowCnt);
- MSG_DEBUG("rowCnt %d", rowCnt);
-
- if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
- MSG_DEBUG("sqlQuery [%s]", sqlQuery);
-
- dbHandle.freeTable();
- dbHandle.endTrans(false);
-
- goto FREE_MEMORY;
- }
-
- for (int i = 1; i <= rowCnt; i++) {
-
- char filePath[MSG_FILEPATH_LEN_MAX] = {0,};
- char dirPath[MSG_FILEPATH_LEN_MAX] = {0,};
- char thumbnailPath[MSG_FILEPATH_LEN_MAX] = {0,};
-
- dbHandle.getColumnToString(i, MSG_FILEPATH_LEN_MAX, filePath);
-
- MSG_DEBUG("filePath [%s]", filePath);
-
- //delete raw file
- snprintf(dirPath, sizeof(dirPath), "%s.dir", filePath);
-
- if (remove(filePath) == -1)
- MSG_DEBUG("Fail to delete file [%s]", filePath);
- else
- MSG_DEBUG("Success to delete file [%s]", filePath);
-
- MsgRmRf(dirPath);
-
- // remove directory also
- rmdir(dirPath);
-
- // delete thumbnail
- char *fileName = NULL;
- fileName = strrchr(filePath, '/');
-
- snprintf(thumbnailPath, sizeof(thumbnailPath), MSG_THUMBNAIL_PATH"%s.jpg", fileName+1);
-
- if (remove(thumbnailPath) == -1)
- MSG_DEBUG("Fail to delete thumbnail [%s]", thumbnailPath);
- else
- MSG_DEBUG("Success to delete thumbnail [%s]", thumbnailPath);
- }
-
- dbHandle.freeTable();
- }
-
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s WHERE MSG_ID IN \
- (SELECT MSG_ID FROM %s WHERE CONV_ID = %d);",
- tableList[i], MSGFW_MESSAGE_TABLE_NAME, threadId);
-
- // Delete Message in specific folder from table
- if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
- MSG_DEBUG("sqlQuery [%s]", sqlQuery);
- dbHandle.endTrans(false);
- err = MSG_ERR_DB_EXEC;
-
- goto FREE_MEMORY;
- }
- }
-
- // Clear Conversation table
- if (MsgStoClearConversationTable(&dbHandle) != MSG_SUCCESS) {
- dbHandle.endTrans(false);
- err = MSG_ERR_DB_EXEC;
-
- goto FREE_MEMORY;
- }
-
- dbHandle.endTrans(true);
-
- MSG_MESSAGE_TYPE_S msgType;
-
- msgType.mainType = MSG_SMS_TYPE;
- msgType.subType = MSG_NORMAL_SMS;
- msgType.classType = MSG_CLASS_NONE;
-
- // Set memory status in SIM
- if (MsgStoCheckMsgCntFull(&dbHandle, &msgType, MSG_INBOX_ID) == MSG_SUCCESS) {
- MSG_DEBUG("Set Memory Status");
-
- MsgPlugin *plg = MsgPluginManager::instance()->getPlugin(MSG_SMS_TYPE);
-
- if (plg == NULL) {
- MSG_DEBUG("SMS Plug-in is NULL");
- err = MSG_ERR_NULL_POINTER;
-
- goto FREE_MEMORY;
- }
-
- plg->setMemoryStatus(MSG_SUCCESS);
- }
-
- // Set Indicator
- smsCnt = MsgStoGetUnreadCnt(&dbHandle, MSG_SMS_TYPE);
- mmsCnt = MsgStoGetUnreadCnt(&dbHandle, MSG_MMS_TYPE);
-
- MsgSettingSetIndicator(smsCnt, mmsCnt);
-
-/*** Set pMsgIdList **/
- if (pMsgIdList != NULL && pToDeleteMsgIdList->nCount > 0) {
- pMsgIdList->nCount = pToDeleteMsgIdList->nCount;
-
- pMsgIdList->msgIdList = (msg_message_id_t *)new char[sizeof(msg_message_id_t)*pToDeleteMsgIdList->nCount];
- memcpy(pMsgIdList->msgIdList, pToDeleteMsgIdList->msgIdList, sizeof(msg_message_id_t)*pToDeleteMsgIdList->nCount);
- }
-/*** **/
-
- /*** Create thread for noti and phone log delete. **/
- if (pToDeleteMsgIdList->nCount > 0) {
- msg_id_list_s *pToDeleteMsgIdListCpy = NULL;
- pToDeleteMsgIdListCpy = (msg_id_list_s *)new char[sizeof(msg_id_list_s)];
- memset(pToDeleteMsgIdListCpy, 0x00, sizeof(msg_id_list_s));
-
- pToDeleteMsgIdListCpy->nCount = pToDeleteMsgIdList->nCount;
-
- pToDeleteMsgIdListCpy->msgIdList = (msg_message_id_t *)new char[sizeof(msg_message_id_t)*pToDeleteMsgIdList->nCount];
- memcpy(pToDeleteMsgIdListCpy->msgIdList, pToDeleteMsgIdList->msgIdList, sizeof(msg_message_id_t)*pToDeleteMsgIdList->nCount);
-
- if (g_idle_add(startToDeleteNoti, (void *)pToDeleteMsgIdList) == 0) {
- MSG_DEBUG("startToDeleteNoti not invoked: %s", strerror(errno));
- // memory free
- if (pToDeleteMsgIdList != NULL) {
- //free peer info list
- if (pToDeleteMsgIdList->msgIdList != NULL)
- delete [] pToDeleteMsgIdList->msgIdList;
-
- delete [] pToDeleteMsgIdList;
- }
- err = MSG_ERR_UNKNOWN;
- }
-
- if (g_idle_add(startToDeletePhoneLog, (void *)pToDeleteMsgIdListCpy) == 0) {
- MSG_DEBUG("startToDeletePhoneLog not invoked: %s", strerror(errno));
- // memory free
- if (pToDeleteMsgIdListCpy != NULL) {
- //free peer info list
- if (pToDeleteMsgIdListCpy->msgIdList != NULL)
- delete [] pToDeleteMsgIdListCpy->msgIdList;
-
- delete [] pToDeleteMsgIdListCpy;
- }
- err = MSG_ERR_UNKNOWN;
- }
- }
- /*** **/
-
- return MSG_SUCCESS;
-
-FREE_MEMORY:
- MSG_DEBUG("Error case Free Memory");
- // memory free
- if (pToDeleteMsgIdList != NULL) {
- //free peer info list
- if (pToDeleteMsgIdList->msgIdList != NULL) {
- delete [] pToDeleteMsgIdList->msgIdList;
- pToDeleteMsgIdList->msgIdList = NULL;
- }
-
- delete [] pToDeleteMsgIdList;
- pToDeleteMsgIdList = NULL;
- }
-#endif
-
- return err;
-}
-
-
-msg_error_t MsgStoCountMsgByContact(const MSG_THREAD_LIST_INDEX_S *pAddrInfo, MSG_THREAD_COUNT_INFO_S *pThreadCountInfo)
-{
- char sqlQuery[MAX_QUERY_LEN+1];
-
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
-
- if (pAddrInfo->contactId > 0) {
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) AS TOTAL, \
- SUM(CASE WHEN READ_STATUS=0 AND FOLDER_ID=%d THEN 1 ELSE 0 END), \
- SUM(CASE WHEN MAIN_TYPE=%d THEN 1 ELSE 0 END), \
- SUM(CASE WHEN MAIN_TYPE=%d THEN 1 ELSE 0 END) \
- FROM (SELECT * FROM %s A JOIN %s B ON A.ADDRESS_ID = B.ADDRESS_ID WHERE B.CONTACT_ID = %d)",
- MSG_INBOX_ID, MSG_SMS_TYPE, MSG_MMS_TYPE, MSGFW_MESSAGE_TABLE_NAME, MSGFW_ADDRESS_TABLE_NAME, pAddrInfo->contactId);
- } else {
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) AS TOTAL, \
- SUM(CASE WHEN READ_STATUS=0 AND FOLDER_ID=%d THEN 1 ELSE 0 END), \
- SUM(CASE WHEN MAIN_TYPE=%d THEN 1 ELSE 0 END), \
- SUM(CASE WHEN MAIN_TYPE=%d THEN 1 ELSE 0 END) \
- FROM (SELECT * FROM %s A JOIN %s B ON A.ADDRESS_ID = B.ADDRESS_ID WHERE B.ADDRESS_VAL = '%s')",
- MSG_INBOX_ID, MSG_SMS_TYPE, MSG_MMS_TYPE, MSGFW_MESSAGE_TABLE_NAME, MSGFW_ADDRESS_TABLE_NAME, pAddrInfo->msgAddrInfo.addressVal);
- }
-
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS)
- return MSG_ERR_DB_PREPARE;
-
- if (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- pThreadCountInfo->totalCount = dbHandle.columnInt(0);
- pThreadCountInfo->unReadCount = dbHandle.columnInt(1);
- pThreadCountInfo->smsMsgCount = dbHandle.columnInt(2);
- pThreadCountInfo->mmsMsgCount = dbHandle.columnInt(3);
- } else {
- dbHandle.finalizeQuery();
- return MSG_ERR_DB_STEP;
- }
-
- dbHandle.finalizeQuery();
-
- return MSG_SUCCESS;
-}
-
-
-msg_error_t MsgStoSearchMessage(const char *pSearchString, msg_struct_list_s *pThreadViewList)
-{
- if (!pSearchString)
- return MSG_ERR_NULL_POINTER;
-
- // Clear Out Parameter
- pThreadViewList->nCount = 0;
- pThreadViewList->msg_struct_info = NULL;
-
- tr1::unordered_set<msg_thread_id_t> IdList;
- queue<MSG_THREAD_VIEW_S> searchList;
-
- MSG_THREAD_VIEW_S threadView;
-
- char sqlQuery[MAX_QUERY_LEN+1];
-
- // Replace string for '%' and '_' character
- char *ext1_str = NULL;
- char *ext2_str = NULL;
-
- ext1_str = MsgStoReplaceString(pSearchString, "_", "\\_");
- ext2_str = MsgStoReplaceString(ext1_str, "%", "\\%");
-
- // Search - Address, Name
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
-
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT CONV_ID, UNREAD_CNT, SMS_CNT, MMS_CNT, DISPLAY_NAME, \
- MAIN_TYPE, SUB_TYPE, MSG_DIRECTION, DISPLAY_TIME, MSG_TEXT \
- FROM %s WHERE DISPLAY_NAME LIKE '%%%s%%' ESCAPE '\\' ORDER BY DISPLAY_TIME DESC;",
- MSGFW_CONVERSATION_TABLE_NAME, ext2_str);
-
- if (ext1_str) {
- free(ext1_str);
- ext1_str = NULL;
- }
-
- if (ext2_str) {
- free(ext2_str);
- ext2_str = NULL;
- }
-
- MSG_DEBUG("[%s]", sqlQuery);
-
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS) {
- MSG_DEBUG("Prepare query fail. [%s]", sqlQuery);
- return MSG_ERR_DB_PREPARE;
- }
-
- while (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- memset(&threadView, 0x00, sizeof(threadView));
-
- threadView.threadId = dbHandle.columnInt(0);
- threadView.unreadCnt = dbHandle.columnInt(1);
- threadView.smsCnt = dbHandle.columnInt(2);
- threadView.mmsCnt = dbHandle.columnInt(3);
-
- strncpy(threadView.threadName, (char *)dbHandle.columnText(4), MAX_THREAD_NAME_LEN);
-
- threadView.mainType = dbHandle.columnInt(5);
- threadView.subType = dbHandle.columnInt(6);
-
- threadView.direction = dbHandle.columnInt(7);
- threadView.threadTime = (time_t)dbHandle.columnInt(8);
-
- strncpy(threadView.threadData, (char *)dbHandle.columnText(9), MAX_THREAD_DATA_LEN);
-
- tr1::unordered_set<msg_thread_id_t>::iterator it;
-
- it = IdList.find(threadView.threadId);
-
- if (it == IdList.end()) {
- IdList.insert(threadView.threadId);
- searchList.push(threadView);
- }
-
- }
-
- dbHandle.finalizeQuery();
-
- // Add data to Out Parameter
- pThreadViewList->nCount = searchList.size();
- pThreadViewList->msg_struct_info = (msg_struct_t *)new char[sizeof(msg_struct_t) * searchList.size()];
-
- MSG_THREAD_VIEW_S *pTmp = NULL;
- msg_struct_s *thread_t = NULL;
-
- int index = 0;
-
- while (!searchList.empty()) {
- thread_t = (msg_struct_s *)new msg_struct_s;
- pThreadViewList->msg_struct_info[index] = (msg_struct_t)thread_t;
-
- thread_t->type = MSG_STRUCT_THREAD_INFO;
- thread_t->data = new MSG_THREAD_VIEW_S;
-
- pTmp = (MSG_THREAD_VIEW_S *)thread_t->data;
- memset(pTmp, 0x00, sizeof(MSG_THREAD_VIEW_S));
-
- memcpy(pTmp, &(searchList.front()), sizeof(MSG_THREAD_VIEW_S));
-
- searchList.pop();
-
- index++;
- }
-
- return MSG_SUCCESS;
-}
-
-
-msg_error_t MsgStoSearchMessage(const MSG_SEARCH_CONDITION_S *pSearchCon, int offset, int limit, msg_struct_list_s *pMsgList)
-{
- // Clear Out Parameter
- pMsgList->nCount = 0;
- pMsgList->msg_struct_info = NULL;
-
- int rowCnt = 0;
- int index = 26; // numbers of index
-
- char sqlQuery[MAX_QUERY_LEN+1];
- char sqlQuerySubset[(MAX_QUERY_LEN/5)+1];
-
- char firstName[MAX_DISPLAY_NAME_LEN+1], lastName[MAX_DISPLAY_NAME_LEN+1];
- char displayName[MAX_DISPLAY_NAME_LEN+1];
-
- char *ext1_str = NULL;
- char *ext2_str = NULL;
-
- // Get Name Order
- int order = MsgGetContactNameOrder();
-
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
-
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT A.MSG_ID, A.CONV_ID, A.FOLDER_ID, A.STORAGE_ID, A.MAIN_TYPE, A.SUB_TYPE, \
- A.DISPLAY_TIME, A.DATA_SIZE, A.NETWORK_STATUS, A.READ_STATUS, A.PROTECTED, A.BACKUP, A.PRIORITY, \
- A.MSG_DIRECTION, A.SCHEDULED_TIME, A.SUBJECT, A.MSG_TEXT, B.ADDRESS_TYPE, B.RECIPIENT_TYPE, \
- B.CONTACT_ID, B.ADDRESS_VAL, B.DISPLAY_NAME, B.FIRST_NAME, B.LAST_NAME, A.ATTACHMENT_COUNT, A.THUMB_PATH \
- FROM %s A, %s B \
- WHERE A.CONV_ID = B.CONV_ID AND B.ADDRESS_ID <> 0 ",
- MSGFW_MESSAGE_TABLE_NAME, MSGFW_ADDRESS_TABLE_NAME);
-
- //// folder
- memset(sqlQuerySubset, 0x00, sizeof(sqlQuerySubset));
-
- if (pSearchCon->folderId == MSG_ALLBOX_ID)
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND A.FOLDER_ID > 0 AND A.FOLDER_ID < %d ", MSG_CBMSGBOX_ID);
- else if (pSearchCon->folderId == MSG_IOSBOX_ID)
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND A.FOLDER_ID > 0 AND A.FOLDER_ID < %d ", MSG_DRAFT_ID);
- else
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND A.FOLDER_ID = %d ", pSearchCon->folderId);
-
- strncat(sqlQuery, sqlQuerySubset, MAX_QUERY_LEN-strlen(sqlQuery));
-
-
- //// msg type
- memset(sqlQuerySubset, 0x00, sizeof(sqlQuerySubset));
-
- switch (pSearchCon->msgType) {
- case MSG_TYPE_SMS:
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND A.MAIN_TYPE = %d AND A.SUB_TYPE = %d ", MSG_SMS_TYPE, MSG_NORMAL_SMS);
- break;
-
- case MSG_TYPE_MMS:
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND A.MAIN_TYPE = %d ", MSG_MMS_TYPE);
- break;
-
- case MSG_TYPE_MMS_JAVA:
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND A.MAIN_TYPE = %d AND A.SUB_TYPE = %d ", MSG_MMS_TYPE, MSG_SENDREQ_JAVA_MMS);
- break;
-
- case MSG_TYPE_SMS_SYNCML:
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND A.MAIN_TYPE = %d AND A.SUB_TYPE = %d ", MSG_SMS_TYPE, MSG_SYNCML_CP);
- break;
-
- case MSG_TYPE_SMS_REJECT:
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND A.MAIN_TYPE = %d AND A.SUB_TYPE = %d ", MSG_SMS_TYPE, MSG_REJECT_SMS);
- break;
-
- default:
- MSG_DEBUG("msg type is not set.");
- break;
- }
-
- strncat(sqlQuery, sqlQuerySubset, MAX_QUERY_LEN-strlen(sqlQuery));
-
- /// string
- if (pSearchCon->pSearchVal != NULL) {
-
- // Replace string for '%' and '_' character
- ext1_str = MsgStoReplaceString(pSearchCon->pSearchVal, "_", "\\_");
- ext2_str = MsgStoReplaceString(ext1_str, "%", "\\%");
-
- memset(sqlQuerySubset, 0x00, sizeof(sqlQuerySubset));
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND ( A.MSG_TEXT LIKE '%%%s%%' ESCAPE '\\' \
- OR A.SUBJECT LIKE '%%%s%%' ESCAPE '\\' \
- OR B.ADDRESS_VAL LIKE '%%%s%%' ESCAPE '\\' \
- OR B.DISPLAY_NAME LIKE '%%%s%%' ESCAPE '\\' \
- OR B.FIRST_NAME LIKE '%%%s%%' ESCAPE '\\' \
- OR B.LAST_NAME LIKE '%%%s%%' ESCAPE '\\') ",
- ext2_str, ext2_str, ext2_str, ext2_str, ext2_str, ext2_str);
- strncat(sqlQuery, sqlQuerySubset, MAX_QUERY_LEN-strlen(sqlQuery));
-
- if (ext1_str) {
- free(ext1_str);
- ext1_str = NULL;
- }
-
- if (ext2_str) {
- free(ext2_str);
- ext2_str = NULL;
- }
- }
-
- /// address
- if (pSearchCon->pAddressVal != NULL) {
-
- // Replace string for '%' and '_' character
- ext1_str = MsgStoReplaceString(pSearchCon->pAddressVal, "_", "\\_");
- ext2_str = MsgStoReplaceString(ext1_str, "%", "\\%");
-
- memset(sqlQuerySubset, 0x00, sizeof(sqlQuerySubset));
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND B.ADDRESS_VAL LIKE '%%%s%%' ESCAPE '\\' ", ext2_str);
- strncat(sqlQuery, sqlQuerySubset, MAX_QUERY_LEN-strlen(sqlQuery));
-
- if (ext1_str) {
- free(ext1_str);
- ext1_str = NULL;
- }
-
- if (ext2_str) {
- free(ext2_str);
- ext2_str = NULL;
- }
- }
-
- /// limit, offset
- memset(sqlQuerySubset, 0x00, sizeof(sqlQuerySubset));
-
- if (offset >= 0 && limit > 0)
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "ORDER BY A.DISPLAY_TIME DESC LIMIT %d OFFSET %d;", limit, offset);
- else
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "ORDER BY A.DISPLAY_TIME DESC;");
-
- strncat(sqlQuery, sqlQuerySubset, MAX_QUERY_LEN-strlen(sqlQuery));
-
- msg_error_t err = dbHandle.getTable(sqlQuery, &rowCnt);
-
- if (err == MSG_ERR_DB_NORECORD) {
- dbHandle.freeTable();
-
- return MSG_SUCCESS;
- } else if (err != MSG_SUCCESS) {
- MSG_DEBUG("Get table fail. [%s]", sqlQuery);
-
- dbHandle.freeTable();
-
- return err;
- }
-
- pMsgList->nCount = rowCnt;
-
- MSG_DEBUG("pMsgList->nCount [%d]", pMsgList->nCount);
-
- pMsgList->msg_struct_info = (msg_struct_t *)new char[sizeof(msg_struct_t) * rowCnt];
-
- MSG_MESSAGE_HIDDEN_S *pTmp = NULL;
- msg_struct_s *msg = NULL;
-
- for (int i = 0; i < rowCnt; i++) {
- pMsgList->msg_struct_info[i] = (msg_struct_t)new msg_struct_s;
-
- msg = (msg_struct_s *)pMsgList->msg_struct_info[i];
-
- msg->type = MSG_STRUCT_MESSAGE_INFO;
- msg->data = (int *)new char[sizeof(MSG_MESSAGE_HIDDEN_S)];
-
- pTmp = (MSG_MESSAGE_HIDDEN_S *)msg->data;
-
- memset(pTmp, 0x00, sizeof(MSG_MESSAGE_HIDDEN_S));
-
- pTmp->pData = NULL;
- pTmp->pMmsData = NULL;
-
- pTmp->msgId = dbHandle.getColumnToInt(index++);
- pTmp->threadId = dbHandle.getColumnToInt(index++);
- pTmp->folderId = dbHandle.getColumnToInt(index++);
- pTmp->storageId = dbHandle.getColumnToInt(index++);
- pTmp->mainType = dbHandle.getColumnToInt(index++);
- pTmp->subType = dbHandle.getColumnToInt(index++);
- pTmp->displayTime = (time_t)dbHandle.getColumnToInt(index++);
- pTmp->dataSize = dbHandle.getColumnToInt(index++);
- pTmp->networkStatus = dbHandle.getColumnToInt(index++);
- pTmp->bRead = dbHandle.getColumnToInt(index++);
- pTmp->bProtected = dbHandle.getColumnToInt(index++);
- pTmp->bBackup = dbHandle.getColumnToInt(index++);
- pTmp->priority = dbHandle.getColumnToInt(index++);
- pTmp->direction= dbHandle.getColumnToInt(index++);
- index++; // This field is reserved.
-
- dbHandle.getColumnToString(index++, MAX_SUBJECT_LEN, pTmp->subject);
-
- if (pTmp->mainType == MSG_MMS_TYPE &&
- (pTmp->networkStatus == MSG_NETWORK_RETRIEVING || pTmp->networkStatus == MSG_NETWORK_RETRIEVE_FAIL || pTmp->subType == MSG_NOTIFICATIONIND_MMS)) {
- pTmp->pData = NULL;
- index++;
- } else {
- MSG_DEBUG("pTmp->dataSize [%d]", pTmp->dataSize);
- pTmp->pData = (void *)new char[pTmp->dataSize + 2];
- memset(pTmp->pData, 0x00, pTmp->dataSize + 2);
-
- dbHandle.getColumnToString(index++, pTmp->dataSize+1, (char *)pTmp->pData);
- }
-
- msg_struct_list_s *addr_list = (msg_struct_list_s *)new msg_struct_list_s;
- msg_struct_s *addr_info = NULL;
- MSG_ADDRESS_INFO_S *address = NULL;
-
- addr_list->nCount = 1;
- addr_list->msg_struct_info = (msg_struct_t *)new char[sizeof(msg_struct_t *)*MAX_TO_ADDRESS_CNT];
-
- msg_struct_s *pTmpAddr = NULL;
-
- for (int i = 0; i < MAX_TO_ADDRESS_CNT; i++) {
- addr_list->msg_struct_info[i] = (msg_struct_t)new char[sizeof(msg_struct_s)];
- pTmpAddr = (msg_struct_s *)addr_list->msg_struct_info[i];
- pTmpAddr->type = MSG_STRUCT_ADDRESS_INFO;
- pTmpAddr->data = new MSG_ADDRESS_INFO_S;
- memset(pTmpAddr->data, 0x00, sizeof(MSG_ADDRESS_INFO_S));
-
- addr_list->msg_struct_info[i] = (msg_struct_t)pTmpAddr;
- }
-
- addr_info = (msg_struct_s *)addr_list->msg_struct_info[0];
- address = (MSG_ADDRESS_INFO_S *)addr_info->data;
- address->addressType = dbHandle.getColumnToInt(index++);
- address->recipientType = dbHandle.getColumnToInt(index++);
- address->contactId = dbHandle.getColumnToInt(index++);
-
- dbHandle.getColumnToString(index++, MAX_ADDRESS_VAL_LEN, address->addressVal);
-
- memset(displayName, 0x00, sizeof(displayName));
- dbHandle.getColumnToString(index++, MAX_DISPLAY_NAME_LEN, displayName);
-
- memset(firstName, 0x00, sizeof(firstName));
- dbHandle.getColumnToString(index++, MAX_DISPLAY_NAME_LEN, firstName);
-
- memset(lastName, 0x00, sizeof(lastName));
- dbHandle.getColumnToString(index++, MAX_DISPLAY_NAME_LEN, lastName);
-
- if (strlen(displayName) <= 0) {
- if (order == 0) {
- if (firstName[0] != '\0') {
- strncpy(displayName, firstName, MAX_DISPLAY_NAME_LEN);
- }
-
- if (lastName[0] != '\0') {
- strncat(displayName, " ", MAX_DISPLAY_NAME_LEN-strlen(displayName));
- strncat(displayName, lastName, MAX_DISPLAY_NAME_LEN-strlen(displayName));
- }
- } else if (order == 1) {
- if (lastName[0] != '\0') {
- strncpy(displayName, lastName, MAX_DISPLAY_NAME_LEN);
- strncat(displayName, " ", MAX_DISPLAY_NAME_LEN-strlen(displayName));
- }
-
- if (firstName[0] != '\0') {
- strncat(displayName, firstName, MAX_DISPLAY_NAME_LEN-strlen(displayName));
- }
- }
- }
-
- strncpy(address->displayName, displayName, MAX_DISPLAY_NAME_LEN);
-
- pTmp->addr_list = addr_list;
+ int index = 4;
- pTmp->attachCount = dbHandle.getColumnToInt(index++);
+ *count = rowCnt;
+ MSG_REPORT_STATUS_INFO_S *report_status = (MSG_REPORT_STATUS_INFO_S*)new char[sizeof(MSG_REPORT_STATUS_INFO_S)*rowCnt];
+ memset(report_status, 0x00, sizeof(MSG_REPORT_STATUS_INFO_S)*rowCnt);
- dbHandle.getColumnToString(index++, MSG_FILEPATH_LEN_MAX, pTmp->thumbPath);
+ for (int i = 0; i < rowCnt; i++) {
+ dbHandle->getColumnToString(index++, MAX_ADDRESS_VAL_LEN, report_status[i].addressVal);
+ report_status[i].type = dbHandle->getColumnToInt(index++);
+ report_status[i].status = dbHandle->getColumnToInt(index++);
+ report_status[i].statusTime = (time_t)dbHandle->getColumnToInt(index++);
+ MSG_SEC_DEBUG("(%d/%d) address = %s, report_type = %d, report_status = %d, report_time = %d", i+1, rowCnt, report_status[i].addressVal, report_status[i].type, report_status[i].status, report_status[i].statusTime);
}
- dbHandle.freeTable();
-
- return MSG_SUCCESS;
-}
+ *pReportStatus = report_status;
-void MsgConvertNumber(const char *pSrcNum, char *pDestNum)
-{
- int overLen = 0;
- int i = 0;
-
- overLen = strlen(pSrcNum) - MAX_PRECONFIG_NUM;
-
- for (i = 0; i < MAX_PRECONFIG_NUM; i++)
- pDestNum[i] = pSrcNum[i+overLen];
+ dbHandle->freeTable();
- pDestNum[i] = '\0';
+ return MSG_SUCCESS;
}
-
-msg_error_t MsgStoGetRejectMsgList(const char *pNumber, msg_struct_list_s *pRejectMsgList)
+msg_error_t MsgStoGetMmsReportStatus(msg_message_id_t msgId, int *count, MSG_REPORT_STATUS_INFO_S **pReportStatus)
{
- // Clear Out Parameter
- pRejectMsgList->nCount = 0;
- pRejectMsgList->msg_struct_info = NULL;
-
- int rowCnt = 0;
- int index = 3; // numbers of index
-
+ MsgDbHandler *dbHandle = getDbHandle();
char sqlQuery[MAX_QUERY_LEN+1];
- // Search Reject Msg
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
-
- if (pNumber != NULL) {
- char phoneNumber[MAX_PRECONFIG_NUM+1];
- memset(phoneNumber, 0x00, sizeof(phoneNumber));
-
- if (strlen(pNumber) > MAX_PRECONFIG_NUM)
- MsgConvertNumber(pNumber, phoneNumber);
- else
- strncpy(phoneNumber, pNumber, MAX_PRECONFIG_NUM);
-
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT B.MSG_ID, B.MSG_TEXT, B.DISPLAY_TIME \
- FROM %s A, %s B \
- WHERE A.CONV_ID = B.CONV_ID AND B.MAIN_TYPE = %d \
- AND B.SUB_TYPE = %d AND A.ADDRESS_VAL LIKE '%%%s' \
- ORDER BY B.DISPLAY_TIME DESC;",
- MSGFW_ADDRESS_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME,
- MSG_SMS_TYPE, MSG_REJECT_SMS, phoneNumber);
- } else {
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT B.MSG_ID, B.MSG_TEXT, B.DISPLAY_TIME \
- FROM %s A, %s B \
- WHERE A.CONV_ID = B.CONV_ID AND B.MAIN_TYPE = %d AND B.SUB_TYPE = %d \
- ORDER BY B.DISPLAY_TIME DESC;",
- MSGFW_ADDRESS_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME,
- MSG_SMS_TYPE, MSG_REJECT_SMS);
- }
-
- msg_error_t err = dbHandle.getTable(sqlQuery, &rowCnt);
+ msg_direction_type_t direction = MSG_DIRECTION_TYPE_MO;
- if (err != MSG_SUCCESS) {
- MSG_DEBUG("%s", sqlQuery);
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_DIRECTION FROM %s WHERE MSG_ID = %d;",
+ MSGFW_MESSAGE_TABLE_NAME, msgId);
- dbHandle.freeTable();
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS)
+ return MSG_ERR_DB_PREPARE;
- return err;
+ if (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ direction = dbHandle->columnInt(0);
}
- pRejectMsgList->nCount = rowCnt;
-
- MSG_DEBUG("pRejectMsgList->nCount [%d]", pRejectMsgList->nCount);
+ dbHandle->finalizeQuery();
- pRejectMsgList->msg_struct_info = (msg_struct_t *)new char[sizeof(MSG_REJECT_MSG_INFO_S *)*rowCnt];
+ if (direction == MSG_DIRECTION_TYPE_MO) {//get received report list of MO message
- msg_struct_s* pTmp = NULL;
-
- for (int i = 0; i < rowCnt; i++) {
- pRejectMsgList->msg_struct_info[i] = (msg_struct_t)new char[sizeof(msg_struct_s)];
-
- pTmp = (msg_struct_s *)pRejectMsgList->msg_struct_info[i];
- pTmp->type = MSG_STRUCT_REJECT_MSG_INFO;
- pTmp->data = new char[sizeof(MSG_FOLDER_INFO_S)];
- MSG_REJECT_MSG_INFO_S * pMsg = (MSG_REJECT_MSG_INFO_S *)pTmp->data;
- memset(pMsg, 0x00, sizeof(MSG_REJECT_MSG_INFO_S));
-
- pMsg->msgId = dbHandle.getColumnToInt(index++);
- memset(pMsg->msgText, 0x00, sizeof(pMsg->msgText));
- dbHandle.getColumnToString(index++, MAX_MSG_TEXT_LEN, pMsg->msgText);
-
- pMsg->displayTime = (time_t)dbHandle.getColumnToInt(index++);
- }
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ //MSG_ID INTEGER , ADDRESS_VAL TEXT , STATUS_TYPE INTEGER , STATUS INTEGER DEFAULT 0 , TIME DATETIME)
+ //select * from MSG_REPORT_TABLE where MSG_ID=38 order by ADDRESS_VAL DESC, STATUS_TYPE ASC;
+ snprintf(sqlQuery, sizeof(sqlQuery),
+ "SELECT ADDRESS_VAL, STATUS_TYPE, STATUS, TIME "
+ "FROM %s "
+ "WHERE MSG_ID = %d "
+ "order by ADDRESS_VAL DESC, STATUS_TYPE ASC;"
+ , MSGFW_REPORT_TABLE_NAME, msgId);
+
+ int rowCnt;
+ msg_error_t err = dbHandle->getTable(sqlQuery, &rowCnt);
+ if (err != MSG_SUCCESS) {
+ MSG_DEBUG("Fail to getTable().");
+ dbHandle->freeTable();
+ return err;
+ }
- dbHandle.freeTable();
+ int index = 4;
- return MSG_SUCCESS;
-}
+ *count = rowCnt;
+ MSG_REPORT_STATUS_INFO_S *report_status = (MSG_REPORT_STATUS_INFO_S*)new char[sizeof(MSG_REPORT_STATUS_INFO_S)*rowCnt];
+ memset(report_status, 0x00, sizeof(MSG_REPORT_STATUS_INFO_S)*rowCnt);
+ for (int i = 0; i < rowCnt; i++) {
+ dbHandle->getColumnToString(index++, MAX_ADDRESS_VAL_LEN, report_status[i].addressVal);
+ report_status[i].type = dbHandle->getColumnToInt(index++);
+ report_status[i].status = dbHandle->getColumnToInt(index++);
+ report_status[i].statusTime = (time_t)dbHandle->getColumnToInt(index++);
-msg_error_t MsgStoGetSyncMLExtId(msg_message_id_t msgId, int *extId)
-{
- char sqlQuery[MAX_QUERY_LEN+1];
+ MSG_DEBUG("(%d/%d) addr = %s, report_type = %d, report_status = %d, report_time = %d", i+1, rowCnt, report_status[i].addressVal, report_status[i].type, report_status[i].status, report_status[i].statusTime );
+ }
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ *pReportStatus = report_status;
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT EXT_ID FROM %s WHERE MSG_ID = %d;",
- MSGFW_SYNCML_MSG_TABLE_NAME, msgId);
+ dbHandle->freeTable();
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS)
- return MSG_ERR_DB_PREPARE;
+ } else if (direction == MSG_DIRECTION_TYPE_MT) {//read report sent status of MT message
- if (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- *extId = dbHandle.columnInt(0);
- } else {
- dbHandle.finalizeQuery();
- return MSG_ERR_DB_STEP;
- }
+ int readReportSentStatus;
- dbHandle.finalizeQuery();
+ if (MsgStoCheckReadReportRequested(dbHandle, msgId) == false) {
+ *count = 0;
+ *pReportStatus = NULL;
+ return MSG_ERR_READREPORT_NOT_REQUESTED;
+ }
- return MSG_SUCCESS;
-}
+ MsgStoGetReadReportSendStatus(msgId, &readReportSentStatus);
-msg_error_t MsgStoGetReportStatus(msg_message_id_t msgId, int *count, MSG_REPORT_STATUS_INFO_S **pReportStatus)
-{
- char sqlQuery[MAX_QUERY_LEN+1];
+ *count = 1;
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
- //MSG_ID INTEGER , ADDRESS_VAL TEXT , STATUS_TYPE INTEGER , STATUS INTEGER DEFAULT 0 , TIME DATETIME)
- //select * from MSG_REPORT_TABLE where MSG_ID=38 order by ADDRESS_VAL DESC, STATUS_TYPE ASC;
- snprintf(sqlQuery, sizeof(sqlQuery),
- "SELECT ADDRESS_VAL, STATUS_TYPE, STATUS, TIME "
- "FROM %s "
- "WHERE MSG_ID = %d "
- "order by ADDRESS_VAL DESC, STATUS_TYPE ASC;"
- , MSGFW_REPORT_TABLE_NAME, msgId);
+ MSG_REPORT_STATUS_INFO_S *report_status = (MSG_REPORT_STATUS_INFO_S*)new char[sizeof(MSG_REPORT_STATUS_INFO_S)];
+ memset(report_status, 0x00, sizeof(MSG_REPORT_STATUS_INFO_S));
- int rowCnt;
- msg_error_t err = dbHandle.getTable(sqlQuery, &rowCnt);
- if (err != MSG_SUCCESS) {
- MSG_DEBUG("%s", sqlQuery);
- dbHandle.freeTable();
- return err;
- }
+ report_status->addressVal[0] = '\0';
+ report_status->type = MSG_REPORT_TYPE_READ_REPORT_SENT;
+ report_status->status = readReportSentStatus;
+ report_status->statusTime = 0;
- int index = 4;
+ MSG_DEBUG("report_type = %d, report_status = %d", report_status->type, report_status->status);
- *count = rowCnt;
- MSG_REPORT_STATUS_INFO_S *report_status = (MSG_REPORT_STATUS_INFO_S*)new char[sizeof(MSG_REPORT_STATUS_INFO_S)*rowCnt];
- memset(report_status, 0x00, sizeof(MSG_REPORT_STATUS_INFO_S)*rowCnt);
+ *pReportStatus = report_status;
- for (int i = 0; i < rowCnt; i++) {
- dbHandle.getColumnToString(index++, MAX_ADDRESS_VAL_LEN, report_status[i].addressVal);
- report_status[i].type = dbHandle.getColumnToInt(index++);
- report_status[i].status = dbHandle.getColumnToInt(index++);
- report_status[i].statusTime = (time_t)dbHandle.getColumnToInt(index++);
- MSG_DEBUG("(%d/%d) addr = %s, report_type = %d, report_status = %d, report_time = %d", i, rowCnt, report_status[i].addressVal, report_status[i].type, report_status[i].status, report_status[i].statusTime );
}
- *pReportStatus = report_status;
-
return MSG_SUCCESS;
}
msg_error_t MsgStoGetThreadIdByAddress(const MSG_MESSAGE_INFO_S *pMsg, msg_thread_id_t *pThreadId)
{
+ MsgDbHandler *dbHandle = getDbHandle();
if(pMsg->nAddressCnt > 0) {
- if (MsgExistAddress(&dbHandle, pMsg, pThreadId) == true) {
+ if (MsgExistAddress(dbHandle, pMsg, pThreadId) == true) {
MSG_DEBUG("Conversation ID : [%d]", *pThreadId);
- } else {
- *pThreadId = 0;
- return MSG_ERR_STORAGE_ERROR;
+
+ // check thread count
+ MSG_THREAD_VIEW_S threadInfo;
+ memset(&threadInfo, 0x00, sizeof(MSG_THREAD_VIEW_S));
+ MsgStoGetThreadInfo(*pThreadId, &threadInfo);
+ MSG_DEBUG("threadInfo.smsCnt [%d], threadInfo.mmsCnt [%d]", threadInfo.smsCnt, threadInfo.mmsCnt);
+ if ((threadInfo.smsCnt + threadInfo.mmsCnt) > 0) {
+ return MSG_SUCCESS;
+ }
}
- } else {
- *pThreadId = 0;
}
+
+ *pThreadId = 0;
return MSG_SUCCESS;
}
{
MSG_BEGIN();
+ MsgDbHandler *dbHandle = getDbHandle();
int msgCnt = 0;
*cnt = 0;
char sqlQuery[MAX_QUERY_LEN+1];
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
-
// Get MSG_ID
memset(sqlQuery, 0x00, sizeof(sqlQuery));
snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(MSG_ID) FROM %s A \
WHERE CONV_ID = %d AND READ_STATUS = 0;", MSGFW_MESSAGE_TABLE_NAME, threadId);
- if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS)
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS)
return MSG_ERR_DB_PREPARE;
- if (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
- msgCnt = dbHandle.columnInt(0);
+ if (dbHandle->stepQuery() == MSG_ERR_DB_ROW) {
+ msgCnt = dbHandle->columnInt(0);
}
- dbHandle.finalizeQuery();
+ dbHandle->finalizeQuery();
*cnt = msgCnt;
}
-msg_error_t MsgStoGetAddressList(const msg_thread_id_t threadId, msg_struct_list_s *pAddrList)
-{
- msg_error_t err = MSG_SUCCESS;
-
- int order = MsgGetContactNameOrder();
-
- err = MsgStoGetAddressByConvId(&dbHandle, threadId, order, pAddrList);
-
- return err;
-}
-
-
msg_error_t MsgStoGetThreadInfo(msg_thread_id_t threadId, MSG_THREAD_VIEW_S *pThreadInfo)
{
MSG_BEGIN();
+ MsgDbHandler *dbHandle = getDbHandle();
int rowCnt;
- int index = 11; // numbers of index
+ int index = 15; // numbers of index
char sqlQuery[MAX_QUERY_LEN+1];
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT A.CONV_ID, A.UNREAD_CNT, A.SMS_CNT, A.MMS_CNT, \
- A.MAIN_TYPE, A.SUB_TYPE, A.MSG_DIRECTION, A.DISPLAY_TIME, A.DISPLAY_NAME, A.MSG_TEXT, \
- (SELECT COUNT(*) FROM %s B WHERE B.CONV_ID = A.CONV_ID AND B.PROTECTED = 1) AS PROTECTED \
- FROM %s A WHERE A.CONV_ID = %d;",
- MSGFW_MESSAGE_TABLE_NAME, MSGFW_CONVERSATION_TABLE_NAME, threadId);
-
- msg_error_t err = dbHandle.getTable(sqlQuery, &rowCnt);
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT A.CONV_ID, A.UNREAD_CNT, A.SMS_CNT, A.MMS_CNT, "
+ "A.MAIN_TYPE, A.SUB_TYPE, A.MSG_DIRECTION, A.DISPLAY_TIME, A.DISPLAY_NAME, A.MSG_TEXT, "
+ "(SELECT COUNT(*) FROM %s B WHERE B.CONV_ID = A.CONV_ID AND B.PROTECTED = 1) AS PROTECTED, "
+ "(SELECT COUNT(*) FROM %s B WHERE B.CONV_ID = A.CONV_ID AND B.FOLDER_ID = %d) AS DRAFT, "
+ "(SELECT COUNT(*) FROM %s B WHERE B.CONV_ID = A.CONV_ID AND B.NETWORK_STATUS = %d) AS FAILED, "
+ "(SELECT COUNT(*) FROM %s B WHERE B.CONV_ID = A.CONV_ID AND B.NETWORK_STATUS = %d) AS SENDING, "
+ "(SELECT SIM_INDEX FROM %s B WHERE B.CONV_ID = A.CONV_ID) "
+ "FROM %s A WHERE A.CONV_ID = %d AND A.SMS_CNT + A.MMS_CNT > 0;",
+ MSGFW_MESSAGE_TABLE_NAME,
+ MSGFW_MESSAGE_TABLE_NAME, MSG_DRAFT_ID,
+ MSGFW_MESSAGE_TABLE_NAME, MSG_NETWORK_SEND_FAIL,
+ MSGFW_MESSAGE_TABLE_NAME, MSG_NETWORK_SENDING,
+ MSGFW_MESSAGE_TABLE_NAME,
+ MSGFW_CONVERSATION_TABLE_NAME, threadId);
+
+ msg_error_t err = dbHandle->getTable(sqlQuery, &rowCnt);
if (err == MSG_ERR_DB_NORECORD) {
- dbHandle.freeTable();
+ dbHandle->freeTable();
return MSG_SUCCESS;
} else if (err != MSG_SUCCESS) {
- MSG_DEBUG("%s", sqlQuery);
- dbHandle.freeTable();
+ MSG_DEBUG("Fail to getTable().");
+ dbHandle->freeTable();
return err;
}
if (rowCnt < 1) {
MSG_DEBUG("rowCnt is %d", rowCnt);
- dbHandle.freeTable();
+ dbHandle->freeTable();
return err;
} else {
- pThreadInfo->threadId = dbHandle.getColumnToInt(index++);
+ pThreadInfo->threadId = dbHandle->getColumnToInt(index++);
- pThreadInfo->unreadCnt = dbHandle.getColumnToInt(index++);
- pThreadInfo->smsCnt = dbHandle.getColumnToInt(index++);
- pThreadInfo->mmsCnt = dbHandle.getColumnToInt(index++);
+ pThreadInfo->unreadCnt = dbHandle->getColumnToInt(index++);
+ pThreadInfo->smsCnt = dbHandle->getColumnToInt(index++);
+ pThreadInfo->mmsCnt = dbHandle->getColumnToInt(index++);
- pThreadInfo->mainType = dbHandle.getColumnToInt(index++);
- pThreadInfo->subType = dbHandle.getColumnToInt(index++);
+ pThreadInfo->mainType = dbHandle->getColumnToInt(index++);
+ pThreadInfo->subType = dbHandle->getColumnToInt(index++);
- pThreadInfo->direction = dbHandle.getColumnToInt(index++);
- pThreadInfo->threadTime = (time_t)dbHandle.getColumnToInt(index++);
+ pThreadInfo->direction = dbHandle->getColumnToInt(index++);
+ pThreadInfo->threadTime = (time_t)dbHandle->getColumnToInt(index++);
memset(pThreadInfo->threadName, 0x00, sizeof(pThreadInfo->threadName));
- dbHandle.getColumnToString(index++, MAX_THREAD_NAME_LEN, pThreadInfo->threadName);
+ dbHandle->getColumnToString(index++, MAX_THREAD_NAME_LEN, pThreadInfo->threadName);
memset(pThreadInfo->threadData, 0x00, sizeof(pThreadInfo->threadData));
- dbHandle.getColumnToString(index++, MAX_THREAD_DATA_LEN, pThreadInfo->threadData);
+ dbHandle->getColumnToString(index++, MAX_THREAD_DATA_LEN, pThreadInfo->threadData);
- int protectedCnt = dbHandle.getColumnToInt(index++);
+ int protectedCnt = dbHandle->getColumnToInt(index++);
if (protectedCnt > 0)
pThreadInfo->bProtected = true;
+
+ int draftCnt = dbHandle->getColumnToInt(index++);
+ if (draftCnt > 0)
+ pThreadInfo->bDraft = true;
+
+ int failedCnt = dbHandle->getColumnToInt(index++);
+ if (failedCnt > 0)
+ pThreadInfo->bSendFailed = true;
+
+ int sendingCnt = dbHandle->getColumnToInt(index++);
+ if (sendingCnt > 0)
+ pThreadInfo->bSending = true;
+
+ pThreadInfo->simIndex = dbHandle->getColumnToInt(index++);
}
- dbHandle.freeTable();
+ dbHandle->freeTable();
MSG_END();
}
-msg_error_t MsgStoGetMessageList(msg_folder_id_t folderId, msg_thread_id_t threadId, msg_message_type_t msgType, msg_storage_id_t storageId, msg_struct_list_s *pMsgList)
+msg_error_t MsgStoRestoreMessage(MSG_MESSAGE_INFO_S *pMsg, MSG_SENDINGOPT_INFO_S *pSendOptInfo)
{
- // Clear Out Parameter
- pMsgList->nCount = 0;
- pMsgList->msg_struct_info = NULL;
-
- int rowCnt = 0;
- int index = 19; // numbers of index
+ MSG_BEGIN();
+ MsgDbHandler *dbHandle = getDbHandle();
+ msg_error_t err = MSG_SUCCESS;
char sqlQuery[MAX_QUERY_LEN+1];
- char sqlQuerySubset[(MAX_QUERY_LEN/5)+1];
- // Get Name Order
- int order = MsgGetContactNameOrder();
+ if(MsgExistConversation(dbHandle, pMsg->threadId))
+ {
+ // add message to address table which having same thread_id and datetime;
+ for (int i=0; i<pMsg->nAddressCnt; i++) {
+ if(MsgExistAddress(dbHandle, pMsg, pMsg->threadId, i) == false)
+ {
+ unsigned int addrId;
+ MSG_CONTACT_INFO_S contactInfo;
+ memset(&contactInfo, 0x00, sizeof(MSG_CONTACT_INFO_S));
+
+ // Get Contact Info
+// if (MsgGetContactInfo(&(pMsg->addressList[i]), &contactInfo) != MSG_SUCCESS) {
+// MSG_DEBUG("MsgGetContactInfo() fail.");
+// }
+ err = dbHandle->getRowId(MSGFW_ADDRESS_TABLE_NAME, &addrId);
+ if (err != MSG_SUCCESS) {
+ MSG_DEBUG("pDbHandle->getRowId fail. [%d]", err);
+ return err;
+ }
- memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ // Add Address
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, %d, %d, %d, '%s', %d, %d, ?, ?, ?, ?, ?, '%s', 0);",
+ MSGFW_ADDRESS_TABLE_NAME, addrId, pMsg->threadId, pMsg->addressList[i].addressType, pMsg->addressList[i].recipientType, pMsg->addressList[i].addressVal,
+ contactInfo.contactId, contactInfo.addrbookId, contactInfo.imagePath);
- snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID, CONV_ID, FOLDER_ID, STORAGE_ID, MAIN_TYPE, SUB_TYPE, \
- DISPLAY_TIME, DATA_SIZE, NETWORK_STATUS, READ_STATUS, PROTECTED, BACKUP, PRIORITY, \
- MSG_DIRECTION, SCHEDULED_TIME, SUBJECT, MSG_TEXT, ATTACHMENT_COUNT, THUMB_PATH \
- FROM %s WHERE ", MSGFW_MESSAGE_TABLE_NAME);
+ MSG_SEC_DEBUG("Add Address Info. [%s]", sqlQuery);
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS)
+ return MSG_ERR_DB_PREPARE;
- //// folder
- memset(sqlQuerySubset, 0x00, sizeof(sqlQuerySubset));
+ dbHandle->bindText(contactInfo.firstName, 1);
+ dbHandle->bindText(contactInfo.lastName, 2);
+ dbHandle->bindText(contactInfo.middleName, 3);
+ dbHandle->bindText(contactInfo.prefix, 4);
+ dbHandle->bindText(contactInfo.suffix, 5);
- if (folderId == MSG_ALLBOX_ID)
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "FOLDER_ID > 0 AND FOLDER_ID < %d ", MSG_CBMSGBOX_ID);
- else if (folderId == MSG_IOSBOX_ID)
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "FOLDER_ID > 0 AND FOLDER_ID < %d ", MSG_DRAFT_ID);
- else
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "FOLDER_ID = %d ", folderId);
+ if (dbHandle->stepQuery() != MSG_ERR_DB_DONE) {
+ dbHandle->finalizeQuery();
+ return MSG_ERR_DB_STEP;
+ }
- strncat(sqlQuery, sqlQuerySubset, MAX_QUERY_LEN-strlen(sqlQuery));
+ dbHandle->finalizeQuery();
+ // set conversation display name by conv id
+ MsgStoSetConversationDisplayName(dbHandle, pMsg->threadId);
+ }
+ }
- //// thread
- memset(sqlQuerySubset, 0x00, sizeof(sqlQuerySubset));
- if (threadId > 0)
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND CONV_ID = %d ", threadId);
+ if(!MsgExistMessage(dbHandle, pMsg))
+ {
+ unsigned int rowId = 0;
- strncat(sqlQuery, sqlQuerySubset, MAX_QUERY_LEN-strlen(sqlQuery));
+ if(pMsg->threadId > 0 && pMsg->folderId == MSG_DRAFT_ID) {
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery),
+ "DELETE FROM %s WHERE CONV_ID = %d AND FOLDER_ID = %d;",
+ MSGFW_MESSAGE_TABLE_NAME, pMsg->threadId, MSG_DRAFT_ID);
- //// msg type
- memset(sqlQuerySubset, 0x00, sizeof(sqlQuerySubset));
+ MSG_DEBUG("sqlQuery [%s]", sqlQuery);
- switch (msgType) {
- case MSG_TYPE_SMS:
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND MAIN_TYPE = %d AND SUB_TYPE = %d ", MSG_SMS_TYPE, MSG_NORMAL_SMS);
- break;
+ err = dbHandle->execQuery(sqlQuery);
- case MSG_TYPE_MMS:
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND MAIN_TYPE = %d ", MSG_MMS_TYPE);
- break;
+ if (err != MSG_SUCCESS) {
+ MSG_DEBUG("fail to delete draft messages.");
+ }
+ }
- case MSG_TYPE_MMS_JAVA:
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND MAIN_TYPE = %d AND SUB_TYPE = %d ", MSG_MMS_TYPE, MSG_SENDREQ_JAVA_MMS);
- break;
+ err = dbHandle->getRowId(MSGFW_MESSAGE_TABLE_NAME, &rowId);
- case MSG_TYPE_SMS_SYNCML:
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND MAIN_TYPE = %d AND SUB_TYPE = %d ", MSG_SMS_TYPE, MSG_SYNCML_CP);
- break;
+ pMsg->msgId = (msg_message_id_t)rowId;
- case MSG_TYPE_SMS_REJECT:
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND MAIN_TYPE = %d AND SUB_TYPE = %d ", MSG_SMS_TYPE, MSG_REJECT_SMS);
- break;
+ int fileSize = 0;
- default:
- MSG_DEBUG("msg type is not set.");
- }
+ char *pFileData = NULL;
+ AutoPtr<char> buf(&pFileData);
- strncat(sqlQuery, sqlQuerySubset, MAX_QUERY_LEN-strlen(sqlQuery));
+ // Get File Data
+ if (pMsg->bTextSms == false) {
+ if (MsgOpenAndReadFile(pMsg->msgData, &pFileData, &fileSize) == false) {
+ return MSG_ERR_STORAGE_ERROR;
+ }
+ MSG_DEBUG("file size [%d]", fileSize);
+ }
- //// storage
- memset(sqlQuerySubset, 0x00, sizeof(sqlQuerySubset));
+ char keyName[MAX_VCONFKEY_NAME_LEN];
+ memset(keyName, 0x00, sizeof(keyName));
+ snprintf(keyName, sizeof(keyName), "%s/%d", MSG_SIM_SUBS_ID, pMsg->sim_idx);
- if (storageId > MSG_STORAGE_UNKNOWN)
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "AND STORAGE_ID = %d ", storageId);
+ char *imsi = MsgSettingGetString(keyName);
- strncat(sqlQuery, sqlQuerySubset, MAX_QUERY_LEN-strlen(sqlQuery));
+ // Add Message
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, %d, %d, %d, %d, %d, %ld, %d, %d, %d, %d, %d, %d, 0, %d, ?, '', '', ?, 0, %d, '%s');",
+ MSGFW_MESSAGE_TABLE_NAME, rowId, pMsg->threadId, pMsg->folderId, pMsg->storageId, pMsg->msgType.mainType, pMsg->msgType.subType,
+ pMsg->displayTime, pMsg->dataSize, pMsg->networkStatus, pMsg->bRead, pMsg->bProtected, pMsg->priority, pMsg->direction,
+ pMsg->bBackup, (int)pMsg->sim_idx, imsi);
- /// order
- memset(sqlQuerySubset, 0x00, sizeof(sqlQuerySubset));
- snprintf(sqlQuerySubset, sizeof(sqlQuerySubset), "ORDER BY DISPLAY_TIME DESC;");
- strncat(sqlQuery, sqlQuerySubset, MAX_QUERY_LEN-strlen(sqlQuery));
+ MSG_DEBUG("QUERY : %s", sqlQuery);
- msg_error_t err = dbHandle.getTable(sqlQuery, &rowCnt);
+ if (imsi) {
+ free(imsi);
+ imsi = NULL;
+ }
- if (err == MSG_ERR_DB_NORECORD) {
- dbHandle.freeTable();
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS) {
+ return MSG_ERR_DB_EXEC;
+ }
- return MSG_SUCCESS;
- } else if (err != MSG_SUCCESS) {
- MSG_DEBUG("Get table fail. [%s]", sqlQuery);
+ dbHandle->bindText(pMsg->subject, 1);
- dbHandle.freeTable();
+ if (pMsg->bTextSms == false)
+ dbHandle->bindText(pFileData, 2);
+ else
+ dbHandle->bindText(pMsg->msgText, 2);
- return err;
+ if (dbHandle->stepQuery() != MSG_ERR_DB_DONE) {
+ dbHandle->finalizeQuery();
+ return MSG_ERR_DB_EXEC;
+ }
+
+ dbHandle->finalizeQuery();
+
+ if (pMsg->msgType.subType != MSG_SENDREQ_MMS) {
+ err = MsgStoUpdateConversation(dbHandle, pMsg->threadId);
+
+ if (err != MSG_SUCCESS) {
+ return err;
+ }
+ }
+
+ /* In the case of MMS Message, load the MMS plugin to save MMS PDU */
+ if (pMsg->msgType.mainType == MSG_MMS_TYPE) {
+ MMS_MESSAGE_DATA_S mmsMsg;
+ memset(&mmsMsg, 0x00, sizeof(MMS_MESSAGE_DATA_S));
+
+ if (pMsg->msgType.subType != MSG_DELIVERYIND_MMS && pMsg->msgType.subType != MSG_READORGIND_MMS) {
+ MsgPlugin *plg = MsgPluginManager::instance()->getPlugin(MSG_MMS_TYPE);
+
+ err = plg->addMessage(pMsg, pSendOptInfo, pFileData);
+
+ if (err != MSG_SUCCESS)
+ return MSG_ERR_STORAGE_ERROR;
+
+ if (pMsg->msgType.subType == MSG_SENDREQ_MMS) {
+ MSG_SEC_DEBUG("pMsg->msgText: %s, pMsg->thumbPath: %s ", pMsg->msgText, pMsg->thumbPath);
+
+ err = MsgStoUpdateMMSMessage(pMsg);
+
+ if (err != MSG_SUCCESS)
+ return MSG_ERR_STORAGE_ERROR;
+
+ }
+ }
+ }
+
+ }
+ }
+ else
+ {
+ // add message to conversation, message, address table;
+ pMsg->msgId = 0;
+ err = MsgStoAddMessage(pMsg, pSendOptInfo);
}
- pMsgList->nCount = rowCnt;
+ MSG_END();
- MSG_DEBUG("pMsgList->nCount [%d]", pMsgList->nCount);
+ return err;
+}
- pMsgList->msg_struct_info = (msg_struct_t *)new char[sizeof(msg_struct_t) * rowCnt];
- MSG_MESSAGE_HIDDEN_S *pTmp = NULL;
- msg_struct_s *msg = NULL;
+msg_message_id_t MsgStoAddSimMessage(MSG_MESSAGE_INFO_S *pMsg, int *simIdList, int listSize)
+{
+ MSG_BEGIN();
+ MsgDbHandler *dbHandle = getDbHandle();
+ if (pMsg == NULL || pMsg->msgType.mainType == MSG_MMS_TYPE) {
+ MSG_DEBUG("pMsg == NULL || pMsg->msgType.mainType == MSG_MMS_TYPE");
+ return 0;
+ }
- for (int i = 0; i < rowCnt; i++) {
- pMsgList->msg_struct_info[i] = (msg_struct_t)new msg_struct_s;
-
- msg = (msg_struct_s *)pMsgList->msg_struct_info[i];
-
- msg->type = MSG_STRUCT_MESSAGE_INFO;
- msg->data = (int *)new char[sizeof(MSG_MESSAGE_HIDDEN_S)];
-
- pTmp = (MSG_MESSAGE_HIDDEN_S *)msg->data;
-
- memset(pTmp, 0x00, sizeof(MSG_MESSAGE_HIDDEN_S));
-
- pTmp->pData = NULL;
- pTmp->pMmsData = NULL;
-
- pTmp->msgId = dbHandle.getColumnToInt(index++);
- pTmp->threadId = dbHandle.getColumnToInt(index++);
- pTmp->folderId = dbHandle.getColumnToInt(index++);
- pTmp->storageId = dbHandle.getColumnToInt(index++);
- pTmp->mainType = dbHandle.getColumnToInt(index++);
- pTmp->subType = dbHandle.getColumnToInt(index++);
- pTmp->displayTime = (time_t)dbHandle.getColumnToInt(index++);
- pTmp->dataSize = dbHandle.getColumnToInt(index++);
- pTmp->networkStatus = dbHandle.getColumnToInt(index++);
- pTmp->bRead = dbHandle.getColumnToInt(index++);
- pTmp->bProtected = dbHandle.getColumnToInt(index++);
- pTmp->bBackup = dbHandle.getColumnToInt(index++);
- pTmp->priority = dbHandle.getColumnToInt(index++);
- pTmp->direction = dbHandle.getColumnToInt(index++);
- index++; // This field is reserved.
-
- dbHandle.getColumnToString(index++, MAX_SUBJECT_LEN, pTmp->subject);
-
- if (pTmp->mainType == MSG_MMS_TYPE &&
- (pTmp->networkStatus == MSG_NETWORK_RETRIEVING || pTmp->networkStatus == MSG_NETWORK_RETRIEVE_FAIL || pTmp->subType == MSG_NOTIFICATIONIND_MMS)) {
- pTmp->pData = NULL;
- index++;
+ if ((pMsg->msgType.subType >= MSG_REPLACE_TYPE1_SMS) && (pMsg->msgType.subType <= MSG_REPLACE_TYPE7_SMS)) {
+ if (pMsg->msgId > 0) {
+ pMsg->bRead = false;
+ if (MsgStoUpdateMessage(pMsg, NULL) != MSG_SUCCESS) {
+ MSG_DEBUG("MsgStoUpdateMessage is failed!!!");
+ }
} else {
- pTmp->pData = (void *)new char[pTmp->dataSize+2];
- memset(pTmp->pData, 0x00, pTmp->dataSize+2);
+ if (MsgStoAddMessage(pMsg, NULL) != MSG_SUCCESS) {
+ MSG_DEBUG("MsgStoAddMessage is failed!!!");
+ }
+ }
+ } else {
+ pMsg->msgId = 0;
+ if (MsgStoAddMessage(pMsg, NULL) != MSG_SUCCESS) {
+ MSG_DEBUG("MsgStoAddMessage is failed!!!");
+ }
+ }
+
+ if(simIdList) {
+ dbHandle->beginTrans();
+
+ MSG_DEBUG("simIdList exist.");
+ int simId = 0;
+ for(int i=0; i < listSize; ++i)
+ {
+ if(simIdList[i]) {
+ simId = simIdList[i] - 1;
+ char sqlQuery[MAX_QUERY_LEN+1];
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, %d, %d);",
+ MSGFW_SIM_MSG_TABLE_NAME, pMsg->sim_idx, simId, pMsg->msgId);
+
+ MSG_DEBUG("QUERY : %s", sqlQuery);
- dbHandle.getColumnToString(index++, pTmp->dataSize+1, (char *)pTmp->pData);
+ if (dbHandle->execQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return 0;
+ }
+ } else {
+ break;
+ }
+ }
+
+ dbHandle->endTrans(true);
+ }
+
+ MSG_END();
+
+ return pMsg->msgId;
+}
+
+#ifdef FEATURE_SMS_CDMA
+msg_error_t MsgCheckUniqueness(bool bInsert, msg_message_id_t msgId, MSG_UNIQUE_INDEX_S *p_msg)
+{
+ MSG_BEGIN();
+
+ MsgDbHandler *dbHandle = getDbHandle();
+ int nRowCnt = 0;
+
+ char sqlQuery[MAX_QUERY_LEN+1];
+
+ if (!bInsert) {
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ dbHandle->beginTrans();
+
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT * FROM %s WHERE TELE_MSG_ID = %d AND ADDRESS = '%s' AND SUB_ADDRESS = '%s' AND TIME_STAMP = '%s' AND TELESVC_ID = %d;",
+ MSGFW_UNIQUENESS_INFO_TABLE_NAME, p_msg->tele_msgId, p_msg->address, p_msg->sub_address, p_msg->time_stamp, p_msg->telesvc_id);
+
+ dbHandle->getTable(sqlQuery, &nRowCnt);
+ MSG_DEBUG("nRowCnt = [%d]", nRowCnt);
+
+ dbHandle->freeTable();
+ dbHandle->endTrans(true);
+
+ if (nRowCnt == 0) {
+ MSG_DEBUG("<<<<This incoming message is a new message>>>>");
+ return MSG_SUCCESS;
+ }
+ else {
+ MSG_DEBUG("<<<<This incoming message is a repeated message>>>>");
+ return MSG_ERR_UNKNOWN;
+ }
+ }
+ else {
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ dbHandle->beginTrans();
+
+ snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, %d, '%s', '%s', '%s', %d);",
+ MSGFW_UNIQUENESS_INFO_TABLE_NAME, msgId, p_msg->tele_msgId, p_msg->address, p_msg->sub_address, p_msg->time_stamp, p_msg->telesvc_id);
+
+ dbHandle->execQuery(sqlQuery);
+ dbHandle->endTrans(true);
+ }
+
+ MSG_END();
+
+ return MSG_SUCCESS;
+}
+#endif
+
+msg_error_t MsgStoUpdateIMSI(int sim_idx)
+{
+ MSG_BEGIN();
+ MSG_DEBUG("sim_idx = %d", sim_idx);
+
+// msg_error_t err = MSG_SUCCESS;
+ MsgDbHandler *dbHandle = getDbHandle();
+
+ char sqlQuery[MAX_QUERY_LEN+1];
+ char keyName[MAX_VCONFKEY_NAME_LEN];
+
+ dbHandle->beginTrans();
+
+ if(sim_idx == 0){
+ MSG_DEBUG("sim index is 0");
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+
+ snprintf(sqlQuery, sizeof(sqlQuery), "UPDATE %s SET SIM_INDEX = 0;",
+ MSGFW_MESSAGE_TABLE_NAME);
+
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_DB_EXEC;
+ }
+
+ if (dbHandle->stepQuery() != MSG_ERR_DB_DONE) {
+ dbHandle->finalizeQuery();
+ dbHandle->endTrans(false);
+ return MSG_ERR_DB_EXEC;
}
+ }
+ else
+ {
+ MSG_DEBUG("sim index is %d", sim_idx);
- pTmp->attachCount = dbHandle.getColumnToInt(index++);
+ memset(keyName, 0x00, sizeof(keyName));
+ sprintf(keyName, "%s/%d", MSG_SIM_SUBS_ID, sim_idx);
+
+ char *imsi = MsgSettingGetString(keyName);
+
+ MSG_DEBUG("imsi value exist -> %s", imsi);
+
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
- dbHandle.getColumnToString(index++, MSG_FILEPATH_LEN_MAX, pTmp->thumbPath);
+ snprintf(sqlQuery, sizeof(sqlQuery), "UPDATE %s SET SIM_INDEX = %d \
+ WHERE SIM_IMSI LIKE '%s';",
+ MSGFW_MESSAGE_TABLE_NAME, sim_idx, imsi);
- // add address information.
- order = MsgGetContactNameOrder();
+ if (imsi) {
+ free(imsi);
+ imsi = NULL;
+ }
- msg_struct_list_s *addr_list = (msg_struct_list_s *)new msg_struct_list_s;
- MsgStoGetAddressByMsgId(&dbHandle, pTmp->msgId, order, addr_list);
+ if (dbHandle->prepareQuery(sqlQuery) != MSG_SUCCESS) {
+ dbHandle->endTrans(false);
+ return MSG_ERR_DB_EXEC;
+ }
- pTmp->addr_list = addr_list;
+ if (dbHandle->stepQuery() != MSG_ERR_DB_DONE) {
+ dbHandle->finalizeQuery();
+ dbHandle->endTrans(false);
+ return MSG_ERR_DB_EXEC;
+ }
}
- dbHandle.freeTable();
+
+ dbHandle->finalizeQuery();
+ dbHandle->endTrans(true);
+
+ MSG_END();
return MSG_SUCCESS;
}