2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.tizenopensource.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
25 #include "MsgVMessage.h"
28 #include "MsgUtilFile.h"
29 #include "MsgUtilStorage.h"
30 #include "MsgGconfWrapper.h"
31 #include "MsgSqliteWrapper.h"
32 #include "MsgPluginManager.h"
33 #include "MsgStorageHandler.h"
36 /*==================================================================================================
38 ==================================================================================================*/
39 MsgDbHandler dbHandle;
42 /*==================================================================================================
43 FUNCTION IMPLEMENTATION
44 ==================================================================================================*/
45 msg_error_t MsgStoConnectDB()
51 msg_error_t MsgStoDisconnectDB()
53 if (dbHandle.disconnect() != MSG_SUCCESS) {
54 MSG_DEBUG("DB Disconnect Fail");
55 return MSG_ERR_DB_DISCONNECT;
58 MSG_DEBUG("DB Disconnect Success");
64 msg_error_t MsgStoInitDB(bool bSimChanged)
68 msg_error_t err = MSG_SUCCESS;
71 if (MsgCreateConversationTable() != MSG_SUCCESS)
72 return MSG_ERR_DB_STORAGE_INIT;
73 if (MsgCreateAddressTable() != MSG_SUCCESS)
74 return MSG_ERR_DB_STORAGE_INIT;
75 if (MsgCreateFolderTable() != MSG_SUCCESS)
76 return MSG_ERR_DB_STORAGE_INIT;
77 if (MsgCreateMsgTable() != MSG_SUCCESS)
78 return MSG_ERR_DB_STORAGE_INIT;
79 if (MsgCreateSimMessageTable() != MSG_SUCCESS)
80 return MSG_ERR_DB_STORAGE_INIT;
81 if (MsgCreateWAPMessageTable() != MSG_SUCCESS)
82 return MSG_ERR_DB_STORAGE_INIT;
83 if (MsgCreateCBMessageTable() != MSG_SUCCESS)
84 return MSG_ERR_DB_STORAGE_INIT;
85 if (MsgCreateSyncMLMessageTable() != MSG_SUCCESS)
86 return MSG_ERR_DB_STORAGE_INIT;
87 if (MsgCreateSmsSendOptTable() != MSG_SUCCESS)
88 return MSG_ERR_DB_STORAGE_INIT;
89 if (MsgCreateFilterTable() != MSG_SUCCESS)
90 return MSG_ERR_DB_STORAGE_INIT;
91 if (MsgCreateMmsTable() != MSG_SUCCESS)
92 return MSG_ERR_DB_STORAGE_INIT;
94 // Add Default Folders
95 if (MsgAddDefaultFolders() != MSG_SUCCESS) {
96 MSG_DEBUG("Add Default Folders Fail");
97 return MSG_ERR_DB_STORAGE_INIT;
100 // Add Default Address
101 if (MsgAddDefaultAddress() != MSG_SUCCESS) {
102 MSG_DEBUG("Add Default Address Fail");
103 return MSG_ERR_DB_STORAGE_INIT;
107 // Delete Msgs in Hidden Folder
108 MsgStoDeleteAllMessageInFolder(0, true, NULL);
110 // Reset network status
111 MsgStoResetNetworkStatus();
113 //clear abnormal mms message
114 MsgStoCleanAbnormalMmsData();
116 // Clear all old Sim data
117 MsgStoClearSimMessageInDB();
119 int smsCnt = 0, mmsCnt = 0;
121 smsCnt = MsgStoGetUnreadCnt(&dbHandle, MSG_SMS_TYPE);
122 mmsCnt = MsgStoGetUnreadCnt(&dbHandle, MSG_MMS_TYPE);
125 MsgSettingSetIndicator(smsCnt, mmsCnt);
133 msg_error_t MsgCreateConversationTable()
135 msg_error_t err = MSG_SUCCESS;
137 char sqlQuery[MAX_QUERY_LEN+1];
139 if (!dbHandle.checkTableExist(MSGFW_ADDRESS_TABLE_NAME)) {
140 memset(sqlQuery, 0x00, sizeof(sqlQuery));
142 snprintf(sqlQuery, sizeof(sqlQuery),
144 CONV_ID INTEGER NOT NULL , \
145 UNREAD_CNT INTEGER DEFAULT 0 , \
146 SMS_CNT INTEGER DEFAULT 0 , \
147 MMS_CNT INTEGER DEFAULT 0 , \
148 MAIN_TYPE INTEGER NOT NULL , \
149 SUB_TYPE INTEGER NOT NULL , \
150 MSG_DIRECTION INTEGER NOT NULL , \
151 DISPLAY_TIME INTEGER , \
152 DISPLAY_NAME TEXT , \
154 MSGFW_CONVERSATION_TABLE_NAME);
156 err = dbHandle.execQuery(sqlQuery);
158 if (err == MSG_SUCCESS)
159 MSG_DEBUG("SUCCESS : create %s.", MSGFW_CONVERSATION_TABLE_NAME);
161 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_CONVERSATION_TABLE_NAME, err);
168 msg_error_t MsgCreateAddressTable()
170 msg_error_t err = MSG_SUCCESS;
172 char sqlQuery[MAX_QUERY_LEN+1];
174 if (!dbHandle.checkTableExist(MSGFW_ADDRESS_TABLE_NAME)) {
175 memset(sqlQuery, 0x00, sizeof(sqlQuery));
177 snprintf(sqlQuery, sizeof(sqlQuery),
179 ADDRESS_ID INTEGER PRIMARY KEY , \
180 CONV_ID INTEGER NOT NULL , \
181 ADDRESS_TYPE INTEGER , \
182 RECIPIENT_TYPE INTEGER , \
184 CONTACT_ID INTEGER , \
185 DISPLAY_NAME TEXT , \
189 SYNC_TIME DATETIME , \
190 FOREIGN KEY(CONV_ID) REFERENCES %s (CONV_ID) );",
191 MSGFW_ADDRESS_TABLE_NAME, MSGFW_CONVERSATION_TABLE_NAME);
193 err = dbHandle.execQuery(sqlQuery);
195 if (err == MSG_SUCCESS)
196 MSG_DEBUG("SUCCESS : create %s.", MSGFW_ADDRESS_TABLE_NAME);
198 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_ADDRESS_TABLE_NAME, err);
205 msg_error_t MsgCreateFolderTable()
207 msg_error_t err = MSG_SUCCESS;
209 char sqlQuery[MAX_QUERY_LEN+1];
211 if (!dbHandle.checkTableExist(MSGFW_FOLDER_TABLE_NAME)) {
212 memset(sqlQuery, 0x00, sizeof(sqlQuery));
214 snprintf(sqlQuery, sizeof(sqlQuery),
216 FOLDER_ID INTEGER PRIMARY KEY, \
217 FOLDER_NAME TEXT NOT NULL, \
218 FOLDER_TYPE INTEGER DEFAULT 0 );",
219 MSGFW_FOLDER_TABLE_NAME);
221 err = dbHandle.execQuery(sqlQuery);
223 if (err == MSG_SUCCESS)
224 MSG_DEBUG("SUCCESS : create %s.", MSGFW_FOLDER_TABLE_NAME);
226 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_FOLDER_TABLE_NAME, err);
233 msg_error_t MsgCreateMsgTable()
235 msg_error_t err = MSG_SUCCESS;
237 char sqlQuery[MAX_QUERY_LEN+1];
239 if (!dbHandle.checkTableExist(MSGFW_MESSAGE_TABLE_NAME)) {
240 memset(sqlQuery, 0x00, sizeof(sqlQuery));
242 snprintf(sqlQuery, sizeof(sqlQuery),
244 MSG_ID INTEGER PRIMARY KEY , \
245 CONV_ID INTEGER NOT NULL , \
246 FOLDER_ID INTEGER NOT NULL , \
247 STORAGE_ID INTEGER NOT NULL , \
248 MAIN_TYPE INTEGER NOT NULL , \
249 SUB_TYPE INTEGER NOT NULL , \
250 DISPLAY_TIME DATETIME , \
251 DATA_SIZE INTEGER DEFAULT 0 , \
252 NETWORK_STATUS INTEGER DEFAULT 0 , \
253 READ_STATUS INTEGER DEFAULT 0 , \
254 PROTECTED INTEGER DEFAULT 0 , \
255 PRIORITY INTEGER DEFAULT 0 , \
256 MSG_DIRECTION INTEGER NOT NULL , \
257 SCHEDULED_TIME DATETIME , \
258 BACKUP INTEGER DEFAULT 0 , \
263 ATTACHMENT_COUNT INTEGER DEFAULT 0 , \
264 FOREIGN KEY(CONV_ID) REFERENCES %s (CONV_ID) , \
265 FOREIGN KEY(FOLDER_ID) REFERENCES %s (FOLDER_ID) );",
266 MSGFW_MESSAGE_TABLE_NAME, MSGFW_CONVERSATION_TABLE_NAME, MSGFW_FOLDER_TABLE_NAME);
268 err = dbHandle.execQuery(sqlQuery);
270 if (err == MSG_SUCCESS)
271 MSG_DEBUG("SUCCESS : create %s.", MSGFW_MESSAGE_TABLE_NAME);
273 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_MESSAGE_TABLE_NAME, err);
280 msg_error_t MsgCreateSimMessageTable()
282 msg_error_t err = MSG_SUCCESS;
284 char sqlQuery[MAX_QUERY_LEN+1];
286 if (!dbHandle.checkTableExist(MSGFW_SIM_MSG_TABLE_NAME)) {
287 memset(sqlQuery, 0x00, sizeof(sqlQuery));
289 snprintf(sqlQuery, sizeof(sqlQuery),
292 SIM_ID INTEGER NOT NULL , \
293 FOREIGN KEY(MSG_ID) REFERENCES %s (MSG_ID) );",
294 MSGFW_SIM_MSG_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME);
296 err = dbHandle.execQuery(sqlQuery);
298 if (err == MSG_SUCCESS)
299 MSG_DEBUG("SUCCESS : create %s.", MSGFW_SIM_MSG_TABLE_NAME);
301 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_SIM_MSG_TABLE_NAME, err);
308 msg_error_t MsgCreateWAPMessageTable()
310 msg_error_t err = MSG_SUCCESS;
312 char sqlQuery[MAX_QUERY_LEN+1];
314 if (!dbHandle.checkTableExist(MSGFW_PUSH_MSG_TABLE_NAME)) {
315 memset(sqlQuery, 0x00, sizeof(sqlQuery));
317 snprintf(sqlQuery, sizeof(sqlQuery),
326 FOREIGN KEY(MSG_ID) REFERENCES %s(MSG_ID) );",
327 MSGFW_PUSH_MSG_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME);
329 err = dbHandle.execQuery(sqlQuery);
331 if (err == MSG_SUCCESS)
332 MSG_DEBUG("SUCCESS : create %s.", MSGFW_PUSH_MSG_TABLE_NAME);
334 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_PUSH_MSG_TABLE_NAME, err);
341 msg_error_t MsgCreateCBMessageTable()
343 msg_error_t err = MSG_SUCCESS;
345 char sqlQuery[MAX_QUERY_LEN+1];
347 if (!dbHandle.checkTableExist(MSGFW_CB_MSG_TABLE_NAME)) {
348 memset(sqlQuery, 0x00, sizeof(sqlQuery));
350 snprintf(sqlQuery, sizeof(sqlQuery),
353 CB_MSG_ID INTEGER NOT NULL , \
354 FOREIGN KEY(MSG_ID) REFERENCES %s (MSG_ID) );",
355 MSGFW_CB_MSG_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME);
357 err = dbHandle.execQuery(sqlQuery);
359 if (err == MSG_SUCCESS)
360 MSG_DEBUG("SUCCESS : create %s.", MSGFW_CB_MSG_TABLE_NAME);
362 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_CB_MSG_TABLE_NAME, err);
369 msg_error_t MsgCreateSyncMLMessageTable()
371 msg_error_t err = MSG_SUCCESS;
373 char sqlQuery[MAX_QUERY_LEN+1];
375 if (!dbHandle.checkTableExist(MSGFW_SYNCML_MSG_TABLE_NAME)) {
376 memset(sqlQuery, 0x00, sizeof(sqlQuery));
378 snprintf(sqlQuery, sizeof(sqlQuery),
381 EXT_ID INTEGER NOT NULL , \
382 PINCODE INTEGER NOT NULL , \
383 FOREIGN KEY(MSG_ID) REFERENCES %s(MSG_ID) );",
384 MSGFW_SYNCML_MSG_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME);
386 err = dbHandle.execQuery(sqlQuery);
388 if (err == MSG_SUCCESS)
389 MSG_DEBUG("SUCCESS : create %s.", MSGFW_SYNCML_MSG_TABLE_NAME);
391 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_SYNCML_MSG_TABLE_NAME, err);
397 msg_error_t MsgCreateSmsSendOptTable()
399 msg_error_t err = MSG_SUCCESS;
401 char sqlQuery[MAX_QUERY_LEN+1];
403 if (!dbHandle.checkTableExist(MSGFW_SMS_SENDOPT_TABLE_NAME)) {
404 memset(sqlQuery, 0x00, sizeof(sqlQuery));
406 snprintf(sqlQuery, sizeof(sqlQuery),
409 DELREP_REQ INTEGER NOT NULL , \
410 KEEP_COPY INTEGER NOT NULL , \
411 REPLY_PATH INTEGER NOT NULL , \
412 FOREIGN KEY(MSG_ID) REFERENCES %s (MSG_ID) );",
413 MSGFW_SMS_SENDOPT_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME);
415 err = dbHandle.execQuery(sqlQuery);
417 if (err == MSG_SUCCESS)
418 MSG_DEBUG("SUCCESS : create %s.", MSGFW_SMS_SENDOPT_TABLE_NAME);
420 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_SMS_SENDOPT_TABLE_NAME, err);
427 msg_error_t MsgCreateFilterTable()
429 msg_error_t err = MSG_SUCCESS;
431 char sqlQuery[MAX_QUERY_LEN+1];
433 if (!dbHandle.checkTableExist(MSGFW_FILTER_TABLE_NAME)) {
434 memset(sqlQuery, 0x00, sizeof(sqlQuery));
436 snprintf(sqlQuery, sizeof(sqlQuery),
438 FILTER_ID INTEGER PRIMARY KEY , \
439 FILTER_TYPE INTEGER NOT NULL , \
440 FILTER_VALUE TEXT NOT NULL , \
441 FILTER_ACTIVE INTEGER DEFAULT 0);",
442 MSGFW_FILTER_TABLE_NAME);
444 err = dbHandle.execQuery(sqlQuery);
446 if (err == MSG_SUCCESS)
447 MSG_DEBUG("SUCCESS : create %s.", MSGFW_FILTER_TABLE_NAME);
449 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_FILTER_TABLE_NAME, err);
456 msg_error_t MsgCreateMmsTable()
458 msg_error_t err = MSG_SUCCESS;
460 char sqlQuery[MAX_QUERY_LEN+1];
462 if (!dbHandle.checkTableExist(MMS_PLUGIN_MESSAGE_TABLE_NAME)) {
463 memset(sqlQuery, 0x00, sizeof(sqlQuery));
465 snprintf(sqlQuery, sizeof(sqlQuery),
468 TRANSACTION_ID TEXT , \
470 FWD_MESSAGE_ID TEXT , \
471 CONTENTS_LOCATION TEXT , \
473 VERSION INTEGER NOT NULL , \
474 DATA_TYPE INTEGER DEFAULT -1 , \
476 HIDE_ADDRESS INTEGER DEFAULT 0 , \
477 ASK_DELIVERY_REPORT INTEGER DEFAULT 0 , \
478 REPORT_ALLOWED INTEGER DEFAULT 0 , \
479 READ_REPORT_ALLOWED_TYPE INTEGER DEFAULT 0 , \
480 ASK_READ_REPLY INTEGER DEFAULT 0 , \
481 READ INTEGER DEFAULT 0 , \
482 READ_REPORT_SEND_STATUS INTEGER DEFAULT 0 , \
483 READ_REPORT_SENT INTEGER DEFAULT 0 , \
484 PRIORITY INTEGER DEFAULT 0 , \
485 KEEP_COPY INTEGER DEFAULT 0 , \
486 MSG_SIZE INTEGER NOT NULL , \
487 MSG_CLASS INTEGER DEFAULT -1 , \
488 EXPIRY_TIME DATETIME , \
489 CUSTOM_DELIVERY_TIME INTEGER DEFAULT 0 , \
490 DELIVERY_TIME DATETIME , \
491 MSG_STATUS INTEGER DEFAULT -1 , \
492 FOREIGN KEY(MSG_ID) REFERENCES %s (MSG_ID) );",
493 MMS_PLUGIN_MESSAGE_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME);
495 err = dbHandle.execQuery(sqlQuery);
497 if (err == MSG_SUCCESS)
498 MSG_DEBUG("SUCCESS : create %s.", MMS_PLUGIN_MESSAGE_TABLE_NAME);
500 MSG_DEBUG("FAIL : create %s [%d].", MMS_PLUGIN_MESSAGE_TABLE_NAME, err);
507 msg_error_t MsgAddDefaultFolders()
512 char sqlQuery[MAX_QUERY_LEN+1];
515 memset(sqlQuery, 0x00, sizeof(sqlQuery));
516 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) FROM %s WHERE FOLDER_ID = %d;",
517 MSGFW_FOLDER_TABLE_NAME, MSG_INBOX_ID);
519 if (dbHandle.getTable(sqlQuery, &nRowCnt) != MSG_SUCCESS) {
520 dbHandle.freeTable();
521 return MSG_ERR_DB_GETTABLE;
524 nResult = dbHandle.getColumnToInt(1);
526 dbHandle.freeTable();
529 memset(sqlQuery, 0x00, sizeof(sqlQuery));
530 snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, 'INBOX', %d);",
531 MSGFW_FOLDER_TABLE_NAME, MSG_INBOX_ID, MSG_FOLDER_TYPE_INBOX);
533 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
534 return MSG_ERR_DB_EXEC;
538 memset(sqlQuery, 0x00, sizeof(sqlQuery));
539 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) FROM %s WHERE FOLDER_ID = %d;",
540 MSGFW_FOLDER_TABLE_NAME, MSG_OUTBOX_ID);
542 if (dbHandle.getTable(sqlQuery, &nRowCnt) != MSG_SUCCESS) {
543 dbHandle.freeTable();
544 return MSG_ERR_DB_GETTABLE;
547 nResult = dbHandle.getColumnToInt(1);
549 dbHandle.freeTable();
552 memset(sqlQuery, 0x00, sizeof(sqlQuery));
553 snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, 'OUTBOX', %d);",
554 MSGFW_FOLDER_TABLE_NAME, MSG_OUTBOX_ID, MSG_FOLDER_TYPE_OUTBOX);
556 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
557 return MSG_ERR_DB_EXEC;
561 memset(sqlQuery, 0x00, sizeof(sqlQuery));
562 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) FROM %s WHERE FOLDER_ID = %d;",
563 MSGFW_FOLDER_TABLE_NAME, MSG_SENTBOX_ID);
565 if (dbHandle.getTable(sqlQuery, &nRowCnt) != MSG_SUCCESS) {
566 dbHandle.freeTable();
567 return MSG_ERR_DB_GETTABLE;
570 nResult = dbHandle.getColumnToInt(1);
572 dbHandle.freeTable();
575 memset(sqlQuery, 0x00, sizeof(sqlQuery));
576 snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, 'SENTBOX', %d);",
577 MSGFW_FOLDER_TABLE_NAME, MSG_SENTBOX_ID, MSG_FOLDER_TYPE_OUTBOX);
579 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
580 return MSG_ERR_DB_EXEC;
584 memset(sqlQuery, 0x00, sizeof(sqlQuery));
585 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) FROM %s WHERE FOLDER_ID = %d;",
586 MSGFW_FOLDER_TABLE_NAME, MSG_DRAFT_ID);
588 if (dbHandle.getTable(sqlQuery, &nRowCnt) != MSG_SUCCESS) {
589 dbHandle.freeTable();
590 return MSG_ERR_DB_GETTABLE;
593 nResult = dbHandle.getColumnToInt(1);
595 dbHandle.freeTable();
598 memset(sqlQuery, 0x00, sizeof(sqlQuery));
599 snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, 'DRAFT', %d);",
600 MSGFW_FOLDER_TABLE_NAME, MSG_DRAFT_ID, MSG_FOLDER_TYPE_DRAFT);
602 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
603 return MSG_ERR_DB_EXEC;
607 memset(sqlQuery, 0x00, sizeof(sqlQuery));
608 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) FROM %s WHERE FOLDER_ID = %d;",
609 MSGFW_FOLDER_TABLE_NAME, MSG_CBMSGBOX_ID);
611 if (dbHandle.getTable(sqlQuery, &nRowCnt) != MSG_SUCCESS) {
612 dbHandle.freeTable();
613 return MSG_ERR_DB_GETTABLE;
616 nResult = dbHandle.getColumnToInt(1);
618 dbHandle.freeTable();
621 memset(sqlQuery, 0x00, sizeof(sqlQuery));
622 snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, 'CBMSGBOX', %d);",
623 MSGFW_FOLDER_TABLE_NAME, MSG_CBMSGBOX_ID, MSG_FOLDER_TYPE_INBOX);
625 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
626 return MSG_ERR_DB_EXEC;
630 memset(sqlQuery, 0x00, sizeof(sqlQuery));
631 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) FROM %s WHERE FOLDER_ID = %d;",
632 MSGFW_FOLDER_TABLE_NAME, MSG_SPAMBOX_ID);
634 if (dbHandle.getTable(sqlQuery, &nRowCnt) != MSG_SUCCESS) {
635 dbHandle.freeTable();
636 return MSG_ERR_DB_GETTABLE;
639 nResult = dbHandle.getColumnToInt(1);
641 dbHandle.freeTable();
644 memset(sqlQuery, 0x00, sizeof(sqlQuery));
645 snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, 'SPAMBOX', %d);",
646 MSGFW_FOLDER_TABLE_NAME, MSG_SPAMBOX_ID, MSG_FOLDER_TYPE_SPAMBOX);
648 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
649 return MSG_ERR_DB_EXEC;
653 memset(sqlQuery, 0x00, sizeof(sqlQuery));
654 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) FROM %s WHERE FOLDER_ID = %d;",
655 MSGFW_FOLDER_TABLE_NAME, MSG_SMS_TEMPLATE_ID);
657 if (dbHandle.getTable(sqlQuery, &nRowCnt) != MSG_SUCCESS) {
658 dbHandle.freeTable();
659 return MSG_ERR_DB_GETTABLE;
662 nResult = dbHandle.getColumnToInt(1);
664 dbHandle.freeTable();
667 memset(sqlQuery, 0x00, sizeof(sqlQuery));
668 snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, 'SMS TEMPLATE', %d);",
669 MSGFW_FOLDER_TABLE_NAME, MSG_SMS_TEMPLATE_ID, MSG_FOLDER_TYPE_TEMPLATE);
671 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
672 return MSG_ERR_DB_EXEC;
676 memset(sqlQuery, 0x00, sizeof(sqlQuery));
677 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) FROM %s WHERE FOLDER_ID = %d;",
678 MSGFW_FOLDER_TABLE_NAME, MSG_MMS_TEMPLATE_ID);
680 if (dbHandle.getTable(sqlQuery, &nRowCnt) != MSG_SUCCESS) {
681 dbHandle.freeTable();
682 return MSG_ERR_DB_GETTABLE;
685 nResult = dbHandle.getColumnToInt(1);
687 dbHandle.freeTable();
690 memset(sqlQuery, 0x00, sizeof(sqlQuery));
691 snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, 'MMS TEMPLATE', %d);",
692 MSGFW_FOLDER_TABLE_NAME, MSG_MMS_TEMPLATE_ID, MSG_FOLDER_TYPE_TEMPLATE);
694 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
695 return MSG_ERR_DB_EXEC;
702 msg_error_t MsgAddDefaultAddress()
706 int nRowCnt = 0, nResult = 0;
708 char sqlQuery[MAX_QUERY_LEN+1];
710 memset(sqlQuery, 0x00, sizeof(sqlQuery));
711 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) FROM %s WHERE ADDRESS_ID = 0;",
712 MSGFW_ADDRESS_TABLE_NAME);
714 if (dbHandle.getTable(sqlQuery, &nRowCnt) != MSG_SUCCESS) {
715 dbHandle.freeTable();
716 return MSG_ERR_DB_GETTABLE;
719 nResult = dbHandle.getColumnToInt(1);
721 dbHandle.freeTable();
724 memset(sqlQuery, 0x00, sizeof(sqlQuery));
725 snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (0, 0, 0, '', 0, '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, '');",
726 MSGFW_ADDRESS_TABLE_NAME);
728 MSG_DEBUG("%s", sqlQuery);
730 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
731 return MSG_ERR_DB_EXEC;
740 msg_error_t MsgStoResetDatabase()
742 msg_error_t err = MSG_SUCCESS;
744 char sqlQuery[MAX_QUERY_LEN+1];
746 const char* tableList[] = {MSGFW_FOLDER_TABLE_NAME, MSGFW_FILTER_TABLE_NAME,
747 MSGFW_PUSH_MSG_TABLE_NAME, MSGFW_CB_MSG_TABLE_NAME,
748 MMS_PLUGIN_MESSAGE_TABLE_NAME, MSGFW_SYNCML_MSG_TABLE_NAME,
749 MSGFW_SMS_SENDOPT_TABLE_NAME};
751 int listCnt = sizeof(tableList)/sizeof(char*);
753 dbHandle.beginTrans();
756 for (int i = 0; i < listCnt; i++)
758 memset(sqlQuery, 0x00, sizeof(sqlQuery));
759 snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s;", tableList[i]);
761 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
762 dbHandle.endTrans(false);
763 return MSG_ERR_DB_EXEC;
767 // Delete Message Table
768 memset(sqlQuery, 0x00, sizeof(sqlQuery));
769 snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s WHERE STORAGE_ID <> %d;",
770 MSGFW_MESSAGE_TABLE_NAME, MSG_STORAGE_SIM);
772 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
773 dbHandle.endTrans(false);
774 return MSG_ERR_DB_EXEC;
777 // Delete Conversation Table
778 err = MsgStoClearConversationTable(&dbHandle);
780 if (err != MSG_SUCCESS) {
781 dbHandle.endTrans(false);
785 // Add Default Folders
786 if (MsgAddDefaultFolders() != MSG_SUCCESS) {
787 MSG_DEBUG("Add Default Folders Fail");
788 dbHandle.endTrans(false);
789 return MSG_ERR_DB_STORAGE_INIT;
792 // Add Default Address
793 if (MsgAddDefaultAddress() != MSG_SUCCESS) {
794 MSG_DEBUG("Add Default Address Fail");
795 dbHandle.endTrans(false);
796 return MSG_ERR_DB_STORAGE_INIT;
799 dbHandle.endTrans(true);
802 MsgRmRf((char*)MSG_DATA_PATH);
803 MsgRmRf((char*)MSG_SMIL_FILE_PATH);
806 if (MsgSettingSetIndicator(0, 0) != MSG_SUCCESS) {
807 MSG_DEBUG("MsgSettingSetIndicator() FAILED");
808 return MSG_ERR_SET_SETTING;
812 if (MsgSettingSetIndicator(0, 0) != MSG_SUCCESS) {
813 MSG_DEBUG("MsgSettingSetIndicator() FAILED");
814 return MSG_ERR_SET_SETTING;
821 msg_error_t MsgStoBackupMessage(msg_message_backup_type_t type, const char *filepath)
823 msg_error_t err = MSG_SUCCESS;
825 char sqlQuery[MAX_QUERY_LEN+1];
828 MSG_MESSAGE_INFO_S msgInfo = {0, };
829 char* encoded_data = NULL;
831 char fileName[MSG_FILENAME_LEN_MAX+1];
832 memset(fileName, 0x00, sizeof(fileName));
833 strncpy(fileName, filepath, MSG_FILENAME_LEN_MAX);
834 if (remove(fileName) != 0) {
835 MSG_DEBUG("Fail to delete [%s].", fileName);
838 memset(sqlQuery, 0x00, sizeof(sqlQuery));
840 MSG_DEBUG("backup type = %d, path = %s", type, filepath);
842 if (type == MSG_BACKUP_TYPE_SMS) {
843 snprintf(sqlQuery, sizeof(sqlQuery),
844 "SELECT MSG_ID FROM %s "
845 "WHERE STORAGE_ID = %d AND MAIN_TYPE = %d;",
846 MSGFW_MESSAGE_TABLE_NAME, MSG_STORAGE_PHONE, MSG_SMS_TYPE);
847 } else if (type == MSG_BACKUP_TYPE_MMS) {
848 snprintf(sqlQuery, sizeof(sqlQuery),
849 "SELECT MSG_ID FROM %s "
850 "WHERE STORAGE_ID = %d AND MAIN_TYPE = %d;",
851 MSGFW_MESSAGE_TABLE_NAME, MSG_STORAGE_PHONE, MSG_MMS_TYPE);
852 } else if (type == MSG_BACKUP_TYPE_ALL) {
853 snprintf(sqlQuery, sizeof(sqlQuery),
854 "SELECT MSG_ID FROM %s "
855 "WHERE STORAGE_ID = %d;",
856 MSGFW_MESSAGE_TABLE_NAME, MSG_STORAGE_PHONE);
860 err = dbHandle.getTable(sqlQuery, &rowCnt);
862 if (err != MSG_SUCCESS) {
863 dbHandle.freeTable();
866 MSG_DEBUG("backup number = %d", rowCnt);
868 for (int i = 0; i < rowCnt; i++) {
869 err = MsgStoGetMessage(dbHandle.getColumnToInt(++index), &msgInfo, NULL);
870 if(err != MSG_SUCCESS) {
871 dbHandle.freeTable();
875 encoded_data = MsgVMessageAddRecord(&dbHandle, &msgInfo);
877 if (encoded_data != NULL) {
878 if (MsgAppendFile(fileName, encoded_data, strlen(encoded_data)) == false) {
879 dbHandle.freeTable();
881 return MSG_ERR_STORAGE_ERROR;
887 memset(&msgInfo, 0, sizeof(MSG_MESSAGE_INFO_S));
890 dbHandle.freeTable();
896 msg_error_t MsgStoUpdateMms(MSG_MESSAGE_INFO_S *pMsg)
898 char sqlQuery[MAX_QUERY_LEN+1];
900 if (pMsg->msgType.subType == MSG_SENDCONF_MMS) {
901 memset(sqlQuery, 0x00, sizeof(sqlQuery));
903 dbHandle.beginTrans();
904 snprintf(sqlQuery, sizeof(sqlQuery), "UPDATE %s SET THUMB_PATH = ?, MSG_TEXT = ? WHERE MSG_ID = %d;",
905 MSGFW_MESSAGE_TABLE_NAME, pMsg->msgId);
907 if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS) {
908 dbHandle.endTrans(false);
909 return MSG_ERR_DB_EXEC;
913 dbHandle.bindText(pMsg->thumbPath, 1);
914 dbHandle.bindText(pMsg->msgText, 2);
915 MSG_DEBUG("thumbPath = %s , msgText = %s" , pMsg->thumbPath, pMsg->msgText);
916 MSG_DEBUG("%s", sqlQuery);
918 if (dbHandle.stepQuery() != MSG_ERR_DB_DONE) {
919 dbHandle.finalizeQuery();
920 dbHandle.endTrans(false);
921 return MSG_ERR_DB_EXEC;
924 dbHandle.finalizeQuery();
925 dbHandle.endTrans(true);
927 MsgStoUpdateMMSMessage(pMsg);
932 msg_error_t MsgStoRestoreMessage(const char *filepath)
934 msg_error_t err = MSG_SUCCESS;
935 MSG_MESSAGE_INFO_S msgInfo = {0,};
938 VObject* pObject = NULL;
942 char fileName[MSG_FILENAME_LEN_MAX+1];
944 char *pCurrent = NULL;
948 char sample[10000] = "BEGIN:VMSG\r\nX-MESSAGE-TYPE:SMS\r\nX-IRMC-BOX:INBOX\r\nX-SS-DT:20100709T155811Z\r\nBEGIN:VBODY\r\nX-BODY-SUBJECT:hekseh\r\nX-BODY-CONTENTS;ENCODING=BASE64:aGVsbG93b3JsZA==\r\nEND:VBODY\r\nBEGIN:VCARD\r\nVERSION:2.1\r\nTEL:01736510664\r\nEND:VCARD\r\nEND:VMSG\r\n";
949 vMsg = vmsg_decode(sample);
951 memset(fileName, 0x00, sizeof(fileName));
952 strncpy(fileName, filepath, MSG_FILENAME_LEN_MAX);
953 pData = MsgOpenAndReadMmsFile(fileName, 0, -1, &dataSize);
955 return MSG_ERR_STORAGE_ERROR;
959 while ((pTemp = strstr(pCurrent, "END:VMSG")) != NULL)
961 MSG_DEBUG("Start Position: %s", pCurrent);
963 while (*pCurrent == '\r' || *pCurrent == '\n')
966 MSG_DEBUG("Start Position2: %s", pCurrent);
968 vMsg = vmsg_decode(pCurrent);
971 pObject = vMsg->pTop;
973 memset(&msgInfo, 0x00, sizeof(MSG_MESSAGE_INFO_S));
979 MSG_DEBUG("pObject type [%d], pObject Value [%s]", pObject->property, pObject->pszValue[0]);
981 switch (pObject->property)
983 case VMSG_TYPE_MSGTYPE :
985 if (!strncmp(pObject->pszValue[0], "SMS", strlen("SMS"))) {
986 msgInfo.msgType.mainType = MSG_SMS_TYPE;
987 msgInfo.msgType.subType = MSG_NORMAL_SMS;
988 } else if (!strncmp(pObject->pszValue[0], "MMS RETRIEVED", strlen("MMS RETRIEVED"))) {
989 msgInfo.msgType.mainType = MSG_MMS_TYPE;
990 msgInfo.msgType.subType = MSG_RETRIEVE_AUTOCONF_MMS;
991 } else if (!strncmp(pObject->pszValue[0], "MMS SEND", strlen("MMS SEND"))) {
992 msgInfo.msgType.mainType = MSG_MMS_TYPE;
993 msgInfo.msgType.subType = MSG_SENDCONF_MMS;
994 } else if (!strncmp(pObject->pszValue[0], "MMS NOTIFICATION", strlen("MMS NOTIFICATION"))) {
995 msgInfo.msgType.mainType = MSG_MMS_TYPE;
996 msgInfo.msgType.subType = MSG_NOTIFICATIONIND_MMS;
998 vmsg_free_vtree_memory(vMsg);
999 return MSG_ERR_STORAGE_ERROR;
1004 case VMSG_TYPE_MSGBOX :
1006 if(!strncmp(pObject->pszValue[0], "INBOX", strlen("INBOX"))) {
1007 msgInfo.folderId= MSG_INBOX_ID;
1008 msgInfo.direction=MSG_DIRECTION_TYPE_MT;
1010 msgInfo.networkStatus=MSG_NETWORK_RECEIVED;
1011 } else if(!strncmp(pObject->pszValue[0], "OUTBOX", strlen("OUTBOX"))) {
1012 msgInfo.folderId= MSG_OUTBOX_ID;
1013 msgInfo.direction=MSG_DIRECTION_TYPE_MO;
1015 msgInfo.networkStatus=MSG_NETWORK_SEND_FAIL;
1016 } else if(!strncmp(pObject->pszValue[0], "SENTBOX", strlen("SENTBOX"))) {
1017 msgInfo.folderId= MSG_SENTBOX_ID;
1018 msgInfo.direction=MSG_DIRECTION_TYPE_MO;
1020 msgInfo.networkStatus=MSG_NETWORK_SEND_SUCCESS;
1021 } else if(!strncmp(pObject->pszValue[0], "DRAFTBOX", strlen("DRAFTBOX"))) {
1022 msgInfo.folderId=MSG_DRAFT_ID;
1023 msgInfo.direction=MSG_DIRECTION_TYPE_MO;
1025 msgInfo.networkStatus=MSG_NETWORK_NOT_SEND;
1027 vmsg_free_vtree_memory(vMsg);
1028 return MSG_ERR_STORAGE_ERROR;
1033 case VMSG_TYPE_STATUS :
1035 if(!strncmp(pObject->pszValue[0], "READ", strlen("READ"))) {
1036 msgInfo.bRead = true;
1037 } else if(!strncmp(pObject->pszValue[0], "UNREAD", strlen("UNREAD"))) {
1038 msgInfo.bRead = false;
1040 vmsg_free_vtree_memory(vMsg);
1041 return MSG_ERR_STORAGE_ERROR;
1046 case VMSG_TYPE_DATE :
1048 struct tm displayTime;
1050 if (!_convert_vdata_str_to_tm(pObject->pszValue[0], &displayTime)) {
1051 vmsg_free_vtree_memory( vMsg );
1052 return MSG_ERR_STORAGE_ERROR;
1055 msgInfo.displayTime = mktime(&displayTime);
1059 case VMSG_TYPE_SUBJECT :
1061 MSG_DEBUG("subject length is [%d].", strlen(pObject->pszValue[0]));
1063 if(strlen(pObject->pszValue[0]) > 0) {
1064 strncpy(msgInfo.subject, pObject->pszValue[0], MAX_SUBJECT_LEN);
1065 if ( msgInfo.subject[strlen(pObject->pszValue[0])-1] == '\r' )
1066 msgInfo.subject[strlen(pObject->pszValue[0])-1]= '\0';
1071 case VMSG_TYPE_BODY :
1073 if (msgInfo.msgType.mainType == MSG_SMS_TYPE) {
1074 if (pObject->numOfBiData > MAX_MSG_DATA_LEN) {
1075 msgInfo.bTextSms = false;
1076 char fileName[MAX_COMMON_INFO_SIZE + 1];
1077 memset(fileName, 0x00, sizeof(fileName));
1079 if (MsgCreateFileName(fileName) == false) {
1080 vmsg_free_vtree_memory(vMsg);
1081 return MSG_ERR_STORAGE_ERROR;
1084 if (MsgWriteIpcFile(fileName, pObject->pszValue[0], pObject->numOfBiData) == false) {
1085 vmsg_free_vtree_memory(vMsg);
1086 return MSG_ERR_STORAGE_ERROR;
1089 strncpy(msgInfo.msgData, fileName, MAX_MSG_DATA_LEN);
1090 msgInfo.dataSize = pObject->numOfBiData;
1092 msgInfo.bTextSms = true;
1094 if(pObject->numOfBiData > 0) {
1095 memset(msgInfo.msgText, 0x00, sizeof(msgInfo.msgText));
1096 memcpy(msgInfo.msgText, pObject->pszValue[0], pObject->numOfBiData);
1098 msgInfo.dataSize = pObject->numOfBiData;
1102 msgInfo.bTextSms = true;
1103 if(msgInfo.msgType.subType == MSG_NOTIFICATIONIND_MMS) {
1105 msgInfo.bTextSms = true;
1107 // Save Message Data into File
1108 char fileName[MAX_COMMON_INFO_SIZE+1];
1109 memset(fileName, 0x00, sizeof(fileName));
1111 if (MsgCreateFileName(fileName) == false) {
1112 vmsg_free_vtree_memory(vMsg);
1113 return MSG_ERR_STORAGE_ERROR;
1116 if (MsgWriteIpcFile(fileName, pObject->pszValue[0], pObject->numOfBiData) == false) {
1117 vmsg_free_vtree_memory(vMsg);
1118 return MSG_ERR_STORAGE_ERROR;
1120 strncpy(msgInfo.msgData, MSG_IPC_DATA_PATH, MAX_MSG_DATA_LEN);
1121 strncat(msgInfo.msgData, fileName, MAX_MSG_DATA_LEN-strlen(msgInfo.msgData));
1122 msgInfo.dataSize = strlen(fileName);
1123 MsgPlugin* plg = MsgPluginManager::instance()->getPlugin(msgInfo.msgType.mainType);
1124 err = plg->restoreMsg(&msgInfo, pObject->pszValue[0], pObject->numOfBiData, NULL);
1127 //////////////// From here was avaliable
1128 char retrievedFilePath[MAX_FULL_PATH_SIZE] = {0,};
1129 MsgPlugin* plg = MsgPluginManager::instance()->getPlugin(msgInfo.msgType.mainType);
1130 err = plg->restoreMsg(&msgInfo, pObject->pszValue[0], pObject->numOfBiData, retrievedFilePath);
1131 msgInfo.bTextSms = false;
1133 char fileName[MAX_COMMON_INFO_SIZE+1];
1134 memset(fileName, 0x00, sizeof(fileName));
1136 if (MsgCreateFileName(fileName) == false) {
1137 vmsg_free_vtree_memory(vMsg);
1138 return MSG_ERR_STORAGE_ERROR;
1140 MSG_DEBUG("fileName: %s, retrievedFilePath: %s (%d)", fileName, retrievedFilePath, strlen(retrievedFilePath));
1142 if (MsgWriteIpcFile(fileName, retrievedFilePath, strlen(retrievedFilePath)+ 1) == false) {
1143 vmsg_free_vtree_memory(vMsg);
1144 return MSG_ERR_STORAGE_ERROR;
1146 strncpy(msgInfo.msgData, fileName, MAX_MSG_DATA_LEN);
1147 msgInfo.dataSize = strlen(retrievedFilePath) + 1;
1149 if (err != MSG_SUCCESS)
1150 return vmsg_free_vtree_memory(vMsg);
1151 ///////////////////////////
1157 case VCARD_TYPE_TEL :
1159 msgInfo.nAddressCnt++;
1161 msgInfo.addressList[msgInfo.nAddressCnt-1].addressType = MSG_ADDRESS_TYPE_PLMN;
1162 msgInfo.addressList[msgInfo.nAddressCnt-1].recipientType = MSG_RECIPIENTS_TYPE_TO;
1164 strncpy(msgInfo.addressList[msgInfo.nAddressCnt-1].addressVal, pObject->pszValue[0], MAX_ADDRESS_VAL_LEN);
1169 if (pObject->pSibling != NULL)
1170 pObject = pObject->pSibling;
1175 if (vMsg->pNext != NULL) {
1177 pObject = vMsg->pTop;
1183 msgInfo.bBackup = true; // Set Backup Flag
1184 msgInfo.storageId = MSG_STORAGE_PHONE; // Set Storage Id
1185 msgInfo.priority = MSG_MESSAGE_PRIORITY_NORMAL; // Set Priority
1187 err = MsgStoAddMessage(&msgInfo, NULL);
1188 if (err != MSG_SUCCESS) {
1189 MSG_DEBUG("MsgStoAddMessage() error : %d", err);
1192 if (msgInfo.msgType.mainType == MSG_MMS_TYPE)
1193 MsgStoUpdateMms(&msgInfo);
1195 vmsg_free_vtree_memory(vMsg);
1198 pCurrent = pTemp + strlen("END:VMSG");
1204 msg_error_t MsgStoAddPushEvent(MSG_PUSH_EVENT_INFO_S* pPushEvent)
1206 msg_error_t err = MSG_SUCCESS;
1207 char sqlQuery[MAX_QUERY_LEN+1];
1208 unsigned int rowId = 0;
1210 memset(sqlQuery, 0x00, sizeof(sqlQuery));
1212 // Check whether Same record exists or not.
1213 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT * FROM %s WHERE CONTENT_TYPE LIKE '%s' AND APP_ID LIKE '%s' AND (PKG_NAME LIKE '%s' OR SECURE = 1);",
1214 MSGFW_PUSH_CONFIG_TABLE_NAME, pPushEvent->contentType, pPushEvent->appId, pPushEvent->pkgName);
1216 if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS) {
1217 MSG_DEBUG("Query Failed [%s]", sqlQuery);
1218 return MSG_ERR_DB_PREPARE;
1221 if (dbHandle.stepQuery() == MSG_ERR_DB_ROW) {
1222 dbHandle.finalizeQuery();
1223 return MSG_ERR_DB_ROW;
1225 dbHandle.finalizeQuery();
1227 dbHandle.beginTrans();
1228 err = dbHandle.getRowId(MSGFW_PUSH_CONFIG_TABLE_NAME, &rowId);
1229 memset(sqlQuery, 0x00, sizeof(sqlQuery));
1231 snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, ?, ?, ?, %d, 0, 0);",
1232 MSGFW_PUSH_CONFIG_TABLE_NAME, rowId, pPushEvent->bLaunch);
1235 MSG_DEBUG("QUERY : %s", sqlQuery);
1237 if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS) {
1238 dbHandle.endTrans(false);
1239 return MSG_ERR_DB_EXEC;
1242 dbHandle.bindText(pPushEvent->contentType, 1);
1243 dbHandle.bindText(pPushEvent->appId, 2);
1244 dbHandle.bindText(pPushEvent->pkgName, 3);
1246 if (dbHandle.stepQuery() != MSG_ERR_DB_DONE) {
1247 dbHandle.finalizeQuery();
1248 dbHandle.endTrans(false);
1249 return MSG_ERR_DB_EXEC;
1252 dbHandle.finalizeQuery();
1253 dbHandle.endTrans(true);
1259 msg_error_t MsgStoDeletePushEvent(MSG_PUSH_EVENT_INFO_S* pPushEvent)
1261 char sqlQuery[MAX_QUERY_LEN+1];
1262 dbHandle.beginTrans();
1263 memset(sqlQuery, 0x00, sizeof(sqlQuery));
1264 snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s WHERE CONTENT_TYPE LIKE '%s' AND APP_ID LIKE '%s' AND PKG_NAME LIKE '%s';",
1265 MSGFW_PUSH_CONFIG_TABLE_NAME, pPushEvent->contentType, pPushEvent->appId, pPushEvent->pkgName);
1267 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS) {
1268 dbHandle.endTrans(false);
1269 return MSG_ERR_DB_EXEC;
1271 dbHandle.endTrans(true);
1275 msg_error_t MsgStoUpdatePushEvent(MSG_PUSH_EVENT_INFO_S* pSrc, MSG_PUSH_EVENT_INFO_S* pDst)
1277 char sqlQuery[MAX_QUERY_LEN+1];
1278 dbHandle.beginTrans();
1279 memset(sqlQuery, 0x00, sizeof(sqlQuery));
1280 snprintf(sqlQuery, sizeof(sqlQuery), "UPDATE %s SET CONTENT_TYPE = ?, APP_ID = ?, PKG_NAME = ?, LAUNCH = %d WHERE CONTENT_TYPE LIKE '%s' AND APP_ID LIKE '%s' AND PKG_NAME LIKE '%s';",
1281 MSGFW_PUSH_CONFIG_TABLE_NAME, pDst->bLaunch, pSrc->contentType, pSrc->appId, pSrc->pkgName);
1283 if (dbHandle.prepareQuery(sqlQuery) != MSG_SUCCESS) {
1284 dbHandle.endTrans(false);
1285 return MSG_ERR_DB_EXEC;
1288 dbHandle.bindText(pDst->contentType, 1);
1289 dbHandle.bindText(pDst->appId, 2);
1290 dbHandle.bindText(pDst->pkgName, 3);
1292 if (dbHandle.stepQuery() != MSG_ERR_DB_DONE) {
1293 dbHandle.finalizeQuery();
1294 dbHandle.endTrans(false);
1295 return MSG_ERR_DB_EXEC;
1298 dbHandle.finalizeQuery();
1299 dbHandle.endTrans(true);