3 * Copyright (c) 2000-2012 Samsung Electronics Co., Ltd. All Rights Reserved.
5 * This file is part of msg-service.
7 * Contact: Jaeyun Jeong <jyjeong@samsung.com>
8 * Sangkoo Kim <sangkoo.kim@samsung.com>
9 * Seunghwan Lee <sh.cat.lee@samsung.com>
10 * SoonMin Jung <sm0415.jung@samsung.com>
11 * Jae-Young Lee <jy4710.lee@samsung.com>
12 * KeeBum Kim <keebum.kim@samsung.com>
14 * PROPRIETARY/CONFIDENTIAL
16 * This software is the confidential and proprietary information of
17 * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
18 * disclose such Confidential Information and shall use it only in
19 * accordance with the terms of the license agreement you entered
20 * into with SAMSUNG ELECTRONICS.
22 * SAMSUNG make no representations or warranties about the suitability
23 * of the software, either express or implied, including but not limited
24 * to the implied warranties of merchantability, fitness for a particular
25 * purpose, or non-infringement. SAMSUNG shall not be liable for any
26 * damages suffered by licensee as a result of using, modifying or
27 * distributing this software or its derivatives.
38 #include "MsgUtilFile.h"
39 #include "MsgUtilStorage.h"
40 #include "MsgGconfWrapper.h"
41 #include "MsgSqliteWrapper.h"
42 #include "MsgPluginManager.h"
43 #include "MsgStorageHandler.h"
46 /*==================================================================================================
48 ==================================================================================================*/
49 MsgDbHandler dbHandle;
52 /*==================================================================================================
53 FUNCTION IMPLEMENTATION
54 ==================================================================================================*/
55 MSG_ERROR_T MsgStoConnectDB()
61 MSG_ERROR_T MsgStoDisconnectDB()
63 if (dbHandle.disconnect() != MSG_SUCCESS)
65 MSG_DEBUG("DB Disconnect Fail");
66 return MSG_ERR_DB_DISCONNECT;
69 MSG_DEBUG("DB Disconnect Success");
75 MSG_ERROR_T MsgStoInitDB(bool bSimChanged)
79 MSG_ERROR_T err = MSG_SUCCESS;
82 if (MsgCreateAddressTable() != MSG_SUCCESS)
83 return MSG_ERR_DB_STORAGE_INIT;
84 if (MsgCreateFolderTable() != MSG_SUCCESS)
85 return MSG_ERR_DB_STORAGE_INIT;
86 if (MsgCreateMsgTable() != MSG_SUCCESS)
87 return MSG_ERR_DB_STORAGE_INIT;
88 if (MsgCreateSimMessageTable() != MSG_SUCCESS)
89 return MSG_ERR_DB_STORAGE_INIT;
90 if (MsgCreateWAPMessageTable() != MSG_SUCCESS)
91 return MSG_ERR_DB_STORAGE_INIT;
92 if (MsgCreateCBMessageTable() != MSG_SUCCESS)
93 return MSG_ERR_DB_STORAGE_INIT;
94 if (MsgCreateSyncMLMessageTable() != MSG_SUCCESS)
95 return MSG_ERR_DB_STORAGE_INIT;
96 if (MsgCreateScheduledMessageTable() != MSG_SUCCESS)
97 return MSG_ERR_DB_STORAGE_INIT;
98 if (MsgCreateSmsSendOptTable() != MSG_SUCCESS)
99 return MSG_ERR_DB_STORAGE_INIT;
100 if (MsgCreateFilterTable() != MSG_SUCCESS)
101 return MSG_ERR_DB_STORAGE_INIT;
102 if (MsgCreateMmsMsgTable() != MSG_SUCCESS)
103 return MSG_ERR_DB_STORAGE_INIT;
104 if (MsgCreateMmsAttributeTable() != MSG_SUCCESS)
105 return MSG_ERR_DB_STORAGE_INIT;
107 // Add Default Folders
108 if (MsgAddDefaultFolders() != MSG_SUCCESS)
110 MSG_DEBUG("Add Default Folders Fail");
111 return MSG_ERR_DB_STORAGE_INIT;
114 // Add Default Address
115 if (MsgAddDefaultAddress() != MSG_SUCCESS)
117 MSG_DEBUG("Add Default Address Fail");
118 return MSG_ERR_DB_STORAGE_INIT;
122 // Delete Msgs in Hidden Folder
123 MsgStoDeleteAllMessageInFolder(0, true, NULL);
125 // Reset network status
126 MsgStoResetNetworkStatus();
128 //clear abnormal mms message
129 MsgStoCleanAbnormalMmsData();
131 // Clear all old Sim data
132 MsgStoClearSimMessageInDB();
134 int smsCnt = 0, mmsCnt = 0;
136 smsCnt = MsgStoGetUnreadCnt(&dbHandle, MSG_SMS_TYPE);
137 mmsCnt = MsgStoGetUnreadCnt(&dbHandle, MSG_MMS_TYPE);
140 MsgSettingSetIndicator(smsCnt, mmsCnt);
148 MSG_ERROR_T MsgCreateAddressTable()
150 MSG_ERROR_T err = MSG_SUCCESS;
152 char sqlQuery[MAX_QUERY_LEN+1];
154 if (!dbHandle.checkTableExist(MSGFW_ADDRESS_TABLE_NAME))
156 memset(sqlQuery, 0x00, sizeof(sqlQuery));
158 snprintf(sqlQuery, sizeof(sqlQuery),
160 ADDRESS_ID INTEGER PRIMARY KEY, \
161 ADDRESS_TYPE INTEGER, \
162 RECIPIENT_TYPE INTEGER, \
164 CONTACT_ID INTEGER, \
169 SYNC_TIME DATETIME, \
170 UNREAD_CNT INTEGER DEFAULT 0, \
171 SMS_CNT INTEGER DEFAULT 0, \
172 MMS_CNT INTEGER DEFAULT 0, \
173 MAIN_TYPE INTEGER NOT NULL, \
174 SUB_TYPE INTEGER NOT NULL, \
175 MSG_DIRECTION INTEGER NOT NULL, \
178 MSGFW_ADDRESS_TABLE_NAME);
180 err = dbHandle.execQuery(sqlQuery);
182 if (err == MSG_SUCCESS)
183 MSG_DEBUG("SUCCESS : create %s.", MSGFW_ADDRESS_TABLE_NAME);
185 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_ADDRESS_TABLE_NAME, err);
192 MSG_ERROR_T MsgCreateFolderTable()
194 MSG_ERROR_T err = MSG_SUCCESS;
196 char sqlQuery[MAX_QUERY_LEN+1];
198 if (!dbHandle.checkTableExist(MSGFW_FOLDER_TABLE_NAME))
200 memset(sqlQuery, 0x00, sizeof(sqlQuery));
202 snprintf(sqlQuery, sizeof(sqlQuery),
204 FOLDER_ID INTEGER PRIMARY KEY, \
205 FOLDER_NAME TEXT NOT NULL, \
206 FOLDER_TYPE INTEGER DEFAULT 0);",
207 MSGFW_FOLDER_TABLE_NAME);
209 err = dbHandle.execQuery(sqlQuery);
211 if (err == MSG_SUCCESS)
212 MSG_DEBUG("SUCCESS : create %s.", MSGFW_FOLDER_TABLE_NAME);
214 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_FOLDER_TABLE_NAME, err);
221 MSG_ERROR_T MsgCreateMsgTable()
223 MSG_ERROR_T err = MSG_SUCCESS;
225 char sqlQuery[MAX_QUERY_LEN+1];
227 if (!dbHandle.checkTableExist(MSGFW_MESSAGE_TABLE_NAME))
229 memset(sqlQuery, 0x00, sizeof(sqlQuery));
231 snprintf(sqlQuery, sizeof(sqlQuery),
233 MSG_ID INTEGER PRIMARY KEY, \
234 ADDRESS_ID INTEGER, \
236 REFERENCE_ID INTEGER, \
237 STORAGE_ID INTEGER NOT NULL, \
238 MAIN_TYPE INTEGER NOT NULL, \
239 SUB_TYPE INTEGER NOT NULL, \
240 DISPLAY_TIME DATETIME, \
241 DATA_SIZE INTEGER DEFAULT 0, \
242 NETWORK_STATUS INTEGER DEFAULT 0, \
243 READ_STATUS INTEGER DEFAULT 0, \
244 PROTECTED INTEGER DEFAULT 0, \
245 PRIORITY INTEGER DEFAULT 0, \
246 MSG_DIRECTION INTEGER NOT NULL, \
247 SCHEDULED_TIME DATETIME, \
248 BACKUP INTEGER DEFAULT 0, \
253 DELIVERY_REPORT_STATUS INTEGER DEFAULT 0, \
254 DELIVERY_REPORT_TIME DATETIME, \
255 READ_REPORT_STATUS INTEGER DEFAULT 0, \
256 READ_REPORT_TIME DATETIME, \
257 ATTACHMENT_COUNT INTEGER DEFAULT 0, \
258 FOREIGN KEY(ADDRESS_ID) REFERENCES %s(ADDRESS_ID), \
259 FOREIGN KEY(FOLDER_ID) REFERENCES %s(FOLDER_ID) \
261 MSGFW_MESSAGE_TABLE_NAME, MSGFW_ADDRESS_TABLE_NAME, MSGFW_FOLDER_TABLE_NAME);
263 err = dbHandle.execQuery(sqlQuery);
265 if (err == MSG_SUCCESS)
266 MSG_DEBUG("SUCCESS : create %s.", MSGFW_MESSAGE_TABLE_NAME);
268 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_MESSAGE_TABLE_NAME, err);
275 MSG_ERROR_T MsgCreateSimMessageTable()
277 MSG_ERROR_T err = MSG_SUCCESS;
279 char sqlQuery[MAX_QUERY_LEN+1];
281 if (!dbHandle.checkTableExist(MSGFW_SIM_MSG_TABLE_NAME))
283 memset(sqlQuery, 0x00, sizeof(sqlQuery));
285 snprintf(sqlQuery, sizeof(sqlQuery),
288 SIM_ID INTEGER NOT NULL, \
289 FOREIGN KEY(MSG_ID) REFERENCES %s(MSG_ID));",
290 MSGFW_SIM_MSG_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME);
292 err = dbHandle.execQuery(sqlQuery);
294 if (err == MSG_SUCCESS)
295 MSG_DEBUG("SUCCESS : create %s.", MSGFW_SIM_MSG_TABLE_NAME);
297 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_SIM_MSG_TABLE_NAME, err);
304 MSG_ERROR_T MsgCreateWAPMessageTable()
306 MSG_ERROR_T err = MSG_SUCCESS;
308 char sqlQuery[MAX_QUERY_LEN+1];
310 if (!dbHandle.checkTableExist(MSGFW_PUSH_MSG_TABLE_NAME))
312 memset(sqlQuery, 0x00, sizeof(sqlQuery));
314 snprintf(sqlQuery, sizeof(sqlQuery),
323 FOREIGN KEY(MSG_ID) REFERENCES %s(MSG_ID));",
324 MSGFW_PUSH_MSG_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME);
326 err = dbHandle.execQuery(sqlQuery);
328 if (err == MSG_SUCCESS)
329 MSG_DEBUG("SUCCESS : create %s.", MSGFW_PUSH_MSG_TABLE_NAME);
331 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_PUSH_MSG_TABLE_NAME, err);
338 MSG_ERROR_T MsgCreateCBMessageTable()
340 MSG_ERROR_T err = MSG_SUCCESS;
342 char sqlQuery[MAX_QUERY_LEN+1];
344 if (!dbHandle.checkTableExist(MSGFW_CB_MSG_TABLE_NAME))
346 memset(sqlQuery, 0x00, sizeof(sqlQuery));
348 snprintf(sqlQuery, sizeof(sqlQuery),
351 CB_MSG_ID INTEGER NOT NULL, \
352 FOREIGN KEY(MSG_ID) REFERENCES %s(MSG_ID));",
353 MSGFW_CB_MSG_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME);
355 err = dbHandle.execQuery(sqlQuery);
357 if (err == MSG_SUCCESS)
358 MSG_DEBUG("SUCCESS : create %s.", MSGFW_CB_MSG_TABLE_NAME);
360 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_CB_MSG_TABLE_NAME, err);
367 MSG_ERROR_T MsgCreateSyncMLMessageTable()
369 MSG_ERROR_T err = MSG_SUCCESS;
371 char sqlQuery[MAX_QUERY_LEN+1];
373 if (!dbHandle.checkTableExist(MSGFW_SYNCML_MSG_TABLE_NAME))
375 memset(sqlQuery, 0x00, sizeof(sqlQuery));
377 snprintf(sqlQuery, sizeof(sqlQuery),
380 EXT_ID INTEGER NOT NULL, \
381 PINCODE INTEGER NOT NULL, \
382 FOREIGN KEY(MSG_ID) REFERENCES %s(MSG_ID));",
383 MSGFW_SYNCML_MSG_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME);
385 err = dbHandle.execQuery(sqlQuery);
387 if (err == MSG_SUCCESS)
388 MSG_DEBUG("SUCCESS : create %s.", MSGFW_SYNCML_MSG_TABLE_NAME);
390 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_SYNCML_MSG_TABLE_NAME, err);
397 MSG_ERROR_T MsgCreateScheduledMessageTable()
399 MSG_ERROR_T err = MSG_SUCCESS;
401 char sqlQuery[MAX_QUERY_LEN+1];
403 if (!dbHandle.checkTableExist(MSGFW_SCHEDULED_MSG_TABLE_NAME))
405 memset(sqlQuery, 0x00, sizeof(sqlQuery));
407 snprintf(sqlQuery, sizeof(sqlQuery),
410 ALARM_ID INTEGER NOT NULL, \
411 LISTENER_FD INTEGER NOT NULL, \
412 FOREIGN KEY(MSG_ID) REFERENCES %s(MSG_ID));",
413 MSGFW_SCHEDULED_MSG_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME);
415 err = dbHandle.execQuery(sqlQuery);
417 if (err == MSG_SUCCESS)
418 MSG_DEBUG("SUCCESS : create %s.", MSGFW_SCHEDULED_MSG_TABLE_NAME);
420 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_SCHEDULED_MSG_TABLE_NAME, err);
427 MSG_ERROR_T MsgCreateSmsSendOptTable()
429 MSG_ERROR_T err = MSG_SUCCESS;
431 char sqlQuery[MAX_QUERY_LEN+1];
433 if (!dbHandle.checkTableExist(MSGFW_SMS_SENDOPT_TABLE_NAME))
435 memset(sqlQuery, 0x00, sizeof(sqlQuery));
437 snprintf(sqlQuery, sizeof(sqlQuery),
440 DELREP_REQ INTEGER NOT NULL, \
441 KEEP_COPY INTEGER NOT NULL, \
442 REPLY_PATH INTEGER NOT NULL, \
443 FOREIGN KEY(MSG_ID) REFERENCES %s(MSG_ID));",
444 MSGFW_SMS_SENDOPT_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME);
446 err = dbHandle.execQuery(sqlQuery);
448 if (err == MSG_SUCCESS)
449 MSG_DEBUG("SUCCESS : create %s.", MSGFW_SMS_SENDOPT_TABLE_NAME);
451 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_SMS_SENDOPT_TABLE_NAME, err);
458 MSG_ERROR_T MsgCreateFilterTable()
460 MSG_ERROR_T err = MSG_SUCCESS;
462 char sqlQuery[MAX_QUERY_LEN+1];
464 if (!dbHandle.checkTableExist(MSGFW_FILTER_TABLE_NAME))
466 memset(sqlQuery, 0x00, sizeof(sqlQuery));
468 snprintf(sqlQuery, sizeof(sqlQuery),
470 FILTER_ID INTEGER PRIMARY KEY, \
471 FILTER_TYPE INTEGER NOT NULL, \
472 FILTER_VALUE TEXT NOT NULL);",
473 MSGFW_FILTER_TABLE_NAME);
475 err = dbHandle.execQuery(sqlQuery);
477 if (err == MSG_SUCCESS)
478 MSG_DEBUG("SUCCESS : create %s.", MSGFW_FILTER_TABLE_NAME);
480 MSG_DEBUG("FAIL : create %s [%d].", MSGFW_FILTER_TABLE_NAME, err);
487 MSG_ERROR_T MsgCreateMmsMsgTable()
489 MSG_ERROR_T err = MSG_SUCCESS;
491 char sqlQuery[MAX_QUERY_LEN+1];
493 if (!dbHandle.checkTableExist(MMS_PLUGIN_MESSAGE_TABLE_NAME))
495 memset(sqlQuery, 0x00, sizeof(sqlQuery));
497 snprintf(sqlQuery, sizeof(sqlQuery),
500 TRANSACTION_ID TEXT, \
502 FWD_MESSAGE_ID TEXT, \
503 CONTENTS_LOCATION TEXT, \
505 FOREIGN KEY(MSG_ID) REFERENCES %s(MSG_ID));",
506 MMS_PLUGIN_MESSAGE_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME);
508 err = dbHandle.execQuery(sqlQuery);
510 if (err == MSG_SUCCESS)
511 MSG_DEBUG("SUCCESS : create %s.", MMS_PLUGIN_MESSAGE_TABLE_NAME);
513 MSG_DEBUG("FAIL : create %s [%d].", MMS_PLUGIN_MESSAGE_TABLE_NAME, err);
520 MSG_ERROR_T MsgCreateMmsAttributeTable()
522 MSG_ERROR_T err = MSG_SUCCESS;
524 char sqlQuery[MAX_QUERY_LEN+1];
526 if (!dbHandle.checkTableExist(MMS_PLUGIN_ATTRIBUTE_TABLE_NAME))
528 memset(sqlQuery, 0x00, sizeof(sqlQuery));
530 snprintf(sqlQuery, sizeof(sqlQuery),
533 VERSION INTEGER NOT NULL, \
534 DATA_TYPE INTEGER DEFAULT -1, \
536 HIDE_ADDRESS INTEGER DEFAULT 0, \
537 ASK_DELIVERY_REPORT INTEGER DEFAULT 0, \
538 REPORT_ALLOWED INTEGER DEFAULT 0, \
539 READ_REPORT_ALLOWED_TYPE INTEGER DEFAULT 0, \
540 ASK_READ_REPLY INTEGER DEFAULT 0, \
541 READ INTEGER DEFAULT 0, \
542 READ_REPORT_SEND_STATUS INTEGER DEFAULT 0, \
543 READ_REPORT_SENT INTEGER DEFAULT 0, \
544 PRIORITY INTEGER DEFAULT 0, \
545 KEEP_COPY INTEGER DEFAULT 0, \
546 MSG_SIZE INTEGER NOT NULL, \
547 MSG_CLASS INTEGER DEFAULT -1, \
548 EXPIRY_TIME DATETIME, \
549 CUSTOM_DELIVERY_TIME INTEGER DEFAULT 0, \
550 DELIVERY_TIME DATETIME, \
551 MSG_STATUS INTEGER DEFAULT -1, \
552 FOREIGN KEY(MSG_ID) REFERENCES %s(MSG_ID));",
553 MMS_PLUGIN_ATTRIBUTE_TABLE_NAME, MSGFW_MESSAGE_TABLE_NAME);
555 err = dbHandle.execQuery(sqlQuery);
557 if (err == MSG_SUCCESS)
558 MSG_DEBUG("SUCCESS : create %s.", MMS_PLUGIN_ATTRIBUTE_TABLE_NAME);
560 MSG_DEBUG("FAIL : create %s [%d].", MMS_PLUGIN_ATTRIBUTE_TABLE_NAME, err);
567 MSG_ERROR_T MsgAddDefaultFolders()
572 char sqlQuery[MAX_QUERY_LEN+1];
575 memset(sqlQuery, 0x00, sizeof(sqlQuery));
576 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) FROM %s WHERE FOLDER_ID = %d;",
577 MSGFW_FOLDER_TABLE_NAME, MSG_INBOX_ID);
579 if (dbHandle.getTable(sqlQuery, &nRowCnt) != MSG_SUCCESS)
581 dbHandle.freeTable();
582 return MSG_ERR_DB_GETTABLE;
585 nResult = dbHandle.getColumnToInt(1);
587 dbHandle.freeTable();
591 memset(sqlQuery, 0x00, sizeof(sqlQuery));
592 snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, 'INBOX', %d);",
593 MSGFW_FOLDER_TABLE_NAME, MSG_INBOX_ID, MSG_FOLDER_TYPE_INBOX);
595 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
596 return MSG_ERR_DB_EXEC;
600 memset(sqlQuery, 0x00, sizeof(sqlQuery));
601 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) FROM %s WHERE FOLDER_ID = %d;",
602 MSGFW_FOLDER_TABLE_NAME, MSG_OUTBOX_ID);
604 if (dbHandle.getTable(sqlQuery, &nRowCnt) != MSG_SUCCESS)
606 dbHandle.freeTable();
607 return MSG_ERR_DB_GETTABLE;
610 nResult = dbHandle.getColumnToInt(1);
612 dbHandle.freeTable();
616 memset(sqlQuery, 0x00, sizeof(sqlQuery));
617 snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, 'OUTBOX', %d);",
618 MSGFW_FOLDER_TABLE_NAME, MSG_OUTBOX_ID, MSG_FOLDER_TYPE_OUTBOX);
620 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
621 return MSG_ERR_DB_EXEC;
625 memset(sqlQuery, 0x00, sizeof(sqlQuery));
626 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) FROM %s WHERE FOLDER_ID = %d;",
627 MSGFW_FOLDER_TABLE_NAME, MSG_SENTBOX_ID);
629 if (dbHandle.getTable(sqlQuery, &nRowCnt) != MSG_SUCCESS)
631 dbHandle.freeTable();
632 return MSG_ERR_DB_GETTABLE;
635 nResult = dbHandle.getColumnToInt(1);
637 dbHandle.freeTable();
641 memset(sqlQuery, 0x00, sizeof(sqlQuery));
642 snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, 'SENTBOX', %d);",
643 MSGFW_FOLDER_TABLE_NAME, MSG_SENTBOX_ID, MSG_FOLDER_TYPE_OUTBOX);
645 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
646 return MSG_ERR_DB_EXEC;
650 memset(sqlQuery, 0x00, sizeof(sqlQuery));
651 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) FROM %s WHERE FOLDER_ID = %d;",
652 MSGFW_FOLDER_TABLE_NAME, MSG_DRAFT_ID);
654 if (dbHandle.getTable(sqlQuery, &nRowCnt) != MSG_SUCCESS)
656 dbHandle.freeTable();
657 return MSG_ERR_DB_GETTABLE;
660 nResult = dbHandle.getColumnToInt(1);
662 dbHandle.freeTable();
666 memset(sqlQuery, 0x00, sizeof(sqlQuery));
667 snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, 'DRAFT', %d);",
668 MSGFW_FOLDER_TABLE_NAME, MSG_DRAFT_ID, MSG_FOLDER_TYPE_DRAFT);
670 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
671 return MSG_ERR_DB_EXEC;
675 memset(sqlQuery, 0x00, sizeof(sqlQuery));
676 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) FROM %s WHERE FOLDER_ID = %d;",
677 MSGFW_FOLDER_TABLE_NAME, MSG_CBMSGBOX_ID);
679 if (dbHandle.getTable(sqlQuery, &nRowCnt) != MSG_SUCCESS)
681 dbHandle.freeTable();
682 return MSG_ERR_DB_GETTABLE;
685 nResult = dbHandle.getColumnToInt(1);
687 dbHandle.freeTable();
691 memset(sqlQuery, 0x00, sizeof(sqlQuery));
692 snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, 'CBMSGBOX', %d);",
693 MSGFW_FOLDER_TABLE_NAME, MSG_CBMSGBOX_ID, MSG_FOLDER_TYPE_INBOX);
695 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
696 return MSG_ERR_DB_EXEC;
703 MSG_ERROR_T MsgAddDefaultAddress()
707 int nRowCnt = 0, nResult = 0;
709 char sqlQuery[MAX_QUERY_LEN+1];
711 memset(sqlQuery, 0x00, sizeof(sqlQuery));
712 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT COUNT(*) FROM %s WHERE ADDRESS_ID = 0;",
713 MSGFW_ADDRESS_TABLE_NAME);
715 if (dbHandle.getTable(sqlQuery, &nRowCnt) != MSG_SUCCESS)
717 dbHandle.freeTable();
718 return MSG_ERR_DB_GETTABLE;
721 nResult = dbHandle.getColumnToInt(1);
723 dbHandle.freeTable();
727 memset(sqlQuery, 0x00, sizeof(sqlQuery));
728 snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (0, 0, 0, '', 0, '', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, '');",
729 MSGFW_ADDRESS_TABLE_NAME);
731 MSG_DEBUG("%s", sqlQuery);
733 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
734 return MSG_ERR_DB_EXEC;
743 MSG_ERROR_T MsgStoResetDatabase()
745 MSG_ERROR_T err = MSG_SUCCESS;
747 char sqlQuery[MAX_QUERY_LEN+1];
749 const char* tableList[] = {MSGFW_FOLDER_TABLE_NAME, MSGFW_FILTER_TABLE_NAME,
750 MSGFW_PUSH_MSG_TABLE_NAME, MSGFW_CB_MSG_TABLE_NAME,
751 MMS_PLUGIN_MESSAGE_TABLE_NAME, MMS_PLUGIN_ATTRIBUTE_TABLE_NAME,
752 MSGFW_SYNCML_MSG_TABLE_NAME, MSGFW_SCHEDULED_MSG_TABLE_NAME, MSGFW_SMS_SENDOPT_TABLE_NAME};
754 int listCnt = sizeof(tableList)/sizeof(char*);
756 dbHandle.beginTrans();
759 for (int i = 0; i < listCnt; i++)
761 memset(sqlQuery, 0x00, sizeof(sqlQuery));
762 snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s;", tableList[i]);
764 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
766 dbHandle.endTrans(false);
767 return MSG_ERR_DB_EXEC;
771 // Delete Message Table
772 memset(sqlQuery, 0x00, sizeof(sqlQuery));
773 snprintf(sqlQuery, sizeof(sqlQuery), "DELETE FROM %s WHERE STORAGE_ID <> %d;",
774 MSGFW_MESSAGE_TABLE_NAME, MSG_STORAGE_SIM);
776 if (dbHandle.execQuery(sqlQuery) != MSG_SUCCESS)
778 dbHandle.endTrans(false);
779 return MSG_ERR_DB_EXEC;
782 // Delete Address Table
783 err = MsgStoClearAddressTable(&dbHandle);
785 if (err != MSG_SUCCESS)
787 dbHandle.endTrans(false);
791 // Add Default Folders
792 if (MsgAddDefaultFolders() != MSG_SUCCESS)
794 MSG_DEBUG("Add Default Folders Fail");
795 dbHandle.endTrans(false);
796 return MSG_ERR_DB_STORAGE_INIT;
799 // Add Default Address
800 if (MsgAddDefaultAddress() != MSG_SUCCESS)
802 MSG_DEBUG("Add Default Address Fail");
803 dbHandle.endTrans(false);
804 return MSG_ERR_DB_STORAGE_INIT;
807 dbHandle.endTrans(true);
810 MsgRmRf((char*)MSG_DATA_PATH);
811 MsgRmRf((char*)MSG_SMIL_FILE_PATH);
814 if (MsgSettingSetIndicator(0, 0) != MSG_SUCCESS)
816 MSG_DEBUG("MsgSettingSetIndicator() FAILED");
817 return MSG_ERR_SET_SETTING;
821 if (MsgSettingSetIndicator(0, 0) != MSG_SUCCESS)
823 MSG_DEBUG("MsgSettingSetIndicator() FAILED");
824 return MSG_ERR_SET_SETTING;