EXECUTE_PROCESS(COMMAND build-util/generator.sh)
-SET(PC_REQUIRED "capi-base-common")
-
#INCLUDE_DIRECTORIES(${SRC_INCLUDE_DIR})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -I${SRC_INCLUDE_DIR}")
INCLUDE(FindPkgConfig)
-pkg_check_modules(pkgs REQUIRED glib-2.0 capi-base-common vconf dlog db-util icu-i18n security-server)
+pkg_check_modules(pkgs REQUIRED glib-2.0 pims-ipc capi-base-common vconf dlog db-util security-server vasum gobject-2.0 icu-uc)
FOREACH(flag ${pkgs_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
# for tizen open build test
-IF( ENABLE_SIM_FEATURE )
- ADD_DEFINITIONS("-DENABLE_SIM_FEATURE")
-ENDIF( ENABLE_SIM_FEATURE )
-IF( ENABLE_LOG_FEATURE )
+IF(ENABLE_LOG_FEATURE)
ADD_DEFINITIONS("-DENABLE_LOG_FEATURE")
-ENDIF( ENABLE_LOG_FEATURE )
+ENDIF(ENABLE_LOG_FEATURE)
# Install notification files
-Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.\r
-\r
- Apache License\r
- Version 2.0, January 2004\r
- http://www.apache.org/licenses/\r
-\r
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\r
-\r
- 1. Definitions.\r
-\r
- "License" shall mean the terms and conditions for use, reproduction,\r
- and distribution as defined by Sections 1 through 9 of this document.\r
-\r
- "Licensor" shall mean the copyright owner or entity authorized by\r
- the copyright owner that is granting the License.\r
-\r
- "Legal Entity" shall mean the union of the acting entity and all\r
- other entities that control, are controlled by, or are under common\r
- control with that entity. For the purposes of this definition,\r
- "control" means (i) the power, direct or indirect, to cause the\r
- direction or management of such entity, whether by contract or\r
- otherwise, or (ii) ownership of fifty percent (50%) or more of the\r
- outstanding shares, or (iii) beneficial ownership of such entity.\r
-\r
- "You" (or "Your") shall mean an individual or Legal Entity\r
- exercising permissions granted by this License.\r
-\r
- "Source" form shall mean the preferred form for making modifications,\r
- including but not limited to software source code, documentation\r
- source, and configuration files.\r
-\r
- "Object" form shall mean any form resulting from mechanical\r
- transformation or translation of a Source form, including but\r
- not limited to compiled object code, generated documentation,\r
- and conversions to other media types.\r
-\r
- "Work" shall mean the work of authorship, whether in Source or\r
- Object form, made available under the License, as indicated by a\r
- copyright notice that is included in or attached to the work\r
- (an example is provided in the Appendix below).\r
-\r
- "Derivative Works" shall mean any work, whether in Source or Object\r
- form, that is based on (or derived from) the Work and for which the\r
- editorial revisions, annotations, elaborations, or other modifications\r
- represent, as a whole, an original work of authorship. For the purposes\r
- of this License, Derivative Works shall not include works that remain\r
- separable from, or merely link (or bind by name) to the interfaces of,\r
- the Work and Derivative Works thereof.\r
-\r
- "Contribution" shall mean any work of authorship, including\r
- the original version of the Work and any modifications or additions\r
- to that Work or Derivative Works thereof, that is intentionally\r
- submitted to Licensor for inclusion in the Work by the copyright owner\r
- or by an individual or Legal Entity authorized to submit on behalf of\r
- the copyright owner. For the purposes of this definition, "submitted"\r
- means any form of electronic, verbal, or written communication sent\r
- to the Licensor or its representatives, including but not limited to\r
- communication on electronic mailing lists, source code control systems,\r
- and issue tracking systems that are managed by, or on behalf of, the\r
- Licensor for the purpose of discussing and improving the Work, but\r
- excluding communication that is conspicuously marked or otherwise\r
- designated in writing by the copyright owner as "Not a Contribution."\r
-\r
- "Contributor" shall mean Licensor and any individual or Legal Entity\r
- on behalf of whom a Contribution has been received by Licensor and\r
- subsequently incorporated within the Work.\r
-\r
- 2. Grant of Copyright License. Subject to the terms and conditions of\r
- this License, each Contributor hereby grants to You a perpetual,\r
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r
- copyright license to reproduce, prepare Derivative Works of,\r
- publicly display, publicly perform, sublicense, and distribute the\r
- Work and such Derivative Works in Source or Object form.\r
-\r
- 3. Grant of Patent License. Subject to the terms and conditions of\r
- this License, each Contributor hereby grants to You a perpetual,\r
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r
- (except as stated in this section) patent license to make, have made,\r
- use, offer to sell, sell, import, and otherwise transfer the Work,\r
- where such license applies only to those patent claims licensable\r
- by such Contributor that are necessarily infringed by their\r
- Contribution(s) alone or by combination of their Contribution(s)\r
- with the Work to which such Contribution(s) was submitted. If You\r
- institute patent litigation against any entity (including a\r
- cross-claim or counterclaim in a lawsuit) alleging that the Work\r
- or a Contribution incorporated within the Work constitutes direct\r
- or contributory patent infringement, then any patent licenses\r
- granted to You under this License for that Work shall terminate\r
- as of the date such litigation is filed.\r
-\r
- 4. Redistribution. You may reproduce and distribute copies of the\r
- Work or Derivative Works thereof in any medium, with or without\r
- modifications, and in Source or Object form, provided that You\r
- meet the following conditions:\r
-\r
- (a) You must give any other recipients of the Work or\r
- Derivative Works a copy of this License; and\r
-\r
- (b) You must cause any modified files to carry prominent notices\r
- stating that You changed the files; and\r
-\r
- (c) You must retain, in the Source form of any Derivative Works\r
- that You distribute, all copyright, patent, trademark, and\r
- attribution notices from the Source form of the Work,\r
- excluding those notices that do not pertain to any part of\r
- the Derivative Works; and\r
-\r
- (d) If the Work includes a "NOTICE" text file as part of its\r
- distribution, then any Derivative Works that You distribute must\r
- include a readable copy of the attribution notices contained\r
- within such NOTICE file, excluding those notices that do not\r
- pertain to any part of the Derivative Works, in at least one\r
- of the following places: within a NOTICE text file distributed\r
- as part of the Derivative Works; within the Source form or\r
- documentation, if provided along with the Derivative Works; or,\r
- within a display generated by the Derivative Works, if and\r
- wherever such third-party notices normally appear. The contents\r
- of the NOTICE file are for informational purposes only and\r
- do not modify the License. You may add Your own attribution\r
- notices within Derivative Works that You distribute, alongside\r
- or as an addendum to the NOTICE text from the Work, provided\r
- that such additional attribution notices cannot be construed\r
- as modifying the License.\r
-\r
- You may add Your own copyright statement to Your modifications and\r
- may provide additional or different license terms and conditions\r
- for use, reproduction, or distribution of Your modifications, or\r
- for any such Derivative Works as a whole, provided Your use,\r
- reproduction, and distribution of the Work otherwise complies with\r
- the conditions stated in this License.\r
-\r
- 5. Submission of Contributions. Unless You explicitly state otherwise,\r
- any Contribution intentionally submitted for inclusion in the Work\r
- by You to the Licensor shall be under the terms and conditions of\r
- this License, without any additional terms or conditions.\r
- Notwithstanding the above, nothing herein shall supersede or modify\r
- the terms of any separate license agreement you may have executed\r
- with Licensor regarding such Contributions.\r
-\r
- 6. Trademarks. This License does not grant permission to use the trade\r
- names, trademarks, service marks, or product names of the Licensor,\r
- except as required for reasonable and customary use in describing the\r
- origin of the Work and reproducing the content of the NOTICE file.\r
-\r
- 7. Disclaimer of Warranty. Unless required by applicable law or\r
- agreed to in writing, Licensor provides the Work (and each\r
- Contributor provides its Contributions) on an "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\r
- implied, including, without limitation, any warranties or conditions\r
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\r
- PARTICULAR PURPOSE. You are solely responsible for determining the\r
- appropriateness of using or redistributing the Work and assume any\r
- risks associated with Your exercise of permissions under this License.\r
-\r
- 8. Limitation of Liability. In no event and under no legal theory,\r
- whether in tort (including negligence), contract, or otherwise,\r
- unless required by applicable law (such as deliberate and grossly\r
- negligent acts) or agreed to in writing, shall any Contributor be\r
- liable to You for damages, including any direct, indirect, special,\r
- incidental, or consequential damages of any character arising as a\r
- result of this License or out of the use or inability to use the\r
- Work (including but not limited to damages for loss of goodwill,\r
- work stoppage, computer failure or malfunction, or any and all\r
- other commercial damages or losses), even if such Contributor\r
- has been advised of the possibility of such damages.\r
-\r
- 9. Accepting Warranty or Additional Liability. While redistributing\r
- the Work or Derivative Works thereof, You may choose to offer,\r
- and charge a fee for, acceptance of support, warranty, indemnity,\r
- or other liability obligations and/or rights consistent with this\r
- License. However, in accepting such obligations, You may act only\r
- on Your own behalf and on Your sole responsibility, not on behalf\r
- of any other Contributor, and only if You agree to indemnify,\r
- defend, and hold each Contributor harmless for any liability\r
- incurred by, or claims asserted against, such Contributor by reason\r
- of your accepting any such warranty or additional liability.\r
-\r
- END OF TERMS AND CONDITIONS\r
-\r
- APPENDIX: How to apply the Apache License to your work.\r
-\r
- To apply the Apache License to your work, attach the following\r
- boilerplate notice, with the fields enclosed by brackets "[]"\r
- replaced with your own identifying information. (Don't include\r
- the brackets!) The text should be enclosed in the appropriate\r
- comment syntax for the file format. We also recommend that a\r
- file or class name and description of purpose be included on the\r
- same "printed page" as the copyright notice for easier\r
- identification within third-party archives.\r
-\r
- Copyright [yyyy] [name of copyright owner]\r
-\r
- Licensed under the Apache License, Version 2.0 (the "License");\r
- you may not use this file except in compliance with the License.\r
- You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
- Unless required by applicable law or agreed to in writing, software\r
- distributed under the License is distributed on an "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- See the License for the specific language governing permissions and\r
- limitations under the License.\r
-\r
+Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
+
if (fp == NULL)
exit(EXIT_FAILURE);
- do{
+ do {
c = fgetc(fp);
- switch (c)
- {
+ switch (c) {
case '\n':
printf("\\\n");
break;
printf("%c",c);
break;
}
- }while(EOF != c);
+ } while (EOF != c);
exit(EXIT_SUCCESS);
}
if (fp == NULL)
exit(EXIT_FAILURE);
- do{
+ do {
c = fgetc(fp);
- switch (c)
- {
+ switch (c) {
case '-':
if ('-' == (c = fgetc(fp))) {
while ('\n' != c && EOF != c)
printf("%c",c);
break;
}
- }while(EOF != c);
+ } while (EOF != c);
exit(EXIT_SUCCESS);
}
SET(SRCS
ctsvc_client_activity.c
ctsvc_client_db.c
+ ctsvc_client_db_notification.c
ctsvc_client_group.c
ctsvc_client_person.c
ctsvc_client_service.c
ctsvc_client_ipc.c
ctsvc_client_noti.c
ctsvc_client_setting.c
+ ctsvc_client_handle.c
+ ctsvc_client_utils.c
+
+ ctsvc_client_service_helper.c
+ ctsvc_client_db_helper.c
+ ctsvc_client_activity_helper.c
+ ctsvc_client_person_helper.c
+ ctsvc_client_group_helper.c
+ ctsvc_client_phonelog_helper.c
${CMAKE_SOURCE_DIR}/common/ipc/ctsvc_ipc_marshal.c
${CMAKE_SOURCE_DIR}/common/ipc/ctsvc_ipc_addressbook.c
${CMAKE_SOURCE_DIR}/common/ipc/ctsvc_ipc_extension.c
${CMAKE_SOURCE_DIR}/common/ipc/ctsvc_ipc_profile.c
- ${CMAKE_SOURCE_DIR}/common/ctsvc_db_notification.c
${CMAKE_SOURCE_DIR}/common/ctsvc_filter.c
${CMAKE_SOURCE_DIR}/common/ctsvc_inotify.c
${CMAKE_SOURCE_DIR}/common/ctsvc_list.c
${CMAKE_SOURCE_DIR}/common/ctsvc_socket.c
${CMAKE_SOURCE_DIR}/common/ctsvc_vcard.c
${CMAKE_SOURCE_DIR}/common/ctsvc_view.c
-)
+ ${CMAKE_SOURCE_DIR}/common/ctsvc_handle.c
+ ${CMAKE_SOURCE_DIR}/common/ctsvc_zone.c
-IF( ENABLE_SIM_FEATURE )
-SET(SRCS ${SRCS}
${CMAKE_SOURCE_DIR}/common/ipc/ctsvc_ipc_sdn.c
${CMAKE_SOURCE_DIR}/common/ctsvc_record_sdn.c
${CMAKE_SOURCE_DIR}/common/ctsvc_sim.c
${CMAKE_SOURCE_DIR}/common/ipc/ctsvc_ipc_speeddial.c
${CMAKE_SOURCE_DIR}/common/ctsvc_record_speeddial.c
)
-ENDIF( ENABLE_SIM_FEATURE )
-IF( ENABLE_LOG_FEATURE )
+IF(ENABLE_LOG_FEATURE)
SET(SRCS ${SRCS}
ctsvc_client_phonelog.c
${CMAKE_SOURCE_DIR}/common/ipc/ctsvc_ipc_phonelog.c
${CMAKE_SOURCE_DIR}/common/ctsvc_record_phonelog.c
)
-ENDIF( ENABLE_LOG_FEATURE )
-
-
-INCLUDE(FindPkgConfig)
-pkg_check_modules(client_pkgs REQUIRED pims-ipc gobject-2.0)
-
-FOREACH(flag ${client_pkgs_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
+ENDIF(ENABLE_LOG_FEATURE)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC")
ADD_LIBRARY(${CLIENT} SHARED ${SRCS})
SET_TARGET_PROPERTIES(${CLIENT} PROPERTIES SOVERSION ${MAJORVER})
SET_TARGET_PROPERTIES(${CLIENT} PROPERTIES VERSION ${FULLVER})
-TARGET_LINK_LIBRARIES(${CLIENT} ${client_pkgs_LDFLAGS} ${pkgs_LDFLAGS} -lpthread)
+TARGET_LINK_LIBRARIES(${CLIENT} ${pkgs_LDFLAGS} -lpthread)
INSTALL(TARGETS ${CLIENT} DESTINATION lib)
INSTALL(FILES ${CLIENT}.pc DESTINATION lib/pkgconfig)
/*
* Contacts Service
*
- * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ * Copyright (c) 2010 - 2015 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.
*
*/
-#include <glib.h>
-#include <pims-ipc-data.h>
-
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_ipc_define.h"
-#include "ctsvc_ipc_marshal.h"
-#include "ctsvc_client_ipc.h"
+#include "ctsvc_client_handle.h"
+#include "ctsvc_client_activity_helper.h"
API int contacts_activity_delete_by_contact_id(int contact_id)
{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(contact_id <= 0,CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_int( contact_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
+ int ret;
+ contacts_h contact = NULL;
- // ipc call
- if (ctsvc_ipc_call( CTSVC_IPC_ACTIVITY_MODULE, CTSVC_IPC_SERVER_ACTIVITY_DELETE_BY_CONTACT_ID, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check result
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata, &size);
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_activity_delete_by_contact_id(contact, contact_id);
return ret;
}
API int contacts_activity_delete_by_account_id(int account_id)
{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(account_id <= 0,CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
+ int ret;
+ contacts_h contact = NULL;
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
- ret = ctsvc_ipc_marshal_int( account_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call( CTSVC_IPC_ACTIVITY_MODULE, CTSVC_IPC_SERVER_ACTIVITY_DELETE_BY_ACCOUNT_ID, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check result
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata, &size);
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_activity_delete_by_account_id(contact, account_id);
return ret;
-}
\ No newline at end of file
+}
+
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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 <pims-ipc-data.h>
+
+#include "contacts.h"
+#include "ctsvc_internal.h"
+#include "ctsvc_ipc_define.h"
+#include "ctsvc_ipc_marshal.h"
+#include "ctsvc_client_ipc.h"
+
+static const char CONTACTS_READ_PRIVILEGE_ID[] = "http://tizen.org/privilege/contact.read";
+static const char CONTACTS_WRITE_PRIVILEGE_ID[] = "http://tizen.org/privilege/contact.write";
+static const char PHONELOG_READ_PRIVILEGE_ID[] = "http://tizen.org/privilege/callhistory.read";
+static const char PHONELOG_WRITE_PRIVILEGE_ID[] = "http://tizen.org/privilege/callhistory.write";
+
+
+int ctsvc_client_activity_delete_by_contact_id(contacts_h contact, int contact_id)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(contact_id <= 0,CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_int(contact_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_ACTIVITY_MODULE, CTSVC_IPC_SERVER_ACTIVITY_DELETE_BY_CONTACT_ID, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ int transaction_ver = 0;
+
+ /* check result */
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ if (CONTACTS_ERROR_NONE == ret) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_activity_delete_by_account_id(contacts_h contact, int account_id)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(account_id <= 0,CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_int(account_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_ACTIVITY_MODULE, CTSVC_IPC_SERVER_ACTIVITY_DELETE_BY_ACCOUNT_ID, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
-/*\r
- * Contacts Service\r
- *\r
- * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Contact: Dohyung Jin <dh.jin@samsung.com>\r
- * Jongwon Lee <gogosing.lee@samsung.com>\r
- * Donghee Ye <donghee.ye@samsung.com>\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- *\r
- */\r
-\r
-#ifndef __TIZEN_SOCIAL_CTSVC_QUERY_H__\r
-#define __TIZEN_SOCIAL_CTSVC_QUERY_H__\r
-\r
-#endif /* __TIZEN_SOCIAL_CTSVC_QUERY_H__ */\r
-\r
-\r
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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.
+ *
+ */
+
+#ifndef __CTSVC_CLIENT_ACTIVITY_HELPER_H__
+#define __CTSVC_CLIENT_ACTIVITY_HELPER_H__
+
+#include "contacts_types.h"
+
+int ctsvc_client_activity_delete_by_contact_id(contacts_h contact, int contact_id);
+int ctsvc_client_activity_delete_by_account_id(contacts_h contact, int account_id);
+
+#endif /* __CTSVC_CLIENT_ACTIVITY_HELPER_H__ */
\ No newline at end of file
*
*/
-#include <glib.h>
-#include <pims-ipc.h>
-#include <pims-ipc-data.h>
-
#include "contacts.h"
-#include "contacts_internal.h"
-
#include "ctsvc_internal.h"
-#include "ctsvc_list.h"
-#include "ctsvc_record.h"
-#include "ctsvc_query.h"
-#include "ctsvc_inotify.h"
-
-#include "ctsvc_ipc_define.h"
-#include "ctsvc_ipc_marshal.h"
-#include "ctsvc_view.h"
+#include "ctsvc_client_handle.h"
+#include "ctsvc_client_db_helper.h"
-#include "ctsvc_client_ipc.h"
-
-#include "ctsvc_mutex.h"
+API int contacts_db_insert_record(contacts_record_h record, int *id)
+{
+ int ret;
+ contacts_h contact = NULL;
-typedef struct {
- void *callback;
- void *user_data;
-}ctsvc_ipc_async_userdata_s;
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
-static void __ctsvc_ipc_client_insert_records_cb(pims_ipc_h ipc, pims_ipc_data_h data_out, void *userdata);
-static void __ctsvc_ipc_client_update_records_cb(pims_ipc_h ipc, pims_ipc_data_h data_out, void *userdata);
-static void __ctsvc_ipc_client_delete_records_cb(pims_ipc_h ipc, pims_ipc_data_h data_out, void *userdata);
+ ret = ctsvc_client_db_insert_record(contact, record, id);
-void __ctsvc_ipc_client_insert_records_cb(pims_ipc_h ipc, pims_ipc_data_h data_out, void *userdata)
-{
- ctsvc_ipc_async_userdata_s *sync_data = (ctsvc_ipc_async_userdata_s *)userdata;
- int ret = CONTACTS_ERROR_NONE;
- int *ids = NULL;
- int count = 0;
-
- if (data_out)
- {
- // check outdata
- ctsvc_ipc_unmarshal_int(data_out, &ret);
-
- if (ret == CONTACTS_ERROR_NONE) {
- int i=0;
- int transaction_ver = 0;
- ctsvc_ipc_unmarshal_int(data_out, &transaction_ver);
- ctsvc_client_ipc_set_change_version(transaction_ver);
-
- ctsvc_ipc_unmarshal_int(data_out, &count);
- ids = calloc(count, sizeof(int));
- for(i=0;i<count;i++)
- {
- ctsvc_ipc_unmarshal_int(data_out, &(ids[i]));
- }
- }
- }
-
- if (sync_data->callback)
- {
- contacts_db_insert_result_cb callback = sync_data->callback;
- callback(ret, ids, count, sync_data->user_data);
- }
- free(ids);
-
- ctsvc_inotify_call_blocked_callback();
-
- CONTACTS_FREE(sync_data);
-
- return ;
+ return ret;
}
-void __ctsvc_ipc_client_update_records_cb(pims_ipc_h ipc, pims_ipc_data_h data_out, void *userdata)
-{
- ctsvc_ipc_async_userdata_s *sync_data = (ctsvc_ipc_async_userdata_s *)userdata;
- int ret = CONTACTS_ERROR_NONE;
-
- if (data_out)
- {
- // check outdata
- ctsvc_ipc_unmarshal_int(data_out, &ret);
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- ctsvc_ipc_unmarshal_int(data_out, &transaction_ver);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
- }
-
- if (sync_data->callback)
- {
- contacts_db_result_cb callback = sync_data->callback;
- callback(ret, sync_data->user_data);
- }
-
- ctsvc_inotify_call_blocked_callback();
-
- CONTACTS_FREE(sync_data);
-
- return ;
-}
-void __ctsvc_ipc_client_delete_records_cb(pims_ipc_h ipc, pims_ipc_data_h data_out, void *userdata)
+API int contacts_db_get_record(const char* view_uri, int id, contacts_record_h* out_record)
{
- ctsvc_ipc_async_userdata_s *sync_data = (ctsvc_ipc_async_userdata_s *)userdata;
- int ret = CONTACTS_ERROR_NONE;
-
- if (data_out)
- {
- // check outdata
- ctsvc_ipc_unmarshal_int(data_out, &ret);
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- ctsvc_ipc_unmarshal_int(data_out, &transaction_ver);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
- }
-
- if (sync_data->callback)
- {
- contacts_db_result_cb callback = sync_data->callback;
- callback(ret, sync_data->user_data);
- }
-
- ctsvc_inotify_call_blocked_callback();
-
- CONTACTS_FREE(sync_data);
-
- return ;
-}
+ int ret;
+ contacts_h contact = NULL;
-API int contacts_db_insert_record( contacts_record_h record, int *id )
-{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- if (id)
- *id = 0;
-
- RETVM_IF(record==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"record is NULL");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
- ret = ctsvc_ipc_marshal_record(record,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_INSERT_RECORD, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check outdata
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
-
- if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
-
- if (id)
- *id = *(int*)pims_ipc_data_get(outdata,&size);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
+
+ ret = ctsvc_client_db_get_record(contact, view_uri, id, out_record);
return ret;
}
-API int contacts_db_get_record( const char* view_uri, int id, contacts_record_h* out_record )
+API int contacts_db_update_record(contacts_record_h record)
{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(view_uri==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"view_uri is NULL");
- RETVM_IF(id<0,CONTACTS_ERROR_INVALID_PARAMETER,"id<0");
- RETVM_IF(out_record==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"record is NULL");
- *out_record = NULL;
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
- ret = ctsvc_ipc_marshal_string(view_uri,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int(id,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_GET_RECORD, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check outdata
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
-
- if (ret == CONTACTS_ERROR_NONE)
- {
- ret = ctsvc_ipc_unmarshal_record(outdata,out_record);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ int ret;
+ contacts_h contact = NULL;
- return ret;
-}
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
-API int contacts_db_update_record( contacts_record_h record )
-{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(record==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"record is NULL");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
- ret = ctsvc_ipc_marshal_record(record,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_UPDATE_RECORD, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check outdata
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
- if (CONTACTS_ERROR_NONE == ret) {
- CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_db_update_record(contact, record);
return ret;
}
-API int contacts_db_delete_record( const char* view_uri, int id )
+API int contacts_db_delete_record(const char* view_uri, int id)
{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(view_uri==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"view_uri is NULL");
- RETVM_IF(id<=0,CONTACTS_ERROR_INVALID_PARAMETER,"id <= 0");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
- ret = ctsvc_ipc_marshal_string(view_uri,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int(id,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_DELETE_RECORD, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check outdata
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ int ret;
+ contacts_h contact = NULL;
- return ret;
-}
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
-API int contacts_db_replace_record( contacts_record_h record, int id )
-{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(NULL == record, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : record is NULL");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL) {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_record(record, indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int(id, indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE,
- CTSVC_IPC_SERVER_DB_REPLACE_RECORD, indata, &outdata) != 0) {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata) {
- // check outdata
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_db_delete_record(contact, view_uri, id);
return ret;
}
-API int contacts_db_get_all_records( const char* view_uri, int offset, int limit, contacts_list_h* out_list )
+API int contacts_db_replace_record(contacts_record_h record, int id)
{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(out_list==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"list is NULL");
- *out_list = NULL;
- RETVM_IF(view_uri==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"view_uri is NULL");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_string(view_uri,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int(offset,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int(limit,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_GET_ALL_RECORDS, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check outdata
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
-
- if (ret == CONTACTS_ERROR_NONE)
- {
- ret = ctsvc_ipc_unmarshal_list(outdata,out_list);
- }
- pims_ipc_data_destroy(outdata);
- }
+ int ret;
+ contacts_h contact = NULL;
- return ret;
-}
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
-API int contacts_db_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list )
-{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(out_list==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"list is NULL");
- *out_list = NULL;
- RETVM_IF(query==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"query is NULL");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
- ret = ctsvc_ipc_marshal_query(query,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int(offset,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int(limit,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_GET_RECORDS_WITH_QUERY, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check outdata
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
-
- if (ret == CONTACTS_ERROR_NONE)
- {
- ret = ctsvc_ipc_unmarshal_list(outdata,out_list);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_db_replace_record(contact, record, id);
return ret;
+
}
-API int contacts_db_get_count( const char* view_uri, int *out_count )
+API int contacts_db_get_all_records(const char* view_uri, int offset, int limit, contacts_list_h* out_list)
{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(view_uri==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"view_uri is NULL");
- RETVM_IF(out_count==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"count pointer is NULL");
- *out_count = 0;
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
- ret = ctsvc_ipc_marshal_string(view_uri,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_GET_COUNT, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check outdata
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
-
- if (ret == CONTACTS_ERROR_NONE)
- {
- ret = ctsvc_ipc_unmarshal_int(outdata,out_count);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ int ret;
+ contacts_h contact = NULL;
- return ret;
-}
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
-API int contacts_db_get_count_with_query( contacts_query_h query, int *out_count )
-{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(query==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"record is NULL");
- RETVM_IF(out_count==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"count pointer is NULL");
- *out_count = 0;
-
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
- ret = ctsvc_ipc_marshal_query(query,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_GET_COUNT_WITH_QUERY, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check outdata
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
-
- if (ret == CONTACTS_ERROR_NONE)
- {
- ret = ctsvc_ipc_unmarshal_int(outdata,out_count);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_db_get_all_records(contact, view_uri, offset, limit, out_list);
return ret;
}
-// this function used in contacts_db_delete_records_async
-static int __ctsvc_db_check_permission_by_view_uri(const char *view_uri, bool check_read)
+API int contacts_db_get_records_with_query(contacts_query_h query, int offset, int limit, contacts_list_h* out_list)
{
- int ret = CONTACTS_ERROR_NONE;
- bool result = false;
-
- if (strcmp(view_uri, CTSVC_VIEW_URI_PHONELOG) == 0) {
- if (check_read)
- ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_PHONELOG_READ, &result);
- else
- ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_PHONELOG_WRITE, &result);
- }
- else if ((strcmp(view_uri, CTSVC_VIEW_URI_ADDRESSBOOK) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_PERSON) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_GROUP) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_CONTACT) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_MY_PROFILE) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_NAME) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_COMPANY) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_NOTE) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_NUMBER) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_EMAIL) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_URL) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_EVENT) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_NICKNAME) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_ADDRESS) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_MESSENGER) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_GROUP_RELATION) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_ACTIVITY) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_ACTIVITY_PHOTO) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_PROFILE) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_RELATIONSHIP) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_IMAGE) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_EXTENSION) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_SPEEDDIAL) == 0)
- || (strcmp(view_uri, CTSVC_VIEW_URI_SDN) == 0)
- ) {
- if (check_read)
- ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_CONTACT_READ, &result);
- else
- ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_CONTACT_WRITE, &result);
- }
- else {
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
- RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_ipc_client_check_permission fail (%d)", ret);
- RETVM_IF(result == false, CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied (phonelog read)");
-
- return CONTACTS_ERROR_NONE;
-}
+ int ret;
+ contacts_h contact = NULL;
-static int __ctsvc_db_check_permission_by_type(int r_type, bool check_read)
-{
- int ret = CONTACTS_ERROR_NONE;
- bool result = false;
-
- switch((int)r_type) {
- case CTSVC_RECORD_ADDRESSBOOK:
- case CTSVC_RECORD_GROUP:
- case CTSVC_RECORD_PERSON:
- case CTSVC_RECORD_CONTACT:
- case CTSVC_RECORD_MY_PROFILE:
- case CTSVC_RECORD_SIMPLE_CONTACT:
- case CTSVC_RECORD_NAME:
- case CTSVC_RECORD_COMPANY:
- case CTSVC_RECORD_NOTE:
- case CTSVC_RECORD_NUMBER:
- case CTSVC_RECORD_EMAIL:
- case CTSVC_RECORD_URL:
- case CTSVC_RECORD_EVENT:
- case CTSVC_RECORD_NICKNAME:
- case CTSVC_RECORD_ADDRESS:
- case CTSVC_RECORD_MESSENGER:
- case CTSVC_RECORD_GROUP_RELATION:
- case CTSVC_RECORD_ACTIVITY:
- case CTSVC_RECORD_ACTIVITY_PHOTO:
- case CTSVC_RECORD_PROFILE:
- case CTSVC_RECORD_RELATIONSHIP:
- case CTSVC_RECORD_IMAGE:
- case CTSVC_RECORD_EXTENSION:
- case CTSVC_RECORD_SPEEDDIAL:
- case CTSVC_RECORD_SDN:
- case CTSVC_RECORD_UPDATED_INFO:
- {
- if (check_read)
- ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_CONTACT_READ, &result);
- else
- ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_CONTACT_WRITE, &result);
- }
- break;
- case CTSVC_RECORD_PHONELOG:
- {
- if (check_read)
- ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_PHONELOG_READ, &result);
- else
- ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_PHONELOG_WRITE, &result);
- }
- break;
- default:
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
- RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_ipc_client_check_permission fail (%d)", ret);
- RETVM_IF(result == false, CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied (phonelog read)");
-
- return CONTACTS_ERROR_NONE;
-}
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
-API int contacts_db_insert_records_async(const contacts_list_h list, contacts_db_insert_result_cb callback, void *user_data)
-{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- ctsvc_ipc_async_userdata_s *async_data = NULL;
- int r_type;
-
- RETVM_IF(list==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"list is NULL");
-
- r_type = ((ctsvc_list_s*)list)->l_type;
- ret = __ctsvc_db_check_permission_by_type(r_type, false);
- RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "__ctsvc_db_check_permission_by_type fail (%d)", ret);
-
- indata = pims_ipc_data_create(0);
- if (indata == NULL) {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
- ret = ctsvc_ipc_marshal_list(list,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- async_data = (ctsvc_ipc_async_userdata_s*)malloc(sizeof(ctsvc_ipc_async_userdata_s));
- if (async_data == NULL) {
- CTS_ERR("malloc fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- pims_ipc_data_destroy(indata);
- return ret;
- }
- async_data->callback = callback;
- async_data->user_data = user_data;
-
- if (ctsvc_ipc_call_async(CTSVC_IPC_DB_MODULE,CTSVC_IPC_SERVER_DB_INSERT_RECORDS,
- indata,__ctsvc_ipc_client_insert_records_cb,async_data) != 0) {
- CONTACTS_FREE(async_data);
- CTS_ERR("ctsvc_ipc_call_async failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
- pims_ipc_data_destroy(indata);
+ ret = ctsvc_client_db_get_records_with_query(contact, query, offset, limit, out_list);
return ret;
}
-API int contacts_db_update_records_async(const contacts_list_h list, contacts_db_result_cb callback, void *user_data)
+
+API int contacts_db_get_count(const char* view_uri, int *out_count)
{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- ctsvc_ipc_async_userdata_s *async_data = NULL;
- int r_type;
-
- RETVM_IF(list==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"record is NULL");
-
- r_type = ((ctsvc_list_s*)list)->l_type;
- ret = __ctsvc_db_check_permission_by_type(r_type, false);
- RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "__ctsvc_db_check_permission_by_type fail (%d)", ret);
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL) {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
- ret = ctsvc_ipc_marshal_list(list,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- async_data = (ctsvc_ipc_async_userdata_s*)malloc(sizeof(ctsvc_ipc_async_userdata_s));
- if (async_data == NULL) {
- CTS_ERR("malloc fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- pims_ipc_data_destroy(indata);
- return ret;
- }
- async_data->callback = callback;
- async_data->user_data = user_data;
-
- if (ctsvc_ipc_call_async(CTSVC_IPC_DB_MODULE,CTSVC_IPC_SERVER_DB_UPDATE_RECORDS,
- indata,__ctsvc_ipc_client_update_records_cb,async_data) != 0) {
- CONTACTS_FREE(async_data);
- CTS_ERR("ctsvc_ipc_call_async failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
- pims_ipc_data_destroy(indata);
+ int ret;
+ contacts_h contact = NULL;
- return ret;
-}
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
-API int contacts_db_delete_records_async(const char* view_uri, int ids[], int count, contacts_db_result_cb callback, void *user_data)
-{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- int i = 0;
- ctsvc_ipc_async_userdata_s *async_data = NULL;
-
- RETVM_IF(view_uri==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"view_uri is NULL");
- RETVM_IF(NULL == ids, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- RETVM_IF(0 == count, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
-
- ret = __ctsvc_db_check_permission_by_view_uri(view_uri, false);
- RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "__ctsvc_db_check_permission_by_view_uri fail (%d)", ret);
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL) {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
- ret = ctsvc_ipc_marshal_string(view_uri,indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int(count,indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- for (i=0;i<count;i++) {
- ret = ctsvc_ipc_marshal_int(ids[i],indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- }
-
- async_data = (ctsvc_ipc_async_userdata_s*)malloc(sizeof(ctsvc_ipc_async_userdata_s));
- if (async_data == NULL) {
- CTS_ERR("malloc fail!");
- pims_ipc_data_destroy(indata);
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
- async_data->callback = callback;
- async_data->user_data = user_data;
- if (ctsvc_ipc_call_async(CTSVC_IPC_DB_MODULE,CTSVC_IPC_SERVER_DB_DELETE_RECORDS,
- indata,__ctsvc_ipc_client_delete_records_cb,async_data) != 0) {
- CONTACTS_FREE(async_data);
- CTS_ERR("ctsvc_ipc_call_async failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
+ ret = ctsvc_client_db_get_count(contact, view_uri, out_count);
return ret;
}
-void __ctsvc_ipc_client_replace_records_cb(pims_ipc_h ipc, pims_ipc_data_h data_out, void *userdata)
+API int contacts_db_get_count_with_query(contacts_query_h query, int *out_count)
{
- ctsvc_ipc_async_userdata_s *async_data = (ctsvc_ipc_async_userdata_s *)userdata;
- int ret = CONTACTS_ERROR_NONE;
-
- if (data_out) {
- ctsvc_ipc_unmarshal_int(data_out, &ret);
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- ctsvc_ipc_unmarshal_int(data_out, &transaction_ver);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
- }
+ int ret;
+ contacts_h contact = NULL;
- if (async_data->callback) {
- contacts_db_result_cb callback = async_data->callback;
- callback(ret, async_data->user_data);
- }
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
- ctsvc_inotify_call_blocked_callback();
+ ret = ctsvc_client_db_get_count_with_query(contact, query, out_count);
- free(async_data);
-
- return ;
+ return ret;
}
-API int contacts_db_replace_records_async( contacts_list_h list, int ids[], int count,
- contacts_db_result_cb callback, void *user_data )
+API int contacts_db_insert_records(contacts_list_h list, int **ids, int *count)
{
- int i;
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- ctsvc_ipc_async_userdata_s *async_data = NULL;
- bool result = false;
-
- RETVM_IF(NULL == list,CONTACTS_ERROR_INVALID_PARAMETER, "list is NULL");
- RETVM_IF(NULL == ids, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- RETVM_IF(count <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
-
- ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_CONTACT_WRITE, &result);
- RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_ipc_client_check_permission fail (%d)", ret);
- RETVM_IF(result == false, CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied (contact read)");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL) {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_list(list, indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_int(count, indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- for (i=0;i<count;i++) {
- ret = ctsvc_ipc_marshal_int(ids[i],indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- }
-
- async_data = (ctsvc_ipc_async_userdata_s*)malloc(sizeof(ctsvc_ipc_async_userdata_s));
- async_data->callback = callback;
- async_data->user_data = user_data;
-
- if (ctsvc_ipc_call_async(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_REPLACE_RECORDS,
- indata, __ctsvc_ipc_client_replace_records_cb, async_data) != 0) {
- CONTACTS_FREE(async_data);
- CTS_ERR("ctsvc_ipc_call_async failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
- pims_ipc_data_destroy(indata);
+ int ret;
+ contacts_h contact = NULL;
- return ret;
-}
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
-API int contacts_db_insert_records( contacts_list_h list, int **ids, int *count)
-{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- if (ids)
- *ids = NULL;
- if (count)
- *count = 0;
-
- RETVM_IF(list==NULL,CONTACTS_ERROR_INVALID_PARAMETER, "list is NULL");
-
- indata = pims_ipc_data_create(0);
- if (indata == NULL) {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_list(list,indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_INSERT_RECORDS,
- indata, &outdata) != 0) {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata) {
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
-
- if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
-
- if (ids && count) {
- int i = 0;
- int *id = NULL;
- int c;
- c = *(int*)pims_ipc_data_get(outdata, &size);
- id = calloc(c, sizeof(int));
- for(i=0;i<c;i++)
- id[i] = *(int*) pims_ipc_data_get(outdata, &size);
- *ids = id;
- *count = c;
- }
- }
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_db_insert_records(contact, list, ids, count);
return ret;
}
-API int contacts_db_update_records( contacts_list_h list)
+API int contacts_db_update_records(contacts_list_h list)
{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(NULL == list, CONTACTS_ERROR_INVALID_PARAMETER, "list is NULL");
-
- indata = pims_ipc_data_create(0);
- if (indata == NULL) {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_list(list,indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_UPDATE_RECORDS,
- indata, &outdata) != 0) {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata) {
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ int ret;
+ contacts_h contact = NULL;
+
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
+
+ ret = ctsvc_client_db_update_records(contact, list);
return ret;
}
API int contacts_db_delete_records(const char* view_uri, int ids[], int count)
{
- int i;
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(view_uri == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "view_uri is NULL");
-
- indata = pims_ipc_data_create(0);
- if (indata == NULL) {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_string(view_uri,indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_int(count,indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- for (i=0;i<count;i++) {
- ret = ctsvc_ipc_marshal_int(ids[i],indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- }
-
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_DELETE_RECORDS,
- indata, &outdata) != 0) {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata) {
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
-
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ int ret;
+ contacts_h contact = NULL;
+
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
+
+ ret = ctsvc_client_db_delete_records(contact, view_uri, ids, count);
return ret;
}
-API int contacts_db_replace_records( contacts_list_h list, int ids[], int count )
+API int contacts_db_replace_records(contacts_list_h list, int ids[], int count)
{
- int i;
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(NULL == list,CONTACTS_ERROR_INVALID_PARAMETER, "list is NULL");
- RETVM_IF(NULL == ids, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- RETVM_IF(0 == count, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL) {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_list(list, indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_int(count, indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- for (i=0;i<count;i++) {
- ret = ctsvc_ipc_marshal_int(ids[i], indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- }
-
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_REPLACE_RECORDS,
- indata, &outdata) != 0) {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata) {
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
- pims_ipc_data_destroy(outdata);
- }
+ int ret;
+ contacts_h contact = NULL;
+
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
+
+ ret = ctsvc_client_db_replace_records(contact, list, ids, count);
return ret;
}
-API int contacts_db_get_changes_by_version(const char* view_uri, int addressbook_id, int contacts_db_version, contacts_list_h* record_list, int* current_contacts_db_version )
+API int contacts_db_get_changes_by_version(const char* view_uri, int addressbook_id,
+ int contacts_db_version, contacts_list_h* record_list, int* current_contacts_db_version)
{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(record_list==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"record_list is NULL");
- *record_list = NULL;
- RETVM_IF(view_uri==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"view_uri is NULL");
- RETVM_IF(current_contacts_db_version==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"current_contacts_db_version is NULL");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
- ret = ctsvc_ipc_marshal_string(view_uri,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int(addressbook_id,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int(contacts_db_version,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_CHANGES_BY_VERSION, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check outdata
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
-
- if (ret == CONTACTS_ERROR_NONE)
- {
- ret = ctsvc_ipc_unmarshal_list(outdata,record_list);
-
- if (ret == CONTACTS_ERROR_NONE)
- {
- ret = ctsvc_ipc_unmarshal_int(outdata,current_contacts_db_version);
- }
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ int ret;
+ contacts_h contact = NULL;
+
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
+
+ ret = ctsvc_client_db_get_changes_by_version(contact, view_uri, addressbook_id, contacts_db_version, record_list, current_contacts_db_version);
return ret;
}
API int contacts_db_get_current_version(int* contacts_db_version)
{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(contacts_db_version==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"contacts_db_version is null");
- *contacts_db_version = 0;
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_GET_CURRENT_VERSION, NULL, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- return CONTACTS_ERROR_IPC;
- }
-
- if (outdata)
- {
- // check outdata
- ctsvc_ipc_unmarshal_int(outdata, &ret);
- if (ret == CONTACTS_ERROR_NONE)
- {
- ret = ctsvc_ipc_unmarshal_int(outdata,contacts_db_version);
- }
- pims_ipc_data_destroy(outdata);
- }
+ int ret;
+ contacts_h contact = NULL;
+
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
+
+ ret = ctsvc_client_db_get_current_version(contact, contacts_db_version);
return ret;
+
}
API int contacts_db_search_records(const char* view_uri, const char *keyword,
int offset, int limit, contacts_list_h* out_list)
{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(out_list == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "list is NULL");
- *out_list = NULL;
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail !");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
- ret = ctsvc_ipc_marshal_string(view_uri,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_string(keyword,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int(offset,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int(limit,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_SEARCH_RECORDS, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check outdata
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
-
- if (ret == CONTACTS_ERROR_NONE)
- {
- ret = ctsvc_ipc_unmarshal_list(outdata,out_list);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ int ret;
+ contacts_h contact = NULL;
+
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
+
+ ret = ctsvc_client_db_search_records(contact, view_uri, keyword, offset, limit, out_list);
return ret;
}
API int contacts_db_search_records_with_range(const char* view_uri, const char *keyword,
int offset, int limit, int range, contacts_list_h* out_list)
{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(out_list == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "list is NULL");
- *out_list = NULL;
- RETVM_IF(range == 0, CONTACTS_ERROR_INVALID_PARAMETER, "range is 0");
-
- indata = pims_ipc_data_create(0);
- if (indata == NULL) {
- CTS_ERR("ipc data created fail !");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
-
- ret = ctsvc_ipc_marshal_string(view_uri, indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- goto DATA_FREE;
- }
- ret = ctsvc_ipc_marshal_string(keyword, indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- goto DATA_FREE;
- }
- ret = ctsvc_ipc_marshal_int(offset, indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- goto DATA_FREE;
- }
- ret = ctsvc_ipc_marshal_int(limit, indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- goto DATA_FREE;
- }
- ret = ctsvc_ipc_marshal_int(range, indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- goto DATA_FREE;
- }
-
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_SEARCH_RECORDS_WITH_RANGE, indata, &outdata) != 0) {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata) {
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
-
- if (ret == CONTACTS_ERROR_NONE)
- ret = ctsvc_ipc_unmarshal_list(outdata,out_list);
- pims_ipc_data_destroy(outdata);
- }
+ int ret;
+ contacts_h contact = NULL;
- return ret;
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
+
+ ret = ctsvc_client_db_search_records_with_range(contact, view_uri, keyword, offset, limit, range, out_list);
-DATA_FREE:
- pims_ipc_data_destroy(indata);
return ret;
}
API int contacts_db_search_records_with_query(contacts_query_h query, const char *keyword,
int offset, int limit, contacts_list_h* out_list)
{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(out_list==NULL, CONTACTS_ERROR_INVALID_PARAMETER, "list is NULL");
- *out_list = NULL;
- RETVM_IF(query==NULL, CONTACTS_ERROR_INVALID_PARAMETER, "query is NULL");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail !");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
- ret = ctsvc_ipc_marshal_query(query,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_string(keyword,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int(offset,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- return ret;
- }
- ret = ctsvc_ipc_marshal_int(limit,indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_SEARCH_RECORDS_WITH_QUERY, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check outdata
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
-
- if (ret == CONTACTS_ERROR_NONE)
- {
- ret = ctsvc_ipc_unmarshal_list(outdata,out_list);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ int ret;
+ contacts_h contact = NULL;
+
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
+
+ ret = ctsvc_client_db_search_records_with_query(contact, query, keyword, offset, limit, out_list);
return ret;
}
API int contacts_db_get_last_change_version(int* last_version)
{
- int ret = CONTACTS_ERROR_NONE;
- bool result = false;
+ int ret;
+ contacts_h contact = NULL;
- RETVM_IF(NULL == last_version, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- *last_version = 0;
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
- ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_CONTACT_READ, &result);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_ipc_client_check_permission fail (%d)", ret);
- if (result == false) {
- ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_PHONELOG_READ, &result);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_ipc_client_check_permission fail (%d)", ret);
- RETVM_IF(result == false, CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied");
- }
+ ret = ctsvc_client_db_get_last_change_version(contact, last_version);
- *last_version = ctsvc_client_ipc_get_change_version();
return ret;
}
-typedef struct
-{
- contacts_db_status_changed_cb cb;
- void *user_data;
-}status_callback_info_s;
-
-static GSList *__status_change_subscribe_list = NULL;
-
-static void __ctsvc_db_status_subscriber_callback(pims_ipc_h ipc, pims_ipc_data_h data, void *user_data)
+API int contacts_db_get_status(contacts_db_status_e *status)
{
- int status = -1;
- GSList *l;
-
- if (data)
- ctsvc_ipc_unmarshal_int(data, &status);
+ int ret;
+ contacts_h contact = NULL;
- for (l = __status_change_subscribe_list;l;l=l->next) {
- status_callback_info_s *cb_info = l->data;
- if (cb_info->cb)
- cb_info->cb(status, cb_info->user_data);
- }
-}
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
-API int contacts_db_get_status(contacts_db_status_e *status)
-{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(status == NULL, CONTACTS_ERROR_INVALID_PARAMETER,"The out param is NULL");
- *status = 0;
-
- if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_GET_STATUS, NULL, &outdata) != 0) {
- CTS_ERR("ctsvc_ipc_call failed");
- return CONTACTS_ERROR_IPC;
- }
-
- if (outdata) {
- unsigned int size = 0;
- ctsvc_ipc_unmarshal_int(outdata, &ret);
- if (CONTACTS_ERROR_NONE == ret) {
- ctsvc_ipc_unmarshal_int(outdata, (int *)status);
- }
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_db_get_status(contact, status);
return ret;
}
API int contacts_db_add_status_changed_cb(
contacts_db_status_changed_cb cb, void* user_data)
{
- status_callback_info_s *cb_info = NULL;
- RETVM_IF(NULL == cb, CONTACTS_ERROR_INVALID_PARAMETER,
- "Invalid parameter : callback is null");
-
- ctsvc_mutex_lock(CTS_MUTEX_PIMS_IPC_PUBSUB);
-
- if (pims_ipc_subscribe(ctsvc_ipc_get_handle_for_change_subsciption(),
- CTSVC_IPC_SUBSCRIBE_MODULE, CTSVC_IPC_SERVER_DB_STATUS_CHANGED,
- __ctsvc_db_status_subscriber_callback, NULL) != 0) {
- CTS_ERR("pims_ipc_subscribe error\n");
- ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
- return CONTACTS_ERROR_IPC;
- }
-
- cb_info = calloc(1, sizeof(status_callback_info_s));
- RETVM_IF(NULL == cb_info, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
- cb_info->user_data = user_data;
- cb_info->cb = cb;
- __status_change_subscribe_list = g_slist_append(__status_change_subscribe_list, cb_info);
-
- ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
- return CONTACTS_ERROR_NONE;
+ int ret;
+ contacts_h contact = NULL;
+
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
+
+ ret = ctsvc_client_db_add_status_changed_cb(contact, cb, user_data);
+
+ return ret;
}
API int contacts_db_remove_status_changed_cb(
contacts_db_status_changed_cb cb, void* user_data)
{
- GSList *l;
-
- RETVM_IF(NULL == cb, CONTACTS_ERROR_INVALID_PARAMETER,
- "Invalid parameter : callback is null");
-
- ctsvc_mutex_lock(CTS_MUTEX_PIMS_IPC_PUBSUB);
- for(l = __status_change_subscribe_list;l;l=l->next) {
- status_callback_info_s *cb_info = l->data;
- if (cb == cb_info->cb && user_data == cb_info->user_data) {
- __status_change_subscribe_list = g_slist_remove(__status_change_subscribe_list, cb_info);
- break;
- }
- }
-
- if (g_slist_length(__status_change_subscribe_list) == 0) {
- pims_ipc_unsubscribe(ctsvc_ipc_get_handle_for_change_subsciption(),
- CTSVC_IPC_SUBSCRIBE_MODULE, CTSVC_IPC_SERVER_DB_STATUS_CHANGED);
- g_slist_free(__status_change_subscribe_list);
- __status_change_subscribe_list = NULL;
- }
-
- ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
- return CONTACTS_ERROR_NONE;
+ int ret;
+ contacts_h contact = NULL;
+
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
+
+ ret = ctsvc_client_db_remove_status_changed_cb(contact, cb, user_data);
+
+ return ret;
}
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Dohyung Jin <dh.jin@samsung.com>
+ * Jongwon Lee <gogosing.lee@samsung.com>
+ * Donghee Ye <donghee.ye@samsung.com>
+ *
+ * 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 <glib.h>
+#include <pims-ipc.h>
+#include <pims-ipc-data.h>
+
+#include "contacts.h"
+
+#include "ctsvc_internal.h"
+#include "ctsvc_list.h"
+#include "ctsvc_record.h"
+#include "ctsvc_inotify.h"
+#include "ctsvc_ipc_define.h"
+#include "ctsvc_ipc_marshal.h"
+#include "ctsvc_view.h"
+#include "ctsvc_client_ipc.h"
+#include "ctsvc_mutex.h"
+#include "ctsvc_handle.h"
+#include "ctsvc_client_db_helper.h"
+
+int ctsvc_client_db_insert_record(contacts_h contact, contacts_record_h record, int *id)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ if (id)
+ *id = 0;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(record==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"record is NULL");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_record(record,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_INSERT_RECORD, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+
+ if (id) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, id)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ }
+ }
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_db_get_record(contacts_h contact, const char* view_uri, int id, contacts_record_h* out_record)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(view_uri==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"view_uri is NULL");
+ RETVM_IF(id<0,CONTACTS_ERROR_INVALID_PARAMETER,"id<0");
+ RETVM_IF(out_record==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"record is NULL");
+ *out_record = NULL;
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_string(view_uri,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(id,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_GET_RECORD, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ if (CONTACTS_ERROR_NONE == ret) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_record(outdata, out_record)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ }
+ pims_ipc_data_destroy(outdata);
+ }
+ return ret;
+}
+
+int ctsvc_client_db_update_record(contacts_h contact, contacts_record_h record)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(record==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"record is NULL");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_record(record,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_UPDATE_RECORD, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ if (CONTACTS_ERROR_NONE == ret) {
+ CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+ pims_ipc_data_destroy(outdata);
+ }
+ return ret;
+}
+
+int ctsvc_client_db_delete_record(contacts_h contact, const char* view_uri, int id)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(view_uri==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"view_uri is NULL");
+ RETVM_IF(id<=0,CONTACTS_ERROR_INVALID_PARAMETER,"id <= 0");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_string(view_uri,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(id,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_DELETE_RECORD, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_db_replace_record(contacts_h contact, contacts_record_h record, int id)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact,CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(NULL == record, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : record is NULL");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_record(record, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE,
+ CTSVC_IPC_SERVER_DB_REPLACE_RECORD, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_db_get_all_records(contacts_h contact, const char* view_uri, int offset, int limit, contacts_list_h* out_list)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(NULL == out_list,CONTACTS_ERROR_INVALID_PARAMETER,"list is NULL");
+ *out_list = NULL;
+ RETVM_IF(view_uri==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"view_uri is NULL");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_string(view_uri,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(offset,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(limit,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_GET_ALL_RECORDS, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (ret == CONTACTS_ERROR_NONE) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_list(outdata, out_list)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_list() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ }
+ pims_ipc_data_destroy(outdata);
+ }
+ return ret;
+}
+
+int ctsvc_client_db_get_records_with_query(contacts_h contact, contacts_query_h query, int offset, int limit, contacts_list_h* out_list)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(NULL == out_list,CONTACTS_ERROR_INVALID_PARAMETER,"list is NULL");
+ *out_list = NULL;
+ RETVM_IF(NULL == query,CONTACTS_ERROR_INVALID_PARAMETER,"query is NULL");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_query(query,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_int(offset,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(limit,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_GET_RECORDS_WITH_QUERY, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_list(outdata, out_list)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_list() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ }
+
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+
+int ctsvc_client_db_get_count(contacts_h contact, const char* view_uri, int *out_count)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(view_uri==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"view_uri is NULL");
+ RETVM_IF(out_count==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"count pointer is NULL");
+ *out_count = 0;
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_string(view_uri,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_GET_COUNT, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, out_count)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ }
+
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_db_get_count_with_query(contacts_h contact, contacts_query_h query, int *out_count)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(NULL == query,CONTACTS_ERROR_INVALID_PARAMETER,"record is NULL");
+ RETVM_IF(out_count==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"count pointer is NULL");
+ *out_count = 0;
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_query(query,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_GET_COUNT_WITH_QUERY, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, out_count)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ }
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_db_insert_records(contacts_h contact, contacts_list_h list, int **ids, int *count)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ if (ids)
+ *ids = NULL;
+ if (count)
+ *count = 0;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(list==NULL,CONTACTS_ERROR_INVALID_PARAMETER, "list is NULL");
+
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_list(list,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_INSERT_RECORDS,
+ indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+
+ if (ids && count) {
+ int i = 0;
+ int *id = NULL;
+ int c;
+
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &c)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ id = calloc(c, sizeof(int));
+ if (NULL == id) {
+ CTS_ERR("calloc() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+
+ for (i=0;i<c;i++) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &(id[i]))) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ free(id);
+ return CONTACTS_ERROR_IPC;
+ }
+ }
+ *ids = id;
+ *count = c;
+ }
+ }
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_db_update_records(contacts_h contact, contacts_list_h list)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contct is NULL");
+ RETVM_IF(NULL == list, CONTACTS_ERROR_INVALID_PARAMETER, "list is NULL");
+
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_list(list,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_UPDATE_RECORDS,
+ indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_db_delete_records(contacts_h contact, const char* view_uri, int ids[], int count)
+{
+ int i;
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(view_uri == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "view_uri is NULL");
+
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_string(view_uri,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_int(count,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ for (i=0;i<count;i++) {
+ ret = ctsvc_ipc_marshal_int(ids[i],indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ }
+
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_DELETE_RECORDS,
+ indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_db_replace_records(contacts_h contact, contacts_list_h list, int ids[], int count)
+{
+ int i;
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact,CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(NULL == list,CONTACTS_ERROR_INVALID_PARAMETER, "list is NULL");
+ RETVM_IF(NULL == ids, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
+ RETVM_IF(0 == count, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_list(list, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_int(count, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ for (i=0;i<count;i++) {
+ ret = ctsvc_ipc_marshal_int(ids[i], indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ }
+
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_REPLACE_RECORDS,
+ indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_db_get_changes_by_version(contacts_h contact, const char* view_uri, int addressbook_id, int contacts_db_version, contacts_list_h* record_list, int* current_contacts_db_version)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(record_list==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"record_list is NULL");
+ *record_list = NULL;
+ RETVM_IF(view_uri==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"view_uri is NULL");
+ RETVM_IF(current_contacts_db_version==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"current_contacts_db_version is NULL");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_string(view_uri,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(addressbook_id,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(contacts_db_version,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_CHANGES_BY_VERSION, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (ret == CONTACTS_ERROR_NONE) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_list(outdata, record_list)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_list() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, current_contacts_db_version)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ }
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_db_get_current_version(contacts_h contact, int* contacts_db_version)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is null");
+ RETVM_IF(contacts_db_version==NULL,CONTACTS_ERROR_INVALID_PARAMETER,"contacts_db_version is null");
+ *contacts_db_version = 0;
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_GET_CURRENT_VERSION, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, contacts_db_version)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ }
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_db_search_records(contacts_h contact, const char* view_uri, const char *keyword,
+ int offset, int limit, contacts_list_h* out_list)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(out_list == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "list is NULL");
+ *out_list = NULL;
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_string(view_uri,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_string(keyword,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(offset,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(limit,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_SEARCH_RECORDS, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_list(outdata, out_list)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_list() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ }
+
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_db_search_records_with_range(contacts_h contact, const char* view_uri, const char *keyword,
+ int offset, int limit, int range, contacts_list_h* out_list)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(contact == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(out_list == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "list is NULL");
+ RETVM_IF(range == 0, CONTACTS_ERROR_INVALID_PARAMETER, "range is 0");
+ *out_list = NULL;
+
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_string(view_uri, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_string() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_string(keyword, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_string() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(offset, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(limit, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(range, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ if (0 != ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_SEARCH_RECORDS_WITH_RANGE, indata, &outdata)) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ if (CONTACTS_ERROR_NONE == ret) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_list(outdata, out_list)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_list() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ }
+ pims_ipc_data_destroy(outdata);
+ }
+ return ret;
+}
+
+int ctsvc_client_db_search_records_with_query(contacts_h contact, contacts_query_h query, const char *keyword,
+ int offset, int limit, contacts_list_h* out_list)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(NULL == out_list, CONTACTS_ERROR_INVALID_PARAMETER, "list is NULL");
+ RETVM_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER, "query is NULL");
+ *out_list = NULL;
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_query(query,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_string(keyword,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(offset,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(limit,indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_SEARCH_RECORDS_WITH_QUERY, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_list(outdata, out_list)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_list() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ }
+
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_db_get_last_change_version(contacts_h contact, int* last_version)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ bool result = false;
+
+ RETVM_IF(NULL == last_version, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
+ *last_version = 0;
+
+ ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_CONTACT_READ, &result);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_ipc_client_check_permission fail (%d)", ret);
+ if (result == false) {
+ ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_PHONELOG_READ, &result);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_ipc_client_check_permission fail (%d)", ret);
+ RETVM_IF(result == false, CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied");
+ }
+
+ *last_version = ctsvc_client_ipc_get_change_version(contact);
+ return ret;
+}
+
+typedef struct
+{
+ contacts_db_status_changed_cb cb;
+ void *user_data;
+}status_callback_info_s;
+
+static GSList *__status_change_subscribe_list = NULL;
+
+static void __ctsvc_client_db_free_cb_info(status_callback_info_s *cb_info)
+{
+ if (NULL == cb_info)
+ return;
+ free(cb_info);
+}
+
+static void __ctsvc_db_status_subscriber_callback(pims_ipc_h ipc, pims_ipc_data_h data, void *user_data)
+{
+ int ret;
+ int status = -1;
+ GSList *l;
+
+ if (data) {
+ ret = ctsvc_ipc_unmarshal_int(data, &status);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_ipc_unmarshal_int() Fail(%d)", ret);
+ }
+
+ for (l = __status_change_subscribe_list;l;l=l->next) {
+ status_callback_info_s *cb_info = l->data;
+ /* TODO: Fixme - check zone_name */
+ if (cb_info->cb)
+ cb_info->cb(status, cb_info->user_data);
+ }
+}
+
+int ctsvc_client_db_get_status(contacts_h contact, contacts_db_status_e *status)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h outdata = NULL;
+ pims_ipc_data_h indata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(status == NULL, CONTACTS_ERROR_INVALID_PARAMETER,"The out param is NULL");
+ *status = 0;
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ if (ctsvc_ipc_call(CTSVC_IPC_DB_MODULE, CTSVC_IPC_SERVER_DB_GET_STATUS, indata, &outdata) != 0) {
+ pims_ipc_data_destroy(indata);
+ CTS_ERR("ctsvc_ipc_call failed");
+ return CONTACTS_ERROR_IPC;
+ }
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ if (CONTACTS_ERROR_NONE == ret) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, (int *)status)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ }
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_db_add_status_changed_cb(contacts_h contact,
+ contacts_db_status_changed_cb cb, void* user_data)
+{
+ int ret;
+ status_callback_info_s *cb_info = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(NULL == cb, CONTACTS_ERROR_INVALID_PARAMETER,
+ "Invalid parameter : callback is null");
+
+ ret = ctsvc_ipc_create_for_change_subscription();
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_create_for_change_subscription() Fail(%d)", ret);
+ return ret;
+ }
+
+ ctsvc_mutex_lock(CTS_MUTEX_PIMS_IPC_PUBSUB);
+
+ if (pims_ipc_subscribe(ctsvc_ipc_get_handle_for_change_subsciption(),
+ CTSVC_IPC_SUBSCRIBE_MODULE, CTSVC_IPC_SERVER_DB_STATUS_CHANGED,
+ __ctsvc_db_status_subscriber_callback, NULL) != 0) {
+ CTS_ERR("pims_ipc_subscribe error\n");
+ ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ cb_info = calloc(1, sizeof(status_callback_info_s));
+ if (NULL == cb_info) {
+ CTS_ERR("calloc() Fail");
+ ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+ cb_info->user_data = user_data;
+ cb_info->cb = cb;
+ __status_change_subscribe_list = g_slist_append(__status_change_subscribe_list, cb_info);
+
+ ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_client_db_remove_status_changed_cb(contacts_h contact,
+ contacts_db_status_changed_cb cb, void* user_data)
+{
+ int ret;
+ GSList *l;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(NULL == cb, CONTACTS_ERROR_INVALID_PARAMETER,
+ "Invalid parameter : callback is null");
+
+ ret = ctsvc_ipc_destroy_for_change_subscription(false);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_destroy_for_change_subscription() Fail(%d)", ret);
+ return ret;
+ }
+
+ ctsvc_mutex_lock(CTS_MUTEX_PIMS_IPC_PUBSUB);
+ for (l = __status_change_subscribe_list;l;l=l->next) {
+ status_callback_info_s *cb_info = l->data;
+ if (cb == cb_info->cb && user_data == cb_info->user_data) {
+ __status_change_subscribe_list = g_slist_remove(__status_change_subscribe_list, cb_info);
+ __ctsvc_client_db_free_cb_info(cb_info);
+ break;
+ }
+ }
+
+ if (g_slist_length(__status_change_subscribe_list) == 0) {
+ pims_ipc_unsubscribe(ctsvc_ipc_get_handle_for_change_subsciption(),
+ CTSVC_IPC_SUBSCRIBE_MODULE, CTSVC_IPC_SERVER_DB_STATUS_CHANGED);
+ g_slist_free(__status_change_subscribe_list);
+ __status_change_subscribe_list = NULL;
+ }
+
+ ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
+ return CONTACTS_ERROR_NONE;
+}
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2014 - 2015 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.
+ *
+ */
+
+#ifndef __CTSVC_CLIENT_DB_HELPER_H__
+#define __CTSVC_CLIENT_DB_HELPER_H__
+
+#include "contacts_types.h"
+
+int ctsvc_client_db_insert_record(contacts_h contact, contacts_record_h record, int *id);
+int ctsvc_client_db_get_record(contacts_h contact, const char* view_uri, int id, contacts_record_h* out_record);
+int ctsvc_client_db_update_record(contacts_h contact, contacts_record_h record);
+int ctsvc_client_db_delete_record(contacts_h contact, const char* view_uri, int id);
+int ctsvc_client_db_replace_record(contacts_h contact, contacts_record_h record, int id);
+int ctsvc_client_db_get_all_records(contacts_h contact, const char* view_uri, int offset, int limit, contacts_list_h* out_list);
+int ctsvc_client_db_get_records_with_query(contacts_h contact, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
+int ctsvc_client_db_get_count(contacts_h contact, const char* view_uri, int *out_count);
+int ctsvc_client_db_get_count_with_query(contacts_h contact, contacts_query_h query, int *out_count);
+int ctsvc_client_db_insert_records(contacts_h contact, contacts_list_h list, int **ids, int *count);
+int ctsvc_client_db_update_records(contacts_h contact, contacts_list_h list);
+int ctsvc_client_db_delete_records(contacts_h contact, const char* view_uri, int ids[], int count);
+int ctsvc_client_db_replace_records(contacts_h contact, contacts_list_h list, int ids[], int count);
+int ctsvc_client_db_get_changes_by_version(contacts_h contact, const char* view_uri, int addressbook_id, int ctsvc_client_db_version, contacts_list_h* record_list, int* current_ctsvc_client_db_version);
+int ctsvc_client_db_get_current_version(contacts_h contact, int* ctsvc_client_db_version);
+int ctsvc_client_db_search_records(contacts_h contact, const char* view_uri, const char *keyword, int offset, int limit, contacts_list_h* out_list);
+int ctsvc_client_db_search_records_with_range(contacts_h contact, const char* view_uri, const char *keyword, int offset, int limit, int range, contacts_list_h* out_list);
+int ctsvc_client_db_search_records_with_query(contacts_h contact, contacts_query_h query, const char *keyword, int offset, int limit, contacts_list_h* out_list);
+int ctsvc_client_db_get_last_change_version(contacts_h contact, int* last_version);
+int ctsvc_client_db_get_status(contacts_h contact, contacts_db_status_e *status);
+int ctsvc_client_db_add_status_changed_cb(contacts_h contact, contacts_db_status_changed_cb cb, void* user_data);
+int ctsvc_client_db_remove_status_changed_cb(contacts_h contact, contacts_db_status_changed_cb cb, void* user_data);
+
+#endif /* __CTSVC_CLIENT_DB_HELPER_H__ */
\ No newline at end of file
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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 "contacts.h"
+#include "ctsvc_internal.h"
+#include "ctsvc_inotify.h"
+#include "ctsvc_client_handle.h"
+#include "ctsvc_client_ipc.h"
+
+static int _ctsvc_db_view_check_read_permission(const char* view_uri)
+{
+ int ret;
+ bool result = false;
+
+ if (STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_ADDRESSBOOK, strlen(CTSVC_VIEW_URI_ADDRESSBOOK))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_PERSON, strlen(CTSVC_VIEW_URI_PERSON))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_CONTACT, strlen(CTSVC_VIEW_URI_CONTACT))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_SIMPLE_CONTACT, strlen(CTSVC_VIEW_URI_SIMPLE_CONTACT))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_GROUP, strlen(CTSVC_VIEW_URI_GROUP))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_MY_PROFILE, strlen(CTSVC_VIEW_URI_MY_PROFILE))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_NAME, strlen(CTSVC_VIEW_URI_NAME))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_NUMBER, strlen(CTSVC_VIEW_URI_NUMBER))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_EMAIL, strlen(CTSVC_VIEW_URI_EMAIL))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_ADDRESS, strlen(CTSVC_VIEW_URI_ADDRESS))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_NOTE, strlen(CTSVC_VIEW_URI_NOTE))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_URL, strlen(CTSVC_VIEW_URI_URL))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_EVENT, strlen(CTSVC_VIEW_URI_EVENT))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_IMAGE, strlen(CTSVC_VIEW_URI_IMAGE))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_COMPANY, strlen(CTSVC_VIEW_URI_COMPANY))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_NICKNAME, strlen(CTSVC_VIEW_URI_NICKNAME))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_MESSENGER, strlen(CTSVC_VIEW_URI_MESSENGER))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_EXTENSION, strlen(CTSVC_VIEW_URI_EXTENSION))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_PROFILE, strlen(CTSVC_VIEW_URI_PROFILE))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_RELATIONSHIP, strlen(CTSVC_VIEW_URI_RELATIONSHIP))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_ACTIVITY, strlen(CTSVC_VIEW_URI_ACTIVITY))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_ACTIVITY_PHOTO, strlen(CTSVC_VIEW_URI_ACTIVITY_PHOTO))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_SPEEDDIAL, strlen(CTSVC_VIEW_URI_SPEEDDIAL))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_SDN, strlen(CTSVC_VIEW_URI_SDN))
+ || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_GROUP_RELATION, strlen(CTSVC_VIEW_URI_GROUP_RELATION))) {
+ ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_CONTACT_READ, &result);
+ RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_ipc_client_check_permission() Fail(%d)", ret);
+ RETVM_IF(result == false, CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied (contact read)");
+ }
+ else if (STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_PHONELOG, strlen(CTSVC_VIEW_URI_PHONELOG))) {
+ ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_PHONELOG_READ, &result);
+ RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_ipc_client_check_permission() Fail(%d)", ret);
+ RETVM_IF(result == false, CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied (phonelog read)");
+ }
+
+ return CONTACTS_ERROR_NONE;
+}
+
+API int contacts_db_add_changed_cb(const char* view_uri, contacts_db_changed_cb cb,
+ void* user_data)
+{
+ int ret;
+ contacts_h contact = NULL;
+
+ RETVM_IF(NULL == view_uri, CONTACTS_ERROR_INVALID_PARAMETER,
+ "Invalid parameter : view_uri is null");
+ RETVM_IF(NULL == cb, CONTACTS_ERROR_INVALID_PARAMETER,
+ "Invalid parameter : callback is null");
+
+ ret = _ctsvc_db_view_check_read_permission(view_uri);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "_ctsvc_db_view_check_read_permission() Fail(%d)", ret);
+
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
+
+ ret = ctsvc_inotify_subscribe(contact, view_uri, cb, user_data);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret,
+ "ctsvc_inotify_subscribe(%s) Fail(%d)", view_uri, ret);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+API int contacts_db_remove_changed_cb(const char* view_uri, contacts_db_changed_cb cb,
+ void* user_data)
+{
+ int ret;
+ contacts_h contact = NULL;
+
+ RETVM_IF(NULL == view_uri, CONTACTS_ERROR_INVALID_PARAMETER,
+ "Invalid parameter : view_uri is null");
+ RETVM_IF(NULL == cb, CONTACTS_ERROR_INVALID_PARAMETER,
+ "Invalid parameter : callback is null");
+
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
+
+ ret = ctsvc_inotify_unsubscribe(contact, view_uri, cb, user_data);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret,
+ "ctsvc_inotify_unsubscribe(%s) Fail(%d)", view_uri, ret);
+
+ return CONTACTS_ERROR_NONE;
+}
+
*
*/
-#include <glib.h>
-
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_ipc_define.h"
-#include "ctsvc_client_ipc.h"
-#include <pims-ipc-data.h>
-#include "ctsvc_ipc_marshal.h"
+#include "ctsvc_client_handle.h"
+#include "ctsvc_client_group_helper.h"
API int contacts_group_add_contact(int group_id, int contact_id)
{
- int ret = CONTACTS_ERROR_NONE;
-
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(group_id <= 0 || contact_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_int( group_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int( contact_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_GROUP_MODULE, CTSVC_IPC_SERVER_GROUP_ADD_CONTACT, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
+ int ret;
+ contacts_h contact = NULL;
- pims_ipc_data_destroy(indata);
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
- if (outdata)
- {
- // check result
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata, &size);
-
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_group_add_contact(contact, group_id, contact_id);
return ret;
}
API int contacts_group_remove_contact(int group_id, int contact_id)
{
- int ret = CONTACTS_ERROR_NONE;
-
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(group_id <= 0 || contact_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_int( group_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int( contact_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
+ int ret;
+ contacts_h contact = NULL;
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_GROUP_MODULE, CTSVC_IPC_SERVER_GROUP_REMOVE_CONTACT, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check result
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata, &size);
-
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_group_remove_contact(contact, group_id, contact_id);
return ret;
}
API int contacts_group_set_group_order(int group_id, int previous_group_id, int next_group_id)
{
- int ret = CONTACTS_ERROR_NONE;
-
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(group_id <= 0 || previous_group_id < 0 || next_group_id < 0, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
+ int ret;
+ contacts_h contact = NULL;
- ret = ctsvc_ipc_marshal_int( group_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int( previous_group_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int( next_group_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_GROUP_MODULE, CTSVC_IPC_SERVER_GROUP_SET_GROUP_ORDER, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check result
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata, &size);
-
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_group_set_group_order(contact, group_id, previous_group_id, next_group_id);
return ret;
-
}
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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 "contacts.h"
+#include "ctsvc_internal.h"
+#include "ctsvc_ipc_define.h"
+#include "ctsvc_client_ipc.h"
+#include <pims-ipc-data.h>
+#include "ctsvc_ipc_marshal.h"
+
+
+static const char CONTACTS_READ_PRIVILEGE_ID[] = "http://tizen.org/privilege/contact.read";
+static const char CONTACTS_WRITE_PRIVILEGE_ID[] = "http://tizen.org/privilege/contact.write";
+static const char PHONELOG_READ_PRIVILEGE_ID[] = "http://tizen.org/privilege/callhistory.read";
+static const char PHONELOG_WRITE_PRIVILEGE_ID[] = "http://tizen.org/privilege/callhistory.write";
+
+int ctsvc_client_group_add_contact(contacts_h contact, int group_id, int contact_id)
+{
+ int ret = CONTACTS_ERROR_NONE;
+
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(group_id <= 0 || contact_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_int(group_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(contact_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_GROUP_MODULE, CTSVC_IPC_SERVER_GROUP_ADD_CONTACT, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_group_remove_contact(contacts_h contact, int group_id, int contact_id)
+{
+ int ret = CONTACTS_ERROR_NONE;
+
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(group_id <= 0 || contact_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+
+ ret = ctsvc_ipc_marshal_int(group_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(contact_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_GROUP_MODULE, CTSVC_IPC_SERVER_GROUP_REMOVE_CONTACT, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_group_set_group_order(contacts_h contact, int group_id, int previous_group_id, int next_group_id)
+{
+ int ret = CONTACTS_ERROR_NONE;
+
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(group_id <= 0 || previous_group_id < 0 || next_group_id < 0, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_int(group_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(previous_group_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(next_group_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_GROUP_MODULE, CTSVC_IPC_SERVER_GROUP_SET_GROUP_ORDER, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+
+}
+
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_SETTING_H__
-#define __TIZEN_SOCIAL_CTSVC_SETTING_H__
+#ifndef __CTSVC_CLIENT_GROUP_HELPER_H__
+#define __CTSVC_CLIENT_GROUP_HELPER_H__
-int ctsvc_register_vconf(void);
-void ctsvc_deregister_vconf(void);
+#include "contacts_types.h"
-int ctsvc_get_phonenumber_min_match_digit(void);
-int ctsvc_get_primary_sort(void);
-int ctsvc_get_secondary_sort(void);
-const char *ctsvc_get_default_sort_vconfkey(void);
-void ctsvc_set_sort_memory(int sort_type);
+int ctsvc_client_group_add_contact(contacts_h contact, int group_id, int contact_id);
+int ctsvc_client_group_remove_contact(contacts_h contact, int group_id, int contact_id);
+int ctsvc_client_group_set_group_order(contacts_h contact, int group_id, int previous_group_id, int next_group_id);
-
-#endif /* __TIZEN_SOCIAL_CTSVC_SETTING_H__ */
+#endif /* __CTSVC_CLIENT_GROUP_HELPER_H__ */
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2015 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 <glib.h>
+#include <unistd.h>
+
+#include "ctsvc_internal.h"
+#include "ctsvc_handle.h"
+#include "ctsvc_mutex.h"
+#include "ctsvc_client_utils.h"
+#include "ctsvc_client_handle.h"
+
+static GHashTable *_ctsvc_handle_table = NULL;
+
+static int _ctsvc_client_handle_get_key(unsigned int id, char *key, int key_len)
+{
+ RETV_IF(NULL == key, CONTACTS_ERROR_INVALID_PARAMETER);
+
+ snprintf(key, key_len, "%d:%u", getuid(), id);
+ CTS_DBG("key[%s]", key);
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_client_handle_get_p_with_id(unsigned int id, contacts_h *p_contact)
+{
+ int ret;
+ char key[CTSVC_STR_SHORT_LEN] = {0};
+ contacts_h contact = NULL;
+
+ RETVM_IF(NULL == _ctsvc_handle_table, CONTACTS_ERROR_NO_DATA, "_ctsvc_handle_table is NULL");
+ RETV_IF(NULL == p_contact, CONTACTS_ERROR_INVALID_PARAMETER);
+
+ ret = _ctsvc_client_handle_get_key(id, key, sizeof(key));
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "_ctsvc_client_handle_get_key() Fail(%d)", ret);
+
+ ctsvc_mutex_lock(CTS_MUTEX_HANDLE);
+ contact = g_hash_table_lookup(_ctsvc_handle_table, key);
+ ctsvc_mutex_unlock(CTS_MUTEX_HANDLE);
+
+ if (NULL == contact) {
+ CTS_ERR("g_hash_table_lookup() Fail. key[%s]", key);
+ return CONTACTS_ERROR_NO_DATA;
+ }
+
+ *p_contact = contact;
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_client_handle_get_p(contacts_h *p_contact)
+{
+ int ret;
+ char key[CTSVC_STR_SHORT_LEN] = {0};
+ contacts_h contact = NULL;
+
+ RETVM_IF(NULL == _ctsvc_handle_table, CONTACTS_ERROR_NO_DATA, "_ctsvc_handle_table is NULL");
+ RETV_IF(NULL == p_contact, CONTACTS_ERROR_INVALID_PARAMETER);
+
+ ret = _ctsvc_client_handle_get_key(ctsvc_client_get_tid(), key, sizeof(key));
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "_ctsvc_client_handle_get_key() Fail(%d)", ret);
+
+ ctsvc_mutex_lock(CTS_MUTEX_HANDLE);
+ contact = g_hash_table_lookup(_ctsvc_handle_table, key);
+ ctsvc_mutex_unlock(CTS_MUTEX_HANDLE);
+
+ if (NULL == contact) {
+ ret = _ctsvc_client_handle_get_key(ctsvc_client_get_pid(), key, sizeof(key));
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "_ctsvc_client_handle_get_key() Fail(%d)", ret);
+
+ ctsvc_mutex_lock(CTS_MUTEX_HANDLE);
+ contact = g_hash_table_lookup(_ctsvc_handle_table, key);
+ ctsvc_mutex_unlock(CTS_MUTEX_HANDLE);
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_NO_DATA, "g_hash_table_lookup() Fail. key[%s]", key);
+ }
+ *p_contact = contact;
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_client_handle_create(unsigned int id, contacts_h *p_contact)
+{
+ int ret;
+ char handle_key[CTSVC_STR_SHORT_LEN] = {0};
+ contacts_h contact = NULL;
+
+ RETV_IF(NULL == p_contact, CONTACTS_ERROR_INVALID_PARAMETER);
+ *p_contact = NULL;
+
+ ret = _ctsvc_client_handle_get_key(id, handle_key, sizeof(handle_key));
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "_ctsvc_client_handle_get_key() Fail(%d)", ret);
+
+ ret = ctsvc_handle_create(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_handle_create() Fail(%d)", ret);
+
+ ctsvc_mutex_lock(CTS_MUTEX_HANDLE);
+ if (NULL == _ctsvc_handle_table)
+ _ctsvc_handle_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
+
+ g_hash_table_insert(_ctsvc_handle_table, strdup(handle_key), contact);
+ CTS_INFO("handle insert key[%s]", handle_key);
+ ctsvc_mutex_unlock(CTS_MUTEX_HANDLE);
+
+ *p_contact = contact;
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_client_handle_remove(unsigned int id, contacts_h contact)
+{
+ int ret;
+ char key[CTSVC_STR_SHORT_LEN] = {0};
+ RETVM_IF(NULL == _ctsvc_handle_table, CONTACTS_ERROR_NONE, "_ctsvc_handle_table is NULL");
+
+ ret = _ctsvc_client_handle_get_key(id, key, sizeof(key));
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "_ctsvc_client_handle_get_key() Fail(%d)", ret);
+
+ ctsvc_mutex_lock(CTS_MUTEX_HANDLE);
+ if (false == g_hash_table_remove(_ctsvc_handle_table, key))
+ CTS_ERR("g_hash_table_remove() Fail. key[%s]", key);
+
+ if (0 == g_hash_table_size(_ctsvc_handle_table)) {
+ g_hash_table_destroy(_ctsvc_handle_table);
+ _ctsvc_handle_table = NULL;
+ }
+ ctsvc_handle_destroy(contact);
+ ctsvc_mutex_unlock(CTS_MUTEX_HANDLE);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2015 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.
+ *
+ */
+
+#ifndef __CTSVC_CLIENT_HANDLE_H__
+#define __CTSVC_CLIENT_HANDLE_H__
+
+int ctsvc_client_handle_get_p(contacts_h *p_contact);
+int ctsvc_client_handle_get_p_with_id(unsigned int id, contacts_h *p_contact);
+int ctsvc_client_handle_remove(unsigned int id, contacts_h contact);
+int ctsvc_client_handle_create(unsigned int id, contacts_h *p_contact);
+
+#endif /* __CTSVC_CLIENT_HANDLE_H__ */
\ No newline at end of file
#include <stdlib.h>
#include <pims-ipc-data.h>
#include <security-server.h>
-#include <sys/types.h>
-#include <sys/syscall.h>
-#include <unistd.h>
+#include <pthread.h>
#include "ctsvc_client_ipc.h"
+#include "ctsvc_client_utils.h"
+#include "ctsvc_client_service_helper.h"
#include "ctsvc_internal.h"
#include "ctsvc_list.h"
#include "ctsvc_record.h"
-#include "ctsvc_query.h"
#include "ctsvc_inotify.h"
#include "ctsvc_ipc_define.h"
#include "ctsvc_ipc_marshal.h"
#include "ctsvc_view.h"
#include "ctsvc_mutex.h"
-#include "ctsvc_client_service.h"
+#include "ctsvc_handle.h"
struct ctsvc_ipc_s {
pims_ipc_h ipc;
- int change_version;
+ GList *list_handle;
};
+static pthread_mutex_t _ctsvc_mutex_disconnected = PTHREAD_MUTEX_INITIALIZER;
static GHashTable *_ctsvc_ipc_table = NULL;
static bool _ctsvc_ipc_disconnected = false;
-static int __ctsvc_ipc_get_cookie_for_access_control(pims_ipc_data_h *indata)
+int ctsvc_ipc_get_cookie_for_access_control(pims_ipc_data_h indata)
{
int ret;
size_t cookie_size = 0;
- pims_ipc_data_h data;
char *buf;
- // Access control : get cookie from security-server
+ /* Access control : get cookie from security-server */
cookie_size = security_server_get_cookie_size();
if (cookie_size <= 0) {
- CTS_ERR("security_server_get_cookie_size fail(%d)", cookie_size);
+ CTS_ERR("security_server_get_cookie_size : cookie_size is %d", cookie_size);
return CONTACTS_ERROR_SYSTEM;
}
char cookie[cookie_size];
cookie[0] = '\0';
ret = security_server_request_cookie(cookie, cookie_size);
- if(ret < 0) {
+ if (ret < 0) {
CTS_ERR("security_server_request_cookie fail (%d)", ret);
return CONTACTS_ERROR_SYSTEM;
}
- // Access control : put cookie to indata
- data = pims_ipc_data_create(0);
- if (data == NULL) {
- CTS_ERR("ipc data created fail!");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
-
- ret = ctsvc_ipc_marshal_unsigned_int(cookie_size, data);
+ ret = ctsvc_ipc_marshal_unsigned_int(cookie_size, indata);
if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_ipc_marshal_int fail");
- pims_ipc_data_destroy(data);
return ret;
}
buf = g_base64_encode((const guchar *)cookie, cookie_size);
if (buf) {
- ret = ctsvc_ipc_marshal_string(buf, data);
+ ret = ctsvc_ipc_marshal_string(buf, indata);
if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_ipc_marshal_string fail");
- pims_ipc_data_destroy(data);
return ret;
}
free(buf);
}
else {
CTS_ERR("g_base64_encode fail");
- pims_ipc_data_destroy(data);
return CONTACTS_ERROR_SYSTEM;
}
- *indata = data;
-
return CONTACTS_ERROR_NONE;
}
-#define CTS_STR_SHORT_LEN 1024 //short sql string length
-
-static inline void _ctsvc_ipc_get_pid_str(char *buf, int buf_size)
+static pims_ipc_h _ctsvc_get_ipc_handle()
{
- pid_t pid = getpid();
- snprintf(buf, buf_size, "%d", pid);
-}
+ struct ctsvc_ipc_s *ipc_data = NULL;
+ char ipc_key[CTSVC_STR_SHORT_LEN] = {0};
+ RETVM_IF(NULL == _ctsvc_ipc_table, NULL, "contacts not connected");
-static inline void _ctsvc_ipc_get_tid_str(char *buf, int buf_size)
-{
- pid_t tid = syscall(SYS_gettid);
- snprintf(buf, buf_size, "%d", tid);
+ snprintf(ipc_key, sizeof(ipc_key), "%u", ctsvc_client_get_tid());
+ ipc_data = g_hash_table_lookup(_ctsvc_ipc_table, ipc_key);
+
+ if (NULL == ipc_data) {
+ snprintf(ipc_key, sizeof(ipc_key), "%u", ctsvc_client_get_pid());
+ ipc_data = g_hash_table_lookup(_ctsvc_ipc_table, ipc_key);
+ }
+
+ RETVM_IF(NULL == ipc_data, NULL, "g_hash_table_lookup(%s) Fail", ipc_key);
+
+ return ipc_data->ipc;
}
-static void _ctsvc_ipc_data_free(gpointer p)
+bool ctsvc_ipc_is_busy()
{
- struct ctsvc_ipc_s *ipc_data = p;
- if (NULL == ipc_data)
- return;
+ bool ret = false;
- if (ipc_data->ipc)
- pims_ipc_destroy(ipc_data->ipc);
+ pims_ipc_h ipc = _ctsvc_get_ipc_handle();
+ if (NULL == ipc) {
+ CTS_ERR("_ctsvc_get_ipc_handle() return NULL");
+ return false;
+ }
- free(ipc_data);
+ ret = pims_ipc_is_call_in_progress(ipc);
+ if (ret)
+ CTS_ERR("global ipc channel is busy.");
+
+ return ret;
}
-static int _ctsvc_ipc_server_connect(pims_ipc_h *p_ipc)
+static int _ctsvc_ipc_create(pims_ipc_h *p_ipc)
{
- int ret;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
pims_ipc_h ipc = pims_ipc_create(CTSVC_IPC_SOCKET_PATH);
if (NULL == ipc) {
if (errno == EACCES) {
- CTS_ERR("pims_ipc_create() Failed(%d)", CONTACTS_ERROR_PERMISSION_DENIED);
+ CTS_ERR("pims_ipc_create() Fail(%d)", CONTACTS_ERROR_PERMISSION_DENIED);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
else {
- CTS_ERR("pims_ipc_create() Failed(%d)", CONTACTS_ERROR_IPC_NOT_AVALIABLE);
+ CTS_ERR("pims_ipc_create() Fail(%d)", CONTACTS_ERROR_IPC_NOT_AVALIABLE);
return CONTACTS_ERROR_IPC_NOT_AVALIABLE;
}
}
- ret = __ctsvc_ipc_get_cookie_for_access_control(&indata);
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_ipc_get_cookie_for_access_control fail (%d)", ret);
- goto DATA_FREE;
- }
- // ipc call
- if (pims_ipc_call(ipc, CTSVC_IPC_MODULE, CTSVC_IPC_SERVER_CONNECT, indata, &outdata) != 0) {
- CTS_ERR("pims_ipc_call failed");
- pims_ipc_data_destroy(indata);
- ret = CONTACTS_ERROR_IPC;
- goto DATA_FREE;
- }
- pims_ipc_data_destroy(indata);
-
- if (outdata) {
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
-
- pims_ipc_data_destroy(outdata);
-
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_server_connect return(%d)", ret);
- goto DATA_FREE;
- }
- }
*p_ipc = ipc;
return CONTACTS_ERROR_NONE;
-DATA_FREE:
- pims_ipc_destroy(ipc);
- return ret;
}
-static struct ctsvc_ipc_s* _ctsvc_get_ipc_data()
+static void _ctsvc_ipc_data_free(gpointer p)
{
- struct ctsvc_ipc_s *ipc_data = NULL;
- char ipc_key[CTS_STR_SHORT_LEN] = {0};
- RETVM_IF(NULL == _ctsvc_ipc_table, NULL, "contacts not connected");
-
- _ctsvc_ipc_get_tid_str(ipc_key, sizeof(ipc_key));
- ipc_data = g_hash_table_lookup(_ctsvc_ipc_table, ipc_key);
- if (ipc_data) {
- return ipc_data;
- }
+ struct ctsvc_ipc_s *ipc_data = p;
+ if (NULL == ipc_data)
+ return;
- _ctsvc_ipc_get_pid_str(ipc_key, sizeof(ipc_key));
- ipc_data = g_hash_table_lookup(_ctsvc_ipc_table, ipc_key);
- if (ipc_data) {
- return ipc_data;
+ if (ipc_data->ipc) {
+ ctsvc_ipc_unset_disconnected_cb(ipc_data->ipc);
+ pims_ipc_destroy(ipc_data->ipc);
}
+ g_list_free(ipc_data->list_handle);
- return NULL;
+ free(ipc_data);
}
-pims_ipc_h ctsvc_get_ipc_handle()
+static int _ctsvc_ipc_connect(contacts_h contact, pims_ipc_h ipc)
{
- struct ctsvc_ipc_s *ipc_data = _ctsvc_get_ipc_data();
- if (ipc_data)
- return ipc_data->ipc;
+ int ret;
+ pims_ipc_data_h outdata = NULL;
+ pims_ipc_data_h indata = NULL;
- return NULL;
-}
+ /* Access control : put cookie to indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("pims_ipc_data_create() return NULL");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
-bool ctsvc_ipc_is_busy()
-{
- bool ret = false;
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
- pims_ipc_h ipc = ctsvc_get_ipc_handle();
- if (NULL == ipc) {
- CTS_ERR("ctsvc_get_ipc_handle() return NULL");
- return false;
+ ret = ctsvc_ipc_get_cookie_for_access_control(indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_get_cookie_for_access_control fail (%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
}
- ret = pims_ipc_is_call_in_progress(ipc);
- if (ret)
- CTS_ERR("global ipc channel is busy.");
+ /* ipc call */
+ if (pims_ipc_call(ipc, CTSVC_IPC_MODULE, CTSVC_IPC_SERVER_CONNECT, indata, &outdata) != 0) {
+ CTS_ERR("[GLOBAL_IPC_CHANNEL] pims_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+ pims_ipc_data_destroy(indata);
+ if (outdata) {
+ ctsvc_ipc_unmarshal_int(outdata, &ret);
+ pims_ipc_data_destroy(outdata);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_ipc_server_connect return(%d)", ret);
+ }
return ret;
}
-int ctsvc_ipc_connect(void)
+static void _ctsvc_ipc_disconnected_cb(void *user_data)
+{
+ ctsvc_ipc_set_disconnected(true);
+}
+
+int ctsvc_ipc_connect(contacts_h contact, unsigned int handle_id)
{
int ret = CONTACTS_ERROR_NONE;
struct ctsvc_ipc_s *ipc_data = NULL;
- char ipc_key[CTS_STR_SHORT_LEN] = {0};
+ char ipc_key[CTSVC_STR_SHORT_LEN] = {0};
- RETV_IF(_ctsvc_ipc_disconnected, CONTACTS_ERROR_IPC_NOT_AVALIABLE);
-
- _ctsvc_ipc_get_tid_str(ipc_key, sizeof(ipc_key));
+ snprintf(ipc_key, sizeof(ipc_key), "%u", handle_id);
if (NULL == _ctsvc_ipc_table)
_ctsvc_ipc_table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, _ctsvc_ipc_data_free);
else
ipc_data = g_hash_table_lookup(_ctsvc_ipc_table, ipc_key);
- // ipc create
- if (ipc_data == NULL) {
+ if (NULL == ipc_data) {
ipc_data = calloc(1, sizeof(struct ctsvc_ipc_s));
- ret = _ctsvc_ipc_server_connect(&(ipc_data->ipc));
+ if (NULL == ipc_data)
+ {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+ ret = _ctsvc_ipc_create(&(ipc_data->ipc));
if (CONTACTS_ERROR_NONE != ret) {
_ctsvc_ipc_data_free(ipc_data);
return ret;
}
g_hash_table_insert(_ctsvc_ipc_table, strdup(ipc_key), ipc_data);
+ ctsvc_ipc_set_disconnected_cb(ipc_data->ipc, _ctsvc_ipc_disconnected_cb, NULL);
}
- else
- CTS_DBG("[GLOBAL_IPC_CHANNEL] contacts already connected");
+ _ctsvc_ipc_connect(contact, ipc_data->ipc);
+ ipc_data->list_handle = g_list_append(ipc_data->list_handle, contact);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_ipc_disconnect(void)
+int ctsvc_ipc_disconnect(contacts_h contact, unsigned int handle_id, int connection_count)
{
int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h outdata = NULL;
-
- RETV_IF(_ctsvc_ipc_disconnected, CONTACTS_ERROR_IPC_NOT_AVALIABLE);
-
struct ctsvc_ipc_s *ipc_data = NULL;
- char ipc_key[CTS_STR_SHORT_LEN] = {0};
- _ctsvc_ipc_get_tid_str(ipc_key, sizeof(ipc_key));
+ pims_ipc_data_h outdata = NULL;
+ pims_ipc_data_h indata = NULL;
+ char ipc_key[CTSVC_STR_SHORT_LEN] = {0};
RETVM_IF(NULL == _ctsvc_ipc_table, CONTACTS_ERROR_IPC, "contacts not connected");
+ snprintf(ipc_key, sizeof(ipc_key), "%u", handle_id);
+
ipc_data = g_hash_table_lookup(_ctsvc_ipc_table, ipc_key);
RETVM_IF(ipc_data == NULL, CONTACTS_ERROR_IPC, "contacts not connected");
- if (pims_ipc_call(ipc_data->ipc, CTSVC_IPC_MODULE, CTSVC_IPC_SERVER_DISCONNECT, NULL, &outdata) != 0) {
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ pims_ipc_data_destroy(indata);
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ return ret;
+ }
+
+ if (pims_ipc_call(ipc_data->ipc, CTSVC_IPC_MODULE, CTSVC_IPC_SERVER_DISCONNECT, indata, &outdata) != 0) {
+ pims_ipc_data_destroy(indata);
CTS_ERR("[GLOBAL_IPC_CHANNEL] pims_ipc_call failed");
return CONTACTS_ERROR_IPC;
}
+ pims_ipc_data_destroy(indata);
if (outdata) {
ctsvc_ipc_unmarshal_int(outdata, &ret);
pims_ipc_data_destroy(outdata);
- if (ret != CONTACTS_ERROR_NONE)
+ if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("[GLOBAL_IPC_CHANNEL] pims_ipc didn't destroyed!!!(%d)", ret);
+ return ret;
+ }
- g_hash_table_remove(_ctsvc_ipc_table, ipc_key);
+ if (1 == connection_count) {
+ g_hash_table_remove(_ctsvc_ipc_table, ipc_key);
+ }
}
else {
CTS_ERR("pims_ipc_call out data is NULL");
return CONTACTS_ERROR_IPC;
}
+
return ret;
}
int ctsvc_ipc_call(char *module, char *function, pims_ipc_h data_in, pims_ipc_data_h *data_out)
{
- RETV_IF(_ctsvc_ipc_disconnected, CONTACTS_ERROR_IPC_NOT_AVALIABLE);
- pims_ipc_h ipc_handle = ctsvc_get_ipc_handle();
-
- __ctsvc_ipc_lock();
-
- int ret = pims_ipc_call(ipc_handle, module, function, data_in, data_out);
+ pims_ipc_h ipc_handle;
- __ctsvc_ipc_unlock();
-
- return ret;
-}
+ if (true == ctsvc_ipc_get_disconnected()) {
+ ctsvc_ipc_set_disconnected(false);
+ ctsvc_ipc_recovery();
+ ctsvc_ipc_recover_for_change_subscription();
+ }
-int ctsvc_ipc_call_async(char *module, char *function, pims_ipc_h data_in, pims_ipc_call_async_cb callback, void *userdata)
-{
- RETV_IF(_ctsvc_ipc_disconnected, CONTACTS_ERROR_IPC_NOT_AVALIABLE);
- pims_ipc_h ipc_handle = ctsvc_get_ipc_handle();
+ ipc_handle = _ctsvc_get_ipc_handle();
__ctsvc_ipc_lock();
-
- int ret = pims_ipc_call_async(ipc_handle, module, function, data_in, callback, userdata);
-
+ int ret = pims_ipc_call(ipc_handle, module, function, data_in, data_out);
__ctsvc_ipc_unlock();
return ret;
}
-void ctsvc_client_ipc_set_change_version(int version)
+void ctsvc_client_ipc_set_change_version(contacts_h contact, int version)
{
- struct ctsvc_ipc_s *ipc_data = _ctsvc_get_ipc_data();
- RETM_IF(NULL == ipc_data, "_ctsvc_get_ipc_data() return NULL");
-
- ipc_data->change_version = version;
- CTS_DBG("change_version = %d", version);
+ RETM_IF(NULL == contact, "contact is NULL");
+ ctsvc_base_s *base = (ctsvc_base_s *)contact;
+ base->version = version;
}
-int ctsvc_client_ipc_get_change_version(void)
+int ctsvc_client_ipc_get_change_version(contacts_h contact)
{
- struct ctsvc_ipc_s *ipc_data = _ctsvc_get_ipc_data();
- RETVM_IF(NULL == ipc_data, 0, "_ctsvc_get_ipc_data() return NULL");
- return ipc_data->change_version;
+ RETVM_IF(NULL == contact, -1, "contact is NULL");
+ ctsvc_base_s *base = (ctsvc_base_s *)contact;
+ return base->version;
}
int ctsvc_ipc_client_check_permission(int permission, bool *result)
{
- RETV_IF(_ctsvc_ipc_disconnected, CONTACTS_ERROR_IPC_NOT_AVALIABLE);
-
pims_ipc_data_h indata = NULL;
pims_ipc_data_h outdata = NULL;
int ret;
pims_ipc_data_destroy(indata);
if (outdata) {
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata,&size);
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
- if (ret == CONTACTS_ERROR_NONE) {
- if (result)
- *result = *(bool*) pims_ipc_data_get(outdata, &size);
+ if (CONTACTS_ERROR_NONE == ret && result) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_bool(outdata, result)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_bool() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
}
pims_ipc_data_destroy(outdata);
}
return ret;
}
-static int disconnected_cb_count = 0;
-
-int ctsvc_ipc_set_disconnected_cb(void (*cb)(void *), void *user_data)
+int ctsvc_ipc_set_disconnected_cb(pims_ipc_h ipc, void (*cb)(void *), void *user_data)
{
- if (0 == disconnected_cb_count++)
- return pims_ipc_set_server_disconnected_cb(cb, user_data);
- return CONTACTS_ERROR_NONE;
+ return pims_ipc_add_server_disconnected_cb(ipc, cb, user_data);
}
-int ctsvc_ipc_unset_disconnected_cb()
+int ctsvc_ipc_unset_disconnected_cb(pims_ipc_h ipc)
{
- if (1 == disconnected_cb_count--)
- return pims_ipc_unset_server_disconnected_cb();
- return CONTACTS_ERROR_NONE;
+ return pims_ipc_remove_server_disconnected_cb(ipc);
}
void ctsvc_ipc_set_disconnected(bool is_disconnected)
{
+ pthread_mutex_lock(&_ctsvc_mutex_disconnected);
_ctsvc_ipc_disconnected = is_disconnected;
+ pthread_mutex_unlock(&_ctsvc_mutex_disconnected);
+}
+
+int ctsvc_ipc_get_disconnected()
+{
+ pthread_mutex_lock(&_ctsvc_mutex_disconnected);
+ CTS_DBG("_ctsvc_ipc_disconnected=%d", _ctsvc_ipc_disconnected);
+ pthread_mutex_unlock(&_ctsvc_mutex_disconnected);
+ return _ctsvc_ipc_disconnected;
}
static void _ctsvc_ipc_recovery_foreach_cb(gpointer key, gpointer value, gpointer user_data)
{
+ GList *c;
struct ctsvc_ipc_s *ipc_data = value;
- int ret = _ctsvc_ipc_server_connect(&(ipc_data->ipc));
- WARN_IF(CONTACTS_ERROR_NONE != ret, "_ctsvc_ipc_server_connect() Fail(%d)", ret);
+
+ ctsvc_ipc_unset_disconnected_cb(ipc_data->ipc);
+ int ret = _ctsvc_ipc_create(&(ipc_data->ipc));
+ RETM_IF(CONTACTS_ERROR_NONE != ret, "_ctsvc_ipc_create() Fail(%d)", ret);
+ ctsvc_ipc_set_disconnected_cb(ipc_data->ipc, _ctsvc_ipc_disconnected_cb, NULL);
+
+ for (c=ipc_data->list_handle;c;c=c->next) {
+ contacts_h contact = c->data;
+ ret = _ctsvc_ipc_connect(contact, ipc_data->ipc);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "_ctsvc_ipc_connect() Fail(%d)", ret);
+ }
}
void ctsvc_ipc_recovery()
{
- if (false == _ctsvc_ipc_disconnected)
- return;
-
+ CTS_FN_CALL;
g_hash_table_foreach(_ctsvc_ipc_table, _ctsvc_ipc_recovery_foreach_cb, NULL);
}
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_CLIENT_IPC_H__
-#define __TIZEN_SOCIAL_CTSVC_CLIENT_IPC_H__
+#ifndef __CTSVC_CLIENT_IPC_H__
+#define __CTSVC_CLIENT_IPC_H__
#include <pims-ipc.h>
+#include "contacts_types.h"
-pims_ipc_h ctsvc_get_ipc_handle();
+int ctsvc_ipc_get_cookie_for_access_control(pims_ipc_data_h indata);
-int ctsvc_ipc_connect(void);
-int ctsvc_ipc_disconnect(void);
+int ctsvc_ipc_connect(contacts_h contact, unsigned int handle_id);
+int ctsvc_ipc_disconnect(contacts_h contact, unsigned int handle_id, int connection_count);
+
+int ctsvc_ipc_connect_on_thread(contacts_h contact);
+int ctsvc_ipc_disconnect_on_thread(contacts_h contact, int connection_count);
-void ctsvc_ipc_set_disconnected(bool is_disconnected);
-void ctsvc_ipc_recovery();
bool ctsvc_ipc_is_busy();
pims_ipc_h ctsvc_ipc_get_handle_for_change_subsciption();
int ctsvc_ipc_create_for_change_subscription();
-int ctsvc_ipc_destroy_for_change_subscription();
+int ctsvc_ipc_destroy_for_change_subscription(bool is_disconnect);
int ctsvc_ipc_recover_for_change_subscription();
int ctsvc_ipc_call(char *module, char *function, pims_ipc_h data_in, pims_ipc_data_h *data_out);
-int ctsvc_ipc_call_async(char *module, char *function, pims_ipc_h data_in, pims_ipc_call_async_cb callback, void *userdata);
-void ctsvc_client_ipc_set_change_version(int version);
-int ctsvc_client_ipc_get_change_version(void);
+void ctsvc_client_ipc_set_change_version(contacts_h contact, int version);
+int ctsvc_client_ipc_get_change_version(contacts_h contact);
int ctsvc_ipc_client_check_permission(int permission, bool *result);
-int ctsvc_ipc_set_disconnected_cb(void (*cb)(void *), void *user_data);
-int ctsvc_ipc_unset_disconnected_cb();
+int ctsvc_ipc_set_disconnected_cb(pims_ipc_h ipc, void (*cb)(void *), void *user_data);
+int ctsvc_ipc_unset_disconnected_cb(pims_ipc_h ipc);
+void ctsvc_ipc_set_disconnected(bool is_disconnected);
+int ctsvc_ipc_get_disconnected();
+void ctsvc_ipc_recovery();
-#endif /* __TIZEN_SOCIAL_CTSVC_CLIENT_IPC_H__ */
+#endif /* __CTSVC_CLIENT_IPC_H__ */
#include "contacts.h"
#include "ctsvc_internal.h"
#include "ctsvc_ipc_define.h"
+#include "ctsvc_ipc_marshal.h"
#include "ctsvc_mutex.h"
#include "ctsvc_client_ipc.h"
+#include "ctsvc_client_setting.h"
+#include "contacts_extension.h"
typedef struct
{
static void __ctsvc_db_subscriber_callback(pims_ipc_h ipc, pims_ipc_data_h data, void *user_data)
{
- unsigned int size = 0;
+ int ret;
char *str = NULL;
subscribe_info_s *info = user_data;
- if (data)
- str = (char*)pims_ipc_data_get(data, &size);
+ if (data) {
+ ret = ctsvc_ipc_unmarshal_string(data, &str);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_ipc_unmarshal_string() Fail(%d)", ret);
+ }
- if (!str) {
+ if (NULL == str) {
CTS_ERR("There is no changed data");
+ free(str);
return;
}
}
}
}
+ free(str);
+}
+
+int __ctsvc_db_recover_for_change_subscription()
+{
+ GSList *it = NULL;
+ subscribe_info_s *info = NULL;
+
+ for (it=__db_change_subscribe_list;it;it=it->next) {
+ if (NULL == it->data) continue;
+
+ info = it->data;
+ if (info->view_uri) {
+ if (pims_ipc_subscribe(__ipc, CTSVC_IPC_SUBSCRIBE_MODULE, info->view_uri,
+ __ctsvc_db_subscriber_callback, (void*)info) != 0) {
+ CTS_ERR("pims_ipc_subscribe() Fail");
+ return CONTACTS_ERROR_IPC;
+ }
+ }
+ }
+
+ return CONTACTS_ERROR_NONE;
}
-// This API should be called in CTS_MUTEX_PIMS_IPC_PUBSUB mutex
+
+/* This API should be called in CTS_MUTEX_PIMS_IPC_PUBSUB mutex */
pims_ipc_h ctsvc_ipc_get_handle_for_change_subsciption()
{
return __ipc;
}
-
int ctsvc_ipc_create_for_change_subscription()
{
ctsvc_mutex_lock(CTS_MUTEX_PIMS_IPC_PUBSUB);
return CONTACTS_ERROR_NONE;
}
- if (!__ipc) {
+ if (NULL == __ipc) {
__ipc = pims_ipc_create_for_subscribe(CTSVC_IPC_SOCKET_PATH_FOR_CHANGE_SUBSCRIPTION);
- if (!__ipc) {
- CTS_ERR("pims_ipc_create_for_subscribe error\n");
+ if (NULL == __ipc) {
+ CTS_ERR("pims_ipc_create_for_subscribe() Fail");
ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
return CONTACTS_ERROR_IPC;
}
int ctsvc_ipc_recover_for_change_subscription()
{
+ int ret;
ctsvc_mutex_lock(CTS_MUTEX_PIMS_IPC_PUBSUB);
- if (__ipc_pubsub_ref <= 0)
+ if (__ipc_pubsub_ref <= 0) {
+ ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
return CONTACTS_ERROR_NONE;
+ }
+
+ pims_ipc_destroy_for_subscribe(__ipc);
__ipc = pims_ipc_create_for_subscribe(CTSVC_IPC_SOCKET_PATH_FOR_CHANGE_SUBSCRIPTION);
- if (!__ipc) {
- CTS_ERR("pims_ipc_create_for_subscribe error\n");
+ if (NULL == __ipc) {
+ CTS_ERR("pims_ipc_create_for_subscribe() Fail");
ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
return CONTACTS_ERROR_IPC;
}
+ ret = ctsvc_setting_recover_for_change_subscription();
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_setting_recover_for_change_subscription() Fail(%d)", ret);
+ ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
+ return ret;
+ }
+ ret = __ctsvc_db_recover_for_change_subscription();
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("__ctsvc_db_recover_changed_cb_with_info() Fail(%d)", ret);
+ ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
+ return ret;
+ }
+
ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_ipc_destroy_for_change_subscription()
+int ctsvc_ipc_destroy_for_change_subscription(bool is_disconnect)
{
ctsvc_mutex_lock(CTS_MUTEX_PIMS_IPC_PUBSUB);
+ if (is_disconnect) {
+ if (0 < __ipc_pubsub_ref) {
+ pims_ipc_destroy_for_subscribe(__ipc);
+ __ipc = NULL;
+ __ipc_pubsub_ref = 0;
+ }
+ ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
+ return CONTACTS_ERROR_NONE;
+ }
if (1 == __ipc_pubsub_ref) {
pims_ipc_destroy_for_subscribe(__ipc);
RETVM_IF(view_uri == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "view_uri is NULL");
RETVM_IF(cb == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "cb is NULL");
- if (strncmp(view_uri, CTSVC_VIEW_URI_PHONELOG, strlen(CTSVC_VIEW_URI_PHONELOG)) == 0) {
+ if (STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_PHONELOG, strlen(CTSVC_VIEW_URI_PHONELOG))) {
ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_PHONELOG_READ, &result);
- RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_ipc_client_check_permission fail (%d)", ret);
+ RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_ipc_client_check_permission() Fail(%d)", ret);
RETVM_IF(result == false, CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied (phonelog read)");
}
- else if (strncmp(view_uri, CTSVC_VIEW_URI_PERSON, strlen(CTSVC_VIEW_URI_PERSON)) == 0) {
+ else if (STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_PERSON, strlen(CTSVC_VIEW_URI_PERSON))) {
ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_CONTACT_READ, &result);
- RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_ipc_client_check_permission fail (%d)", ret);
+ RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_ipc_client_check_permission() Fail(%d)", ret);
RETVM_IF(result == false, CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied (contact read)");
}
else {
return CONTACTS_ERROR_INVALID_PARAMETER;
}
+ ret = ctsvc_ipc_create_for_change_subscription();
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_create_for_change_subscription() Fail(%d)", ret);
+ return ret;
+ }
+
ctsvc_mutex_lock(CTS_MUTEX_PIMS_IPC_PUBSUB);
for (it=__db_change_subscribe_list;it;it=it->next) {
- if (!it->data) continue;
+ if (NULL == it->data) continue;
info = it->data;
- if (strcmp(info->view_uri, view_uri) == 0)
+ if (STRING_EQUAL == strcmp(info->view_uri, view_uri))
break;
else
info = NULL;
}
- if (!info) {
+ if (NULL == info) {
info = calloc(1, sizeof(subscribe_info_s));
if (NULL == info) {
CTS_ERR("calloc() Failed");
if (pims_ipc_subscribe(__ipc, CTSVC_IPC_SUBSCRIBE_MODULE, (char*)view_uri,
__ctsvc_db_subscriber_callback, (void*)info) != 0) {
- CTS_ERR("pims_ipc_subscribe error\n");
+ CTS_ERR("pims_ipc_subscribe() Fail");
free(info);
ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
return CONTACTS_ERROR_IPC;
}
cb_info = calloc(1, sizeof(db_callback_info_s));
+ if (NULL == cb_info) {
+ CTS_ERR("calloc() Fail");
+ ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
cb_info->user_data = user_data;
cb_info->cb = cb;
info->callbacks = g_slist_append(info->callbacks, cb_info);
API int contacts_db_remove_changed_cb_with_info(const char* view_uri,
contacts_db_change_cb_with_info cb, void* user_data)
{
+ int ret;
GSList *it = NULL;
subscribe_info_s *info = NULL;
RETVM_IF(view_uri == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "view_uri is NULL");
RETVM_IF(cb == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "cb is NULL");
- if (strcmp(view_uri, CTSVC_VIEW_URI_PHONELOG) != 0 &&
- strcmp(view_uri, CTSVC_VIEW_URI_PERSON) != 0) {
+ if (STRING_EQUAL != strcmp(view_uri, CTSVC_VIEW_URI_PHONELOG) &&
+ STRING_EQUAL != strcmp(view_uri, CTSVC_VIEW_URI_PERSON)) {
CTS_ERR("We support this API for only %s and %s", CTSVC_VIEW_URI_PERSON, CTSVC_VIEW_URI_PHONELOG);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
+ ret = ctsvc_ipc_destroy_for_change_subscription(false);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_destroy_for_change_subscription() Fail(%d)", ret);
+ return ret;
+ }
+
ctsvc_mutex_lock(CTS_MUTEX_PIMS_IPC_PUBSUB);
for (it=__db_change_subscribe_list;it;it=it->next) {
- if (!it->data) continue;
+ if (NULL == it->data) continue;
info = it->data;
- if (strcmp(info->view_uri, view_uri) == 0)
+ if (STRING_EQUAL == strcmp(info->view_uri, view_uri))
break;
else
info = NULL;
if (info) {
GSList *l;
- for(l = info->callbacks;l;l=l->next) {
+ for (l = info->callbacks;l;l=l->next) {
db_callback_info_s *cb_info = l->data;
if (cb == cb_info->cb && user_data == cb_info->user_data) {
info->callbacks = g_slist_remove(info->callbacks, cb_info);
*
*/
-#include <glib.h>
-#include <pims-ipc-data.h>
-
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_ipc_define.h"
-#include "ctsvc_client_ipc.h"
-#include "ctsvc_ipc_marshal.h"
+#include "ctsvc_client_handle.h"
+#include "ctsvc_client_person_helper.h"
API int contacts_person_link_person(int base_person_id, int person_id)
{
+ int ret;
+ contacts_h contact = NULL;
- int ret = CONTACTS_ERROR_NONE;
-
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(base_person_id <= 0 || person_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
-
- bool success = false;
- do {
- if( ctsvc_ipc_marshal_int( base_person_id, indata) != CONTACTS_ERROR_NONE ) break;
- if( ctsvc_ipc_marshal_int( person_id, indata) != CONTACTS_ERROR_NONE ) break;
-
- success = true;
- } while(0);
-
- if( success == false ) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
-/*
- ret = ctsvc_ipc_marshal_int( base_person_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- return ret;
- }
- ret = ctsvc_ipc_marshal_int( person_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- return ret;
- }
-*/
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_PERSON_MODULE, CTSVC_IPC_SERVER_PERSON_LINK_PERSON, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check result
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata, &size);
-
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_person_link_person(contact, base_person_id, person_id);
return ret;
}
API int contacts_person_unlink_contact(int person_id, int contact_id, int* unlinked_person_id)
{
- int ret = CONTACTS_ERROR_NONE;
+ int ret;
+ contacts_h contact = NULL;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
- RETVM_IF(person_id <= 0 || contact_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
-
- if (unlinked_person_id)
- *unlinked_person_id = 0;
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_int( person_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int( contact_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_PERSON_MODULE, CTSVC_IPC_SERVER_PERSON_UNLINK_CONTACT, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check result
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata, &size);
-
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
-
- if (unlinked_person_id)
- *unlinked_person_id = *(int*)pims_ipc_data_get(outdata,&size);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_person_unlink_contact(contact, person_id, contact_id, unlinked_person_id);
return ret;
+
}
API int contacts_person_reset_usage(int person_id, contacts_usage_type_e type)
{
- int ret = CONTACTS_ERROR_NONE;
-
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(person_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,"contact_id should be greater than 0");
+ int ret;
+ contacts_h contact = NULL;
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
- ret = ctsvc_ipc_marshal_int( person_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int( (int)type, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_PERSON_MODULE, CTSVC_IPC_SERVER_PERSON_RESET_USAGE, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check result
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata, &size);
-
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_person_reset_usage(contact, person_id, type);
return ret;
}
API int contacts_person_set_favorite_order(int person_id, int previous_person_id, int next_person_id)
{
- int ret = CONTACTS_ERROR_NONE;
-
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(person_id <= 0 || previous_person_id < 0 || next_person_id < 0, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_int( person_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int( previous_person_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int( next_person_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_PERSON_MODULE, CTSVC_IPC_SERVER_PERSON_SET_FAVORITE_ORDER, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata)
- {
- // check result
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata, &size);
+ int ret;
+ contacts_h contact = NULL;
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_person_set_favorite_order(contact, person_id, previous_person_id, next_person_id);
return ret;
-
}
API int contacts_person_set_default_property(contacts_person_property_e property,
int person_id, int id)
{
- int ret = CONTACTS_ERROR_NONE;
-
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(person_id <= 0 || id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_int( person_id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_unsigned_int( property, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- ret = ctsvc_ipc_marshal_int( id, indata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_PERSON_MODULE, CTSVC_IPC_SERVER_PERSON_SET_DEFAULT_PROPERTY, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
+ int ret;
+ contacts_h contact = NULL;
- pims_ipc_data_destroy(indata);
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
- if (outdata)
- {
- // check result
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata, &size);
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_person_set_default_property(contact, property, person_id, id);
return ret;
}
API int contacts_person_get_default_property(contacts_person_property_e property,
int person_id, int *id)
{
- int ret = CONTACTS_ERROR_NONE;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- RETVM_IF(person_id <= 0 || id == NULL, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
- *id = 0;
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL) {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_int(person_id, indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_unsigned_int(property, indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("marshal fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_PERSON_MODULE, CTSVC_IPC_SERVER_PERSON_GET_DEFAULT_PROPERTY,
- indata, &outdata) != 0) {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
+ int ret;
+ contacts_h contact = NULL;
- pims_ipc_data_destroy(indata);
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
- if (outdata) {
- // check result
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata, &size);
- if (ret == CONTACTS_ERROR_NONE) {
- if (id)
- *id = *(int*)pims_ipc_data_get(outdata,&size);
- }
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_person_get_default_property(contact, property, person_id, id);
return ret;
}
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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 <pims-ipc-data.h>
+
+#include "contacts.h"
+#include "ctsvc_internal.h"
+#include "ctsvc_ipc_define.h"
+#include "ctsvc_client_ipc.h"
+#include "ctsvc_ipc_marshal.h"
+
+static const char CONTACTS_READ_PRIVILEGE_ID[] = "http://tizen.org/privilege/contact.read";
+static const char CONTACTS_WRITE_PRIVILEGE_ID[] = "http://tizen.org/privilege/contact.write";
+static const char PHONELOG_READ_PRIVILEGE_ID[] = "http://tizen.org/privilege/callhistory.read";
+static const char PHONELOG_WRITE_PRIVILEGE_ID[] = "http://tizen.org/privilege/callhistory.write";
+
+int ctsvc_client_person_link_person(contacts_h contact, int base_person_id, int person_id)
+{
+ int ret = CONTACTS_ERROR_NONE;
+
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(base_person_id <= 0 || person_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
+
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_handle Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ bool success = false;
+ do {
+ if (ctsvc_ipc_marshal_int(base_person_id, indata) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_int(person_id, indata) != CONTACTS_ERROR_NONE) break;
+
+ success = true;
+ } while (0);
+
+ if (success == false) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+/*
+ ret = ctsvc_ipc_marshal_int(base_person_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(person_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ return ret;
+ }
+*/
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_PERSON_MODULE, CTSVC_IPC_SERVER_PERSON_LINK_PERSON, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_person_unlink_contact(contacts_h contact, int person_id, int contact_id, int* unlinked_person_id)
+{
+ int ret = CONTACTS_ERROR_NONE;
+
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(person_id <= 0 || contact_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
+
+ if (unlinked_person_id)
+ *unlinked_person_id = 0;
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_handle Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_int(person_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(contact_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_PERSON_MODULE, CTSVC_IPC_SERVER_PERSON_UNLINK_CONTACT, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+
+ if (unlinked_person_id) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, unlinked_person_id)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ }
+ }
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_person_reset_usage(contacts_h contact, int person_id, contacts_usage_type_e type)
+{
+ int ret = CONTACTS_ERROR_NONE;
+
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(person_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,"contact_id should be greater than 0");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_handle Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+
+ ret = ctsvc_ipc_marshal_int(person_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int((int)type, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_PERSON_MODULE, CTSVC_IPC_SERVER_PERSON_RESET_USAGE, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_person_set_favorite_order(contacts_h contact, int person_id, int previous_person_id, int next_person_id)
+{
+ int ret = CONTACTS_ERROR_NONE;
+
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(person_id <= 0 || previous_person_id < 0 || next_person_id < 0, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_handle Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_int(person_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(previous_person_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(next_person_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_PERSON_MODULE, CTSVC_IPC_SERVER_PERSON_SET_FAVORITE_ORDER, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+
+}
+
+int ctsvc_client_person_set_default_property(contacts_h contact, contacts_person_property_e property,
+ int person_id, int id)
+{
+ int ret = CONTACTS_ERROR_NONE;
+
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(person_id <= 0 || id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_handle Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_int(person_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_unsigned_int(property, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ ret = ctsvc_ipc_marshal_int(id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_PERSON_MODULE, CTSVC_IPC_SERVER_PERSON_SET_DEFAULT_PROPERTY, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
+int ctsvc_client_person_get_default_property(contacts_h contact, contacts_person_property_e property,
+ int person_id, int *id)
+{
+ int ret = CONTACTS_ERROR_NONE;
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+ RETVM_IF(person_id <= 0 || id == NULL, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
+ *id = 0;
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_handle Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_int(person_id, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_unsigned_int(property, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("marshal fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_PERSON_MODULE, CTSVC_IPC_SERVER_PERSON_GET_DEFAULT_PROPERTY,
+ indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ if (ret == CONTACTS_ERROR_NONE && id) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, id)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ }
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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.
+ *
+ */
+
+#ifndef __CTSVC_CLIENT_PERSON_HELPER_H__
+#define __CTSVC_CLIENT_PERSON_HELPER_H__
+
+#include "contacts_types.h"
+
+int ctsvc_client_person_link_person(contacts_h contact, int base_person_id, int person_id);
+int ctsvc_client_person_unlink_contact(contacts_h contact, int person_id, int contact_id, int* unlinked_person_id);
+int ctsvc_client_person_reset_usage(contacts_h contact, int person_id, contacts_usage_type_e type);
+int ctsvc_client_person_set_favorite_order(contacts_h contact, int person_id, int previous_person_id, int next_person_id);
+int ctsvc_client_person_set_default_property(contacts_h contact, contacts_person_property_e property, int person_id, int id);
+int ctsvc_client_person_get_default_property(contacts_h contact, contacts_person_property_e property, int person_id, int *id);
+
+#endif /* __CTSVC_CLIENT_PERSON_HELPER_H__ */
\ No newline at end of file
*
*/
-#include <glib.h>
-#include <pims-ipc-data.h>
-
#include "contacts.h"
-#include "contacts_phone_log_internal.h"
#include "ctsvc_internal.h"
-#include "ctsvc_ipc_define.h"
-#include "ctsvc_client_ipc.h"
-#include "ctsvc_ipc_marshal.h"
+#include "ctsvc_client_handle.h"
+#include "ctsvc_client_phonelog_helper.h"
API int contacts_phone_log_reset_statistics(void)
{
-#ifndef ENABLE_LOG_FEATURE
- return CONTACTS_ERROR_NOT_SUPPORTED;
-#endif // ENABLE_LOG_FEATURE
-
- int ret = CONTACTS_ERROR_NONE;
-
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
-
- // make indata
- indata = pims_ipc_data_create(0);
- if (indata == NULL)
- {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- return ret;
- }
-
- // ipc call
- if (ctsvc_ipc_call(CTSVC_IPC_PHONELOG_MODULE, CTSVC_IPC_SERVER_PHONELOG_RESET_STATISTICS, indata, &outdata) != 0)
- {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
+ int ret;
+ contacts_h contact = NULL;
- pims_ipc_data_destroy(indata);
+ ret = ctsvc_client_handle_get_p(&contact);
+ if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
+ ret = CONTACTS_ERROR_IPC;
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
- if (outdata)
- {
- // check result
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata, &size);
-
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ ret = ctsvc_client_phone_log_reset_statistics(contact);
+ if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
+ ret = CONTACTS_ERROR_IPC;
return ret;
-
}
API int contacts_phone_log_delete(contacts_phone_log_delete_e op, ...)
{
-#ifndef ENABLE_LOG_FEATURE
- return CONTACTS_ERROR_NOT_SUPPORTED;
-#endif // ENABLE_LOG_FEATURE
-
- int ret = CONTACTS_ERROR_NONE;
+ int ret;
+ contacts_h contact = NULL;
- pims_ipc_data_h indata = NULL;
- pims_ipc_data_h outdata = NULL;
- char *number = NULL;
- int extra_data1;
+ ret = ctsvc_client_handle_get_p(&contact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p() Fail(%d)", ret);
va_list args;
-
- indata = pims_ipc_data_create(0);
- if (indata == NULL) {
- CTS_ERR("ipc data created fail!");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- ret = ctsvc_ipc_marshal_int( op, indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_marshal_int fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
-
- switch(op) {
- case CONTACTS_PHONE_LOG_DELETE_BY_ADDRESS:
- va_start(args, op);
- number = va_arg(args, char *);
- va_end(args);
- if (NULL == number) {
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
- ret = ctsvc_ipc_marshal_string(number, indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_marshal_string fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- break;
- case CONTACTS_PHONE_LOG_DELETE_BY_MESSAGE_EXTRA_DATA1:
- case CONTACTS_PHONE_LOG_DELETE_BY_EMAIL_EXTRA_DATA1:
- va_start(args, op);
- extra_data1 = va_arg(args, int);
- va_end(args);
- ret = ctsvc_ipc_marshal_int(extra_data1, indata);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_marshal_int fail");
- pims_ipc_data_destroy(indata);
- return ret;
- }
- break;
- default:
- CTS_ERR("Invalid parameter : operation is not proper (%d)", ret);
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
-
- if (ctsvc_ipc_call(CTSVC_IPC_PHONELOG_MODULE,
- CTSVC_IPC_SERVER_PHONELOG_DELETE, indata, &outdata) != 0) {
- CTS_ERR("ctsvc_ipc_call failed");
- pims_ipc_data_destroy(indata);
- return CONTACTS_ERROR_IPC;
- }
-
- pims_ipc_data_destroy(indata);
-
- if (outdata) {
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata, &size);
-
- if (CONTACTS_ERROR_NONE == ret) {
- int transaction_ver = 0;
- transaction_ver = *(int*)pims_ipc_data_get(outdata,&size);
- ctsvc_client_ipc_set_change_version(transaction_ver);
- }
-
- pims_ipc_data_destroy(outdata);
- }
+ va_start(args, op);
+ ret = ctsvc_client_phone_log_delete(contact, op, args);
+ va_end(args);
return ret;
}
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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 <pims-ipc-data.h>
+
+#include "contacts.h"
+#include "contacts_phone_log_internal.h"
+#include "ctsvc_internal.h"
+#include "ctsvc_ipc_define.h"
+#include "ctsvc_client_ipc.h"
+#include "ctsvc_ipc_marshal.h"
+
+
+static const char CONTACTS_READ_PRIVILEGE_ID[] = "http://tizen.org/privilege/contact.read";
+static const char CONTACTS_WRITE_PRIVILEGE_ID[] = "http://tizen.org/privilege/contact.write";
+static const char PHONELOG_READ_PRIVILEGE_ID[] = "http://tizen.org/privilege/callhistory.read";
+static const char PHONELOG_WRITE_PRIVILEGE_ID[] = "http://tizen.org/privilege/callhistory.write";
+
+int ctsvc_client_phone_log_reset_statistics(contacts_h contact)
+{
+#ifndef ENABLE_LOG_FEATURE
+ return CONTACTS_ERROR_NOT_SUPPORTED;
+#endif /* ENABLE_LOG_FEATURE */
+
+ int ret = CONTACTS_ERROR_NONE;
+
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+
+ /* make indata */
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ /* ipc call */
+ if (ctsvc_ipc_call(CTSVC_IPC_PHONELOG_MODULE, CTSVC_IPC_SERVER_PHONELOG_RESET_STATISTICS, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+
+}
+
+int ctsvc_client_phone_log_delete(contacts_h contact, contacts_phone_log_delete_e op, va_list args)
+{
+#ifndef ENABLE_LOG_FEATURE
+ return CONTACTS_ERROR_NOT_SUPPORTED;
+#endif /* ENABLE_LOG_FEATURE */
+
+ int ret = CONTACTS_ERROR_NONE;
+
+ pims_ipc_data_h indata = NULL;
+ pims_ipc_data_h outdata = NULL;
+ char *number = NULL;
+ int extra_data1;
+
+ RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER, "contact is NULL");
+
+ indata = pims_ipc_data_create(0);
+ if (indata == NULL) {
+ CTS_ERR("ipc data created fail!");
+ ret = CONTACTS_ERROR_OUT_OF_MEMORY;
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_handle(contact, indata);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_marshal_handle() Fail(%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ ret = ctsvc_ipc_marshal_int(op, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_int fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+
+ switch(op) {
+ case CONTACTS_PHONE_LOG_DELETE_BY_ADDRESS:
+ number = va_arg(args, char *);
+ if (NULL == number) {
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_INVALID_PARAMETER;
+ }
+ ret = ctsvc_ipc_marshal_string(number, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_string fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ break;
+ case CONTACTS_PHONE_LOG_DELETE_BY_MESSAGE_EXTRA_DATA1:
+ case CONTACTS_PHONE_LOG_DELETE_BY_EMAIL_EXTRA_DATA1:
+ extra_data1 = va_arg(args, int);
+ ret = ctsvc_ipc_marshal_int(extra_data1, indata);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_int fail");
+ pims_ipc_data_destroy(indata);
+ return ret;
+ }
+ break;
+ default:
+ CTS_ERR("Invalid parameter : operation is not proper (%d)", ret);
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_INVALID_PARAMETER;
+ }
+
+ if (ctsvc_ipc_call(CTSVC_IPC_PHONELOG_MODULE,
+ CTSVC_IPC_SERVER_PHONELOG_DELETE, indata, &outdata) != 0) {
+ CTS_ERR("ctsvc_ipc_call failed");
+ pims_ipc_data_destroy(indata);
+ return CONTACTS_ERROR_IPC;
+ }
+
+ pims_ipc_data_destroy(indata);
+
+ if (outdata) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ if (CONTACTS_ERROR_NONE == ret) {
+ int transaction_ver = 0;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &transaction_ver)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+ ctsvc_client_ipc_set_change_version(contact, transaction_ver);
+ }
+
+ pims_ipc_data_destroy(outdata);
+ }
+
+ return ret;
+}
+
/*
* Contacts Service
*
- * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ * Copyright (c) 2015 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.
* limitations under the License.
*
*/
+#ifndef __CTSVC_CLIENT_PHONELOG_HELPER_H__
+#define __CTSVC_CLIENT_PHONELOG_HELPER_H__
-#ifndef __TIZEN_SOCIAL_CTSVC_PERSON_H__
-#define __TIZEN_SOCIAL_CTSVC_PERSON_H__
+#include "contacts_types.h"
+#include "contacts_phone_log_internal.h"
-#include "ctsvc_sqlite.h"
+int ctsvc_client_phone_log_reset_statistics(contacts_h contact);
+int ctsvc_client_phone_log_delete(contacts_h contact, contacts_phone_log_delete_e op, va_list args);
-int ctsvc_person_do_garbage_collection(void);
-int ctsvc_person_aggregate(int person_id);
-void ctsvc_db_person_delete_callback(sqlite3_context * context, int argc, sqlite3_value ** argv);
-#endif // __TIZEN_SOCIAL_CTSVC_PERSON_H__
+#endif /* __CTSVC_CLIENT_PHONELOG_HELPER_H__ */
\ No newline at end of file
* limitations under the License.
*
*/
-#include <errno.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <unistd.h>
-#include <pims-ipc-data.h>
-
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_socket.h"
-#include "ctsvc_mutex.h"
-#include "ctsvc_inotify.h"
#include "ctsvc_client_ipc.h"
-
-static int _ctsvc_connection = 0;
-
-static __thread int _ctsvc_connection_on_thread = 0;
-
-int ctsvc_client_get_thread_connection_count()
-{
- return _ctsvc_connection_on_thread;
-}
+#include "ctsvc_client_utils.h"
+#include "ctsvc_client_handle.h"
+#include "ctsvc_client_service_helper.h"
API int contacts_connect_with_flags(unsigned int flags)
{
CTS_FN_CALL;
- int ret = CONTACTS_ERROR_NONE;
-
- // If new flag is defined, errer check should be updated
- RETVM_IF(flags & 0x11111110, CONTACTS_ERROR_INVALID_PARAMETER, "flags is invalid");
-
- ret = contacts_connect();
- if (ret == CONTACTS_ERROR_PERMISSION_DENIED)
- return ret;
- else if (ret == CONTACTS_ERROR_NONE)
- return ret;
-
- if (flags & CONTACTS_CONNECT_FLAG_RETRY) {
- int i;
- int waiting_time = 500;
- for (i=0;i<9;i++) {
- usleep(waiting_time * 1000);
- CTS_DBG("retry cnt=%d, ret=%x, %d",(i+1), ret, waiting_time);
- ret = contacts_connect();
- if (ret == CONTACTS_ERROR_NONE)
- break;
- if (6 < i)
- waiting_time += 30000;
- else
- waiting_time *= 2;
+ int ret;
+ contacts_h contact = NULL;
+ unsigned int id = ctsvc_client_get_pid();
+
+ ret = ctsvc_client_handle_get_p_with_id(id, &contact);
+ if (CONTACTS_ERROR_NO_DATA == ret) {
+ ret = ctsvc_client_handle_create(id, &contact);
+ if (CONTACTS_ERROR_NONE != ret)
+ {
+ CTS_ERR("ctsvc_client_handle_create() Fail(%d)", ret);
+ if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
+ return CONTACTS_ERROR_INTERNAL;
+ return ret;
}
}
+ else if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_client_handle_get_p_with_id() Fail(%d)", ret);
+ return ret;
+ }
- return ret;
-}
+ ret = ctsvc_client_connect_with_flags(contact, flags);
+ if ((CONTACTS_ERROR_IPC_NOT_AVALIABLE == ret)
+ || (CONTACTS_ERROR_PERMISSION_DENIED == ret))
+ return CONTACTS_ERROR_IPC;
-static void _ctsvc_ipc_disconnected_cb(void *user_data)
-{
- ctsvc_ipc_set_disconnected(true);
-}
-
-static void _ctsvc_ipc_initialized_cb(void *user_data)
-{
- ctsvc_ipc_recovery();
- ctsvc_ipc_recover_for_change_subscription();
- ctsvc_ipc_set_disconnected(false);
+ return ret;
}
-
API int contacts_connect(void)
{
CTS_FN_CALL;
int ret;
-
- ctsvc_mutex_lock(CTS_MUTEX_CONNECTION);
- if (0 == _ctsvc_connection) {
- ret = ctsvc_ipc_connect();
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_connect() Failed(%d)", ret);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return ret;
- }
-
- ret = ctsvc_socket_init();
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_socket_init() Failed(%d)", ret);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ contacts_h contact = NULL;
+ unsigned int id = ctsvc_client_get_pid();
+
+ ret = ctsvc_client_handle_get_p_with_id(id, &contact);
+ if (CONTACTS_ERROR_NO_DATA == ret) {
+ ret = ctsvc_client_handle_create(id, &contact);
+ if (CONTACTS_ERROR_NONE != ret)
+ {
+ CTS_ERR("ctsvc_client_handle_create() Fail(%d)", ret);
+ if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
+ return CONTACTS_ERROR_INTERNAL;
return ret;
}
-
- ret = ctsvc_inotify_init();
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_inotify_init() Failed(%d)", ret);
- ctsvc_socket_final();
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return ret;
- }
- ctsvc_inotify_subscribe_ipc_ready(_ctsvc_ipc_initialized_cb, NULL);
-
- ctsvc_view_uri_init();
- ctsvc_ipc_create_for_change_subscription();
- ctsvc_ipc_set_disconnected_cb(_ctsvc_ipc_disconnected_cb, NULL);
}
- else
- CTS_DBG("System : Contacts service has been already connected(%d)", _ctsvc_connection + 1);
-
- _ctsvc_connection++;
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ else if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_client_handle_get_p_with_id() Fail(%d)", ret);
+ return ret;
+ }
+ ret = ctsvc_client_connect(contact);
+ if ((CONTACTS_ERROR_IPC_NOT_AVALIABLE == ret)
+ || (CONTACTS_ERROR_PERMISSION_DENIED == ret))
+ return CONTACTS_ERROR_IPC;
- return CONTACTS_ERROR_NONE;
+ return ret;
}
API int contacts_disconnect(void)
{
- int ret;
-
CTS_FN_CALL;
+ int ret;
+ contacts_h contact = NULL;
+ unsigned int id = ctsvc_client_get_pid();
- ctsvc_mutex_lock(CTS_MUTEX_CONNECTION);
- if (1 == _ctsvc_connection) {
- ctsvc_ipc_destroy_for_change_subscription();
-
- ret = ctsvc_ipc_disconnect();
- if (ret != CONTACTS_ERROR_NONE) {
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- CTS_ERR("ctsvc_ipc_disconnect() Failed(%d)", ret);
- return ret;
- }
-
- ctsvc_view_uri_deinit();
- ctsvc_inotify_unsubscribe_ipc_ready();
- ctsvc_inotify_close();
- ctsvc_socket_final();
- ctsvc_ipc_unset_disconnected_cb();
- }
- else if (1 < _ctsvc_connection)
- CTS_DBG("System : connection count is %d", _ctsvc_connection);
- else {
- CTS_DBG("System : please call contacts_connect(), connection count is (%d)", _ctsvc_connection);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
+ ret = ctsvc_client_handle_get_p_with_id(id, &contact);
+ RETV_IF(CONTACTS_ERROR_NO_DATA == ret, CONTACTS_ERROR_NONE);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p_with_id() Fail(%d)", ret);
- _ctsvc_connection--;
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ ret = ctsvc_client_disconnect(contact);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_client_disconnect() Fail(%d)", ret);
+ if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
+ ret = CONTACTS_ERROR_IPC;
- return CONTACTS_ERROR_NONE;
+ return ret;
}
API int contacts_connect_on_thread(void)
{
+ CTS_FN_CALL;
int ret;
-
- ctsvc_mutex_lock(CTS_MUTEX_CONNECTION);
-
- if (0 == _ctsvc_connection_on_thread) {
- ret = ctsvc_ipc_connect();
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_connect() Failed(%d)", ret);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ contacts_h contact = NULL;
+ unsigned int id = ctsvc_client_get_tid();
+
+ ret = ctsvc_client_handle_get_p_with_id(id, &contact);
+ if (CONTACTS_ERROR_NO_DATA == ret) {
+ ret = ctsvc_client_handle_create(id, &contact);
+ if (CONTACTS_ERROR_NONE != ret)
+ {
+ CTS_ERR("ctsvc_client_handle_create() Fail(%d)", ret);
+ if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
+ return CONTACTS_ERROR_INTERNAL;
return ret;
}
-
- ret = ctsvc_socket_init();
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_socket_init() Failed(%d)", ret);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return ret;
- }
-
- ret = ctsvc_inotify_init();
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_inotify_init() Failed(%d)", ret);
- ctsvc_socket_final();
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return ret;
- }
- ctsvc_inotify_subscribe_ipc_ready(_ctsvc_ipc_initialized_cb, NULL);
-
- ctsvc_view_uri_init();
- ctsvc_ipc_create_for_change_subscription();
- ctsvc_ipc_set_disconnected_cb(_ctsvc_ipc_disconnected_cb, NULL);
}
- else if (0 < _ctsvc_connection_on_thread)
- CTS_DBG("System : Contacts service has been already connected");
-
- _ctsvc_connection_on_thread++;
+ else if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_client_handle_get_p_with_id() Fail(%d)", ret);
+ return ret;
+ }
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ ret = ctsvc_client_connect_on_thread(contact);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_client_connect_on_thread() Fail(%d)", ret);
+ if ((CONTACTS_ERROR_IPC_NOT_AVALIABLE == ret)
+ || (CONTACTS_ERROR_PERMISSION_DENIED == ret))
+ return CONTACTS_ERROR_IPC;
- return CONTACTS_ERROR_NONE;
+ return ret;
}
API int contacts_disconnect_on_thread(void)
{
+ CTS_FN_CALL;
int ret;
+ contacts_h contact = NULL;
+ unsigned int id = ctsvc_client_get_tid();
- ctsvc_mutex_lock(CTS_MUTEX_CONNECTION);
+ ret = ctsvc_client_handle_get_p_with_id(id, &contact);
+ RETV_IF(CONTACTS_ERROR_NO_DATA == ret, CONTACTS_ERROR_NONE);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_client_handle_get_p_with_id() Fail(%d)", ret);
- if (1 == _ctsvc_connection_on_thread) {
- ctsvc_ipc_destroy_for_change_subscription();
+ ret = ctsvc_client_disconnect_on_thread(contact);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_client_disconnect_on_thread() Fail(%d)", ret);
+ if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
+ ret = CONTACTS_ERROR_IPC;
- ret = ctsvc_ipc_disconnect();
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_disconnect() Failed(%d)", ret);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return ret;
- }
-
- ctsvc_view_uri_deinit();
- ctsvc_inotify_unsubscribe_ipc_ready();
- ctsvc_inotify_close();
- ctsvc_socket_final();
- ctsvc_ipc_unset_disconnected_cb();
- CTS_DBG("System : connection_on_thread was destroyed successfully");
- }
- else if (1 < _ctsvc_connection_on_thread) {
- CTS_DBG("System : connection count is %d", _ctsvc_connection_on_thread);
- }
- else {
- CTS_DBG("System : please call contacts_connect_on_thread(), connection count is (%d)", _ctsvc_connection_on_thread);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
-
- _ctsvc_connection_on_thread--;
-
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
-
- return CONTACTS_ERROR_NONE;
+ return ret;
}
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Dohyung Jin <dh.jin@samsung.com>
+ * Jongwon Lee <gogosing.lee@samsung.com>
+ * Donghee Ye <donghee.ye@samsung.com>
+ *
+ * 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 <errno.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <unistd.h>
+
+#include "contacts.h"
+#include "ctsvc_internal.h"
+#include "ctsvc_socket.h"
+#include "ctsvc_mutex.h"
+#include "ctsvc_inotify.h"
+#include "ctsvc_client_ipc.h"
+#include "ctsvc_client_utils.h"
+#include "ctsvc_client_handle.h"
+#include "ctsvc_client_service_helper.h"
+
+static int _ctsvc_connection = 0;
+static __thread int _ctsvc_connection_on_thread = 0;
+
+int ctsvc_client_get_thread_connection_count()
+{
+ return _ctsvc_connection_on_thread;
+}
+
+int ctsvc_client_connect_with_flags(contacts_h contact, unsigned int flags)
+{
+ CTS_FN_CALL;
+ int ret = CONTACTS_ERROR_NONE;
+
+ /* If new flag is defined, errer check should be updated */
+ RETVM_IF(flags & 0x11111110, CONTACTS_ERROR_INVALID_PARAMETER, "flags is invalid");
+
+ ret = ctsvc_client_connect(contact);
+ if (ret == CONTACTS_ERROR_PERMISSION_DENIED)
+ return ret;
+ else if (ret == CONTACTS_ERROR_NONE)
+ return ret;
+
+ if (flags & CONTACTS_CONNECT_FLAG_RETRY) {
+ int i;
+ int waiting_time = 500;
+ for (i=0;i<9;i++) {
+ usleep(waiting_time * 1000);
+ CTS_DBG("retry cnt=%d, ret=%x, %d",(i+1), ret, waiting_time);
+ ret = ctsvc_client_connect(contact);
+ if (ret == CONTACTS_ERROR_NONE)
+ break;
+ if (6 < i)
+ waiting_time += 30000;
+ else
+ waiting_time *= 2;
+ }
+ }
+
+ return ret;
+}
+
+static void _ctsvc_ipc_initialized_cb(void *user_data)
+{
+ CTS_FN_CALL;
+ if (true == ctsvc_ipc_get_disconnected()) {
+ ctsvc_ipc_set_disconnected(false);
+ ctsvc_ipc_recovery();
+ ctsvc_ipc_recover_for_change_subscription();
+ }
+}
+
+int ctsvc_client_connect(contacts_h contact)
+{
+ CTS_FN_CALL;
+ int ret;
+ ctsvc_base_s *base = (ctsvc_base_s *)contact;
+ RETV_IF(NULL == base, CONTACTS_ERROR_INVALID_PARAMETER);
+
+ ctsvc_mutex_lock(CTS_MUTEX_CONNECTION);
+ if (0 == base->connection_count) {
+ ret = ctsvc_ipc_connect(contact, ctsvc_client_get_pid());
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_connect() Fail(%d)", ret);
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ return ret;
+ }
+ }
+ base->connection_count++;
+
+ if (0 == _ctsvc_connection) {
+ ret = ctsvc_socket_init();
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_socket_init() Fail(%d)", ret);
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ return ret;
+ }
+
+ ret = ctsvc_inotify_init();
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_inotify_init() Fail(%d)", ret);
+ ctsvc_socket_final();
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ return ret;
+ }
+ ctsvc_view_uri_init();
+ }
+ else
+ CTS_DBG("System : Contacts service has been already connected(%d)", _ctsvc_connection + 1);
+
+ if (1 == base->connection_count)
+ ctsvc_inotify_subscribe_ipc_ready(contact, _ctsvc_ipc_initialized_cb, NULL);
+
+ _ctsvc_connection++;
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_client_disconnect(contacts_h contact)
+{
+ CTS_FN_CALL;
+ int ret;
+ ctsvc_base_s *base = (ctsvc_base_s *)contact;
+ RETV_IF(NULL == base, CONTACTS_ERROR_INVALID_PARAMETER);
+
+ ctsvc_mutex_lock(CTS_MUTEX_CONNECTION);
+
+ if (1 == base->connection_count) {
+ ret = ctsvc_ipc_disconnect(contact, ctsvc_client_get_pid(), _ctsvc_connection);
+ if (ret != CONTACTS_ERROR_NONE) {
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ CTS_ERR("ctsvc_ipc_disconnect() Fail(%d)", ret);
+ return ret;
+ }
+ ctsvc_inotify_unsubscribe_ipc_ready(contact);
+ }
+ base->connection_count--;
+
+ if (1 == _ctsvc_connection) {
+ ctsvc_ipc_destroy_for_change_subscription(true);
+ ctsvc_view_uri_deinit();
+ ctsvc_inotify_close();
+ ctsvc_socket_final();
+
+ }
+ else if (1 < _ctsvc_connection)
+ CTS_DBG("System : connection count is %d", _ctsvc_connection);
+ else {
+ CTS_DBG("System : please call contacts_connect(), connection count is (%d)", _ctsvc_connection);
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ return CONTACTS_ERROR_DB;
+ }
+
+ _ctsvc_connection--;
+
+ if (0 == base->connection_count) {
+ CTS_INFO("connection_count is 0. remove handle");
+ ret = ctsvc_client_handle_remove(ctsvc_client_get_pid(), contact);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_client_handle_remove() Fail(%d)", ret);
+ }
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_client_connect_on_thread(contacts_h contact)
+{
+ int ret;
+ ctsvc_base_s *base = (ctsvc_base_s *)contact;
+ RETV_IF(NULL == base, CONTACTS_ERROR_INVALID_PARAMETER);
+
+ ctsvc_mutex_lock(CTS_MUTEX_CONNECTION);
+
+ if (0 == base->connection_count) {
+ ret = ctsvc_ipc_connect(contact, ctsvc_client_get_tid());
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_connect() Fail(%d)", ret);
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ return ret;
+ }
+ }
+ base->connection_count++;
+
+ if (0 == _ctsvc_connection_on_thread) {
+ ret = ctsvc_socket_init();
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_socket_init() Fail(%d)", ret);
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ return ret;
+ }
+
+ ret = ctsvc_inotify_init();
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_inotify_init() Fail(%d)", ret);
+ ctsvc_socket_final();
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ return ret;
+ }
+ ctsvc_view_uri_init();
+ }
+ else if (0 < _ctsvc_connection_on_thread)
+ CTS_DBG("System : Contacts service has been already connected");
+
+ if (1 == base->connection_count)
+ ctsvc_inotify_subscribe_ipc_ready(contact, _ctsvc_ipc_initialized_cb, NULL);
+
+ _ctsvc_connection_on_thread++;
+
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_client_disconnect_on_thread(contacts_h contact)
+{
+ int ret;
+ ctsvc_base_s *base = (ctsvc_base_s *)contact;
+ RETV_IF(NULL == base, CONTACTS_ERROR_INVALID_PARAMETER);
+
+ ctsvc_mutex_lock(CTS_MUTEX_CONNECTION);
+
+ if (1 == base->connection_count) {
+ ret = ctsvc_ipc_disconnect(contact, ctsvc_client_get_tid(), _ctsvc_connection_on_thread);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_disconnect() Fail(%d)", ret);
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ return ret;
+ }
+ ctsvc_inotify_unsubscribe_ipc_ready(contact);
+ }
+ base->connection_count--;
+
+ if (1 == _ctsvc_connection_on_thread) {
+ if (0 == _ctsvc_connection)
+ ctsvc_ipc_destroy_for_change_subscription(true);
+ ctsvc_view_uri_deinit();
+ ctsvc_inotify_close();
+ ctsvc_socket_final();
+ CTS_DBG("System : connection_on_thread was destroyed successfully");
+ }
+ else if (1 < _ctsvc_connection_on_thread) {
+ CTS_DBG("System : connection count is %d", _ctsvc_connection_on_thread);
+ }
+ else {
+ CTS_DBG("System : please call contacts_connect_on_thread(), connection count is (%d)", _ctsvc_connection_on_thread);
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ return CONTACTS_ERROR_DB;
+ }
+
+ _ctsvc_connection_on_thread--;
+
+ if (0 == base->connection_count) {
+ CTS_INFO("connection_count is 0. remove handle");
+ ret = ctsvc_client_handle_remove(ctsvc_client_get_tid(), contact);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_client_handle_remove() Fail(%d)", ret);
+ }
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+
+ return CONTACTS_ERROR_NONE;
+}
+
-/*\r
- * Contacts Service\r
- *\r
- * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Contact: Dohyung Jin <dh.jin@samsung.com>\r
- * Jongwon Lee <gogosing.lee@samsung.com>\r
- * Donghee Ye <donghee.ye@samsung.com>\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- *\r
- */\r
-\r
-#ifndef __TIZEN_SOCIAL_CTSVC_VCARD_H__\r
-#define __TIZEN_SOCIAL_CTSVC_VCARD_H__\r
-\r
-#endif /* __TIZEN_SOCIAL_CTSVC_VCARD_H__ */\r
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Dohyung Jin <dh.jin@samsung.com>
+ * Jongwon Lee <gogosing.lee@samsung.com>
+ * Donghee Ye <donghee.ye@samsung.com>
+ *
+ * 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.
+ *
+ */
+
+#ifndef __CTSVC_CLIENT_SERVICE_HELPER_H__
+#define __CTSVC_CLIENT_SERVICE_HELPER_H__
+
+int ctsvc_client_connect_with_flags(contacts_h contact, unsigned int flags);
+int ctsvc_client_connect(contacts_h contact);
+int ctsvc_client_disconnect(contacts_h contact);
+int ctsvc_client_connect_on_thread(contacts_h contact);
+int ctsvc_client_disconnect_on_thread(contacts_h contact);
+int ctsvc_client_get_thread_connection_count();
+
+#endif /* __CTSVC_CLIENT_SERVICE_HELPER_H__ */
\ No newline at end of file
#include "ctsvc_client_ipc.h"
#include "ctsvc_mutex.h"
+typedef struct
+{
+ contacts_setting_name_display_order_changed_cb cb;
+ void *user_data;
+}ctsvc_name_display_order_changed_cb_info_s;
+
+typedef struct
+{
+ contacts_setting_name_sorting_order_changed_cb cb;
+ void *user_data;
+}ctsvc_name_sorting_order_changed_cb_info_s;
+
+static GSList *__setting_name_display_order_subscribe_list = NULL;
+static GSList *__setting_name_sorting_order_subscribe_list = NULL;
+
+static const char CONTACTS_READ_PRIVILEGE_ID[] = "http://tizen.org/privilege/contact.read";
+static const char CONTACTS_WRITE_PRIVILEGE_ID[] = "http://tizen.org/privilege/contact.write";
+static const char PHONELOG_READ_PRIVILEGE_ID[] = "http://tizen.org/privilege/callhistory.read";
+static const char PHONELOG_WRITE_PRIVILEGE_ID[] = "http://tizen.org/privilege/callhistory.write";
+
+
API int contacts_setting_get_name_display_order(contacts_name_display_order_e *name_display_order)
{
int ret = CONTACTS_ERROR_NONE;
}
if (outdata) {
- ctsvc_ipc_unmarshal_int(outdata, &ret);
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
+
if (CONTACTS_ERROR_NONE == ret) {
- ctsvc_ipc_unmarshal_int(outdata, (int *)name_display_order);
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, (int *)name_display_order)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
}
pims_ipc_data_destroy(outdata);
}
}
if (outdata) {
- ctsvc_ipc_unmarshal_int(outdata, &ret);
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
if (CONTACTS_ERROR_NONE == ret) {
- ctsvc_ipc_unmarshal_int(outdata, (int *)name_sorting_order);
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, (int *)name_sorting_order)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
}
pims_ipc_data_destroy(outdata);
}
pims_ipc_data_destroy(indata);
if (outdata) {
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata, &size);
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
pims_ipc_data_destroy(outdata);
}
pims_ipc_data_destroy(indata);
if (outdata) {
- unsigned int size = 0;
- ret = *(int*) pims_ipc_data_get(outdata, &size);
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(outdata, &ret)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ pims_ipc_data_destroy(outdata);
+ return CONTACTS_ERROR_IPC;
+ }
pims_ipc_data_destroy(outdata);
}
return ret;
}
-typedef struct
-{
- contacts_setting_name_display_order_changed_cb cb;
- void *user_data;
-}ctsvc_name_display_order_changed_cb_info_s;
-
-static GSList *__setting_name_display_order_subscribe_list = NULL;
-
static void __ctsvc_setting_name_display_order_subscriber_callback(pims_ipc_h ipc, pims_ipc_data_h data, void *user_data)
{
+ int ret;
int value = -1;
- if (data)
- ctsvc_ipc_unmarshal_int(data, &value);
+ if (data) {
+ ret = ctsvc_ipc_unmarshal_int(data, &value);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_ipc_unmarshal_int() Fail(%d)", ret);
+ }
if (__setting_name_display_order_subscribe_list) {
GSList *l;
for (l = __setting_name_display_order_subscribe_list;l;l=l->next) {
}
}
+static void __ctsvc_setting_name_sorting_order_subscriber_callback(pims_ipc_h ipc, pims_ipc_data_h data, void *user_data)
+{
+ int ret;
+ int value = -1;
+
+ if (data) {
+ ret = ctsvc_ipc_unmarshal_int(data, &value);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "() Fail(%d)", ret);
+ }
+
+ if (__setting_name_sorting_order_subscribe_list) {
+ GSList *l;
+ for (l = __setting_name_sorting_order_subscribe_list;l;l=l->next) {
+ ctsvc_name_sorting_order_changed_cb_info_s *cb_info = l->data;
+ if (cb_info->cb)
+ cb_info->cb((contacts_name_sorting_order_e)value, cb_info->user_data);
+ }
+ }
+}
+
+int ctsvc_setting_recover_for_change_subscription()
+{
+ GSList *it;
+
+ for (it = __setting_name_display_order_subscribe_list; it; it=it->next) {
+ ctsvc_name_display_order_changed_cb_info_s *cb_info = it->data;
+ if (cb_info->cb) {
+ if (pims_ipc_subscribe(ctsvc_ipc_get_handle_for_change_subsciption(),
+ CTSVC_IPC_SUBSCRIBE_MODULE, CTSVC_SETTING_DISPLAY_ORDER_CHANGED,
+ __ctsvc_setting_name_display_order_subscriber_callback, NULL) != 0) {
+ CTS_ERR("pims_ipc_subscribe() Fail");
+ return CONTACTS_ERROR_IPC;
+ }
+ break;
+ }
+ }
+
+ for (it = __setting_name_sorting_order_subscribe_list; it; it=it->next) {
+ ctsvc_name_sorting_order_changed_cb_info_s *cb_info = it->data;
+ if (cb_info->cb) {
+ if (pims_ipc_subscribe(ctsvc_ipc_get_handle_for_change_subsciption(),
+ CTSVC_IPC_SUBSCRIBE_MODULE, CTSVC_SETTING_SORTING_ORDER_CHANGED,
+ __ctsvc_setting_name_sorting_order_subscriber_callback, NULL) != 0) {
+ CTS_ERR("pims_ipc_subscribe() Fail");
+ return CONTACTS_ERROR_IPC;
+ }
+ break;
+ }
+ }
+
+ return CONTACTS_ERROR_NONE;
+}
+
API int contacts_setting_add_name_display_order_changed_cb(
contacts_setting_name_display_order_changed_cb cb, void* user_data)
{
RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_ipc_client_check_permission fail (%d)", ret);
RETVM_IF(result == false, CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied (contact read)");
+ ret = ctsvc_ipc_create_for_change_subscription();
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_create_for_change_subscription() Fail(%d)", ret);
+ return ret;
+ }
+
ctsvc_mutex_lock(CTS_MUTEX_PIMS_IPC_PUBSUB);
- if (!__setting_name_display_order_subscribe_list) {
+ if (NULL == __setting_name_display_order_subscribe_list) {
if (pims_ipc_subscribe(ctsvc_ipc_get_handle_for_change_subsciption(),
CTSVC_IPC_SUBSCRIBE_MODULE, CTSVC_SETTING_DISPLAY_ORDER_CHANGED,
__ctsvc_setting_name_display_order_subscriber_callback, NULL) != 0) {
- CTS_ERR("pims_ipc_subscribe error\n");
+ CTS_ERR("pims_ipc_subscribe() Fail");
ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
return CONTACTS_ERROR_IPC;
}
for (l = __setting_name_display_order_subscribe_list;l;l=l->next) {
ctsvc_name_display_order_changed_cb_info_s *cb_info = l->data;
if (cb_info->cb == cb && cb_info->user_data == user_data) {
- CTS_ERR("The same callback(%s) is already exist");
+ CTS_ERR("The same callback(%x) is already exist", cb);
+ ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
cb_info = calloc(1, sizeof(ctsvc_name_display_order_changed_cb_info_s));
+ if (NULL == cb_info) {
+ CTS_ERR("calloc() Failed");
+ ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
cb_info->user_data = user_data;
cb_info->cb = cb;
__setting_name_display_order_subscribe_list = g_slist_append(__setting_name_display_order_subscribe_list, cb_info);
API int contacts_setting_remove_name_display_order_changed_cb(
contacts_setting_name_display_order_changed_cb cb, void* user_data)
{
+ int ret;
RETVM_IF(cb == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : callback is NULL");
+ ret = ctsvc_ipc_destroy_for_change_subscription(false);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_destroy_for_change_subscription() Fail(%d)", ret);
+ return ret;
+ }
+
ctsvc_mutex_lock(CTS_MUTEX_PIMS_IPC_PUBSUB);
if (__setting_name_display_order_subscribe_list) {
GSList *l;
- for(l = __setting_name_display_order_subscribe_list;l;l=l->next) {
+ for (l = __setting_name_display_order_subscribe_list;l;l=l->next) {
ctsvc_name_display_order_changed_cb_info_s *cb_info = l->data;
if (cb == cb_info->cb && user_data == cb_info->user_data) {
__setting_name_display_order_subscribe_list = g_slist_remove(__setting_name_display_order_subscribe_list, cb_info);
return CONTACTS_ERROR_NONE;
}
-typedef struct
-{
- contacts_setting_name_sorting_order_changed_cb cb;
- void *user_data;
-}ctsvc_name_sorting_order_changed_cb_info_s;
-
-static GSList *__setting_name_sorting_order_subscribe_list = NULL;
-
-static void __ctsvc_setting_name_sorting_order_subscriber_callback(pims_ipc_h ipc, pims_ipc_data_h data, void *user_data)
-{
- int value = -1;
- if (data)
- ctsvc_ipc_unmarshal_int(data, &value);
-
- if (__setting_name_sorting_order_subscribe_list) {
- GSList *l;
- for (l = __setting_name_sorting_order_subscribe_list;l;l=l->next) {
- ctsvc_name_sorting_order_changed_cb_info_s *cb_info = l->data;
- if (cb_info->cb)
- cb_info->cb((contacts_name_sorting_order_e)value, cb_info->user_data);
- }
- }
-}
-
API int contacts_setting_add_name_sorting_order_changed_cb(
contacts_setting_name_sorting_order_changed_cb cb, void* user_data)
{
RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_ipc_client_check_permission fail (%d)", ret);
RETVM_IF(result == false, CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied (contact read)");
+ ret = ctsvc_ipc_create_for_change_subscription();
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_create_for_change_subscription() Fail(%d)", ret);
+ return ret;
+ }
+
ctsvc_mutex_lock(CTS_MUTEX_PIMS_IPC_PUBSUB);
- if (!__setting_name_sorting_order_subscribe_list) {
+ if (NULL == __setting_name_sorting_order_subscribe_list) {
if (pims_ipc_subscribe(ctsvc_ipc_get_handle_for_change_subsciption(),
CTSVC_IPC_SUBSCRIBE_MODULE, CTSVC_SETTING_SORTING_ORDER_CHANGED,
__ctsvc_setting_name_sorting_order_subscriber_callback, NULL) != 0) {
- CTS_ERR("pims_ipc_subscribe error\n");
+ CTS_ERR("pims_ipc_subscribe() Fail");
ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
return CONTACTS_ERROR_IPC;
}
for (l = __setting_name_sorting_order_subscribe_list;l;l=l->next) {
ctsvc_name_sorting_order_changed_cb_info_s *cb_info = l->data;
if (cb_info->cb == cb && cb_info->user_data == user_data) {
- CTS_ERR("The same callback(%s) is already exist");
+ CTS_ERR("The same callback(%x) is already exist", cb);
+ ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
cb_info = calloc(1, sizeof(ctsvc_name_sorting_order_changed_cb_info_s));
+ if (NULL == cb_info) {
+ CTS_ERR("calloc() Failed");
+ ctsvc_mutex_unlock(CTS_MUTEX_PIMS_IPC_PUBSUB);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
cb_info->user_data = user_data;
cb_info->cb = cb;
__setting_name_sorting_order_subscribe_list = g_slist_append(__setting_name_sorting_order_subscribe_list, cb_info);
API int contacts_setting_remove_name_sorting_order_changed_cb(
contacts_setting_name_sorting_order_changed_cb cb, void* user_data)
{
+ int ret;
RETVM_IF(cb == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : callback is NULL");
+ ret = ctsvc_ipc_destroy_for_change_subscription(false);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_destroy_for_change_subscription() Fail(%d)", ret);
+ return ret;
+ }
+
ctsvc_mutex_lock(CTS_MUTEX_PIMS_IPC_PUBSUB);
if (__setting_name_sorting_order_subscribe_list) {
GSList *l;
- for(l = __setting_name_sorting_order_subscribe_list;l;l=l->next) {
+ for (l = __setting_name_sorting_order_subscribe_list;l;l=l->next) {
ctsvc_name_sorting_order_changed_cb_info_s *cb_info = l->data;
if (cb == cb_info->cb && user_data == cb_info->user_data) {
__setting_name_sorting_order_subscribe_list = g_slist_remove(__setting_name_sorting_order_subscribe_list, cb_info);
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2015 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.
+ *
+ */
+
+#ifndef __CTSVC_CLIENT_SETTING_H__
+#define __CTSVC_CLIENT_SETTING_H__
+
+int ctsvc_setting_recover_for_change_subscription();
+
+#endif /* __CTSVC_CLIENT_SETTING_H__ */
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2015 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.
+ *
+ */
+
+#define _GNU_SOURCE
+#include <unistd.h>
+#include <sys/syscall.h>
+#include <sys/types.h>
+
+inline unsigned int ctsvc_client_get_pid()
+{
+ return (unsigned int)getpid();
+}
+
+inline unsigned int ctsvc_client_get_tid()
+{
+ return (unsigned int)syscall(SYS_gettid);
+}
+
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_CLIENT_SERVICE_H__
-#define __TIZEN_SOCIAL_CTSVC_CLIENT_SERVICE_H__
+#ifndef __CTSVC_CLIENT_UTILS_H__
+#define __CTSVC_CLIENT_UTILS_H__
-int ctsvc_client_get_thread_connection_count();
+unsigned int ctsvc_client_get_pid();
+unsigned int ctsvc_client_get_tid();
+
+#endif /* __CTSVC_CLIENT_UTILS_H__ */
-#endif /* __TIZEN_SOCIAL_CTSVC_CLIENT_SERVICE_H__ */
+++ /dev/null
-/*
- * Contacts Service
- *
- * Copyright (c) 2010 - 2012 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 <glib.h>
-
-#include "contacts.h"
-#include "ctsvc_internal.h"
-#include "ctsvc_inotify.h"
-
-API int contacts_db_add_changed_cb( const char* view_uri, contacts_db_changed_cb cb,
- void* user_data )
-{
- int ret;
-
- RETVM_IF(NULL == view_uri, CONTACTS_ERROR_INVALID_PARAMETER,
- "Invalid parameter : view_uri is null");
- RETVM_IF(NULL == cb, CONTACTS_ERROR_INVALID_PARAMETER,
- "Invalid parameter : callback is null");
-
- ret = ctsvc_inotify_subscribe(view_uri, cb, user_data);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret,
- "ctsvc_inotify_subscribe(%s) Failed(%d)", view_uri, ret);
-
- return CONTACTS_ERROR_NONE;
-}
-
-API int contacts_db_remove_changed_cb( const char* view_uri, contacts_db_changed_cb cb,
- void* user_data )
-{
- int ret;
-
- RETVM_IF(NULL == view_uri, CONTACTS_ERROR_INVALID_PARAMETER,
- "Invalid parameter : view_uri is null");
- RETVM_IF(NULL == cb, CONTACTS_ERROR_INVALID_PARAMETER,
- "Invalid parameter : callback is null");
-
- ret = ctsvc_inotify_unsubscribe(view_uri, cb, user_data);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret,
- "ctsvc_inotify_unsubscribe(%s) Failed(%d)", view_uri, ret);
-
- return CONTACTS_ERROR_NONE;
-}
-
return false;
}
-API int contacts_filter_create( const char* view_uri, contacts_filter_h* out_filter )
+API int contacts_filter_create(const char* view_uri, contacts_filter_h* out_filter)
{
ctsvc_composite_filter_s *com_filter;
return CONTACTS_ERROR_NONE;
}
-API int contacts_filter_add_operator( contacts_filter_h filter, contacts_filter_operator_e op )
+API int contacts_filter_add_operator(contacts_filter_h filter, contacts_filter_operator_e op)
{
ctsvc_composite_filter_s *com_filter;
RETVM_IF(g_slist_length(com_filter->filter_ops) != (g_slist_length(com_filter->filters)-1),
CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : Please check the operator of filter");
- com_filter->filter_ops = g_slist_append(com_filter->filter_ops, (void*)op );
+ com_filter->filter_ops = g_slist_append(com_filter->filter_ops, (void*)op);
return CONTACTS_ERROR_NONE;
}
RETVM_IF(g_slist_length(s_filter1->filter_ops) != (g_slist_length(s_filter1->filters)),
CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : Please check the operator of filter");
- RETVM_IF (0 != strcmp(s_filter1->view_uri, s_filter2->view_uri), CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF (STRING_EQUAL != strcmp(s_filter1->view_uri, s_filter2->view_uri), CONTACTS_ERROR_INVALID_PARAMETER,
"The filter view_uri is different (filter1:%s, filter2:%s)", s_filter1->view_uri, s_filter2->view_uri);
ret = ctsvc_filter_clone(filter2, &new_filter);
RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_filter_clone is failed (%d)", ret);
}
filter = (ctsvc_attribute_filter_s *)calloc(1, sizeof(ctsvc_attribute_filter_s));
- RETVM_IF(NULL == filter, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
+ if (NULL == filter) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
filter->filter_type = filter_type;
filter->property_id = property_id;
filter->match = match;
return CONTACTS_ERROR_NONE;
}
-API int contacts_filter_add_str( contacts_filter_h filter, unsigned int property_id,
- contacts_match_str_flag_e match, const char* match_value )
+API int contacts_filter_add_str(contacts_filter_h filter, unsigned int property_id,
+ contacts_match_str_flag_e match, const char* match_value)
{
ctsvc_composite_filter_s *com_filter;
ctsvc_attribute_filter_s *str_filter;
return CONTACTS_ERROR_NONE;
}
-API int contacts_filter_add_int( contacts_filter_h filter, unsigned int property_id,
- contacts_match_int_flag_e match, int match_value )
+API int contacts_filter_add_int(contacts_filter_h filter, unsigned int property_id,
+ contacts_match_int_flag_e match, int match_value)
{
ctsvc_composite_filter_s *com_filter;
ctsvc_attribute_filter_s *int_filter;
RETV_IF(NULL == filter, CONTACTS_ERROR_INVALID_PARAMETER);
RETVM_IF(property_id == CTSVC_PROPERTY_PHONELOG_SIM_SLOT_NO &&
- (match >= CONTACTS_MATCH_GREATER_THAN && match <= CONTACTS_MATCH_LESS_THAN_OR_EQUAL),
+ (CONTACTS_MATCH_GREATER_THAN <= match && match <= CONTACTS_MATCH_LESS_THAN_OR_EQUAL),
CONTACTS_ERROR_INVALID_PARAMETER, "Not support this condition");
com_filter = (ctsvc_composite_filter_s*)filter;
return CONTACTS_ERROR_NONE;
}
-API int contacts_filter_add_lli( contacts_filter_h filter, unsigned int property_id,
- contacts_match_int_flag_e match, long long int match_value )
+API int contacts_filter_add_lli(contacts_filter_h filter, unsigned int property_id,
+ contacts_match_int_flag_e match, long long int match_value)
{
ctsvc_composite_filter_s *com_filter;
ctsvc_attribute_filter_s *lli_filter;
return CONTACTS_ERROR_NONE;
}
-API int contacts_filter_add_double( contacts_filter_h filter, unsigned int property_id,
- contacts_match_int_flag_e match, double match_value )
+API int contacts_filter_add_double(contacts_filter_h filter, unsigned int property_id,
+ contacts_match_int_flag_e match, double match_value)
{
ctsvc_composite_filter_s *com_filter;
ctsvc_attribute_filter_s *double_filter;
return CONTACTS_ERROR_NONE;
}
-API int contacts_filter_add_bool( contacts_filter_h filter, unsigned int property_id, bool match_value )
+API int contacts_filter_add_bool(contacts_filter_h filter, unsigned int property_id, bool match_value)
{
ctsvc_composite_filter_s *com_filter;
ctsvc_attribute_filter_s *bool_filter;
RETV_IF(NULL == com_filter, CONTACTS_ERROR_INVALID_PARAMETER);
- for(cursor=com_filter->filters;cursor;cursor=cursor->next) {
+ for (cursor=com_filter->filters;cursor;cursor=cursor->next) {
ctsvc_filter_s *sub_filter = (ctsvc_filter_s *)cursor->data;
if (sub_filter->filter_type == CTSVC_FILTER_COMPOSITE)
}
-API int contacts_filter_destroy( contacts_filter_h filter )
+API int contacts_filter_destroy(contacts_filter_h filter)
{
RETV_IF(NULL == filter, CONTACTS_ERROR_INVALID_PARAMETER);
{
ctsvc_attribute_filter_s *out;
out = (ctsvc_attribute_filter_s *)calloc(1, sizeof(ctsvc_attribute_filter_s));
- RETVM_IF(NULL == out, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
+ if (NULL == out) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
out->filter_type = src->filter_type;
out->property_id = src->property_id;
out->match = src->match;
static int __ctsvc_composite_filter_clone(ctsvc_composite_filter_s * filter,
ctsvc_composite_filter_s **out_filter)
{
- int ret;
GSList *cursor;
ctsvc_composite_filter_s *out;
RETV_IF(NULL == filter, CONTACTS_ERROR_INVALID_PARAMETER);
- ret = contacts_filter_create(filter->view_uri, (contacts_filter_h *)&out);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_filter_create() Fail(%d)", ret);
+ contacts_filter_create(filter->view_uri, (contacts_filter_h *)&out);
- for(cursor=filter->filters;cursor;cursor=cursor->next) {
+ for (cursor=filter->filters;cursor;cursor=cursor->next) {
ctsvc_filter_s *src = (ctsvc_filter_s *)cursor->data;
ctsvc_filter_s *dest = NULL;
-/*\r
- * Contacts Service\r
- *\r
- * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Contact: Dohyung Jin <dh.jin@samsung.com>\r
- * Jongwon Lee <gogosing.lee@samsung.com>\r
- * Donghee Ye <donghee.ye@samsung.com>\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- *\r
- */\r
-\r
-#ifndef __TIZEN_SOCIAL_CTSVC_FILTER_H__\r
-#define __TIZEN_SOCIAL_CTSVC_FILTER_H__\r
-\r
-int ctsvc_filter_clone(contacts_filter_h filter, contacts_filter_h *out_filter);\r
-\r
-#endif /* __TIZEN_SOCIAL_CTSVC_FILTER_H__ */\r
-\r
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Dohyung Jin <dh.jin@samsung.com>
+ * Jongwon Lee <gogosing.lee@samsung.com>
+ * Donghee Ye <donghee.ye@samsung.com>
+ *
+ * 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.
+ *
+ */
+
+#ifndef __CTSVC_FILTER_H__
+#define __CTSVC_FILTER_H__
+
+int ctsvc_filter_clone(contacts_filter_h filter, contacts_filter_h *out_filter);
+
+#endif /* __CTSVC_FILTER_H__ */
+
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2015 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 "ctsvc_internal.h"
+#include "ctsvc_handle.h"
+
+int ctsvc_handle_create(contacts_h *contact)
+{
+ RETV_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER);
+ ctsvc_base_s *base = calloc(1, sizeof(ctsvc_base_s));
+ if (NULL == base)
+ {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+ *contact = (contacts_h)base;
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_handle_destroy(contacts_h contact)
+{
+ RETV_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER);
+ ctsvc_base_s *base = (ctsvc_base_s *)contact;
+ free(base->zone_name);
+ free(base);
+ base = NULL;
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_handle_clone(contacts_h contact, contacts_h *pcontact)
+{
+ RETV_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER);
+ RETV_IF(NULL == pcontact, CONTACTS_ERROR_INVALID_PARAMETER);
+
+ ctsvc_base_s *base = (ctsvc_base_s *)contact;
+ ctsvc_base_s *clone = calloc(1, sizeof(ctsvc_base_s));
+ if (NULL == clone) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+ clone->zone_name = SAFE_STRDUP(base->zone_name);
+ clone->connection_count = base->connection_count;
+ clone->version = base->version;
+
+ *pcontact = (contacts_h)clone;
+
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_handle_set_zone_name(contacts_h contact, const char *value)
+{
+ RETV_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER);
+ ctsvc_base_s *base = (ctsvc_base_s *)contact;
+ FREEandSTRDUP(base->zone_name, value);
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_handle_get_zone_name(contacts_h contact, char **value)
+{
+ RETV_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER);
+ ctsvc_base_s *base = (ctsvc_base_s *)contact;
+ if (base->zone_name && *(base->zone_name))
+ *value = strdup(base->zone_name);
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_handle_compare(contacts_h contact1, contacts_h contact2)
+{
+ if (NULL == contact1 && NULL == contact2)
+ return 0;
+ else if (NULL == contact1)
+ return 1;
+ else if (NULL == contact2)
+ return 1;
+
+ ctsvc_base_s *base1 = (ctsvc_base_s *)contact1;
+ ctsvc_base_s *base2 = (ctsvc_base_s *)contact2;
+
+ return g_strcmp0(base1->zone_name, base2->zone_name);
+}
+
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2015 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.
+ *
+ */
+#ifndef __CTSVC_HANDLE_H__
+#define __CTSVC_HANDLE_H__
+
+#include "contacts_types.h"
+
+int ctsvc_handle_create(contacts_h *contact);
+int ctsvc_handle_destroy(contacts_h contact);
+int ctsvc_handle_clone(contacts_h contact, contacts_h *pcontact);
+int ctsvc_handle_set_zone_name(contacts_h contact, const char *value);
+int ctsvc_handle_get_zone_name(contacts_h contact, char **value);
+int ctsvc_handle_compare(contacts_h contact1, contacts_h contact2);
+
+
+#endif /* __CTSVC_HANDLE_H__ */
\ No newline at end of file
#include "ctsvc_internal.h"
#include "ctsvc_notify.h"
#include "ctsvc_view.h"
+#include "ctsvc_zone.h"
+#include "ctsvc_handle.h"
#include <stdbool.h>
typedef struct
{
+ contacts_h contact;
int wd;
char *view_uri;
contacts_db_changed_cb cb;
struct socket_init_noti_info {
int wd;
+ int subscribe_count;
void (*cb)(void *);
void *cb_data;
};
-static struct socket_init_noti_info *_ctsvc_socket_init_noti = NULL;
-static int socket_init_noti_count = 0;
+static GHashTable *_ctsvc_socket_init_noti_table = NULL;
static int __ctsvc_inoti_ref = 0;
static int __inoti_fd = -1;
static guint __inoti_handler = 0;
static GSList *__noti_list = NULL;
-void ctsvc_inotify_call_blocked_callback() {
- noti_info *noti;
- GSList *it = NULL;
-
- for (it = __noti_list;it;it=it->next) {
- noti = (noti_info *)it->data;
-
- if (noti->cb && noti->blocked) {
- CTS_DBG("%s", noti->view_uri);
- noti->blocked = false;
- noti->cb(noti->view_uri, noti->cb_data);
- }
- }
-}
-
static inline void __ctsvc_inotify_handle_callback(GSList *noti_list, int wd, uint32_t mask)
{
noti_info *noti;
if (noti->wd == wd) {
#ifdef _CONTACTS_IPC_CLIENT
- if( ctsvc_ipc_is_busy() ){
- // hold the line
+ if (ctsvc_ipc_is_busy()) {
+ /* hold the line */
noti->blocked = true;
continue;
}
}
}
+static void _ctsvc_inotify_socket_init_noti_table_foreach_cb(gpointer key, gpointer value, gpointer user_data)
+{
+ struct socket_init_noti_info *noti_info = value;
+
+ int wd = GPOINTER_TO_INT(user_data);
+ if (noti_info->wd == wd)
+ noti_info->cb(noti_info->cb_data);
+}
+
static gboolean __ctsvc_inotify_gio_cb(GIOChannel *src, GIOCondition cond, gpointer data)
{
int fd, ret;
while (0 < (ret = read(fd, &ie, sizeof(ie)))) {
if (sizeof(ie) == ret) {
+ if (_ctsvc_socket_init_noti_table)
+ g_hash_table_foreach(_ctsvc_socket_init_noti_table, _ctsvc_inotify_socket_init_noti_table_foreach_cb, GINT_TO_POINTER(ie.wd));
- if (_ctsvc_socket_init_noti && _ctsvc_socket_init_noti->wd == ie.wd) // socket initialized
- _ctsvc_socket_init_noti->cb(_ctsvc_socket_init_noti->cb_data);
-
- else if (__noti_list)
+ if (__noti_list)
__ctsvc_inotify_handle_callback(__noti_list, ie.wd, ie.mask);
-
- while (0 < ie.len) {
+ while (0 != ie.len) {
ret = read(fd, name, (ie.len<sizeof(name))?ie.len:sizeof(name));
if (-1 == ret) {
if (EINTR == errno)
continue;
else
- break;
+ return TRUE;
}
- if (ie.len <= ret)
- break;
- ie.len -= ret;
+ if (ie.len < ret)
+ ie.len = 0;
+ else
+ ie.len -= ret;
}
}
else {
if (EINTR == errno)
continue;
else
- break;
+ return TRUE;
}
ret += read_size;
}
}
__inoti_fd = inotify_init();
RETVM_IF(-1 == __inoti_fd, CONTACTS_ERROR_SYSTEM,
- "System: inotify_init() Failed(%d)", errno);
+ "System: inotify_init() Fail(%d)", errno);
ret = fcntl(__inoti_fd, F_SETFD, FD_CLOEXEC);
- WARN_IF(ret < 0, "fcntl failed(%d)", ret);
+ WARN_IF(ret < 0, "fcntl Fail(%d)", ret);
ret = fcntl(__inoti_fd, F_SETFL, O_NONBLOCK);
- WARN_IF(ret < 0, "fcntl failed(%d)", ret);
+ WARN_IF(ret < 0, "fcntl Fail(%d)", ret);
__inoti_handler = __ctsvc_inotify_attach_handler(__inoti_fd);
if (__inoti_handler <= 0) {
ret = inotify_add_watch(fd, notipath, IN_CLOSE_WRITE);
RETVM_IF(-1 == ret, CONTACTS_ERROR_SYSTEM,
- "System: inotify_add_watch() Failed(%d)", errno);
+ "System: inotify_add_watch() Fail(%d)", errno);
return CONTACTS_ERROR_NONE;
}
return CTSVC_NOTI_SDN_CHANGED;
case CTSVC_RECORD_RESULT:
default:
- CTS_ERR("Invalid parameter : The type(%d) is not supported", view_uri);
+ CTS_ERR("Invalid parameter : The type(%s) is not supported", view_uri);
return NULL;
}
return NULL;
}
-int ctsvc_inotify_subscribe_ipc_ready(void (*cb)(void *), void *user_data)
+int ctsvc_inotify_subscribe_ipc_ready(contacts_h contact, void (*cb)(void *), void *user_data)
{
- if (0 == socket_init_noti_count) {
- int wd = __ctsvc_inotify_get_wd(__inoti_fd, CTSVC_NOTI_IPC_READY);
+ char *noti_path = NULL;
+ struct socket_init_noti_info *noti_info = NULL;
+
+ ctsvc_zone_get_canonicalize_path(contact, CTSVC_NOTI_IPC_READY, ¬i_path);
+ if (NULL == _ctsvc_socket_init_noti_table)
+ _ctsvc_socket_init_noti_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, free);
+ else
+ noti_info = g_hash_table_lookup(_ctsvc_socket_init_noti_table, noti_path);
+
+ if (NULL == noti_info) {
+ int wd = __ctsvc_inotify_get_wd(__inoti_fd, noti_path);
if (-1 == wd) {
- CTS_ERR("__ctsvc_inotify_get_wd() Failed(errno : %d)", errno);
+ CTS_ERR("__ctsvc_inotify_get_wd() Failed(noti_path=%s, errno : %d)", noti_path, errno);
+ free(noti_path);
if (errno == EACCES)
return CONTACTS_ERROR_PERMISSION_DENIED;
return CONTACTS_ERROR_SYSTEM;
}
- int ret = __ctsvc_inotify_watch(__inoti_fd, CTSVC_NOTI_IPC_READY);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_inotify_watch() Failed");
- _ctsvc_socket_init_noti = calloc(1, sizeof(struct socket_init_noti_info));
- _ctsvc_socket_init_noti->wd = wd;
- _ctsvc_socket_init_noti->cb = cb;
- _ctsvc_socket_init_noti->cb_data = user_data;
- }
- socket_init_noti_count++;
+ int ret = __ctsvc_inotify_watch(__inoti_fd, noti_path);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("__ctsvc_inotify_watch() Failed");
+ free(noti_path);
+ return ret;
+ }
+
+ noti_info = calloc(1, sizeof(struct socket_init_noti_info));
+ if (NULL == noti_info) {
+ CTS_ERR("calloc() return NULL");
+ free(noti_path);
+ return ret;
+ }
+ noti_info->wd = wd;
+ noti_info->cb = cb;
+ noti_info->cb_data = user_data;
+ g_hash_table_insert(_ctsvc_socket_init_noti_table, strdup(noti_path), noti_info);
+ }
+ free(noti_path);
+ noti_info->subscribe_count++;
return CONTACTS_ERROR_NONE;
}
-int ctsvc_inotify_unsubscribe_ipc_ready()
+int ctsvc_inotify_unsubscribe_ipc_ready(contacts_h contact)
{
- RETV_IF(socket_init_noti_count <= 0, CONTACTS_ERROR_SYSTEM);
- if (1 == socket_init_noti_count) {
- int wd = _ctsvc_socket_init_noti->wd;
- inotify_rm_watch(__inoti_fd, wd);
+ RETVM_IF(NULL == _ctsvc_socket_init_noti_table, CONTACTS_ERROR_INVALID_PARAMETER, "_ctsvc_socket_init_noti_table is NULL");
- free(_ctsvc_socket_init_noti);
- _ctsvc_socket_init_noti = NULL;
+ char *noti_path = NULL;
+ struct socket_init_noti_info *noti_info = NULL;
+
+ ctsvc_zone_get_canonicalize_path(contact, CTSVC_NOTI_IPC_READY, ¬i_path);
+ noti_info = g_hash_table_lookup(_ctsvc_socket_init_noti_table, noti_path);
+ RETVM_IF(NULL == noti_info, CONTACTS_ERROR_INVALID_PARAMETER, "g_hash_table_lookup() return NULL");
+
+ if (1 == noti_info->subscribe_count) {
+ int wd = noti_info->wd;
+ inotify_rm_watch(__inoti_fd, wd);
+ g_hash_table_remove(_ctsvc_socket_init_noti_table, noti_path); /* free noti_info automatically */
+ }
+ else {
+ noti_info->subscribe_count--;
}
- socket_init_noti_count--;
+
return CONTACTS_ERROR_NONE;
}
-int ctsvc_inotify_subscribe(const char *view_uri,
- contacts_db_changed_cb cb, void *data)
+
+int ctsvc_inotify_subscribe(contacts_h contact, const char *view_uri,
+ void *cb, void *data)
{
int ret, wd;
noti_info *noti, *same_noti = NULL;
RETVM_IF(NULL == path, CONTACTS_ERROR_INVALID_PARAMETER,
"__ctsvc_noti_get_file_path(%s) Failed", view_uri);
- wd = __ctsvc_inotify_get_wd(__inoti_fd, path);
+ char *noti_path = NULL;
+ ret = ctsvc_zone_get_canonicalize_path(contact, path, ¬i_path);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_zone_get_canonicalize_path() Fail(%d)", ret);
+
+ wd = __ctsvc_inotify_get_wd(__inoti_fd, noti_path);
if (-1 == wd) {
+ free(noti_path);
CTS_ERR("__ctsvc_inotify_get_wd() Failed(errno : %d)", errno);
if (errno == EACCES)
return CONTACTS_ERROR_PERMISSION_DENIED;
if (it->data) {
same_noti = it->data;
if (same_noti->wd == wd && same_noti->cb == cb &&
- strcmp(same_noti->view_uri, view_uri) == 0 && same_noti->cb_data == data)
+ STRING_EQUAL == strcmp(same_noti->view_uri, view_uri) && same_noti->cb_data == data &&
+ 0 == ctsvc_handle_compare(contact, same_noti->contact))
break;
else
same_noti = NULL;
}
if (same_noti) {
- __ctsvc_inotify_watch(__inoti_fd, path);
+ __ctsvc_inotify_watch(__inoti_fd, noti_path);
+ free(noti_path);
CTS_ERR("The same callback(%s) is already exist", view_uri);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- ret = __ctsvc_inotify_watch(__inoti_fd, path);
+ ret = __ctsvc_inotify_watch(__inoti_fd, noti_path);
+ free(noti_path);
RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_inotify_watch() Failed");
noti = calloc(1, sizeof(noti_info));
noti->view_uri = strdup(view_uri);
noti->cb_data = data;
noti->cb = cb;
+ ctsvc_handle_clone(contact, &(noti->contact));
noti->blocked = false;
__noti_list = g_slist_append(__noti_list, noti);
-
return CONTACTS_ERROR_NONE;
}
-static inline int __ctsvc_del_noti(GSList **noti_list, int wd,
- const char *view_uri, contacts_db_changed_cb cb, void *user_data)
+static inline int __ctsvc_del_noti(GSList **noti_list, contacts_h contact, int wd,
+ const char *view_uri, void *cb, void *user_data)
{
int del_cnt, remain_cnt;
GSList *it, *result;
noti_info *noti = it->data;
if (noti && wd == noti->wd) {
if (cb == noti->cb && user_data == noti->cb_data
- && 0 == strcmp(noti->view_uri, view_uri)) {
+ && STRING_EQUAL == strcmp(noti->view_uri, view_uri)
+ && 0 == ctsvc_handle_compare(contact, noti->contact)) {
it = it->next;
- result = g_slist_remove(result , noti);
+ result = g_slist_remove(result, noti);
+ ctsvc_handle_destroy(noti->contact);
free(noti->view_uri);
free(noti);
del_cnt++;
return remain_cnt;
}
-int ctsvc_inotify_unsubscribe(const char *view_uri, contacts_db_changed_cb cb, void *user_data)
+int ctsvc_inotify_unsubscribe(contacts_h contact, const char *view_uri, void *cb, void *user_data)
{
int ret, wd;
const char *path;
+ char *noti_path = NULL;
RETV_IF(NULL==cb, CONTACTS_ERROR_INVALID_PARAMETER);
RETVM_IF(__inoti_fd < 0, CONTACTS_ERROR_SYSTEM,
RETVM_IF(NULL == path, CONTACTS_ERROR_INVALID_PARAMETER,
"__ctsvc_noti_get_file_path(%s) Failed", view_uri);
- wd = __ctsvc_inotify_get_wd(__inoti_fd, path);
+ ret = ctsvc_zone_get_canonicalize_path(contact, path, ¬i_path);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_zone_get_canonicalize_path() Fail(%d)", ret);
+
+ wd = __ctsvc_inotify_get_wd(__inoti_fd, noti_path);
if (-1 == wd) {
+ free(noti_path);
CTS_ERR("__ctsvc_inotify_get_wd() Failed(errno : %d)", errno);
if (errno == EACCES)
return CONTACTS_ERROR_PERMISSION_DENIED;
return CONTACTS_ERROR_SYSTEM;
}
- ret = __ctsvc_del_noti(&__noti_list, wd, view_uri, cb, user_data);
- WARN_IF(ret < CONTACTS_ERROR_NONE, "__ctsvc_del_noti() Failed(%d)", ret);
+ ret = __ctsvc_del_noti(&__noti_list, contact, wd, view_uri, cb, user_data);
+ WARN_IF(ret < CONTACTS_ERROR_NONE, "__ctsvc_del_noti() Fail(%d)", ret);
- if (0 == ret)
+ if (0 == ret) {
+ free(noti_path);
return inotify_rm_watch(__inoti_fd, wd);
+ }
+
+ ret = __ctsvc_inotify_watch(__inoti_fd, noti_path);
+ free(noti_path);
- return __ctsvc_inotify_watch(__inoti_fd, path);
+ return ret;
}
static void __clear_nslot_list(gpointer data, gpointer user_data)
{
noti_info *noti = (noti_info *)data;
+ ctsvc_handle_destroy(noti->contact);
free(noti->view_uri);
- free(noti );
+ free(noti);
}
static inline gboolean __ctsvc_inotify_detach_handler(guint id)
__inoti_fd = -1;
}
}
+
* limitations under the License.
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_INOTIFY_H__
-#define __TIZEN_SOCIAL_CTSVC_INOTIFY_H__
+#ifndef __CTSVC_INOTIFY_H__
+#define __CTSVC_INOTIFY_H__
#include "contacts_db.h"
int ctsvc_inotify_init(void);
void ctsvc_inotify_close(void);
-int ctsvc_inotify_subscribe(const char *view_uri, contacts_db_changed_cb cb, void *data);
-int ctsvc_inotify_unsubscribe(const char *view_uri, contacts_db_changed_cb cb, void *user_data);
-void ctsvc_inotify_call_blocked_callback();
-int ctsvc_inotify_subscribe_ipc_ready(void (*cb)(void *), void *user_data);
-int ctsvc_inotify_unsubscribe_ipc_ready();
+int ctsvc_inotify_subscribe(contacts_h contact, const char *view_uri, contacts_db_changed_cb cb, void *data);
+int ctsvc_inotify_unsubscribe(contacts_h contact, const char *view_uri, contacts_db_changed_cb cb, void *user_data);
+int ctsvc_inotify_subscribe_ipc_ready(contacts_h contact, void (*cb)(void *), void *user_data);
+int ctsvc_inotify_unsubscribe_ipc_ready(contacts_h contact);
-#endif //__TIZEN_SOCIAL_CTSVC_INOTIFY_H__
+#endif /* __CTSVC_INOTIFY_H__ */
\ No newline at end of file
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_INTERNAL_H__
-#define __TIZEN_SOCIAL_CTSVC_INTERNAL_H__
+#ifndef __CTSVC_INTERNAL_H__
+#define __CTSVC_INTERNAL_H__
#include <stdio.h>
#include <assert.h>
#endif
#define API __attribute__ ((visibility("default")))
-//#define CONTACTS_DEBUGGING
-//#define CONTACTS_TIMECHECK
+/*#define CONTACTS_DEBUGGING */
+/*#define CONTACTS_TIMECHECK */
#define LOG_TAG "CONTACTS_SERVICE"
#include <dlog.h>
#define CTS_DBG(fmt, arg...)
#define CTS_WARN(fmt, arg...)
#define CTS_ERR(fmt, arg...) ERR(fmt, ##arg)
- #define CTS_INFO(fmt, arg...)
+ #define CTS_INFO(fmt, arg...) INFO(fmt, ##arg)
#define CTS_VERBOSE(fmt, arg...)
#define G_DISABLE_ASSERT
} while (0)
-// TO DISABLE THIS MACRO, DEFINE "G_DISABLE_ASSERT"
+/* TO DISABLE THIS MACRO, DEFINE "G_DISABLE_ASSERT" */
#define ASSERT_NOT_REACHED(fmt, arg...) do { \
CTS_ERR(fmt, ##arg); \
assert(!"DO NOT REACH HERE!"); \
- } while(0)
+ } while (0)
#define CONTACTS_FREE(ptr) \
- do { \
- if (ptr) \
- free(ptr); \
- ptr = NULL; \
- } while(0)
+ do { \
+ free(ptr); \
+ ptr = NULL; \
+ } while (0)
-// Thread-local storage
+/* Thread-local storage */
#ifdef _CONTACTS_IPC_SERVER
#define TLS __thread
#elif _CONTACTS_IPC_CLIENT
#define TLS __thread
-#else //_CONTACTS_NATIVE
+#else /* _CONTACTS_NATIVE */
#define TLS
#endif
-#endif /* __TIZEN_SOCIAL_CTSVC_INTERNAL_H__ */
+#endif /* __CTSVC_INTERNAL_H__ */
#include "ctsvc_list.h"
#include "ctsvc_record.h"
-API int contacts_list_create( contacts_list_h* out_list )
+API int contacts_list_create(contacts_list_h* out_list)
{
ctsvc_list_s *list_s;
return CONTACTS_ERROR_NONE;
}
-API int contacts_list_get_count( contacts_list_h list, int *count )
+API int contacts_list_get_count(contacts_list_h list, int *count)
{
ctsvc_list_s *list_s;
return CONTACTS_ERROR_NONE;
}
-int ctsvc_list_add_child( contacts_list_h list, contacts_record_h child_record )
+int ctsvc_list_add_child(contacts_list_h list, contacts_record_h child_record)
{
ctsvc_list_s *s_list;
ctsvc_record_s *s_record;
return CONTACTS_ERROR_NONE;
}
-API int contacts_list_add( contacts_list_h list, contacts_record_h child_record )
+API int contacts_list_add(contacts_list_h list, contacts_record_h child_record)
{
ctsvc_list_s *s_list;
ctsvc_record_s *s_record;
return CONTACTS_ERROR_NONE;
}
-int ctsvc_list_prepend( contacts_list_h list, contacts_record_h child_record )
+int ctsvc_list_prepend(contacts_list_h list, contacts_record_h child_record)
{
ctsvc_list_s *s_list;
ctsvc_record_s *s_record;
return CONTACTS_ERROR_NONE;
}
-int ctsvc_list_reverse( contacts_list_h list)
+int ctsvc_list_reverse(contacts_list_h list)
{
ctsvc_list_s *s_list;
return CONTACTS_ERROR_NONE;
}
-int ctsvc_list_remove_child( contacts_list_h list, contacts_record_h record, bool insert_delete_list )
+int ctsvc_list_remove_child(contacts_list_h list, contacts_record_h record, bool insert_delete_list)
{
GList *cursor = NULL;
ctsvc_list_s *s_list;
s_list->records = g_list_remove(s_list->records, s_record);
if (insert_delete_list) {
err = contacts_record_clone(record, &delete_record);
- RETVM_IF(CONTACTS_ERROR_NONE != err, err,"contacts_record_clone() Failed(%d)", err);
+ RETVM_IF(CONTACTS_ERROR_NONE != err, err,"contacts_record_clone() Fail(%d)", err);
s_list->deleted_records = g_list_append(s_list->deleted_records, delete_record);
}
return CONTACTS_ERROR_NONE;
return CONTACTS_ERROR_NO_DATA;
}
-API int contacts_list_remove( contacts_list_h list, contacts_record_h record )
+API int contacts_list_remove(contacts_list_h list, contacts_record_h record)
{
GList *cursor = NULL;
ctsvc_list_s *s_list;
for (cursor=s_list->records;cursor;cursor=cursor->next) {
ctsvc_record_s *data = (ctsvc_record_s *)cursor->data;
- if (data == s_record){
+ if (data == s_record) {
s_list->count--;
if (s_list->cursor == cursor)
s_list->cursor = cursor->next;
return CONTACTS_ERROR_NO_DATA;
}
-API int contacts_list_get_current_record_p( contacts_list_h list, contacts_record_h* record )
+API int contacts_list_get_current_record_p(contacts_list_h list, contacts_record_h* record)
{
ctsvc_list_s *list_s;
return CONTACTS_ERROR_NONE;
}
-int ctsvc_list_get_nth_record_p( contacts_list_h list, int index, contacts_record_h* record )
+int ctsvc_list_get_nth_record_p(contacts_list_h list, int index, contacts_record_h* record)
{
GList *cursor = NULL;
ctsvc_list_s *list_s;
return CONTACTS_ERROR_NO_DATA;
}
-static int __ctsvc_list_move_cursor( contacts_list_h list, bool next )
+static int __ctsvc_list_move_cursor(contacts_list_h list, bool next)
{
ctsvc_list_s *list_s;
return CONTACTS_ERROR_NONE;
}
-API int contacts_list_prev( contacts_list_h list )
+API int contacts_list_prev(contacts_list_h list)
{
return __ctsvc_list_move_cursor(list, false);
}
-API int contacts_list_next( contacts_list_h list )
+API int contacts_list_next(contacts_list_h list)
{
return __ctsvc_list_move_cursor(list, true);
}
-API int contacts_list_first( contacts_list_h list )
+API int contacts_list_first(contacts_list_h list)
{
ctsvc_list_s *list_s;
return CONTACTS_ERROR_NONE;
}
-API int contacts_list_last( contacts_list_h list )
+API int contacts_list_last(contacts_list_h list)
{
ctsvc_list_s *list_s;
return CONTACTS_ERROR_NONE;
}
-API int contacts_list_destroy( contacts_list_h list, bool delete_child )
+API int contacts_list_destroy(contacts_list_h list, bool delete_child)
{
ctsvc_list_s *s_list;
GList *cursor = NULL;
s_list = (ctsvc_list_s *)list;
if (delete_child) {
- for(cursor = s_list->records;cursor;cursor=cursor->next)
+ for (cursor = s_list->records;cursor;cursor=cursor->next)
contacts_record_destroy((contacts_record_h)(cursor->data), true);
}
g_list_free(s_list->records);
- for(cursor = s_list->deleted_records;cursor;cursor=cursor->next)
+ for (cursor = s_list->deleted_records;cursor;cursor=cursor->next)
contacts_record_destroy((contacts_record_h)(cursor->data), true);
g_list_free(s_list->deleted_records);
list_s = (ctsvc_list_s *)list;
contacts_list_create(&new_list);
- for(cursor = list_s->records;cursor;cursor=cursor->next) {
+ for (cursor = list_s->records;cursor;cursor=cursor->next) {
err = contacts_record_clone((contacts_record_h)cursor->data, &new_record);
if (CONTACTS_ERROR_NONE != err) {
- CTS_ERR("contacts_record_clone() Failed(%d)", err);
+ CTS_ERR("contacts_record_clone() Fail(%d)", err);
contacts_list_destroy(new_list, true);
return err;
}
}
ctsvc_list_reverse(new_list);
- for(cursor = list_s->deleted_records;cursor;cursor=cursor->next) {
+ for (cursor = list_s->deleted_records;cursor;cursor=cursor->next) {
err = contacts_record_clone((contacts_record_h)cursor->data, &new_record);
if (CONTACTS_ERROR_NONE != err) {
- CTS_ERR("contacts_record_clone() Failed(%d)", err);
+ CTS_ERR("contacts_record_clone() Fail(%d)", err);
contacts_list_destroy(new_list, true);
return err;
}
}
-int ctsvc_list_get_deleted_count(contacts_list_h list, unsigned int *count )
+int ctsvc_list_get_deleted_count(contacts_list_h list, unsigned int *count)
{
ctsvc_list_s *list_s;
RETV_IF(NULL == list, CONTACTS_ERROR_INVALID_PARAMETER);
list_s = (ctsvc_list_s *)list;
- if( NULL == list_s->deleted_records )
- {
+ if (NULL == list_s->deleted_records) {
return CONTACTS_ERROR_NONE;
}
return CONTACTS_ERROR_NONE;
}
-int ctsvc_list_get_deleted_nth_record_p( contacts_list_h list, int index, contacts_record_h* record )
+int ctsvc_list_get_deleted_nth_record_p(contacts_list_h list, int index, contacts_record_h* record)
{
ctsvc_list_s *list_s;
-/*\r
- * Contacts Service\r
- *\r
- * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Contact: Dohyung Jin <dh.jin@samsung.com>\r
- * Jongwon Lee <gogosing.lee@samsung.com>\r
- * Donghee Ye <donghee.ye@samsung.com>\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- *\r
- */\r
-\r
-#ifndef __TIZEN_SOCIAL_CTSVC_LIST_H__\r
-#define __TIZEN_SOCIAL_CTSVC_LIST_H__\r
-\r
-#include "contacts_views.h"\r
-\r
-int ctsvc_list_clone(contacts_list_h list, contacts_list_h* out_list);\r
-int ctsvc_list_get_nth_record_p( contacts_list_h list, int index, contacts_record_h* record );\r
-int ctsvc_list_add_child( contacts_list_h list, contacts_record_h child_record );\r
-int ctsvc_list_prepend( contacts_list_h list, contacts_record_h child_record );\r
-int ctsvc_list_reverse( contacts_list_h list);\r
-int ctsvc_list_remove_child( contacts_list_h list, contacts_record_h record, bool insert_delete_list );\r
-\r
-int ctsvc_list_get_deleted_count(contacts_list_h list, unsigned int *count );\r
-int ctsvc_list_get_deleted_nth_record_p( contacts_list_h list, int index, contacts_record_h* record );\r
-int ctsvc_list_append_deleted_record(contacts_list_h list, contacts_record_h record);\r
-\r
-#endif /* __TIZEN_SOCIAL_CTSVC_LIST_H__ */\r
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Dohyung Jin <dh.jin@samsung.com>
+ * Jongwon Lee <gogosing.lee@samsung.com>
+ * Donghee Ye <donghee.ye@samsung.com>
+ *
+ * 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.
+ *
+ */
+
+#ifndef __CTSVC_LIST_H__
+#define __CTSVC_LIST_H__
+
+#include "contacts_views.h"
+
+int ctsvc_list_clone(contacts_list_h list, contacts_list_h* out_list);
+int ctsvc_list_get_nth_record_p(contacts_list_h list, int index, contacts_record_h* record);
+int ctsvc_list_add_child(contacts_list_h list, contacts_record_h child_record);
+int ctsvc_list_prepend(contacts_list_h list, contacts_record_h child_record);
+int ctsvc_list_reverse(contacts_list_h list);
+int ctsvc_list_remove_child(contacts_list_h list, contacts_record_h record, bool insert_delete_list);
+
+int ctsvc_list_get_deleted_count(contacts_list_h list, unsigned int *count);
+int ctsvc_list_get_deleted_nth_record_p(contacts_list_h list, int index, contacts_record_h* record);
+int ctsvc_list_append_deleted_record(contacts_list_h list, contacts_record_h record);
+
+#endif /* __CTSVC_LIST_H__ */
type = CTSVC_LANG_NUMBER;
}
else if (u_isalpha(word[0])) {
- // refer to the uchar.h
- // #define U_GC_L_MASK (U_GC_LU_MASK|U_GC_LL_MASK|U_GC_LT_MASK|U_GC_LM_MASK|U_GC_LO_MASK)
- // U_GC_LU_MASK : U_UPPERCASE_LETTER
- // U_GC_LL_MASK : U_LOWERCASE_LETTER
- // U_GC_LT_MASK : U_TITLECASE_LETTER
- // U_GC_LM_MASK : U_MODIFIER_LETTER
- // U_GC_LO_MASK : U_OTHER_LETTER
+ /*
+ * refer to the uchar.h
+ * #define U_GC_L_MASK (U_GC_LU_MASK|U_GC_LL_MASK|U_GC_LT_MASK|U_GC_LM_MASK|U_GC_LO_MASK)
+ * U_GC_LU_MASK : U_UPPERCASE_LETTER
+ * U_GC_LL_MASK : U_LOWERCASE_LETTER
+ * U_GC_LT_MASK : U_TITLECASE_LETTER
+ * U_GC_LM_MASK : U_MODIFIER_LETTER
+ * U_GC_LO_MASK : U_OTHER_LETTER
+ */
UBlockCode code = ublock_getCode(word[0]);
CTS_VERBOSE("Character unicode block is %d", code);
- switch (code){
- //english
- case UBLOCK_BASIC_LATIN: // = 1, /*[0000]*/
- case UBLOCK_LATIN_1_SUPPLEMENT: // =2, /*[0080]*/
- case UBLOCK_LATIN_EXTENDED_A: // =3, /*[0100]*/
- case UBLOCK_LATIN_EXTENDED_B: // =4, /*[0180]*/
- case UBLOCK_LATIN_EXTENDED_ADDITIONAL: // =38, /*[1E00]*/
+ switch (code) {
+ /* english */
+ case UBLOCK_BASIC_LATIN: /* =1, [0000] */
+ case UBLOCK_LATIN_1_SUPPLEMENT: /* =2, [0080] */
+ case UBLOCK_LATIN_EXTENDED_A: /* =3, [0100] */
+ case UBLOCK_LATIN_EXTENDED_B: /* =4, [0180] */
+ case UBLOCK_LATIN_EXTENDED_ADDITIONAL: /* =38, [1E00] */
type = CTSVC_LANG_ENGLISH;
- // type = CTSVC_LANG_CATALAN; // ca, Spain - Catalan
- // type = CTSVC_LANG_GERMAN: // de, Germany - German
- // type = CTSVC_LANG_BASQUE: // eu, Spain - Basque
- // type = CTSVC_LANG_DUTCH; // nl_Nl, Netherlands Dutch
- // type = CTSVC_LANG_FRENCH; // fr_CA, fr_FR
- // type = CTSVC_LANG_ITALIAN: // it_IT, Italy - Italian
- // type = CTSVC_LANG_PORTUGUESE: // pt_BR, pt_PT, Portugal
- // type = CTSVC_LANG_SPANISH: // es_ES, es_US, El Salvador - Spanish
- // type = CTSVC_LANG_NORWAY: // nb, Norway
- // type = CTSVC_LANG_DANISH: // da, Denmark - Danish
- // type = CTSVC_LANG_AZERBAIJAN: // az, Azerbaijan
- // type = CTSVC_LANG_ROMANIA: // ro, Romania
- // type = CTSVC_LANG_CZECH: // cs, Czech Republic - Czech
- // type = CTSVC_LANG_ESTONIAN: // et, Estonia - Estonian
- // type = CTSVC_LANG_FINNISH: // fi, Finland - Finnish
- // type = CTSVC_LANG_IRISH: // ga, Ireland - Irish
- // type = CTSVC_LANG_GALICIAN: // gl, Spain - Galician
- // type = CTSVC_LANG_HUNGARIAN: // hu, Hungary - Hungarian
- // type = CTSVC_LANG_SWEDISH: // sv, Finland - Swedish
- // type = CTSVC_LANG_SLOVENIAN: // sl, Slovenia - Slovenian
- // type = CTSVC_LANG_SLOVAK: // sk, Slovakia - Slovak
- // type = CTSVC_LANG_LITHUANIAN: // lt, Lithuania - Lithuanian
- // type = CTSVC_LANG_POLISH: // pl, Polish
- // type = CTSVC_LANG_LATVIAN: // lv, Latvia - Latvian
- // type = CTSVC_LANG_CROATIAN: // hr, Bosnia and Herzegovina - Croatian
- // type = CTSVC_LANG_ICELANDIC: // is, Iceland - Icelandic
+ /* type = CTSVC_LANG_CATALAN; */ /* ca, Spain - Catalan */
+ /* type = CTSVC_LANG_GERMAN; */ /* de, Germany - German */
+ /* type = CTSVC_LANG_BASQUE; */ /* eu, Spain - Basque */
+ /* type = CTSVC_LANG_DUTCH; */ /* nl_Nl, Netherlands Dutch */
+ /* type = CTSVC_LANG_FRENCH; */ /* fr_CA, fr_FR */
+ /* type = CTSVC_LANG_ITALIAN; */ /* it_IT, Italy - Italian */
+ /* type = CTSVC_LANG_PORTUGUESE; *//* pt_BR, pt_PT, Portugal */
+ /* type = CTSVC_LANG_SPANISH; */ /*/ es_ES, es_US, El Salvador - Spanish */
+ /* type = CTSVC_LANG_NORWAY; */ /* nb, Norway */
+ /* type = CTSVC_LANG_DANISH; */ /* da, Denmark - Danish */
+ /* type = CTSVC_LANG_AZERBAIJAN; *//* az, Azerbaijan */
+ /* type = CTSVC_LANG_ROMANIA; */ /* ro, Romania */
+ /* type = CTSVC_LANG_CZECH; */ /* cs, Czech Republic - Czech */
+ /* type = CTSVC_LANG_ESTONIAN; */ /* et, Estonia - Estonian */
+ /* type = CTSVC_LANG_FINNISH; */ /* fi, Finland - Finnish */
+ /* type = CTSVC_LANG_IRISH; */ /* ga, Ireland - Irish */
+ /* type = CTSVC_LANG_GALICIAN; */ /* gl, Spain - Galician */
+ /* type = CTSVC_LANG_HUNGARIAN; */ /* hu, Hungary - Hungarian */
+ /* type = CTSVC_LANG_SWEDISH; */ /* sv, Finland - Swedish */
+ /* type = CTSVC_LANG_SLOVENIAN; */ /* sl, Slovenia - Slovenian */
+ /* type = CTSVC_LANG_SLOVAK; */ /* sk, Slovakia - Slovak */
+ /* type = CTSVC_LANG_LITHUANIAN; *//* lt, Lithuania - Lithuanian */
+ /* type = CTSVC_LANG_POLISH; */ /* pl, Polish */
+ /* type = CTSVC_LANG_LATVIAN; */ /* lv, Latvia - Latvian */
+ /* type = CTSVC_LANG_CROATIAN; */ /* hr, Bosnia and Herzegovina - Croatian */
+ /* type = CTSVC_LANG_ICELANDIC; */ /* is, Iceland - Icelandic */
break;
- //korean
- case UBLOCK_HANGUL_JAMO: // =30, /*[1100]*/
- case UBLOCK_HANGUL_COMPATIBILITY_JAMO: // =65, /*[3130]*/
- case UBLOCK_HANGUL_SYLLABLES: // =74, /*[AC00]*/
- case UBLOCK_HANGUL_JAMO_EXTENDED_A: // = 180, /*[A960]*/
- case UBLOCK_HANGUL_JAMO_EXTENDED_B: // = 185, /*[D7B0]*/
+ /* korean */
+ case UBLOCK_HANGUL_JAMO: /* =30, [1100] */
+ case UBLOCK_HANGUL_COMPATIBILITY_JAMO: /* =65, [3130] */
+ case UBLOCK_HANGUL_SYLLABLES: /* =74, [AC00] */
+ case UBLOCK_HANGUL_JAMO_EXTENDED_A: /* =180, [A960] */
+ case UBLOCK_HANGUL_JAMO_EXTENDED_B: /* =185, [D7B0] */
type = CTSVC_LANG_KOREAN;
break;
- // chainese
- case UBLOCK_CJK_RADICALS_SUPPLEMENT: //=58, /*[2E80]*/
- case UBLOCK_CJK_SYMBOLS_AND_PUNCTUATION: //=61, /*[3000]*/
- case UBLOCK_ENCLOSED_CJK_LETTERS_AND_MONTHS: //=68, /*[3200]*/
- case UBLOCK_CJK_STROKES: // =130, /*[31C0]*/
- case UBLOCK_CJK_COMPATIBILITY: // =69, /*[3300]*/
- case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A: //=70, /*[3400]*/
- case UBLOCK_CJK_UNIFIED_IDEOGRAPHS: //=71, /*[4E00]*/
- case UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS: //=79, /*[F900]*/
- case UBLOCK_CJK_COMPATIBILITY_FORMS: //=83, /*[FE30]*/
- case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B : // =94, /*[20000]*/
- case UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT: // =95, /*[2F800]*/
- case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C: // =197, /*[2A700]*/
- case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D: // =209, /*[2B740]*/
+ /* chainese */
+ case UBLOCK_CJK_RADICALS_SUPPLEMENT: /* =58, [2E80] */
+ case UBLOCK_CJK_SYMBOLS_AND_PUNCTUATION: /* =61, [3000] */
+ case UBLOCK_ENCLOSED_CJK_LETTERS_AND_MONTHS: /* =68, [3200] */
+ case UBLOCK_CJK_STROKES: /* =130, [31C0] */
+ case UBLOCK_CJK_COMPATIBILITY: /* =69, [3300] */
+ case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A: /* =70, [3400] */
+ case UBLOCK_CJK_UNIFIED_IDEOGRAPHS: /* =71, [4E00] */
+ case UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS: /* =79, [F900] */
+ case UBLOCK_CJK_COMPATIBILITY_FORMS: /* =83, [FE30] */
+ case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B : /* =94, [20000] */
+ case UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT: /* =95, [2F800] */
+ case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C: /* =197, [2A700] */
+ case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D: /* =209, [2B740] */
type = CTSVC_LANG_CHINESE;
break;
- // japanese
- case UBLOCK_HIRAGANA: // =62, /*[3040]*/
- case UBLOCK_KATAKANA: // =63, /*[30A0]*/
- case UBLOCK_KATAKANA_PHONETIC_EXTENSIONS: // =107, /*[31F0]*/
- case UBLOCK_JAVANESE: // =181, /*[A980]*/
+ /* japanese */
+ case UBLOCK_HIRAGANA: /* =62, [3040] */
+ case UBLOCK_KATAKANA: /* =63, [30A0] */
+ case UBLOCK_KATAKANA_PHONETIC_EXTENSIONS: /* =107, [31F0] */
+ case UBLOCK_JAVANESE: /* =181, [A980] */
type = CTSVC_LANG_JAPANESE;
break;
- case UBLOCK_GREEK: // =8, /*[0370]*/
- case UBLOCK_GREEK_EXTENDED: // =39, /*[1F00]*/
+ case UBLOCK_GREEK: /* =8, [0370] */
+ case UBLOCK_GREEK_EXTENDED: /* =39, [1F00] */
type = CTSVC_LANG_GREEK;
break;
- case UBLOCK_CYRILLIC: // =9, /*[0400]*/
- case UBLOCK_CYRILLIC_EXTENDED_A: // = 158, /*[2DE0]*/
- case UBLOCK_CYRILLIC_EXTENDED_B: // = 160, /*[A640]*/
- case UBLOCK_CYRILLIC_SUPPLEMENTARY: // = 97, UBLOCK_CYRILLIC_SUPPLEMENT = UBLOCK_CYRILLIC_SUPPLEMENTARY, /*[0500]*/
+ case UBLOCK_CYRILLIC: /* =9, [0400] */
+ case UBLOCK_CYRILLIC_EXTENDED_A: /* =158, [2DE0] */
+ case UBLOCK_CYRILLIC_EXTENDED_B: /* =160, [A640] */
+ case UBLOCK_CYRILLIC_SUPPLEMENTARY: /* =97, UBLOCK_CYRILLIC_SUPPLEMENT = UBLOCK_CYRILLIC_SUPPLEMENTARY, [0500] */
type = CTSVC_LANG_RUSSIAN;
- // type = CTSVC_LANG_BULGARIAN: // bg, Bulgaria - Bulgarian
- // type = CTSVC_LANG_MACEDONIA: // mk, Macedonia
- // type = CTSVC_LANG_KAZAKHSTAN: // kk, Kazakhstan
- // type = CTSVC_LANG_SERBIAN: // sr, Serbia - Serbian
- // type = CTSVC_LANG_UKRAINE: // uk, Ukraine
+ /* type = CTSVC_LANG_BULGARIAN: */ /* bg, Bulgaria - Bulgarian */
+ /* type = CTSVC_LANG_MACEDONIA: */ /* mk, Macedonia */
+ /* type = CTSVC_LANG_KAZAKHSTAN: */ /* kk, Kazakhstan */
+ /* type = CTSVC_LANG_SERBIAN: */ /* sr, Serbia - Serbian */
+ /* type = CTSVC_LANG_UKRAINE: */ /* uk, Ukraine */
break;
- case UBLOCK_ARMENIAN: //=10, /*[0530]*/
+ case UBLOCK_ARMENIAN: /* =10, [0530] */
type = CTSVC_LANG_ARMENIAN;
break;
- case UBLOCK_ARABIC: //=12, /*[0600]*/
+ case UBLOCK_ARABIC: /* =12, [0600] */
type = CTSVC_LANG_ARABIC;
break;
- case UBLOCK_DEVANAGARI: // =15, /*[0900]*/
- case UBLOCK_DEVANAGARI_EXTENDED: // = 179, /*[A8E0]*/:
+ case UBLOCK_DEVANAGARI: /* =15, [0900] */
+ case UBLOCK_DEVANAGARI_EXTENDED: /* =179, [A8E0] */
type = CTSVC_LANG_HINDI;
break;
- case UBLOCK_GEORGIAN: //=29, /*[10A0]*/
- case UBLOCK_GEORGIAN_SUPPLEMENT: // = 135, /*[2D00]*/
+ case UBLOCK_GEORGIAN: /* =29, [10A0] */
+ case UBLOCK_GEORGIAN_SUPPLEMENT: /* =135, [2D00] */
type = CTSVC_LANG_GEORGIAN;
break;
- case UBLOCK_OLD_TURKIC: // = 191, /*[10C00]*/
+ case UBLOCK_OLD_TURKIC: /* =191, [10C00] */
type = CTSVC_LANG_TURKISH;
break;
- case UBLOCK_HALFWIDTH_AND_FULLWIDTH_FORMS: // =87, /*[FF00]*/ // hangul : FFA0 ~ FFDC
+ case UBLOCK_HALFWIDTH_AND_FULLWIDTH_FORMS: /* =87, [FF00] hangul : FFA0 ~ FFDC */
{
if (CTSVC_COMPARE_BETWEEN((UChar)0xFF21, word[0], (UChar)0xFF3A)
|| CTSVC_COMPARE_BETWEEN((UChar)0xFF41, word[0], (UChar)0xFF5A))
return type;
}
-// check language type by first word(char*) using UBLOCK
+/* check language type by first word(char*) using UBLOCK */
int ctsvc_check_language_type(const char *src)
{
int length = 0;
u_strFromUTF8(tmp_result, array_sizeof(tmp_result), NULL, temp, -1, &status);
RETVM_IF(U_FAILURE(status), CONTACTS_ERROR_SYSTEM,
- "u_strFromUTF8() Failed(%s)", u_errorName(status));
+ "u_strFromUTF8() Fail(%s)", u_errorName(status));
u_strToUpper(tmp_result, array_sizeof(tmp_result), tmp_result, -1, NULL, &status);
RETVM_IF(U_FAILURE(status), CONTACTS_ERROR_SYSTEM,
- "u_strToLower() Failed(%s)", u_errorName(status));
+ "u_strToLower() Fail(%s)", u_errorName(status));
unorm_normalize(tmp_result, -1, UNORM_NFD, 0,
(UChar *)result, array_sizeof(result), &status);
RETVM_IF(U_FAILURE(status), CONTACTS_ERROR_SYSTEM,
- "unorm_normalize(%s) Failed(%s)", src, u_errorName(status));
+ "unorm_normalize(%s) Fail(%s)", src, u_errorName(status));
CTS_VERBOSE("0x%x%x", (0xFF00 & (tmp_result[0])) >> 8, (0xFF & (tmp_result[0])));
* limitations under the License.
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_LOCALIZE_UTILS_H__
-#define __TIZEN_SOCIAL_CTSVC_LOCALIZE_UTILS_H__
+#ifndef __CTSVC_LOCALIZE_UTILS_H__
+#define __CTSVC_LOCALIZE_UTILS_H__
#include <unicode/utypes.h>
int ctsvc_check_language(UChar *word);
int ctsvc_check_language_type(const char *src);
-#endif // __TIZEN_SOCIAL_CTSVC_LOCALIZE_UTILS_H__
+#endif /* __CTSVC_LOCALIZE_UTILS_H__ */
\ No newline at end of file
static pthread_mutex_t conn_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t sockfd_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t trans_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t ipc_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t ipc_pubsub_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t access_control_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t handle_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t timeout_mutex = PTHREAD_MUTEX_INITIALIZER;
+
static int __old_type = 0;
static int __defered_ref = 0;
case CTS_MUTEX_SOCKET_FD:
ret_val = &sockfd_mutex;
break;
- case CTS_MUTEX_TRANSACTION:
- ret_val = &trans_mutex;
- break;
case CTS_MUTEX_PIMS_IPC_CALL:
ret_val = &ipc_mutex;
break;
case CTS_MUTEX_ACCESS_CONTROL:
ret_val = &access_control_mutex;
break;
+ case CTS_MUTEX_HANDLE:
+ ret_val = &handle_mutex;
+ break;
+ case CTS_MUTEX_TIMEOUT:
+ ret_val = &timeout_mutex;
+ break;
default:
CTS_ERR("unknown type(%d)", type);
ret_val = NULL;
int ret;
pthread_mutex_t *mutex;
- // If user use pthread_cancel, lock can be occured
- // protect it, call pthread_set_canceltype as PTHREAD_CANCEL_DEFERRED
- // But, if another module call PTHREAD_CANCEL_ASYNCHRONOUS,
- // it can be occured again
- // So, Do not use the pthread_cancel with contacts_service API
+ /*
+ * If user use pthread_cancel, lock can be occured
+ * protect it, call pthread_set_canceltype as PTHREAD_CANCEL_DEFERRED
+ * But, if another module call PTHREAD_CANCEL_ASYNCHRONOUS,
+ * it can be occured again
+ * So, Do not use the pthread_cancel with contacts_service API
+ */
if (__defered_ref == 0)
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &__old_type);
else
if (__ctsvc_mutex_funtions.lock) {
ret = __ctsvc_mutex_funtions.lock(mutex);
- WARN_IF(ret, "mutex_lock Failed(%d)", ret);
+ WARN_IF(ret, "mutex_lock Fail(%d)", ret);
}
}
if (__ctsvc_mutex_funtions.unlock) {
ret = __ctsvc_mutex_funtions.unlock(mutex);
- WARN_IF(ret, "mutex_unlock Failed(%d)", ret);
+ WARN_IF(ret, "mutex_unlock Fail(%d)", ret);
}
__defered_ref--;
CTS_MUTEX_CONNECTION,
CTS_MUTEX_UPDTATED_LIST_MEMPOOL,
CTS_MUTEX_SOCKET_FD,
- CTS_MUTEX_TRANSACTION,
CTS_MUTEX_PIMS_IPC_CALL,
CTS_MUTEX_PIMS_IPC_PUBSUB,
CTS_MUTEX_ACCESS_CONTROL,
+ CTS_MUTEX_HANDLE,
+ CTS_MUTEX_TIMEOUT,
};
void ctsvc_mutex_lock(int type);
void ctsvc_mutex_unlock(int type);
-#endif //__CTSVC_MUTEX_H__
+#endif /* __CTSVC_MUTEX_H__ */
\ No newline at end of file
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_NOTIFY_H__
-#define __TIZEN_SOCIAL_CTSVC_NOTIFY_H__
+#ifndef __CTSVC_NOTIFY_H__
+#define __CTSVC_NOTIFY_H__
#define CTSVC_NOTI_IPC_READY "/opt/usr/data/contacts-svc/.CONTACTS_SVC_IPC_READY"
#define CTSVC_NOTI_ADDRESSBOOK_CHANGED "/opt/usr/data/contacts-svc/.CONTACTS_SVC_AB_CHANGED"
#define CTSVC_SETTING_DISPLAY_ORDER_CHANGED "contacts.setting.display_order"
#define CTSVC_SETTING_SORTING_ORDER_CHANGED "contacts.setting.sorting_order"
-#endif /* __TIZEN_SOCIAL_CTSVC_NOTIFY_H__ */
+#endif /* __CTSVC_NOTIFY_H__ */
*
*/
-#include <glib.h>
-
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_query.h"
#include "ctsvc_filter.h"
typedef enum {
return false;
}
-API int contacts_query_create( const char* view_uri, contacts_query_h* out_query )
+API int contacts_query_create(const char* view_uri, contacts_query_h* out_query)
{
ctsvc_query_s *query;
free(query_s->projection);
query_s->projection = calloc(count, sizeof(unsigned int));
- RETVM_IF(NULL == query_s->projection, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
+ if (NULL == query_s->projection) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
memcpy(query_s->projection, property_ids, sizeof(unsigned int) * count);
query_s->projection_count = count;
return CONTACTS_ERROR_NONE;
}
-API int contacts_query_destroy( contacts_query_h query )
+API int contacts_query_destroy(contacts_query_h query)
{
ctsvc_query_s *s_query;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
*
*/
-#include <glib.h>
-
#include "contacts.h"
#include "ctsvc_internal.h"
#include "ctsvc_record.h"
extern ctsvc_record_plugin_cb_s nickname_plugin_cbs;
extern ctsvc_record_plugin_cb_s email_plugin_cbs;
extern ctsvc_record_plugin_cb_s result_plugin_cbs;
-#ifdef ENABLE_SIM_FEATURE
extern ctsvc_record_plugin_cb_s sdn_plugin_cbs;
extern ctsvc_record_plugin_cb_s speeddial_plugin_cbs;
-#endif // ENABLE_SIM_FEATURE
extern ctsvc_record_plugin_cb_s extension_plugin_cbs;
#ifdef ENABLE_LOG_FEATURE
extern ctsvc_record_plugin_cb_s phonelog_plugin_cbs;
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
static const ctsvc_record_plugin_cb_s *__ctsvc_record_get_plugin_cb(int r_type)
{
#ifdef ENABLE_LOG_FEATURE
case CTSVC_RECORD_PHONELOG:
return &phonelog_plugin_cbs;
-#endif // ENABLE_LOG_FEATURE
-#ifdef ENABLE_SIM_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
case CTSVC_RECORD_SPEEDDIAL:
return &speeddial_plugin_cbs;
case CTSVC_RECORD_SDN:
return &sdn_plugin_cbs;
-#endif // ENABLE_SIM_FEATURE
case CTSVC_RECORD_UPDATED_INFO:
return &updated_info_plugin_cbs;
case CTSVC_RECORD_RESULT:
CTS_ERR("Invalid parameter: Operation restricted."); \
return CONTACTS_ERROR_INVALID_PARAMETER;
-// This function is used for view_uri which is able to CRUD.
-// The view_uri's property should be sequencial value because it is used to find index at the below logic.
+/*
+ * This function is used for view_uri which is able to CRUD.
+ * The view_uri's property should be sequencial value because it is used to find index at the below logic.
+ */
bool ctsvc_record_check_property_flag(const ctsvc_record_s* s_record, unsigned int property_id, contacts_property_flag_e flag)
{
int index = property_id & 0x000000FF;
if (CTSVC_RECORD_RESULT == s_record->r_type)
return true;
- // Check it when getting value of property
- // property_flag and properties_flags is set when getting record with query
+ /*
+ * Check it when getting value of property
+ * property_flag and properties_flags is set when getting record with query
+ */
if (CTSVC_PROPERTY_FLAG_PROJECTION == flag) {
- // all property get.
+ /* all property get. */
if (NULL == s_record->properties_flags)
return true;
- // Or before inserting record from DB, just get after setting.
- // properties_flags is not NULL when just setting dirty
+ /*
+ * Or before inserting record from DB, just get after setting.
+ * properties_flags is not NULL when just setting dirty
+ */
if (0 == (CTSVC_PROPERTY_FLAG_PROJECTION & s_record->property_flag))
return true;
}
- // Check it when updating record
+ /* Check it when updating record */
if (CTSVC_PROPERTY_FLAG_DIRTY == flag) {
- // all property is clean
+ /* all property is clean */
if (NULL == s_record->properties_flags)
return false;
}
- return ( s_record->properties_flags[index] & flag) ? true : false;
+ return (s_record->properties_flags[index] & flag) ? true : false;
}
int ctsvc_record_set_property_flag(ctsvc_record_s* _record, int property_id, contacts_property_flag_e flag)
}
#define __CHECK_READ_ONLY_PROPERTY() \
- if( CTSVC_READ_ONLY_CHECK(property_id, CTSVC_READ_ONLY_PROPERTY) ) \
- { \
+ if (CTSVC_READ_ONLY_CHECK(property_id, CTSVC_READ_ONLY_PROPERTY)) { \
CTS_ERR("Invalid parameter: Don't try to change read-only property.(0x%0x)", property_id); \
return CONTACTS_ERROR_INVALID_PARAMETER; \
}
#define __CHECK_PROJECTED_PROPERTY() \
- if( false == ctsvc_record_check_property_flag( s_record, property_id, CTSVC_PROPERTY_FLAG_PROJECTION ) ) \
- { \
+ if (false == ctsvc_record_check_property_flag(s_record, property_id, CTSVC_PROPERTY_FLAG_PROJECTION)) { \
CTS_ERR("Invalid parameter: Don't try to get un-projected property(0x%0x).", property_id); \
return CONTACTS_ERROR_INVALID_PARAMETER; \
}
-// Record constuct/destruct
-API int contacts_record_create( const char* view_uri, contacts_record_h* out_record )
+/* Record constuct/destruct */
+API int contacts_record_create(const char* view_uri, contacts_record_h* out_record)
{
int ret;
ctsvc_record_type_e r_type;
const ctsvc_record_plugin_cb_s *plugin_cb;
+ RETV_IF(NULL == view_uri, CONTACTS_ERROR_INVALID_PARAMETER);
RETV_IF(NULL == out_record, CONTACTS_ERROR_INVALID_PARAMETER);
*out_record = NULL;
plugin_cb = __ctsvc_record_get_plugin_cb(r_type);
if (plugin_cb && plugin_cb->create) {
ret = plugin_cb->create(out_record);
- if( CONTACTS_ERROR_NONE == ret ) {
+ if (CONTACTS_ERROR_NONE == ret) {
CTSVC_RECORD_INIT_BASE((ctsvc_record_s*)*out_record, r_type, plugin_cb, ctsvc_view_get_uri(view_uri));
}
return ret;
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_destroy( contacts_record_h record, bool delete_child )
+API int contacts_record_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_record_s *s_record;
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_clone( contacts_record_h record, contacts_record_h* out_record )
+API int contacts_record_clone(contacts_record_h record, contacts_record_h* out_record)
{
ctsvc_record_s *s_record;
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_get_uri_p( contacts_record_h record, const char** out_str )
+API int contacts_record_get_uri_p(contacts_record_h record, const char** out_str)
{
int ret = CONTACTS_ERROR_NONE;
return ret;
}
-// Record get/set int,str, etc..
-API int contacts_record_get_str( contacts_record_h record, unsigned int property_id, char** out_str )
+/* Record get/set int,str, etc.. */
+API int contacts_record_get_str(contacts_record_h record, unsigned int property_id, char** out_str)
{
ctsvc_record_s *s_record;
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_get_lli( contacts_record_h record, unsigned int property_id, long long int *value )
+API int contacts_record_get_lli(contacts_record_h record, unsigned int property_id, long long int *value)
{
ctsvc_record_s *s_record;
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_get_double( contacts_record_h record, unsigned int property_id, double *value )
+API int contacts_record_get_double(contacts_record_h record, unsigned int property_id, double *value)
{
ctsvc_record_s *s_record;
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_get_str_p( contacts_record_h record, unsigned int property_id, char** out_str )
+API int contacts_record_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str)
{
ctsvc_record_s *s_record;
__CHECK_PROJECTED_PROPERTY();
if (s_record->plugin_cbs && s_record->plugin_cbs->get_str_p)
- return s_record->plugin_cbs->get_str_p(record, property_id, out_str );
+ return s_record->plugin_cbs->get_str_p(record, property_id, out_str);
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_get_int( contacts_record_h record, unsigned int property_id, int* out_value )
+API int contacts_record_get_int(contacts_record_h record, unsigned int property_id, int* out_value)
{
ctsvc_record_s *s_record;
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_set_str( contacts_record_h record, unsigned int property_id, const char* value )
+API int contacts_record_set_str(contacts_record_h record, unsigned int property_id, const char* value)
{
RETV_IF(NULL == record, CONTACTS_ERROR_INVALID_PARAMETER);
return ctsvc_record_set_str(record, property_id, value);
}
-int ctsvc_record_set_str( contacts_record_h record, unsigned int property_id, const char* value )
+int ctsvc_record_set_str(contacts_record_h record, unsigned int property_id, const char* value)
{
char *str;
ctsvc_record_s *s_record;
str = NULL;
if (s_record->plugin_cbs && s_record->plugin_cbs->set_str) {
- ret = s_record->plugin_cbs->set_str(record, property_id, str);
- if (CONTACTS_ERROR_NONE == ret)
+ bool is_dirty = false;
+ ret = s_record->plugin_cbs->set_str(record, property_id, str, &is_dirty);
+ if (CONTACTS_ERROR_NONE == ret && is_dirty)
ctsvc_record_set_property_flag(s_record, property_id, CTSVC_PROPERTY_FLAG_DIRTY);
return ret;
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_get_bool( contacts_record_h record, unsigned int property_id, bool* value )
+API int contacts_record_get_bool(contacts_record_h record, unsigned int property_id, bool* value)
{
ctsvc_record_s *s_record;
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_set_bool( contacts_record_h record, unsigned int property_id, bool value )
+API int contacts_record_set_bool(contacts_record_h record, unsigned int property_id, bool value)
{
RETV_IF(NULL == record, CONTACTS_ERROR_INVALID_PARAMETER);
return ctsvc_record_set_bool(record, property_id, value);
}
-int ctsvc_record_set_bool( contacts_record_h record, unsigned int property_id, bool value )
+int ctsvc_record_set_bool(contacts_record_h record, unsigned int property_id, bool value)
{
int ret;
ctsvc_record_s *s_record;
__CHECK_PROJECTED_PROPERTY();
if (s_record->plugin_cbs && s_record->plugin_cbs->set_bool) {
- ret = s_record->plugin_cbs->set_bool(record, property_id, value);
- if (CONTACTS_ERROR_NONE == ret)
+ bool is_dirty = false;
+ ret = s_record->plugin_cbs->set_bool(record, property_id, value, &is_dirty);
+ if (CONTACTS_ERROR_NONE == ret && is_dirty)
ctsvc_record_set_property_flag(s_record, property_id, CTSVC_PROPERTY_FLAG_DIRTY);
return ret;
}
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_set_int( contacts_record_h record, unsigned int property_id, int value )
+API int contacts_record_set_int(contacts_record_h record, unsigned int property_id, int value)
{
RETV_IF(NULL == record, CONTACTS_ERROR_INVALID_PARAMETER);
return ctsvc_record_set_int(record, property_id, value);
}
-int ctsvc_record_set_int( contacts_record_h record, unsigned int property_id, int value )
+int ctsvc_record_set_int(contacts_record_h record, unsigned int property_id, int value)
{
int ret;
ctsvc_record_s *s_record;
__CHECK_PROJECTED_PROPERTY();
if (s_record->plugin_cbs && s_record->plugin_cbs->set_int) {
- ret = s_record->plugin_cbs->set_int(record, property_id, value);
- if (CONTACTS_ERROR_NONE == ret)
+ bool is_dirty = false;
+ ret = s_record->plugin_cbs->set_int(record, property_id, value, &is_dirty);
+ if (CONTACTS_ERROR_NONE == ret && is_dirty)
ctsvc_record_set_property_flag(s_record, property_id, CTSVC_PROPERTY_FLAG_DIRTY);
return ret;
}
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_set_lli( contacts_record_h record, unsigned int property_id, long long int value )
+API int contacts_record_set_lli(contacts_record_h record, unsigned int property_id, long long int value)
{
RETV_IF(NULL == record, CONTACTS_ERROR_INVALID_PARAMETER);
return ctsvc_record_set_lli(record, property_id, value);
}
-int ctsvc_record_set_lli( contacts_record_h record, unsigned int property_id, long long int value )
+int ctsvc_record_set_lli(contacts_record_h record, unsigned int property_id, long long int value)
{
int ret;
ctsvc_record_s *s_record;
__CHECK_PROJECTED_PROPERTY();
if (s_record->plugin_cbs && s_record->plugin_cbs->set_lli) {
- ret = s_record->plugin_cbs->set_lli(record, property_id, value);
- if (CONTACTS_ERROR_NONE == ret)
+ bool is_dirty = false;
+ ret = s_record->plugin_cbs->set_lli(record, property_id, value, &is_dirty);
+ if (CONTACTS_ERROR_NONE == ret && is_dirty)
ctsvc_record_set_property_flag(s_record, property_id, CTSVC_PROPERTY_FLAG_DIRTY);
return ret;
}
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_set_double( contacts_record_h record, unsigned int property_id, double value )
+API int contacts_record_set_double(contacts_record_h record, unsigned int property_id, double value)
{
RETV_IF(NULL == record, CONTACTS_ERROR_INVALID_PARAMETER);
return ctsvc_record_set_double(record, property_id, value);
}
-int ctsvc_record_set_double( contacts_record_h record, unsigned int property_id, double value )
+int ctsvc_record_set_double(contacts_record_h record, unsigned int property_id, double value)
{
int ret;
ctsvc_record_s *s_record;
__CHECK_PROJECTED_PROPERTY();
if (s_record->plugin_cbs && s_record->plugin_cbs->set_double) {
- ret = s_record->plugin_cbs->set_double(record, property_id, value);
- if (CONTACTS_ERROR_NONE == ret)
+ bool is_dirty = false;
+ ret = s_record->plugin_cbs->set_double(record, property_id, value, &is_dirty);
+ if (CONTACTS_ERROR_NONE == ret && is_dirty)
ctsvc_record_set_property_flag(s_record, property_id, CTSVC_PROPERTY_FLAG_DIRTY);
return ret;
}
__INVALID_PARAMETER_ERROR_HANDLING();
}
-// Record get/set child records
-API int contacts_record_add_child_record( contacts_record_h record,
- unsigned int property_id, contacts_record_h child_record )
+/* Record get/set child records */
+API int contacts_record_add_child_record(contacts_record_h record,
+ unsigned int property_id, contacts_record_h child_record)
{
ctsvc_record_s *s_record;
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_remove_child_record( contacts_record_h record,
- unsigned int property_id, contacts_record_h child_record )
+API int contacts_record_remove_child_record(contacts_record_h record,
+ unsigned int property_id, contacts_record_h child_record)
{
ctsvc_record_s *s_record;
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_get_child_record_count( contacts_record_h record,
- unsigned int property_id, int *count )
+API int contacts_record_get_child_record_count(contacts_record_h record,
+ unsigned int property_id, int *count)
{
ctsvc_record_s *s_record;
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_get_child_record_at_p( contacts_record_h record,
- unsigned int property_id, int index, contacts_record_h* out_record )
+API int contacts_record_get_child_record_at_p(contacts_record_h record,
+ unsigned int property_id, int index, contacts_record_h* out_record)
{
ctsvc_record_s *s_record;
__INVALID_PARAMETER_ERROR_HANDLING();
}
-API int contacts_record_clone_child_record_list( contacts_record_h record,
- unsigned int property_id, contacts_list_h* out_list )
+API int contacts_record_clone_child_record_list(contacts_record_h record,
+ unsigned int property_id, contacts_list_h* out_list)
{
ctsvc_record_s *s_record;
__INVALID_PARAMETER_ERROR_HANDLING();
}
-int ctsvc_record_set_projection_flags( contacts_record_h record, const unsigned int *projection, const unsigned int projection_count, const unsigned int property_max_count)
+int ctsvc_record_set_projection_flags(contacts_record_h record, const unsigned int *projection, const unsigned int projection_count, const unsigned int property_max_count)
{
int i;
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_RECORD_H__
-#define __TIZEN_SOCIAL_CTSVC_RECORD_H__
+#ifndef __CTSVC_RECORD_H__
+#define __CTSVC_RECORD_H__
#define CTSVC_RECORD_INIT_BASE(base, type, cb, uri) do {\
- (base)->r_type = (type);\
- (base)->plugin_cbs = (cb);\
- (base)->view_uri = (uri);\
- (base)->property_max_count = 0;\
+ (base)->r_type = (type);\
+ (base)->plugin_cbs = (cb);\
+ (base)->view_uri = (uri);\
+ (base)->property_max_count = 0;\
} while (0)
-#define CTSVC_RECORD_COPY_BASE(dest, src) do {\
- (dest)->r_type = (src)->r_type;\
- (dest)->plugin_cbs = (src)->plugin_cbs;\
- (dest)->view_uri = (src)->view_uri;\
- (dest)->property_max_count = (src)->property_max_count;\
- (dest)->property_flag = (src)->property_flag;\
- if ((src)->properties_flags) \
- {\
- (dest)->properties_flags = calloc((dest)->property_max_count, sizeof(char));\
- if ((dest)->properties_flags) { \
- memcpy((dest)->properties_flags,(src)->properties_flags,sizeof(char)*(dest)->property_max_count);\
- } \
- }\
-} while (0)
+static inline int ctsvc_record_copy_base(ctsvc_record_s *dest, ctsvc_record_s *src)
+{
+ dest->r_type = src->r_type;
+ dest->plugin_cbs = src->plugin_cbs;
+ dest->view_uri = src->view_uri;
+ dest->property_max_count = src->property_max_count;
+ dest->property_flag = src->property_flag;
+ if (src->properties_flags) {
+ dest->properties_flags = calloc(dest->property_max_count, sizeof(char));
+ if (NULL == dest->properties_flags) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+ if (dest->properties_flags) {
+ memcpy(dest->properties_flags,src->properties_flags,sizeof(char)*dest->property_max_count);
+ }
+ }
+ return CONTACTS_ERROR_NONE;
+}
#define CTSVC_RECORD_RESET_PROPERTY_FLAGS(base)do {\
- if ((base)->properties_flags) \
- {\
- free((base)->properties_flags); \
- (base)->property_max_count = 0;\
- (base)->properties_flags = NULL;\
- (base)->property_flag = 0;\
- }\
+ if ((base)->properties_flags) \
+ {\
+ free((base)->properties_flags); \
+ (base)->property_max_count = 0;\
+ (base)->properties_flags = NULL;\
+ (base)->property_flag = 0;\
+ }\
} while (0)
int ctsvc_record_set_property_flag(ctsvc_record_s* _record, int property_id, contacts_property_flag_e flag);
-int ctsvc_record_set_projection_flags( contacts_record_h record, const unsigned int *projection, const unsigned int projection_count, const unsigned int property_max_count);
-int ctsvc_record_set_str( contacts_record_h record, unsigned int property_id, const char* value );
-int ctsvc_record_set_bool( contacts_record_h record, unsigned int property_id, bool value );
-int ctsvc_record_set_int( contacts_record_h record, unsigned int property_id, int value );
-int ctsvc_record_set_lli( contacts_record_h record, unsigned int property_id, long long int value );
-int ctsvc_record_set_double( contacts_record_h record, unsigned int property_id, double value );
+int ctsvc_record_set_projection_flags(contacts_record_h record, const unsigned int *projection, const unsigned int projection_count, const unsigned int property_max_count);
+int ctsvc_record_set_str(contacts_record_h record, unsigned int property_id, const char* value);
+int ctsvc_record_set_bool(contacts_record_h record, unsigned int property_id, bool value);
+int ctsvc_record_set_int(contacts_record_h record, unsigned int property_id, int value);
+int ctsvc_record_set_lli(contacts_record_h record, unsigned int property_id, long long int value);
+int ctsvc_record_set_double(contacts_record_h record, unsigned int property_id, double value);
bool ctsvc_record_check_property_flag(const ctsvc_record_s* s_record, unsigned int property_id, contacts_property_flag_e flag);
-#endif /* __TIZEN_SOCIAL_CTSVC_RECORD_H__ */
+#endif /* __CTSVC_RECORD_H__ */
*
*/
-#include <glib.h>
-
#include "contacts.h"
#include "ctsvc_internal.h"
static int __ctsvc_addressbook_create(contacts_record_h *out_record);
static int __ctsvc_addressbook_destroy(contacts_record_h record, bool delete_child);
-static int __ctsvc_addressbook_clone( contacts_record_h record, contacts_record_h* out_record );
+static int __ctsvc_addressbook_clone(contacts_record_h record, contacts_record_h* out_record);
static int __ctsvc_addressbook_get_int(contacts_record_h record, unsigned int property_id, int *out);
static int __ctsvc_addressbook_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
static int __ctsvc_addressbook_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_addressbook_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_addressbook_set_str(contacts_record_h record, unsigned int property_id, const char* str);
+static int __ctsvc_addressbook_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_addressbook_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
ctsvc_record_plugin_cb_s addressbook_plugin_cbs = {
.create = __ctsvc_addressbook_create,
{
ctsvc_addressbook_s *addressbook = (ctsvc_addressbook_s*)record;
- addressbook->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ addressbook->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(addressbook->base.properties_flags);
free(addressbook->name);
free(addressbook);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_addressbook_clone( contacts_record_h record, contacts_record_h* out_record )
+static int __ctsvc_addressbook_clone(contacts_record_h record, contacts_record_h* out_record)
{
ctsvc_addressbook_s *src = (ctsvc_addressbook_s*)record;
ctsvc_addressbook_s *dest;
RETVM_IF(NULL == dest, CONTACTS_ERROR_OUT_OF_MEMORY,
"Out of memory : calloc is failed");
- CTSVC_RECORD_COPY_BASE(&(dest->base), &(src->base));
+ int ret = ctsvc_record_copy_base(&(dest->base), &(src->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ free(dest);
+ return ret;
+ }
dest->id = src->id;
dest->account_id = src->account_id;
}
static int __ctsvc_addressbook_get_str_real(contacts_record_h record,
- unsigned int property_id, char** out_str, bool copy )
+ unsigned int property_id, char** out_str, bool copy)
{
ctsvc_addressbook_s *addressbook = (ctsvc_addressbook_s*)record;
}
static int __ctsvc_addressbook_set_str(contacts_record_h record,
- unsigned int property_id, const char* str )
+ unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_addressbook_s *addressbook = (ctsvc_addressbook_s*)record;
switch(property_id) {
case CTSVC_PROPERTY_ADDRESSBOOK_NAME:
+ CHECK_DIRTY_STR(addressbook->name, str, is_dirty);
FREEandSTRDUP(addressbook->name, str);
break;
default :
}
static int __ctsvc_addressbook_set_int(contacts_record_h record,
- unsigned int property_id, int value)
+ unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_addressbook_s *addressbook = (ctsvc_addressbook_s*)record;
switch(property_id) {
case CTSVC_PROPERTY_ADDRESSBOOK_ID:
+ CHECK_DIRTY_VAL(addressbook->id, value, is_dirty);
addressbook->id = value;
break;
case CTSVC_PROPERTY_ADDRESSBOOK_MODE:
RETVM_IF(value != CONTACTS_ADDRESS_BOOK_MODE_NONE
&& value != CONTACTS_ADDRESS_BOOK_MODE_READONLY,
CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : address_book mode is %d", value);
+ CHECK_DIRTY_VAL(addressbook->mode, value, is_dirty);
addressbook->mode = value;
break;
case CTSVC_PROPERTY_ADDRESSBOOK_ACCOUNT_ID:
- RETVM_IF(addressbook->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < addressbook->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (addressbook)", property_id);
+ CHECK_DIRTY_VAL(addressbook->account_id, value, is_dirty);
addressbook->account_id = value;
break;
default:
static int __ctsvc_activity_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_activity_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_activity_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_activity_get_str(contacts_record_h record, unsigned int property_id, char** out_str );
+static int __ctsvc_activity_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
static int __ctsvc_activity_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_activity_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_activity_set_str(contacts_record_h record, unsigned int property_id, const char* str );
-static int __ctsvc_activity_add_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record );
-static int __ctsvc_activity_remove_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record );
-static int __ctsvc_activity_get_child_record_count(contacts_record_h record, unsigned int property_id, int *count );
-static int __ctsvc_activity_get_child_record_at_p(contacts_record_h record, unsigned int property_id, int index, contacts_record_h* out_record );
-static int __ctsvc_activity_clone_child_record_list(contacts_record_h record, unsigned int property_id, contacts_list_h* out_list );
+static int __ctsvc_activity_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_activity_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
+static int __ctsvc_activity_add_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record);
+static int __ctsvc_activity_remove_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record);
+static int __ctsvc_activity_get_child_record_count(contacts_record_h record, unsigned int property_id, int *count);
+static int __ctsvc_activity_get_child_record_at_p(contacts_record_h record, unsigned int property_id, int index, contacts_record_h* out_record);
+static int __ctsvc_activity_clone_child_record_list(contacts_record_h record, unsigned int property_id, contacts_list_h* out_list);
static int __ctsvc_activity_photo_create(contacts_record_h *out_record);
static int __ctsvc_activity_photo_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_activity_photo_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_activity_photo_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_activity_photo_get_str(contacts_record_h record, unsigned int property_id, char** out_str );
+static int __ctsvc_activity_photo_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
static int __ctsvc_activity_photo_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_activity_photo_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_activity_photo_set_str(contacts_record_h record, unsigned int property_id, const char* str );
+static int __ctsvc_activity_photo_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_activity_photo_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
static int __ctsvc_address_create(contacts_record_h *out_ecord);
static int __ctsvc_address_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_address_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_address_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_address_get_str(contacts_record_h record, unsigned int property_id, char** out_str );
+static int __ctsvc_address_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
static int __ctsvc_address_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_address_get_bool(contacts_record_h record, unsigned int property_id, bool *value );
-static int __ctsvc_address_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_address_set_str(contacts_record_h record, unsigned int property_id, const char* str );
-static int __ctsvc_address_set_bool(contacts_record_h record, unsigned int property_id, bool value);
+static int __ctsvc_address_get_bool(contacts_record_h record, unsigned int property_id, bool *value);
+static int __ctsvc_address_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_address_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
+static int __ctsvc_address_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty);
static int __ctsvc_company_create(contacts_record_h *out_record);
static int __ctsvc_company_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_company_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_company_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_company_get_str(contacts_record_h record, unsigned int property_id, char** out_str );
+static int __ctsvc_company_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
static int __ctsvc_company_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_company_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_company_set_str(contacts_record_h record, unsigned int property_id, const char* str );
+static int __ctsvc_company_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_company_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
static int __ctsvc_contact_create(contacts_record_h *out_record);
static int __ctsvc_contact_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_contact_get_int(contacts_record_h record, unsigned int property_id, int *out);
static int __ctsvc_contact_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
static int __ctsvc_contact_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_contact_get_bool(contacts_record_h record, unsigned int property_id, bool *value );
-static int __ctsvc_contact_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_contact_set_str(contacts_record_h record, unsigned int property_id, const char* str );
-static int __ctsvc_contact_set_bool(contacts_record_h record, unsigned int property_id, bool value);
-static int __ctsvc_contact_clone_child_record_list(contacts_record_h record, unsigned int property_id, contacts_list_h* out_list );
-static int __ctsvc_contact_get_child_record_at_p(contacts_record_h record, unsigned int property_id, int index, contacts_record_h* out_record );
-static int __ctsvc_contact_get_child_record_count(contacts_record_h record, unsigned int property_id, int *count );
-static int __ctsvc_contact_add_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record );
-static int __ctsvc_contact_remove_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record );
+static int __ctsvc_contact_get_bool(contacts_record_h record, unsigned int property_id, bool *value);
+static int __ctsvc_contact_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_contact_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
+static int __ctsvc_contact_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty);
+static int __ctsvc_contact_clone_child_record_list(contacts_record_h record, unsigned int property_id, contacts_list_h* out_list);
+static int __ctsvc_contact_get_child_record_at_p(contacts_record_h record, unsigned int property_id, int index, contacts_record_h* out_record);
+static int __ctsvc_contact_get_child_record_count(contacts_record_h record, unsigned int property_id, int *count);
+static int __ctsvc_contact_add_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record);
+static int __ctsvc_contact_remove_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record);
static int __ctsvc_email_create(contacts_record_h *out_record);
static int __ctsvc_email_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_email_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_email_get_int(contacts_record_h record, unsigned int property_id, int *out);
static int __ctsvc_email_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_email_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_email_get_bool(contacts_record_h record, unsigned int property_id, bool *value );
-static int __ctsvc_email_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_email_set_str(contacts_record_h record, unsigned int property_id, const char* str );
-static int __ctsvc_email_set_bool(contacts_record_h record, unsigned int property_id, bool value);
+static int __ctsvc_email_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_email_get_bool(contacts_record_h record, unsigned int property_id, bool *value);
+static int __ctsvc_email_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_email_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
+static int __ctsvc_email_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty);
static int __ctsvc_event_create(contacts_record_h *out_record);
static int __ctsvc_event_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_event_get_int(contacts_record_h record, unsigned int property_id, int *out);
static int __ctsvc_event_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
static int __ctsvc_event_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_event_get_bool(contacts_record_h record, unsigned int property_id, bool *value );
-static int __ctsvc_event_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_event_set_str(contacts_record_h record, unsigned int property_id, const char* str );
-static int __ctsvc_event_set_bool(contacts_record_h record, unsigned int property_id, bool value);
+static int __ctsvc_event_get_bool(contacts_record_h record, unsigned int property_id, bool *value);
+static int __ctsvc_event_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_event_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
+static int __ctsvc_event_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty);
static int __ctsvc_extension_create(contacts_record_h *out_record);
static int __ctsvc_extension_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_extension_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_extension_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_extension_get_str(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_extension_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_extension_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_extension_set_str(contacts_record_h record, unsigned int property_id, const char* str );
+static int __ctsvc_extension_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_extension_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_extension_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_extension_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
static int __ctsvc_group_relation_create(contacts_record_h *out_record);
static int __ctsvc_group_relation_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_group_relation_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_group_relation_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_group_relation_get_str(contacts_record_h record, unsigned int property_id, char** out_str );
+static int __ctsvc_group_relation_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
static int __ctsvc_group_relation_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_group_relation_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_group_relation_set_str(contacts_record_h record, unsigned int property_id, const char* str );
+static int __ctsvc_group_relation_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_group_relation_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
static int __ctsvc_messenger_create(contacts_record_h *out_record);
static int __ctsvc_messenger_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_messenger_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_messenger_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_messenger_get_str(contacts_record_h record, unsigned int property_id, char** out_str );
+static int __ctsvc_messenger_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
static int __ctsvc_messenger_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_messenger_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_messenger_set_str(contacts_record_h record, unsigned int property_id, const char* str );
+static int __ctsvc_messenger_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_messenger_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
static int __ctsvc_name_create(contacts_record_h *out_record);
static int __ctsvc_name_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_name_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_name_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_name_get_str(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_name_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_name_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_name_set_str(contacts_record_h record, unsigned int property_id, const char* str );
+static int __ctsvc_name_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_name_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_name_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_name_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
static int __ctsvc_nickname_create(contacts_record_h *out_record);
static int __ctsvc_nickname_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_nickname_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_nickname_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_nickname_get_str(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_nickname_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_nickname_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_nickname_set_str(contacts_record_h record, unsigned int property_id, const char* str );
+static int __ctsvc_nickname_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_nickname_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_nickname_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_nickname_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
static int __ctsvc_note_create(contacts_record_h *out_record);
static int __ctsvc_note_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_note_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_note_get_int(contacts_record_h record, unsigned int property_id, int *out);
static int __ctsvc_note_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_note_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_note_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_note_set_str(contacts_record_h record, unsigned int property_id, const char* str );
+static int __ctsvc_note_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_note_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_note_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
static int __ctsvc_number_create(contacts_record_h *out_record);
static int __ctsvc_number_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_number_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_number_get_int(contacts_record_h record, unsigned int property_id, int *out);
static int __ctsvc_number_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_number_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_number_get_bool(contacts_record_h record, unsigned int property_id, bool *value );
-static int __ctsvc_number_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_number_set_str(contacts_record_h record, unsigned int property_id, const char* str );
-static int __ctsvc_number_set_bool(contacts_record_h record, unsigned int property_id, bool value);
+static int __ctsvc_number_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_number_get_bool(contacts_record_h record, unsigned int property_id, bool *value);
+static int __ctsvc_number_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_number_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
+static int __ctsvc_number_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty);
static int __ctsvc_profile_create(contacts_record_h *out_record);
static int __ctsvc_profile_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_profile_clone(contacts_record_h record, contacts_record_h *out_reord);
static int __ctsvc_profile_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_profile_get_str(contacts_record_h record, unsigned int property_id, char** out_str );
+static int __ctsvc_profile_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
static int __ctsvc_profile_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_profile_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_profile_set_str(contacts_record_h record, unsigned int property_id, const char* str );
+static int __ctsvc_profile_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_profile_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
static int __ctsvc_relationship_create(contacts_record_h *out_record);
static int __ctsvc_relationship_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_relationship_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_relationship_get_int(contacts_record_h record, unsigned int property_id, int *out);
static int __ctsvc_relationship_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_relationship_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_relationship_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_relationship_set_str(contacts_record_h record, unsigned int property_id, const char* str );
+static int __ctsvc_relationship_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_relationship_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_relationship_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
static int __ctsvc_image_create(contacts_record_h *out_record);
static int __ctsvc_image_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_image_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_image_get_int(contacts_record_h record, unsigned int property_id, int *out);
static int __ctsvc_image_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_image_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_image_get_bool(contacts_record_h record, unsigned int property_id, bool *value );
-static int __ctsvc_image_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_image_set_str(contacts_record_h record, unsigned int property_id, const char* str );
-static int __ctsvc_image_set_bool(contacts_record_h record, unsigned int property_id, bool value);
+static int __ctsvc_image_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_image_get_bool(contacts_record_h record, unsigned int property_id, bool *value);
+static int __ctsvc_image_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_image_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
+static int __ctsvc_image_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty);
static int __ctsvc_simple_contact_create(contacts_record_h *out_record);
static int __ctsvc_simple_contact_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_simple_contact_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_simple_contact_get_bool(contacts_record_h record, unsigned int property_id, bool *out);
static int __ctsvc_simple_contact_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_simple_contact_get_str(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_simple_contact_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_simple_contact_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_simple_contact_set_str(contacts_record_h record, unsigned int property_id, const char* str );
+static int __ctsvc_simple_contact_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_simple_contact_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_simple_contact_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_simple_contact_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
static int __ctsvc_url_create(contacts_record_h *out_record);
static int __ctsvc_url_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_url_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_url_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_url_get_str(contacts_record_h record, unsigned int property_id, char** out_str );
+static int __ctsvc_url_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
static int __ctsvc_url_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_url_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_url_set_str(contacts_record_h record, unsigned int property_id, const char* str );
+static int __ctsvc_url_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_url_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
static GHashTable *__ctsvc_temp_image_file_hash_table = NULL;
activity->photos = calloc(1, sizeof(ctsvc_list_s));
if (NULL == activity->photos) {
+ CTS_ERR("calloc() Fail");
free(activity);
- CTS_ERR("calloc() return NULL");
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
activity->photos->l_type = CTSVC_RECORD_ACTIVITY_PHOTO;
static int __ctsvc_name_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_name_s *name = (ctsvc_name_s*)record;
- name->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ name->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(name->base.properties_flags);
free(name->first);
if (NULL == __ctsvc_temp_image_file_hash_table) {
if (unlink(filename) < 0) {
- CTS_WARN("unlink Failed(%d)", errno);
+ CTS_WARN("unlink Fail(%d)", errno);
}
return;
}
count = GPOINTER_TO_INT(g_hash_table_lookup(__ctsvc_temp_image_file_hash_table, filename));
if (count < 1) {
if (unlink(filename) < 0) {
- CTS_WARN("unlink Failed(%d)", errno);
+ CTS_WARN("unlink Fail(%d)", errno);
}
}
else if (1 == count) {
static int __ctsvc_company_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_company_s *company = (ctsvc_company_s*)record;
- company->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ company->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(company->base.properties_flags);
free(company->label);
static int __ctsvc_note_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_note_s *note = (ctsvc_note_s*)record;
- note->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ note->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(note->base.properties_flags);
free(note->note);
static int __ctsvc_number_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_number_s *number = (ctsvc_number_s*)record;
- number->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ number->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(number->base.properties_flags);
free(number->label);
static int __ctsvc_email_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_email_s *email = (ctsvc_email_s*)record;
- email->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ email->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(email->base.properties_flags);
free(email->label);
static int __ctsvc_group_relation_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_group_relation_s *group = (ctsvc_group_relation_s*)record;
- group->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ group->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(group->base.properties_flags);
free(group->group_name);
static int __ctsvc_activity_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_activity_s *activity = (ctsvc_activity_s*)record;
- activity->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ activity->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(activity->base.properties_flags);
free(activity->source_name);
static int __ctsvc_activity_photo_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_activity_photo_s *photo = (ctsvc_activity_photo_s*)record;
- photo->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ photo->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(photo->base.properties_flags);
free(photo->photo_url);
static int __ctsvc_event_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_event_s *event = (ctsvc_event_s*)record;
- event->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ event->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(event->base.properties_flags);
free(event->label);
static int __ctsvc_address_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_address_s *address = (ctsvc_address_s*)record;
- address->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ address->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(address->base.properties_flags);
free(address->label);
static int __ctsvc_url_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_url_s *url = (ctsvc_url_s*)record;
- url->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ url->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(url->base.properties_flags);
free(url->label);
static int __ctsvc_nickname_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_nickname_s *nickname = (ctsvc_nickname_s*)record;
- nickname->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ nickname->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(nickname->base.properties_flags);
free(nickname->label);
static int __ctsvc_profile_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_profile_s *profile = (ctsvc_profile_s*)record;
- profile->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ profile->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(profile->base.properties_flags);
free(profile->uid);
static int __ctsvc_relationship_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_relationship_s *relationship = (ctsvc_relationship_s*)record;
- relationship->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ relationship->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(relationship->base.properties_flags);
free(relationship->label);
static int __ctsvc_image_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_image_s *image = (ctsvc_image_s*)record;
- image->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ image->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(image->base.properties_flags);
free(image->label);
static int __ctsvc_extension_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_extension_s *data = (ctsvc_extension_s*)record;
- data->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ data->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(data->base.properties_flags);
free(data->data2);
static int __ctsvc_simple_contact_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_simple_contact_s *contact= (ctsvc_simple_contact_s*)record;
- contact->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ contact->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(contact->base.properties_flags);
free(contact->display_name);
RETVM_IF(NULL == contact, CONTACTS_ERROR_OUT_OF_MEMORY,
"Out of memory : calloc is failed");
- contact->name = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == contact->name) {
- __ctsvc_contact_destroy((contacts_record_h)contact, true);
- CTS_ERR("calloc() return NULL");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- contact->name->l_type = CTSVC_RECORD_NAME;
-
- contact->company = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == contact->company) {
- __ctsvc_contact_destroy((contacts_record_h)contact, true);
- CTS_ERR("calloc() return NULL");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- contact->company->l_type = CTSVC_RECORD_COMPANY;
-
- contact->note = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == contact->note) {
- __ctsvc_contact_destroy((contacts_record_h)contact, true);
- CTS_ERR("calloc() return NULL");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- contact->note->l_type = CTSVC_RECORD_NOTE;
-
- contact->numbers = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == contact->numbers) {
- __ctsvc_contact_destroy((contacts_record_h)contact, true);
- CTS_ERR("calloc() return NULL");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- contact->numbers->l_type = CTSVC_RECORD_NUMBER;
-
- contact->emails = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == contact->emails) {
- __ctsvc_contact_destroy((contacts_record_h)contact, true);
- CTS_ERR("calloc() return NULL");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- contact->emails->l_type = CTSVC_RECORD_EMAIL;
-
- contact->grouprelations = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == contact->grouprelations) {
- __ctsvc_contact_destroy((contacts_record_h)contact, true);
- CTS_ERR("calloc() return NULL");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- contact->grouprelations->l_type = CTSVC_RECORD_GROUP_RELATION;
-
- contact->events = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == contact->events) {
- __ctsvc_contact_destroy((contacts_record_h)contact, true);
- CTS_ERR("calloc() return NULL");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- contact->events->l_type = CTSVC_RECORD_EVENT;
-
- contact->messengers = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == contact->messengers) {
- __ctsvc_contact_destroy((contacts_record_h)contact, true);
- CTS_ERR("calloc() return NULL");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- contact->messengers->l_type = CTSVC_RECORD_MESSENGER;
-
- contact->postal_addrs = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == contact->postal_addrs) {
- __ctsvc_contact_destroy((contacts_record_h)contact, true);
- CTS_ERR("calloc() return NULL");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- contact->postal_addrs->l_type = CTSVC_RECORD_ADDRESS;
-
- contact->urls = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == contact->urls) {
- __ctsvc_contact_destroy((contacts_record_h)contact, true);
- CTS_ERR("calloc() return NULL");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- contact->urls->l_type = CTSVC_RECORD_URL;
-
- contact->nicknames = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == contact->nicknames) {
- __ctsvc_contact_destroy((contacts_record_h)contact, true);
- CTS_ERR("calloc() return NULL");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- contact->nicknames->l_type = CTSVC_RECORD_NICKNAME;
-
- contact->profiles = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == contact->profiles) {
- __ctsvc_contact_destroy((contacts_record_h)contact, true);
- CTS_ERR("calloc() return NULL");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- contact->profiles->l_type = CTSVC_RECORD_PROFILE;
-
- contact->relationships = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == contact->relationships) {
- __ctsvc_contact_destroy((contacts_record_h)contact, true);
- CTS_ERR("calloc() return NULL");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- contact->relationships->l_type = CTSVC_RECORD_RELATIONSHIP;
-
- contact->images = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == contact->images) {
- __ctsvc_contact_destroy((contacts_record_h)contact, true);
- CTS_ERR("calloc() return NULL");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- contact->images->l_type = CTSVC_RECORD_IMAGE;
-
- contact->extensions = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == contact->extensions) {
- __ctsvc_contact_destroy((contacts_record_h)contact, true);
- CTS_ERR("calloc() return NULL");
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- contact->extensions->l_type = CTSVC_RECORD_EXTENSION;
-
- *out_record = (contacts_record_h)contact;
- return CONTACTS_ERROR_NONE;
+ do {
+ contact->name = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == contact->name)
+ break;
+ contact->name->l_type = CTSVC_RECORD_NAME;
+
+ contact->company = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == contact->company)
+ break;
+ contact->company->l_type = CTSVC_RECORD_COMPANY;
+
+ contact->note = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == contact->note)
+ break;
+ contact->note->l_type = CTSVC_RECORD_NOTE;
+
+ contact->numbers = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == contact->numbers)
+ break;
+ contact->numbers->l_type = CTSVC_RECORD_NUMBER;
+
+ contact->emails = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == contact->emails)
+ break;
+ contact->emails->l_type = CTSVC_RECORD_EMAIL;
+
+ contact->grouprelations = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == contact->grouprelations)
+ break;
+ contact->grouprelations->l_type = CTSVC_RECORD_GROUP_RELATION;
+
+ contact->events = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == contact->events)
+ break;
+ contact->events->l_type = CTSVC_RECORD_EVENT;
+
+ contact->messengers = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == contact->messengers)
+ break;
+ contact->messengers->l_type = CTSVC_RECORD_MESSENGER;
+
+ contact->postal_addrs = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == contact->postal_addrs)
+ break;
+ contact->postal_addrs->l_type = CTSVC_RECORD_ADDRESS;
+
+ contact->urls = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == contact->urls)
+ break;
+ contact->urls->l_type = CTSVC_RECORD_URL;
+
+ contact->nicknames = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == contact->nicknames)
+ break;
+ contact->nicknames->l_type = CTSVC_RECORD_NICKNAME;
+
+ contact->profiles = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == contact->profiles)
+ break;
+ contact->profiles->l_type = CTSVC_RECORD_PROFILE;
+
+ contact->relationships = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == contact->relationships)
+ break;
+ contact->relationships->l_type = CTSVC_RECORD_RELATIONSHIP;
+
+ contact->images = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == contact->images)
+ break;
+ contact->images->l_type = CTSVC_RECORD_IMAGE;
+
+ contact->extensions = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == contact->extensions)
+ break;
+ contact->extensions->l_type = CTSVC_RECORD_EXTENSION;
+
+ *out_record = (contacts_record_h)contact;
+ return CONTACTS_ERROR_NONE;
+ } while (0);
+
+ CTS_ERR("calloc() Fail");
+ free(contact->extensions);
+ free(contact->images);
+ free(contact->relationships);
+ free(contact->profiles);
+ free(contact->nicknames);
+ free(contact->urls);
+ free(contact->postal_addrs);
+ free(contact->messengers);
+ free(contact->events);
+ free(contact->grouprelations);
+ free(contact->emails);
+ free(contact->numbers);
+ free(contact->note);
+ free(contact->company);
+ free(contact->name);
+ free(contact);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
static int __ctsvc_contact_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_contact_s *contact = (ctsvc_contact_s*)record;
- contact->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ contact->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(contact->base.properties_flags);
free(contact->display_name);
}
static int __ctsvc_activity_add_child_record(contacts_record_h record,
- unsigned int property_id, contacts_record_h child_record )
+ unsigned int property_id, contacts_record_h child_record)
{
ctsvc_activity_s *s_activity = (ctsvc_activity_s *)record;
ctsvc_activity_photo_s *s_activity_photo = (ctsvc_activity_photo_s *)child_record;
}
static int __ctsvc_activity_remove_child_record(contacts_record_h record,
- unsigned int property_id, contacts_record_h child_record )
+ unsigned int property_id, contacts_record_h child_record)
{
ctsvc_activity_s *s_activity = (ctsvc_activity_s *)record;
ctsvc_activity_photo_s *s_activity_photo = (ctsvc_activity_photo_s *)child_record;
}
static int __ctsvc_activity_get_child_record_count(contacts_record_h record,
- unsigned int property_id, int *count )
+ unsigned int property_id, int *count)
{
ctsvc_activity_s *s_activity = (ctsvc_activity_s *)record;
RETVM_IF(property_id != CTSVC_PROPERTY_ACTIVITY_ACTIVITY_PHOTO, CONTACTS_ERROR_INVALID_PARAMETER, "property_id(%d) is not supported", property_id);
}
static int __ctsvc_activity_get_child_record_at_p(contacts_record_h record,
- unsigned int property_id, int index, contacts_record_h* out_record )
+ unsigned int property_id, int index, contacts_record_h* out_record)
{
int count = 0;
ctsvc_activity_s *s_activity = (ctsvc_activity_s *)record;
static int __ctsvc_activity_clone_child_record_list(contacts_record_h record,
- unsigned int property_id, contacts_list_h* out_list )
+ unsigned int property_id, contacts_list_h* out_list)
{
int count;
ctsvc_activity_s *s_activity = (ctsvc_activity_s *)record;
}
-static int __ctsvc_contact_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_contact_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_contact_s *contact = (ctsvc_contact_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_CONTACT_ID:
+ CHECK_DIRTY_VAL(contact->id, value, is_dirty);
contact->id = value;
break;
case CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID:
+ CHECK_DIRTY_VAL(contact->display_source_type, value, is_dirty);
contact->display_source_type = value;
break;
case CTSVC_PROPERTY_CONTACT_PERSON_ID:
- RETVM_IF(contact->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < contact->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (contact)", property_id);
+ CHECK_DIRTY_VAL(contact->person_id, value, is_dirty);
contact->person_id = value;
break;
case CTSVC_PROPERTY_CONTACT_CHANGED_TIME:
+ CHECK_DIRTY_VAL(contact->changed_time, value, is_dirty);
contact->changed_time = value;
break;
case CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID:
- RETVM_IF(contact->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < contact->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (contact)", property_id);
+ CHECK_DIRTY_VAL(contact->addressbook_id, value, is_dirty);
contact->addressbook_id = value;
break;
case CTSVC_PROPERTY_CONTACT_LINK_MODE:
RETVM_IF(value != CONTACTS_CONTACT_LINK_MODE_NONE
&& value != CONTACTS_CONTACT_LINK_MODE_IGNORE_ONCE,
CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : link mode is in invalid range (%d)", value);
- RETVM_IF(contact->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < contact->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (contact)", property_id);
+ CHECK_DIRTY_VAL(contact->link_mode, value, is_dirty);
contact->link_mode = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_simple_contact_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_simple_contact_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_simple_contact_s *contact = (ctsvc_simple_contact_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_CONTACT_ID:
+ CHECK_DIRTY_VAL(contact->contact_id, value, is_dirty);
contact->contact_id = value;
break;
case CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID:
+ CHECK_DIRTY_VAL(contact->display_source_type, value, is_dirty);
contact->display_source_type = value;
break;
case CTSVC_PROPERTY_CONTACT_PERSON_ID:
+ CHECK_DIRTY_VAL(contact->person_id, value, is_dirty);
contact->person_id = value;
break;
case CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID:
- RETVM_IF(contact->contact_id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < contact->contact_id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalide parameter : property_id(%d) is a read-only value (contact)", property_id);
+ CHECK_DIRTY_VAL(contact->addressbook_id, value, is_dirty);
contact->addressbook_id = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_name_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_name_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_name_s *name = (ctsvc_name_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_NAME_ID:
+ CHECK_DIRTY_VAL(name->id, value, is_dirty);
name->id = value;
break;
case CTSVC_PROPERTY_NAME_CONTACT_ID:
- RETVM_IF(name->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < name->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (name)", property_id);
+ CHECK_DIRTY_VAL(name->contact_id, value, is_dirty);
name->contact_id = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_company_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_company_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_company_s *company = (ctsvc_company_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_COMPANY_ID:
+ CHECK_DIRTY_VAL(company->id, value, is_dirty);
company->id = value;
break;
case CTSVC_PROPERTY_COMPANY_CONTACT_ID:
- RETVM_IF(company->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < company->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (company)", property_id);
+ CHECK_DIRTY_VAL(company->contact_id, value, is_dirty);
company->contact_id = value;
break;
case CTSVC_PROPERTY_COMPANY_TYPE:
RETVM_IF(value < CONTACTS_COMPANY_TYPE_OTHER
- || value > CONTACTS_COMPANY_TYPE_WORK,
+ || CONTACTS_COMPANY_TYPE_WORK < value,
CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : company type is in invalid range (%d)", value);
+ CHECK_DIRTY_VAL(company->type, value, is_dirty);
company->type = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_note_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_note_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_note_s *note = (ctsvc_note_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_NOTE_ID:
+ CHECK_DIRTY_VAL(note->id, value, is_dirty);
note->id = value;
break;
case CTSVC_PROPERTY_NOTE_CONTACT_ID:
- RETVM_IF(note->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < note->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (note)", property_id);
+ CHECK_DIRTY_VAL(note->contact_id, value, is_dirty);
note->contact_id = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_number_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_number_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_number_s *number = (ctsvc_number_s*)record;
switch(property_id) {
case CTSVC_PROPERTY_NUMBER_ID:
+ CHECK_DIRTY_VAL(number->id, value, is_dirty);
number->id = value;
break;
case CTSVC_PROPERTY_NUMBER_CONTACT_ID:
- RETVM_IF(number->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < number->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (number)", property_id);
+ CHECK_DIRTY_VAL(number->contact_id, value, is_dirty);
number->contact_id = value;
break;
case CTSVC_PROPERTY_NUMBER_TYPE:
+ CHECK_DIRTY_VAL(number->type, value, is_dirty);
number->type = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_email_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_email_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_email_s *email = (ctsvc_email_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_EMAIL_ID:
+ CHECK_DIRTY_VAL(email->id, value, is_dirty);
email->id = value;
break;
case CTSVC_PROPERTY_EMAIL_CONTACT_ID:
- RETVM_IF(email->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < email->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (email)", property_id);
+ CHECK_DIRTY_VAL(email->contact_id, value, is_dirty);
email->contact_id = value;
break;
case CTSVC_PROPERTY_EMAIL_TYPE:
RETVM_IF(value < CONTACTS_EMAIL_TYPE_OTHER
- || value > CONTACTS_EMAIL_TYPE_MOBILE,
+ || CONTACTS_EMAIL_TYPE_MOBILE < value,
CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : email type is in invalid range (%d)", value);
+ CHECK_DIRTY_VAL(email->type, value, is_dirty);
email->type = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_url_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_url_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_url_s *url = (ctsvc_url_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_URL_ID:
+ CHECK_DIRTY_VAL(url->id, value, is_dirty);
url->id = value;
break;
case CTSVC_PROPERTY_URL_CONTACT_ID:
- RETVM_IF(url->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < url->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (url)", property_id);
+ CHECK_DIRTY_VAL(url->contact_id, value, is_dirty);
url->contact_id = value;
break;
case CTSVC_PROPERTY_URL_TYPE:
RETVM_IF(value < CONTACTS_URL_TYPE_OTHER
- || value > CONTACTS_URL_TYPE_WORK ,
+ || CONTACTS_URL_TYPE_WORK < value,
CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : url type is in invalid range (%d)", value);
+ CHECK_DIRTY_VAL(url->type, value, is_dirty);
url->type = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_event_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_event_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_event_s *event = (ctsvc_event_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_EVENT_ID:
+ CHECK_DIRTY_VAL(event->id, value, is_dirty);
event->id = value;
break;
case CTSVC_PROPERTY_EVENT_CONTACT_ID:
- RETVM_IF(event->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < event->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (event)", property_id);
+ CHECK_DIRTY_VAL(event->contact_id, value, is_dirty);
event->contact_id = value;
break;
case CTSVC_PROPERTY_EVENT_TYPE:
RETVM_IF(value < CONTACTS_EVENT_TYPE_OTHER
- || value > CONTACTS_EVENT_TYPE_ANNIVERSARY,
+ || CONTACTS_EVENT_TYPE_ANNIVERSARY < value,
CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : event type is in invalid range (%d)", value);
+ CHECK_DIRTY_VAL(event->type, value, is_dirty);
event->type = value;
break;
case CTSVC_PROPERTY_EVENT_DATE:
+ CHECK_DIRTY_VAL(event->date, value, is_dirty);
event->date = value;
break;
case CTSVC_PROPERTY_EVENT_CALENDAR_TYPE:
+ CHECK_DIRTY_VAL(event->calendar_type, value, is_dirty);
event->calendar_type = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_nickname_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_nickname_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_nickname_s *nickname = (ctsvc_nickname_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_NICKNAME_ID:
+ CHECK_DIRTY_VAL(nickname->id, value, is_dirty);
nickname->id = value;
break;
case CTSVC_PROPERTY_NICKNAME_CONTACT_ID:
- RETVM_IF(nickname->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < nickname->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (nickname)", property_id);
+ CHECK_DIRTY_VAL(nickname->contact_id, value, is_dirty);
nickname->contact_id = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_address_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_address_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_address_s *address = (ctsvc_address_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_ADDRESS_ID:
+ CHECK_DIRTY_VAL(address->id, value, is_dirty);
address->id = value;
break;
case CTSVC_PROPERTY_ADDRESS_CONTACT_ID:
- RETVM_IF(address->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < address->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (address)", property_id);
+ CHECK_DIRTY_VAL(address->contact_id, value, is_dirty);
address->contact_id = value;
break;
case CTSVC_PROPERTY_ADDRESS_TYPE:
RETVM_IF(value < CONTACTS_ADDRESS_TYPE_OTHER
- || value > CONTACTS_ADDRESS_TYPE_PARCEL,
+ || CONTACTS_ADDRESS_TYPE_PARCEL < value,
CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : address type is %d", value);
+ CHECK_DIRTY_VAL(address->type, value, is_dirty);
address->type = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_messenger_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_messenger_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_messenger_s *messenger = (ctsvc_messenger_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_MESSENGER_ID:
+ CHECK_DIRTY_VAL(messenger->id, value, is_dirty);
messenger->id = value;
break;
case CTSVC_PROPERTY_MESSENGER_CONTACT_ID:
- RETVM_IF(messenger->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < messenger->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (messenger)", property_id);
+ CHECK_DIRTY_VAL(messenger->contact_id, value, is_dirty);
messenger->contact_id = value;
break;
case CTSVC_PROPERTY_MESSENGER_TYPE:
RETVM_IF(value < CONTACTS_MESSENGER_TYPE_OTHER
- || value > CONTACTS_MESSENGER_TYPE_IRC,
+ || CONTACTS_MESSENGER_TYPE_IRC < value,
CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : messenger type is in invalid range (%d)", value);
+ CHECK_DIRTY_VAL(messenger->type, value, is_dirty);
messenger->type = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_group_relation_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_group_relation_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_group_relation_s *group = (ctsvc_group_relation_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_GROUP_RELATION_ID:
+ CHECK_DIRTY_VAL(group->id, value, is_dirty);
group->id = value;
break;
case CTSVC_PROPERTY_GROUP_RELATION_CONTACT_ID:
- RETVM_IF(group->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < group->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (group)", property_id);
+ CHECK_DIRTY_VAL(group->contact_id, value, is_dirty);
group->contact_id = value;
break;
case CTSVC_PROPERTY_GROUP_RELATION_GROUP_ID:
- RETVM_IF(group->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < group->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (group)", property_id);
+ CHECK_DIRTY_VAL(group->group_id, value, is_dirty);
group->group_id = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_activity_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_activity_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_activity_s *activity = (ctsvc_activity_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_ACTIVITY_ID:
+ CHECK_DIRTY_VAL(activity->id, value, is_dirty);
activity->id = value;
break;
case CTSVC_PROPERTY_ACTIVITY_CONTACT_ID:
- RETVM_IF(activity->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < activity->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (activity)", property_id);
+ CHECK_DIRTY_VAL(activity->contact_id, value, is_dirty);
activity->contact_id = value;
break;
case CTSVC_PROPERTY_ACTIVITY_TIMESTAMP:
+ CHECK_DIRTY_VAL(activity->timestamp, value, is_dirty);
activity->timestamp = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_activity_photo_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_activity_photo_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_activity_photo_s *photo = (ctsvc_activity_photo_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_ACTIVITY_PHOTO_ID:
+ CHECK_DIRTY_VAL(photo->id, value, is_dirty);
photo->id = value;
break;
case CTSVC_PROPERTY_ACTIVITY_PHOTO_ACTIVITY_ID:
+ CHECK_DIRTY_VAL(photo->activity_id, value, is_dirty);
photo->activity_id = value;
break;
case CTSVC_PROPERTY_ACTIVITY_PHOTO_SORT_INDEX:
+ CHECK_DIRTY_VAL(photo->sort_index, value, is_dirty);
photo->sort_index = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_profile_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_profile_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_profile_s *profile = (ctsvc_profile_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_PROFILE_ID:
+ CHECK_DIRTY_VAL(profile->id, value, is_dirty);
profile->id = value;
break;
case CTSVC_PROPERTY_PROFILE_CONTACT_ID:
- RETVM_IF(profile->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < profile->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (profile)", property_id);
+ CHECK_DIRTY_VAL(profile->contact_id, value, is_dirty);
profile->contact_id = value;
break;
case CTSVC_PROPERTY_PROFILE_ORDER:
+ CHECK_DIRTY_VAL(profile->order, value, is_dirty);
profile->order = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_relationship_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_relationship_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_relationship_s *relationship = (ctsvc_relationship_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_RELATIONSHIP_ID:
+ CHECK_DIRTY_VAL(relationship->id, value, is_dirty);
relationship->id = value;
break;
case CTSVC_PROPERTY_RELATIONSHIP_CONTACT_ID:
- RETVM_IF(relationship->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < relationship->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (relationship)", property_id);
+ CHECK_DIRTY_VAL(relationship->contact_id, value, is_dirty);
relationship->contact_id = value;
break;
case CTSVC_PROPERTY_RELATIONSHIP_TYPE:
RETVM_IF(value < CONTACTS_RELATIONSHIP_TYPE_OTHER
- || value > CONTACTS_RELATIONSHIP_TYPE_CUSTOM,
+ || CONTACTS_RELATIONSHIP_TYPE_CUSTOM < value,
CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : relationship type is in invalid range (%d)", value);
-
+ CHECK_DIRTY_VAL(relationship->type, value, is_dirty);
relationship->type = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_image_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_image_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_image_s *image = (ctsvc_image_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_IMAGE_ID:
+ CHECK_DIRTY_VAL(image->id, value, is_dirty);
image->id = value;
break;
case CTSVC_PROPERTY_IMAGE_CONTACT_ID:
- RETVM_IF(image->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < image->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (image)", property_id);
+ CHECK_DIRTY_VAL(image->contact_id, value, is_dirty);
image->contact_id = value;
break;
case CTSVC_PROPERTY_IMAGE_TYPE:
RETVM_IF(value < CONTACTS_IMAGE_TYPE_OTHER || CONTACTS_IMAGE_TYPE_CUSTOM < value,
CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : image type is in invalid range (%d)", value);
+ CHECK_DIRTY_VAL(image->type, value, is_dirty);
image->type = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_extension_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_extension_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_extension_s *extension = (ctsvc_extension_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_EXTENSION_ID:
+ CHECK_DIRTY_VAL(extension->id, value, is_dirty);
extension->id = value;
break;
case CTSVC_PROPERTY_EXTENSION_CONTACT_ID:
- RETVM_IF(extension->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < extension->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (extension)", property_id);
+ CHECK_DIRTY_VAL(extension->contact_id, value, is_dirty);
extension->contact_id = value;
break;
case CTSVC_PROPERTY_EXTENSION_DATA1:
+ CHECK_DIRTY_VAL(extension->data1, value, is_dirty);
extension->data1 = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_contact_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_contact_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_contact_s *contact = (ctsvc_contact_s*)record;
switch(property_id) {
}
static int __ctsvc_contact_get_child_record_count(contacts_record_h record,
- unsigned int property_id, int *count )
+ unsigned int property_id, int *count)
{
int ret;
contacts_list_h list = NULL;
if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
return ret;
- if(list)
+ if (list)
contacts_list_get_count(list, count);
return CONTACTS_ERROR_NONE;
}
static int __ctsvc_contact_get_child_record_at_p(contacts_record_h record,
- unsigned int property_id, int index, contacts_record_h* out_record )
+ unsigned int property_id, int index, contacts_record_h* out_record)
{
int ret;
int count;
}
static int __ctsvc_contact_clone_child_record_list(contacts_record_h record,
- unsigned int property_id, contacts_list_h* out_list )
+ unsigned int property_id, contacts_list_h* out_list)
{
int ret;
int count;
}
static int __ctsvc_contact_add_child_record(contacts_record_h record,
- unsigned int property_id, contacts_record_h child_record )
+ unsigned int property_id, contacts_record_h child_record)
{
int ret;
contacts_list_h list = NULL;
}
static int __ctsvc_contact_remove_child_record(contacts_record_h record,
- unsigned int property_id, contacts_record_h child_record )
+ unsigned int property_id, contacts_record_h child_record)
{
int id;
int ret;
}
static int __ctsvc_simple_contact_get_str_real(contacts_record_h record,
- unsigned int property_id, char** out_str, bool copy )
+ unsigned int property_id, char** out_str, bool copy)
{
ctsvc_simple_contact_s *contact = (ctsvc_simple_contact_s *)record;
return __ctsvc_simple_contact_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_name_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_name_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_name_s *name = (ctsvc_name_s *)record;
return __ctsvc_name_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_company_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_company_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_company_s *company = (ctsvc_company_s *)record;
return __ctsvc_company_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_note_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_note_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_note_s *note = (ctsvc_note_s *)record;
return __ctsvc_note_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_number_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_number_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_number_s *number = (ctsvc_number_s*)record;
return __ctsvc_number_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_email_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_email_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_email_s *email = (ctsvc_email_s*)record;
return __ctsvc_email_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_url_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_url_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_url_s *url = (ctsvc_url_s *)record;
return __ctsvc_url_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_event_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_event_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_event_s *event = (ctsvc_event_s *)record;
return __ctsvc_event_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_nickname_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_nickname_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_nickname_s *nickname = (ctsvc_nickname_s *)record;
return __ctsvc_nickname_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_address_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_address_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_address_s *address = (ctsvc_address_s *)record;
return __ctsvc_address_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_messenger_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_messenger_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_messenger_s *messenger = (ctsvc_messenger_s *)record;
}
static int __ctsvc_group_relation_get_str_real(contacts_record_h record,
- unsigned int property_id, char** out_str, bool copy )
+ unsigned int property_id, char** out_str, bool copy)
{
ctsvc_group_relation_s *group_relation = (ctsvc_group_relation_s *)record;
return __ctsvc_group_relation_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_activity_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_activity_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_activity_s *activity = (ctsvc_activity_s *)record;
return __ctsvc_activity_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_activity_photo_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_activity_photo_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_activity_photo_s *photo = (ctsvc_activity_photo_s *)record;
return __ctsvc_activity_photo_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_profile_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_profile_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_profile_s *profile = (ctsvc_profile_s *)record;
return __ctsvc_profile_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_relationship_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_relationship_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_relationship_s *relationship = (ctsvc_relationship_s *)record;
return __ctsvc_relationship_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_image_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_image_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_image_s *image = (ctsvc_image_s *)record;
return __ctsvc_image_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_extension_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_extension_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_extension_s *extension = (ctsvc_extension_s *)record;
return __ctsvc_extension_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_contact_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_contact_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_contact_s *contact = (ctsvc_contact_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_CONTACT_DISPLAY_NAME:
+ CHECK_DIRTY_STR(contact->display_name, str, is_dirty);
FREEandSTRDUP(contact->display_name, str);
break;
/*
return CONTACTS_ERROR_INVALID_PARAMETER;
*/
case CTSVC_PROPERTY_CONTACT_RINGTONE:
+ CHECK_DIRTY_STR(contact->ringtone_path, str, is_dirty);
FREEandSTRDUP(contact->ringtone_path, str);
break;
case CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL:
+ CHECK_DIRTY_STR(contact->image_thumbnail_path, str, is_dirty);
FREEandSTRDUP(contact->image_thumbnail_path, str);
break;
case CTSVC_PROPERTY_CONTACT_UID:
+ CHECK_DIRTY_STR(contact->uid, str, is_dirty);
FREEandSTRDUP(contact->uid, str);
break;
case CTSVC_PROPERTY_CONTACT_VIBRATION:
+ CHECK_DIRTY_STR(contact->vibration, str, is_dirty);
FREEandSTRDUP(contact->vibration, str);
break;
case CTSVC_PROPERTY_CONTACT_MESSAGE_ALERT:
+ CHECK_DIRTY_STR(contact->message_alert, str, is_dirty);
FREEandSTRDUP(contact->message_alert, str);
break;
default :
}
-static int __ctsvc_simple_contact_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_simple_contact_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_simple_contact_s *contact = (ctsvc_simple_contact_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_CONTACT_DISPLAY_NAME:
+ CHECK_DIRTY_STR(contact->display_name, str, is_dirty);
FREEandSTRDUP(contact->display_name, str);
break;
/*
return CONTACTS_ERROR_INVALID_PARAMETER;
*/
case CTSVC_PROPERTY_CONTACT_RINGTONE:
+ CHECK_DIRTY_STR(contact->ringtone_path, str, is_dirty);
FREEandSTRDUP(contact->ringtone_path, str);
break;
case CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL:
+ CHECK_DIRTY_STR(contact->image_thumbnail_path, str, is_dirty);
FREEandSTRDUP(contact->image_thumbnail_path, str);
break;
case CTSVC_PROPERTY_CONTACT_UID:
+ CHECK_DIRTY_STR(contact->uid, str, is_dirty);
FREEandSTRDUP(contact->uid, str);
break;
case CTSVC_PROPERTY_CONTACT_VIBRATION:
+ CHECK_DIRTY_STR(contact->vibration, str, is_dirty);
FREEandSTRDUP(contact->vibration, str);
break;
case CTSVC_PROPERTY_CONTACT_MESSAGE_ALERT:
+ CHECK_DIRTY_STR(contact->message_alert, str, is_dirty);
FREEandSTRDUP(contact->message_alert, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_name_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_name_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_name_s *name = (ctsvc_name_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_NAME_FIRST:
+ CHECK_DIRTY_STR(name->first, str, is_dirty);
FREEandSTRDUP(name->first, str);
break;
case CTSVC_PROPERTY_NAME_LAST:
+ CHECK_DIRTY_STR(name->last, str, is_dirty);
FREEandSTRDUP(name->last, str);
break;
case CTSVC_PROPERTY_NAME_ADDITION:
+ CHECK_DIRTY_STR(name->addition, str, is_dirty);
FREEandSTRDUP(name->addition, str);
break;
case CTSVC_PROPERTY_NAME_SUFFIX:
+ CHECK_DIRTY_STR(name->suffix, str, is_dirty);
FREEandSTRDUP(name->suffix, str);
break;
case CTSVC_PROPERTY_NAME_PREFIX:
+ CHECK_DIRTY_STR(name->prefix, str, is_dirty);
FREEandSTRDUP(name->prefix, str);
break;
case CTSVC_PROPERTY_NAME_PHONETIC_FIRST:
+ CHECK_DIRTY_STR(name->phonetic_first, str, is_dirty);
FREEandSTRDUP(name->phonetic_first, str);
break;
case CTSVC_PROPERTY_NAME_PHONETIC_MIDDLE:
+ CHECK_DIRTY_STR(name->phonetic_middle, str, is_dirty);
FREEandSTRDUP(name->phonetic_middle, str);
break;
case CTSVC_PROPERTY_NAME_PHONETIC_LAST:
+ CHECK_DIRTY_STR(name->phonetic_last, str, is_dirty);
FREEandSTRDUP(name->phonetic_last, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_company_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_company_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_company_s *company = (ctsvc_company_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_COMPANY_LABEL:
+ CHECK_DIRTY_STR(company->label, str, is_dirty);
FREEandSTRDUP(company->label, str);
break;
case CTSVC_PROPERTY_COMPANY_NAME:
+ CHECK_DIRTY_STR(company->name, str, is_dirty);
FREEandSTRDUP(company->name, str);
break;
case CTSVC_PROPERTY_COMPANY_DEPARTMENT:
+ CHECK_DIRTY_STR(company->department, str, is_dirty);
FREEandSTRDUP(company->department, str);
break;
case CTSVC_PROPERTY_COMPANY_JOB_TITLE:
+ CHECK_DIRTY_STR(company->job_title, str, is_dirty);
FREEandSTRDUP(company->job_title, str);
break;
case CTSVC_PROPERTY_COMPANY_ASSISTANT_NAME:
+ CHECK_DIRTY_STR(company->assistant_name, str, is_dirty);
FREEandSTRDUP(company->assistant_name, str);
break;
case CTSVC_PROPERTY_COMPANY_ROLE:
+ CHECK_DIRTY_STR(company->role, str, is_dirty);
FREEandSTRDUP(company->role, str);
break;
case CTSVC_PROPERTY_COMPANY_LOGO:
- if (company->logo && company->is_vcard && (NULL == str || 0 != strcmp(company->logo, str))) {
+ if (company->logo && company->is_vcard && (NULL == str || STRING_EQUAL != strcmp(company->logo, str))) {
company->is_vcard = false;
__ctsvc_temp_image_hash_table_remove(company->logo);
}
+ CHECK_DIRTY_STR(company->logo, str, is_dirty);
FREEandSTRDUP(company->logo, str);
break;
case CTSVC_PROPERTY_COMPANY_LOCATION:
+ CHECK_DIRTY_STR(company->location, str, is_dirty);
FREEandSTRDUP(company->location, str);
break;
case CTSVC_PROPERTY_COMPANY_DESCRIPTION:
+ CHECK_DIRTY_STR(company->description, str, is_dirty);
FREEandSTRDUP(company->description, str);
break;
case CTSVC_PROPERTY_COMPANY_PHONETIC_NAME:
+ CHECK_DIRTY_STR(company->phonetic_name, str, is_dirty);
FREEandSTRDUP(company->phonetic_name, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_note_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_note_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_note_s *note = (ctsvc_note_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_NOTE_NOTE:
+ CHECK_DIRTY_STR(note->note, str, is_dirty);
FREEandSTRDUP(note->note, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_number_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_number_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_number_s *number = (ctsvc_number_s*)record;
switch(property_id) {
case CTSVC_PROPERTY_NUMBER_LABEL:
+ CHECK_DIRTY_STR(number->label, str, is_dirty);
FREEandSTRDUP(number->label, str);
break;
case CTSVC_PROPERTY_NUMBER_NUMBER:
+ CHECK_DIRTY_STR(number->number, str, is_dirty);
FREEandSTRDUP(number->number, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_email_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_email_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_email_s *email = (ctsvc_email_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_EMAIL_EMAIL:
+ CHECK_DIRTY_STR(email->email_addr, str, is_dirty);
FREEandSTRDUP(email->email_addr, str);
break;
case CTSVC_PROPERTY_EMAIL_LABEL:
+ CHECK_DIRTY_STR(email->label, str, is_dirty);
FREEandSTRDUP(email->label, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_url_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_url_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_url_s *url = (ctsvc_url_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_URL_URL:
+ CHECK_DIRTY_STR(url->url, str, is_dirty);
FREEandSTRDUP(url->url, str);
break;
case CTSVC_PROPERTY_URL_LABEL:
+ CHECK_DIRTY_STR(url->label, str, is_dirty);
FREEandSTRDUP(url->label, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_event_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_event_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_event_s *event = (ctsvc_event_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_EVENT_LABEL:
+ CHECK_DIRTY_STR(event->label, str, is_dirty);
FREEandSTRDUP(event->label, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_nickname_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_nickname_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_nickname_s *nickname = (ctsvc_nickname_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_NICKNAME_NAME:
+ CHECK_DIRTY_STR(nickname->nickname, str, is_dirty);
FREEandSTRDUP(nickname->nickname, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_address_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_address_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_address_s *address = (ctsvc_address_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_ADDRESS_LABEL:
+ CHECK_DIRTY_STR(address->label, str, is_dirty);
FREEandSTRDUP(address->label, str);
break;
case CTSVC_PROPERTY_ADDRESS_POSTBOX:
+ CHECK_DIRTY_STR(address->pobox, str, is_dirty);
FREEandSTRDUP(address->pobox, str);
break;
case CTSVC_PROPERTY_ADDRESS_POSTAL_CODE:
+ CHECK_DIRTY_STR(address->postalcode, str, is_dirty);
FREEandSTRDUP(address->postalcode, str);
break;
case CTSVC_PROPERTY_ADDRESS_REGION:
+ CHECK_DIRTY_STR(address->region, str, is_dirty);
FREEandSTRDUP(address->region, str);
break;
case CTSVC_PROPERTY_ADDRESS_LOCALITY:
+ CHECK_DIRTY_STR(address->locality, str, is_dirty);
FREEandSTRDUP(address->locality, str);
break;
case CTSVC_PROPERTY_ADDRESS_STREET:
+ CHECK_DIRTY_STR(address->street, str, is_dirty);
FREEandSTRDUP(address->street, str);
break;
case CTSVC_PROPERTY_ADDRESS_COUNTRY:
+ CHECK_DIRTY_STR(address->country, str, is_dirty);
FREEandSTRDUP(address->country, str);
break;
case CTSVC_PROPERTY_ADDRESS_EXTENDED:
+ CHECK_DIRTY_STR(address->extended, str, is_dirty);
FREEandSTRDUP(address->extended, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_messenger_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_messenger_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_messenger_s *messenger = (ctsvc_messenger_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_MESSENGER_LABEL:
+ CHECK_DIRTY_STR(messenger->label, str, is_dirty);
FREEandSTRDUP(messenger->label, str);
break;
case CTSVC_PROPERTY_MESSENGER_IM_ID:
+ CHECK_DIRTY_STR(messenger->im_id, str, is_dirty);
FREEandSTRDUP(messenger->im_id, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_group_relation_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_group_relation_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_group_relation_s *group_relation = (ctsvc_group_relation_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_GROUP_RELATION_GROUP_NAME:
+ CHECK_DIRTY_STR(group_relation->group_name, str, is_dirty);
FREEandSTRDUP(group_relation->group_name, str);
break;
/*
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_activity_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_activity_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_activity_s *activity = (ctsvc_activity_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_ACTIVITY_SOURCE_NAME:
+ CHECK_DIRTY_STR(activity->source_name, str, is_dirty);
FREEandSTRDUP(activity->source_name, str);
break;
case CTSVC_PROPERTY_ACTIVITY_STATUS:
+ CHECK_DIRTY_STR(activity->status, str, is_dirty);
FREEandSTRDUP(activity->status, str);
break;
case CTSVC_PROPERTY_ACTIVITY_SERVICE_OPERATION:
+ CHECK_DIRTY_STR(activity->service_operation, str, is_dirty);
FREEandSTRDUP(activity->service_operation, str);
break;
case CTSVC_PROPERTY_ACTIVITY_URI:
+ CHECK_DIRTY_STR(activity->uri, str, is_dirty);
FREEandSTRDUP(activity->uri, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_activity_photo_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_activity_photo_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_activity_photo_s *photo = (ctsvc_activity_photo_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_ACTIVITY_PHOTO_URL:
+ CHECK_DIRTY_STR(photo->photo_url, str, is_dirty);
FREEandSTRDUP(photo->photo_url, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_profile_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_profile_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_profile_s *profile = (ctsvc_profile_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_PROFILE_UID:
+ CHECK_DIRTY_STR(profile->uid, str, is_dirty);
FREEandSTRDUP(profile->uid, str);
break;
case CTSVC_PROPERTY_PROFILE_TEXT:
+ CHECK_DIRTY_STR(profile->text, str, is_dirty);
FREEandSTRDUP(profile->text, str);
break;
case CTSVC_PROPERTY_PROFILE_SERVICE_OPERATION:
+ CHECK_DIRTY_STR(profile->service_operation, str, is_dirty);
FREEandSTRDUP(profile->service_operation, str);
break;
case CTSVC_PROPERTY_PROFILE_MIME:
+ CHECK_DIRTY_STR(profile->mime, str, is_dirty);
FREEandSTRDUP(profile->mime, str);
break;
case CTSVC_PROPERTY_PROFILE_APP_ID:
+ CHECK_DIRTY_STR(profile->app_id, str, is_dirty);
FREEandSTRDUP(profile->app_id, str);
break;
case CTSVC_PROPERTY_PROFILE_URI:
+ CHECK_DIRTY_STR(profile->uri, str, is_dirty);
FREEandSTRDUP(profile->uri, str);
break;
case CTSVC_PROPERTY_PROFILE_CATEGORY:
+ CHECK_DIRTY_STR(profile->category, str, is_dirty);
FREEandSTRDUP(profile->category, str);
break;
case CTSVC_PROPERTY_PROFILE_EXTRA_DATA:
+ CHECK_DIRTY_STR(profile->extra_data, str, is_dirty);
FREEandSTRDUP(profile->extra_data, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_relationship_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_relationship_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_relationship_s *relationship = (ctsvc_relationship_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_RELATIONSHIP_LABEL:
+ CHECK_DIRTY_STR(relationship->label, str, is_dirty);
FREEandSTRDUP(relationship->label, str);
break;
case CTSVC_PROPERTY_RELATIONSHIP_NAME:
+ CHECK_DIRTY_STR(relationship->name, str, is_dirty);
FREEandSTRDUP(relationship->name, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_image_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_image_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_image_s *image = (ctsvc_image_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_IMAGE_LABEL:
+ CHECK_DIRTY_STR(image->label, str, is_dirty);
FREEandSTRDUP(image->label, str);
break;
case CTSVC_PROPERTY_IMAGE_PATH:
- if (image->path && image->is_vcard && (NULL == str || 0 != strcmp(image->path, str))) {
+ if (image->path && image->is_vcard && (NULL == str || STRING_EQUAL != strcmp(image->path, str))) {
image->is_vcard = false;
__ctsvc_temp_image_hash_table_remove(image->path);
}
+ CHECK_DIRTY_STR(image->path, str, is_dirty);
FREEandSTRDUP(image->path, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_extension_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_extension_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty )
{
ctsvc_extension_s *extension = (ctsvc_extension_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_EXTENSION_DATA2:
+ CHECK_DIRTY_STR(extension->data2, str, is_dirty);
FREEandSTRDUP(extension->data2, str);
break;
case CTSVC_PROPERTY_EXTENSION_DATA3:
+ CHECK_DIRTY_STR(extension->data3, str, is_dirty);
FREEandSTRDUP(extension->data3, str);
break;
case CTSVC_PROPERTY_EXTENSION_DATA4:
+ CHECK_DIRTY_STR(extension->data4, str, is_dirty);
FREEandSTRDUP(extension->data4, str);
break;
case CTSVC_PROPERTY_EXTENSION_DATA5:
+ CHECK_DIRTY_STR(extension->data5, str, is_dirty);
FREEandSTRDUP(extension->data5, str);
break;
case CTSVC_PROPERTY_EXTENSION_DATA6:
+ CHECK_DIRTY_STR(extension->data6, str, is_dirty);
FREEandSTRDUP(extension->data6, str);
break;
case CTSVC_PROPERTY_EXTENSION_DATA7:
+ CHECK_DIRTY_STR(extension->data7, str, is_dirty);
FREEandSTRDUP(extension->data7, str);
break;
case CTSVC_PROPERTY_EXTENSION_DATA8:
+ CHECK_DIRTY_STR(extension->data8, str, is_dirty);
FREEandSTRDUP(extension->data8, str);
break;
case CTSVC_PROPERTY_EXTENSION_DATA9:
+ CHECK_DIRTY_STR(extension->data9, str, is_dirty);
FREEandSTRDUP(extension->data9, str);
break;
case CTSVC_PROPERTY_EXTENSION_DATA10:
+ CHECK_DIRTY_STR(extension->data10, str, is_dirty);
FREEandSTRDUP(extension->data10, str);
break;
case CTSVC_PROPERTY_EXTENSION_DATA11:
+ CHECK_DIRTY_STR(extension->data11, str, is_dirty);
FREEandSTRDUP(extension->data11, str);
break;
case CTSVC_PROPERTY_EXTENSION_DATA12:
+ CHECK_DIRTY_STR(extension->data12, str, is_dirty);
FREEandSTRDUP(extension->data12, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_contact_get_bool(contacts_record_h record, unsigned int property_id, bool *value )
+static int __ctsvc_contact_get_bool(contacts_record_h record, unsigned int property_id, bool *value)
{
ctsvc_contact_s *contact = (ctsvc_contact_s *)record;
switch (property_id) {
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_simple_contact_get_bool(contacts_record_h record, unsigned int property_id, bool *value )
+static int __ctsvc_simple_contact_get_bool(contacts_record_h record, unsigned int property_id, bool *value)
{
ctsvc_simple_contact_s *contact = (ctsvc_simple_contact_s *)record;
switch (property_id) {
}
-static int __ctsvc_number_get_bool(contacts_record_h record, unsigned int property_id, bool *value )
+static int __ctsvc_number_get_bool(contacts_record_h record, unsigned int property_id, bool *value)
{
ctsvc_number_s *number = (ctsvc_number_s*)record;
switch (property_id) {
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_email_get_bool(contacts_record_h record, unsigned int property_id, bool *value )
+static int __ctsvc_email_get_bool(contacts_record_h record, unsigned int property_id, bool *value)
{
ctsvc_email_s *email = (ctsvc_email_s *)record;
switch (property_id) {
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_event_get_bool(contacts_record_h record, unsigned int property_id, bool *value )
+static int __ctsvc_event_get_bool(contacts_record_h record, unsigned int property_id, bool *value)
{
ctsvc_event_s *event = (ctsvc_event_s *)record;
switch (property_id) {
- case CTSVC_PROPERTY_EVENT_IS_LEAP_MONTH:
+ case CTSVC_PROPERTY_EVENT_IS_LEAP_MONTH: /* deprecated */
*value = event->is_leap_month;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_image_get_bool(contacts_record_h record, unsigned int property_id, bool *value )
+static int __ctsvc_image_get_bool(contacts_record_h record, unsigned int property_id, bool *value)
{
ctsvc_image_s *image = (ctsvc_image_s *)record;
switch (property_id) {
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_address_get_bool(contacts_record_h record, unsigned int property_id, bool *value )
+static int __ctsvc_address_get_bool(contacts_record_h record, unsigned int property_id, bool *value)
{
ctsvc_address_s *address = (ctsvc_address_s *)record;
switch (property_id) {
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_contact_set_bool(contacts_record_h record, unsigned int property_id, bool value)
+static int __ctsvc_contact_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty)
{
ctsvc_contact_s *contact = (ctsvc_contact_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_CONTACT_IS_FAVORITE:
+ CHECK_DIRTY_VAL(contact->is_favorite, value, is_dirty);
contact->is_favorite = value;
break;
case CTSVC_PROPERTY_CONTACT_HAS_PHONENUMBER:
+ CHECK_DIRTY_VAL(contact->has_phonenumber, value, is_dirty);
contact->has_phonenumber = value;
break;
case CTSVC_PROPERTY_CONTACT_HAS_EMAIL:
+ CHECK_DIRTY_VAL(contact->has_email, value, is_dirty);
contact->has_email = value;
break;
/*
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_number_set_bool(contacts_record_h record, unsigned int property_id, bool value)
+static int __ctsvc_number_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty)
{
ctsvc_number_s *number = (ctsvc_number_s*)record;
switch(property_id) {
case CTSVC_PROPERTY_NUMBER_IS_DEFAULT:
+ CHECK_DIRTY_VAL(number->is_default, value, is_dirty);
number->is_default = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_email_set_bool(contacts_record_h record, unsigned int property_id, bool value)
+static int __ctsvc_email_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty)
{
ctsvc_email_s *email = (ctsvc_email_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_EMAIL_IS_DEFAULT:
+ CHECK_DIRTY_VAL(email->is_default, value, is_dirty);
email->is_default = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_event_set_bool(contacts_record_h record, unsigned int property_id, bool value)
+static int __ctsvc_event_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty)
{
ctsvc_event_s *event = (ctsvc_event_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_EVENT_IS_LEAP_MONTH:
+ CHECK_DIRTY_VAL(event->is_leap_month, value, is_dirty);
event->is_leap_month = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_image_set_bool(contacts_record_h record, unsigned int property_id, bool value)
+static int __ctsvc_image_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty)
{
ctsvc_image_s *image = (ctsvc_image_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_IMAGE_IS_DEFAULT:
+ CHECK_DIRTY_VAL(image->is_default, value, is_dirty);
image->is_default = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_address_set_bool(contacts_record_h record, unsigned int property_id, bool value)
+static int __ctsvc_address_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty)
{
ctsvc_address_s *address = (ctsvc_address_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_ADDRESS_IS_DEFAULT:
+ CHECK_DIRTY_VAL(address->is_default, value, is_dirty);
address->is_default = value;
break;
default:
src_data = (ctsvc_contact_s*)record;
out_data = calloc(1, sizeof(ctsvc_contact_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_contact_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_contact_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->person_id = src_data->person_id;
ctsvc_list_clone((contacts_list_h)src_data->extensions, (contacts_list_h*)&out_data->extensions);
out_data->extensions->l_type = CTSVC_RECORD_EXTENSION;
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_contact_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
src_data = (ctsvc_activity_s*)record;
out_data = calloc(1, sizeof(ctsvc_activity_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_activity_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_activity_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->contact_id = src_data->contact_id;
ctsvc_list_clone((contacts_list_h)src_data->photos, (contacts_list_h*)&out_data->photos);
out_data->photos->l_type = CTSVC_RECORD_ACTIVITY_PHOTO;
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_activity_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
src_data = (ctsvc_activity_photo_s*)record;
out_data = calloc(1, sizeof(ctsvc_activity_photo_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_activity_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_activity_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->activity_id = src_data->activity_id;
out_data->photo_url = SAFE_STRDUP(src_data->photo_url);
out_data->sort_index = src_data->sort_index;
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_activity_photo_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
src_data = (ctsvc_address_s*)record;
out_data = calloc(1, sizeof(ctsvc_address_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_address_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_address_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->contact_id = src_data->contact_id;
out_data->extended = SAFE_STRDUP(src_data->extended);
out_data->country = SAFE_STRDUP(src_data->country);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_address_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
src_data = (ctsvc_company_s*)record;
out_data = calloc(1, sizeof(ctsvc_company_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_company_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_company_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->contact_id = src_data->contact_id;
out_data->description = SAFE_STRDUP(src_data->description);
out_data->phonetic_name = SAFE_STRDUP(src_data->phonetic_name);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_company_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
src_data = (ctsvc_email_s*)record;
out_data = calloc(1, sizeof(ctsvc_email_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_email_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_email_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->is_default = src_data->is_default;
out_data->label = SAFE_STRDUP(src_data->label);
out_data->email_addr = SAFE_STRDUP(src_data->email_addr);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_email_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
src_data = (ctsvc_event_s*)record;
out_data = calloc(1, sizeof(ctsvc_event_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_event_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_event_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->contact_id = src_data->contact_id;
out_data->calendar_type = src_data->calendar_type;
out_data->is_leap_month = src_data->is_leap_month;
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_event_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
src_data = (ctsvc_extension_s*)record;
out_data = calloc(1, sizeof(ctsvc_extension_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_extension_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_extension_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->contact_id = src_data->contact_id;
-// out_data->is_default = src_data->is_default;
+ /* out_data->is_default = src_data->is_default; */
out_data->data1 = src_data->data1;
out_data->data2 = SAFE_STRDUP(src_data->data2);
out_data->data3 = SAFE_STRDUP(src_data->data3);
out_data->data11 = SAFE_STRDUP(src_data->data11);
out_data->data12 = SAFE_STRDUP(src_data->data12);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_extension_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
src_data = (ctsvc_group_relation_s*)record;
out_data = calloc(1, sizeof(ctsvc_group_relation_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_group_relation_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_group_relation_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->group_id = src_data->group_id;
out_data->contact_id = src_data->contact_id;
out_data->group_name = SAFE_STRDUP(src_data->group_name);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_group_relation_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
src_data = (ctsvc_messenger_s*)record;
out_data = calloc(1, sizeof(ctsvc_messenger_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_messenger_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_messenger_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->contact_id = src_data->contact_id;
out_data->label = SAFE_STRDUP(src_data->label);
out_data->im_id = SAFE_STRDUP(src_data->im_id);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_messenger_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
src_data = (ctsvc_name_s*)record;
out_data = calloc(1, sizeof(ctsvc_name_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_name_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_name_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->is_default = src_data->is_default;
out_data->id = src_data->id;
out_data->lookup = SAFE_STRDUP(src_data->lookup);
out_data->reverse_lookup = SAFE_STRDUP(src_data->reverse_lookup);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_name_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
src_data = (ctsvc_nickname_s*)record;
out_data = calloc(1, sizeof(ctsvc_nickname_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_nickname_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_nickname_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->contact_id = src_data->contact_id;
out_data->label = SAFE_STRDUP(src_data->label);
out_data->nickname = SAFE_STRDUP(src_data->nickname);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_nickname_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
src_data = (ctsvc_note_s*)record;
out_data = calloc(1, sizeof(ctsvc_note_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_note_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_note_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->contact_id = src_data->contact_id;
out_data->note = SAFE_STRDUP(src_data->note);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_note_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
src_data = (ctsvc_number_s*)record;
out_data = calloc(1, sizeof(ctsvc_number_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_number_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_number_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->is_default = src_data->is_default;
out_data->id = src_data->id;
out_data->number = SAFE_STRDUP(src_data->number);
out_data->lookup = SAFE_STRDUP(src_data->lookup);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_number_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
src_data = (ctsvc_profile_s*)record;
out_data = calloc(1, sizeof(ctsvc_profile_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_profile_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_profile_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->contact_id = src_data->contact_id;
out_data->category = SAFE_STRDUP(src_data->category);
out_data->extra_data = SAFE_STRDUP(src_data->extra_data);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_profile_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
src_data = (ctsvc_relationship_s*)record;
out_data = calloc(1, sizeof(ctsvc_relationship_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_relationship_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_relationship_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->contact_id = src_data->contact_id;
out_data->label = SAFE_STRDUP(src_data->label);
out_data->name = SAFE_STRDUP(src_data->name);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_relationship_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
src_data = (ctsvc_image_s*)record;
out_data = calloc(1, sizeof(ctsvc_image_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_image_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_image_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->is_default = src_data->is_default;
out_data->id = src_data->id;
__ctsvc_temp_image_hash_table_insert(src_data->path);
out_data->path = SAFE_STRDUP(src_data->path);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_image_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
src_data = (ctsvc_simple_contact_s*)record;
out_data = calloc(1, sizeof(ctsvc_simple_contact_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_simple_contact_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_simple_contact_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->contact_id = src_data->contact_id;
out_data->person_id = src_data->person_id;
out_data->message_alert = SAFE_STRDUP(src_data->message_alert);
out_data->image_thumbnail_path = SAFE_STRDUP(src_data->image_thumbnail_path);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_simple_contact_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
src_data = (ctsvc_url_s*)record;
out_data = calloc(1, sizeof(ctsvc_url_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_url_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_url_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->contact_id = src_data->contact_id;
out_data->label = SAFE_STRDUP(src_data->label);
out_data->url = SAFE_STRDUP(src_data->url);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_url_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
*
*/
-#include <glib.h>
-
#include "contacts.h"
#include "ctsvc_internal.h"
#include "ctsvc_record.h"
static int __ctsvc_group_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_group_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_group_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_group_get_str(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_group_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_group_get_bool( contacts_record_h record, unsigned int property_id, bool *value );
-static int __ctsvc_group_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_group_set_str(contacts_record_h record, unsigned int property_id, const char* str );
-static int __ctsvc_group_set_bool(contacts_record_h record, unsigned int property_id, bool value);
+static int __ctsvc_group_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_group_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_group_get_bool(contacts_record_h record, unsigned int property_id, bool *value);
+static int __ctsvc_group_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_group_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
+static int __ctsvc_group_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty);
ctsvc_record_plugin_cb_s group_plugin_cbs = {
static int __ctsvc_group_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_group_s *group = (ctsvc_group_s*)record;
- group->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ group->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(group->base.properties_flags);
free(group->name);
static int __ctsvc_group_clone(contacts_record_h record, contacts_record_h *out_record)
{
- ctsvc_group_s *out_data = NULL;
- ctsvc_group_s *src_data = NULL;
+ ctsvc_group_s *out_data = NULL;
+ ctsvc_group_s *src_data = NULL;
- src_data = (ctsvc_group_s*)record;
- out_data = calloc(1, sizeof(ctsvc_group_s));
- RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_group_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ src_data = (ctsvc_group_s*)record;
+ out_data = calloc(1, sizeof(ctsvc_group_s));
+ RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
+ "Out of memeory : calloc(ctsvc_group_s) Fail(%d)",
+ CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->addressbook_id = src_data->addressbook_id;
out_data->ringtone_path = SAFE_STRDUP(src_data->ringtone_path);
out_data->image_thumbnail_path = SAFE_STRDUP(src_data->image_thumbnail_path);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_group_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_group_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_group_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_group_s *group = (ctsvc_group_s*)record;
return __ctsvc_group_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_group_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_group_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_group_s *group = (ctsvc_group_s*)record;
switch(property_id) {
case CTSVC_PROPERTY_GROUP_ID:
+ CHECK_DIRTY_VAL(group->id, value, is_dirty);
group->id = value;
break;
case CTSVC_PROPERTY_GROUP_ADDRESSBOOK_ID:
- RETVM_IF(group->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < group->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (group)", property_id);
+ CHECK_DIRTY_VAL(group->addressbook_id, value, is_dirty);
group->addressbook_id = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_group_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_group_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty)
{
ctsvc_group_s *group = (ctsvc_group_s*)record;
switch(property_id) {
case CTSVC_PROPERTY_GROUP_NAME:
+ CHECK_DIRTY_STR(group->name, str, is_dirty);
FREEandSTRDUP(group->name, str);
break;
case CTSVC_PROPERTY_GROUP_RINGTONE:
+ CHECK_DIRTY_STR(group->ringtone_path, str, is_dirty);
FREEandSTRDUP(group->ringtone_path, str);
break;
case CTSVC_PROPERTY_GROUP_IMAGE:
+ CHECK_DIRTY_STR(group->image_thumbnail_path, str, is_dirty);
FREEandSTRDUP(group->image_thumbnail_path, str);
break;
case CTSVC_PROPERTY_GROUP_VIBRATION:
+ CHECK_DIRTY_STR(group->vibration, str, is_dirty);
FREEandSTRDUP(group->vibration, str);
break;
case CTSVC_PROPERTY_GROUP_MESSAGE_ALERT:
+ CHECK_DIRTY_STR(group->message_alert, str, is_dirty);
FREEandSTRDUP(group->message_alert, str);
break;
case CTSVC_PROPERTY_GROUP_EXTRA_DATA:
+ CHECK_DIRTY_STR(group->extra_data, str, is_dirty);
FREEandSTRDUP(group->extra_data, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_group_get_bool(contacts_record_h record, unsigned int property_id, bool *value )
+static int __ctsvc_group_get_bool(contacts_record_h record, unsigned int property_id, bool *value)
{
ctsvc_group_s *group = (ctsvc_group_s*)record;
switch (property_id) {
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_group_set_bool(contacts_record_h record, unsigned int property_id, bool value)
+static int __ctsvc_group_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty)
{
ctsvc_group_s *group = (ctsvc_group_s*)record;
switch(property_id) {
case CTSVC_PROPERTY_GROUP_IS_READ_ONLY:
- RETVM_IF(group->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < group->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (group)", property_id);
+ CHECK_DIRTY_VAL(group->is_read_only, value, is_dirty);
group->is_read_only = value;
break;
default:
}
return CONTACTS_ERROR_NONE;
}
-
*
*/
-#include <glib.h>
-
#include "contacts.h"
#include "ctsvc_internal.h"
#include "ctsvc_list.h"
static int __ctsvc_my_profile_get_int(contacts_record_h record, unsigned int property_id, int *out);
static int __ctsvc_my_profile_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
static int __ctsvc_my_profile_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_my_profile_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_my_profile_set_str(contacts_record_h record, unsigned int property_id, const char* str );
-static int __ctsvc_my_profile_clone_child_record_list(contacts_record_h record, unsigned int property_id, contacts_list_h* out_list );
-static int __ctsvc_my_profile_get_child_record_at_p(contacts_record_h record, unsigned int property_id, int index, contacts_record_h* out_record );
-static int __ctsvc_my_profile_get_child_record_count(contacts_record_h record, unsigned int property_id, int *count );
-static int __ctsvc_my_profile_add_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record );
-static int __ctsvc_my_profile_remove_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record );
+static int __ctsvc_my_profile_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_my_profile_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
+static int __ctsvc_my_profile_clone_child_record_list(contacts_record_h record, unsigned int property_id, contacts_list_h* out_list);
+static int __ctsvc_my_profile_get_child_record_at_p(contacts_record_h record, unsigned int property_id, int index, contacts_record_h* out_record);
+static int __ctsvc_my_profile_get_child_record_count(contacts_record_h record, unsigned int property_id, int *count);
+static int __ctsvc_my_profile_add_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record);
+static int __ctsvc_my_profile_remove_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record);
ctsvc_record_plugin_cb_s my_profile_plugin_cbs = {
.create = __ctsvc_my_profile_create,
RETVM_IF(NULL == my_profile, CONTACTS_ERROR_OUT_OF_MEMORY,
"Out of memory : calloc is failed");
- my_profile->name = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == my_profile->name) {
- CTS_ERR("calloc() return NULL");
- __ctsvc_my_profile_destroy((contacts_record_h)my_profile, true);
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- my_profile->name->l_type = CTSVC_RECORD_NAME;
-
- my_profile->company = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == my_profile->company) {
- CTS_ERR("calloc() return NULL");
- __ctsvc_my_profile_destroy((contacts_record_h)my_profile, true);
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- my_profile->company->l_type = CTSVC_RECORD_COMPANY;
-
- my_profile->note = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == my_profile->note) {
- CTS_ERR("calloc() return NULL");
- __ctsvc_my_profile_destroy((contacts_record_h)my_profile, true);
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- my_profile->note->l_type = CTSVC_RECORD_NOTE;
-
- my_profile->numbers = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == my_profile->numbers) {
- CTS_ERR("calloc() return NULL");
- __ctsvc_my_profile_destroy((contacts_record_h)my_profile, true);
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- my_profile->numbers->l_type = CTSVC_RECORD_NUMBER;
-
- my_profile->emails = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == my_profile->emails) {
- CTS_ERR("calloc() return NULL");
- __ctsvc_my_profile_destroy((contacts_record_h)my_profile, true);
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- my_profile->emails->l_type = CTSVC_RECORD_EMAIL;
-
- my_profile->events = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == my_profile->events) {
- CTS_ERR("calloc() return NULL");
- __ctsvc_my_profile_destroy((contacts_record_h)my_profile, true);
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- my_profile->events->l_type = CTSVC_RECORD_EVENT;
-
- my_profile->messengers = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == my_profile->messengers) {
- CTS_ERR("calloc() return NULL");
- __ctsvc_my_profile_destroy((contacts_record_h)my_profile, true);
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- my_profile->messengers->l_type = CTSVC_RECORD_MESSENGER;
-
- my_profile->postal_addrs = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == my_profile->postal_addrs) {
- CTS_ERR("calloc() return NULL");
- __ctsvc_my_profile_destroy((contacts_record_h)my_profile, true);
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- my_profile->postal_addrs->l_type = CTSVC_RECORD_ADDRESS;
-
- my_profile->urls = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == my_profile->urls) {
- CTS_ERR("calloc() return NULL");
- __ctsvc_my_profile_destroy((contacts_record_h)my_profile, true);
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- my_profile->urls->l_type = CTSVC_RECORD_URL;
-
- my_profile->nicknames = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == my_profile->nicknames) {
- CTS_ERR("calloc() return NULL");
- __ctsvc_my_profile_destroy((contacts_record_h)my_profile, true);
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- my_profile->nicknames->l_type = CTSVC_RECORD_NICKNAME;
-
- my_profile->profiles = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == my_profile->profiles) {
- CTS_ERR("calloc() return NULL");
- __ctsvc_my_profile_destroy((contacts_record_h)my_profile, true);
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- my_profile->profiles->l_type = CTSVC_RECORD_PROFILE;
-
- my_profile->relationships = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == my_profile->relationships) {
- CTS_ERR("calloc() return NULL");
- __ctsvc_my_profile_destroy((contacts_record_h)my_profile, true);
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- my_profile->relationships->l_type = CTSVC_RECORD_RELATIONSHIP;
-
- my_profile->images = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == my_profile->images) {
- CTS_ERR("calloc() return NULL");
- __ctsvc_my_profile_destroy((contacts_record_h)my_profile, true);
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- my_profile->images->l_type = CTSVC_RECORD_IMAGE;
-
- my_profile->extensions = calloc(1, sizeof(ctsvc_list_s));
- if (NULL == my_profile->extensions) {
- CTS_ERR("calloc() return NULL");
- __ctsvc_my_profile_destroy((contacts_record_h)my_profile, true);
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- my_profile->extensions->l_type = CTSVC_RECORD_EXTENSION;
-
- *out_record = (contacts_record_h)my_profile;
- return CONTACTS_ERROR_NONE;
+ do {
+ my_profile->name = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == my_profile->name)
+ break;
+ my_profile->name->l_type = CTSVC_RECORD_NAME;
+
+ my_profile->company = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == my_profile->company)
+ break;
+ my_profile->company->l_type = CTSVC_RECORD_COMPANY;
+
+ my_profile->note = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == my_profile->note)
+ break;
+ my_profile->note->l_type = CTSVC_RECORD_NOTE;
+
+ my_profile->numbers = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == my_profile->numbers)
+ break;
+ my_profile->numbers->l_type = CTSVC_RECORD_NUMBER;
+
+ my_profile->emails = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == my_profile->emails)
+ break;
+ my_profile->emails->l_type = CTSVC_RECORD_EMAIL;
+
+ my_profile->events = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == my_profile->events)
+ break;
+ my_profile->events->l_type = CTSVC_RECORD_EVENT;
+
+ my_profile->messengers = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == my_profile->messengers)
+ break;
+ my_profile->messengers->l_type = CTSVC_RECORD_MESSENGER;
+
+ my_profile->postal_addrs = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == my_profile->postal_addrs)
+ break;
+ my_profile->postal_addrs->l_type = CTSVC_RECORD_ADDRESS;
+
+ my_profile->urls = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == my_profile->urls)
+ break;
+ my_profile->urls->l_type = CTSVC_RECORD_URL;
+
+ my_profile->nicknames = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == my_profile->nicknames)
+ break;
+ my_profile->nicknames->l_type = CTSVC_RECORD_NICKNAME;
+
+ my_profile->profiles = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == my_profile->profiles)
+ break;
+ my_profile->profiles->l_type = CTSVC_RECORD_PROFILE;
+
+ my_profile->relationships = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == my_profile->relationships)
+ break;
+ my_profile->relationships->l_type = CTSVC_RECORD_RELATIONSHIP;
+
+ my_profile->images = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == my_profile->images)
+ break;
+ my_profile->images->l_type = CTSVC_RECORD_IMAGE;
+
+ my_profile->extensions = calloc(1, sizeof(ctsvc_list_s));
+ if (NULL == my_profile->extensions)
+ break;
+ my_profile->extensions->l_type = CTSVC_RECORD_EXTENSION;
+
+ *out_record = (contacts_record_h)my_profile;
+ return CONTACTS_ERROR_NONE;
+ } while (0);
+
+ CTS_ERR("calloc() Fail");
+ free(my_profile->extensions);
+ free(my_profile->images);
+ free(my_profile->relationships);
+ free(my_profile->profiles);
+ free(my_profile->nicknames);
+ free(my_profile->urls);
+ free(my_profile->postal_addrs);
+ free(my_profile->messengers);
+ free(my_profile->events);
+ free(my_profile->emails);
+ free(my_profile->numbers);
+ free(my_profile->note);
+ free(my_profile->company);
+ free(my_profile->name);
+ free(my_profile);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
static int __ctsvc_my_profile_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_my_profile_s *my_profile = (ctsvc_my_profile_s*)record;
- my_profile->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ my_profile->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(my_profile->base.properties_flags);
free(my_profile->display_name);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_my_profile_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_my_profile_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_my_profile_s *my_profile = (ctsvc_my_profile_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_MY_PROFILE_ID:
+ CHECK_DIRTY_VAL(my_profile->id, value, is_dirty);
my_profile->id = value;
break;
case CTSVC_PROPERTY_MY_PROFILE_CHANGED_TIME:
+ CHECK_DIRTY_VAL(my_profile->changed_time, value, is_dirty);
my_profile->changed_time = value;
break;
case CTSVC_PROPERTY_MY_PROFILE_ADDRESSBOOK_ID:
- RETVM_IF(my_profile->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < my_profile->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (my_profile)", property_id);
+ CHECK_DIRTY_VAL(my_profile->addressbook_id, value, is_dirty);
my_profile->addressbook_id = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_my_profile_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_my_profile_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_my_profile_s *my_profile = (ctsvc_my_profile_s*)record;
switch(property_id) {
}
static int __ctsvc_my_profile_get_child_record_count(contacts_record_h record,
- unsigned int property_id, int *count )
+ unsigned int property_id, int *count)
{
int ret;
contacts_list_h list = NULL;
if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
return ret;
- if(list)
+ if (list)
contacts_list_get_count(list, count);
return CONTACTS_ERROR_NONE;
}
static int __ctsvc_my_profile_get_child_record_at_p(contacts_record_h record,
- unsigned int property_id, int index, contacts_record_h* out_record )
+ unsigned int property_id, int index, contacts_record_h* out_record)
{
int ret;
int count;
}
static int __ctsvc_my_profile_clone_child_record_list(contacts_record_h record,
- unsigned int property_id, contacts_list_h* out_list )
+ unsigned int property_id, contacts_list_h* out_list)
{
int ret;
int count;
static int __ctsvc_my_profile_add_child_record(contacts_record_h record,
- unsigned int property_id, contacts_record_h child_record )
+ unsigned int property_id, contacts_record_h child_record)
{
int ret;
contacts_list_h list = NULL;
static int __ctsvc_my_profile_remove_child_record(contacts_record_h record,
- unsigned int property_id, contacts_record_h child_record )
+ unsigned int property_id, contacts_record_h child_record)
{
int id;
int ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_my_profile_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_my_profile_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty )
{
ctsvc_my_profile_s *my_profile = (ctsvc_my_profile_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_MY_PROFILE_DISPLAY_NAME:
+ CHECK_DIRTY_STR(my_profile->display_name, str, is_dirty);
FREEandSTRDUP(my_profile->display_name, str);
break;
case CTSVC_PROPERTY_MY_PROFILE_IMAGE_THUMBNAIL:
+ CHECK_DIRTY_STR(my_profile->image_thumbnail_path, str, is_dirty);
FREEandSTRDUP(my_profile->image_thumbnail_path, str);
break;
case CTSVC_PROPERTY_MY_PROFILE_UID:
+ CHECK_DIRTY_STR(my_profile->uid, str, is_dirty);
FREEandSTRDUP(my_profile->uid, str);
break;
default :
src_data = (ctsvc_my_profile_s*)record;
out_data = calloc(1, sizeof(ctsvc_my_profile_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_my_profile_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_my_profile_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->addressbook_id = src_data->addressbook_id;
ctsvc_list_clone((contacts_list_h)src_data->extensions, (contacts_list_h*)&out_data->extensions);
out_data->extensions->l_type = CTSVC_RECORD_EXTENSION;
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_my_profile_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
*
*/
-#include <glib.h>
-
#include "contacts.h"
#include "ctsvc_internal.h"
#include "ctsvc_record.h"
static int __ctsvc_person_get_int(contacts_record_h record, unsigned int property_id, int *out);
static int __ctsvc_person_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
static int __ctsvc_person_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_person_get_bool( contacts_record_h record, unsigned int property_id, bool *value );
-static int __ctsvc_person_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_person_set_str(contacts_record_h record, unsigned int property_id, const char* str );
-static int __ctsvc_person_set_bool(contacts_record_h record, unsigned int property_id, bool value);
-
+static int __ctsvc_person_get_bool(contacts_record_h record, unsigned int property_id, bool *value);
+static int __ctsvc_person_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_person_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
+static int __ctsvc_person_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty);
ctsvc_record_plugin_cb_s person_plugin_cbs = {
.create = __ctsvc_person_create,
static int __ctsvc_person_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_person_s *person = (ctsvc_person_s*)record;
- person->base.plugin_cbs = NULL; // help to find double-destroy bug (refer to the contacts_record_destroy)
+ person->base.plugin_cbs = NULL; /* help to find double-destroy bug (refer to the contacts_record_destroy) */
free(person->base.properties_flags);
free(person->display_name);
src_data = (ctsvc_person_s*)record;
out_data = calloc(1, sizeof(ctsvc_person_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_person_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_person_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->is_favorite = src_data->is_favorite;
out_data->has_phonenumber = src_data->has_phonenumber;
out_data->message_alert = SAFE_STRDUP(src_data->message_alert);
out_data->status = SAFE_STRDUP(src_data->status);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_person_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_person_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_person_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_person_s *person = (ctsvc_person_s *)record;
switch(property_id) {
return __ctsvc_person_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_person_get_bool(contacts_record_h record, unsigned int property_id, bool *value )
+static int __ctsvc_person_get_bool(contacts_record_h record, unsigned int property_id, bool *value)
{
ctsvc_person_s *person = (ctsvc_person_s *)record;
switch (property_id) {
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_person_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_person_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_person_s *person = (ctsvc_person_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID:
+ CHECK_DIRTY_VAL(person->name_contact_id, value, is_dirty);
person->name_contact_id = value;
break;
case CTSVC_PROPERTY_PERSON_ID:
+ CHECK_DIRTY_VAL(person->person_id, value, is_dirty);
person->person_id = value;
break;
case CTSVC_PROPERTY_PERSON_LINK_COUNT:
+ CHECK_DIRTY_VAL(person->link_count, value, is_dirty);
person->link_count = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_person_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_person_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty)
{
ctsvc_person_s *person = (ctsvc_person_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_PERSON_DISPLAY_NAME:
+ CHECK_DIRTY_STR(person->display_name, str, is_dirty);
FREEandSTRDUP( person->display_name, str);
break;
case CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX:
+ CHECK_DIRTY_STR(person->display_name_index, str, is_dirty);
FREEandSTRDUP( person->display_name_index, str);
break;
case CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL:
+ CHECK_DIRTY_STR(person->image_thumbnail_path, str, is_dirty);
FREEandSTRDUP(person->image_thumbnail_path, str);
break;
case CTSVC_PROPERTY_PERSON_RINGTONE:
+ CHECK_DIRTY_STR(person->ringtone_path, str, is_dirty);
FREEandSTRDUP(person->ringtone_path, str);
break;
case CTSVC_PROPERTY_PERSON_VIBRATION:
+ CHECK_DIRTY_STR(person->vibration, str, is_dirty);
FREEandSTRDUP(person->vibration, str);
break;
case CTSVC_PROPERTY_PERSON_MESSAGE_ALERT:
+ CHECK_DIRTY_STR(person->message_alert, str, is_dirty);
FREEandSTRDUP(person->message_alert, str);
break;
default :
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_person_set_bool(contacts_record_h record, unsigned int property_id, bool value)
+static int __ctsvc_person_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty)
{
ctsvc_person_s *person = (ctsvc_person_s *)record;
switch(property_id) {
case CTSVC_PROPERTY_PERSON_IS_FAVORITE:
+ CHECK_DIRTY_VAL(person->is_favorite, value, is_dirty);
if (person->is_favorite != value) {
person->is_favorite = value;
}
*
*/
-#include <glib.h>
-
#include "contacts.h"
#include "ctsvc_internal.h"
static int __ctsvc_phonelog_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_phonelog_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_phonelog_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_phonelog_get_str(contacts_record_h record, unsigned int property_id, char** out_str );
+static int __ctsvc_phonelog_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
static int __ctsvc_phonelog_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_phonelog_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_phonelog_set_str(contacts_record_h record, unsigned int property_id, const char* str );
+static int __ctsvc_phonelog_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_phonelog_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
ctsvc_record_plugin_cb_s phonelog_plugin_cbs = {
.create = __ctsvc_phonelog_create,
static int __ctsvc_phonelog_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_phonelog_s* phonelog = (ctsvc_phonelog_s*)record;
- phonelog->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ phonelog->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(phonelog->base.properties_flags);
free(phonelog->address);
src_data = (ctsvc_phonelog_s*)record;
out_data = calloc(1, sizeof(ctsvc_phonelog_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_phonelog_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_phonelog_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->address = SAFE_STRDUP(src_data->address);
out_data->extra_data2 = SAFE_STRDUP(src_data->extra_data2);
out_data->sim_slot_no = src_data->sim_slot_no;
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_phonelog_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_phonelog_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_phonelog_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_phonelog_s* phonelog = (ctsvc_phonelog_s*)record;
return __ctsvc_phonelog_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_phonelog_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_phonelog_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_phonelog_s* phonelog = (ctsvc_phonelog_s*)record;
switch(property_id) {
case CTSVC_PROPERTY_PHONELOG_ID:
+ CHECK_DIRTY_VAL(phonelog->id, value, is_dirty);
phonelog->id = value;
break;
case CTSVC_PROPERTY_PHONELOG_PERSON_ID:
- RETVM_IF(phonelog->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < phonelog->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (phonelog)", property_id);
+ CHECK_DIRTY_VAL(phonelog->person_id, value, is_dirty);
phonelog->person_id = value;
break;
case CTSVC_PROPERTY_PHONELOG_LOG_TIME:
- RETVM_IF(phonelog->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < phonelog->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (phonelog)", property_id);
+ CHECK_DIRTY_VAL(phonelog->log_time, value, is_dirty);
phonelog->log_time = value;
break;
case CTSVC_PROPERTY_PHONELOG_LOG_TYPE:
&& value <= CONTACTS_PLOG_TYPE_MMS_BLOCKED)
|| (CONTACTS_PLOG_TYPE_EMAIL_RECEIVED <= value
&& value <= CONTACTS_PLOG_TYPE_EMAIL_SENT)
- )
+ ) {
+ CHECK_DIRTY_VAL(phonelog->log_type, value, is_dirty);
phonelog->log_type = value;
+ }
else {
CTS_ERR("Invalid parameter : log type is in invalid range (%d)", value);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
break;
case CTSVC_PROPERTY_PHONELOG_EXTRA_DATA1:
- RETVM_IF(phonelog->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < phonelog->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (phonelog)", property_id);
+ CHECK_DIRTY_VAL(phonelog->extra_data1, value, is_dirty);
phonelog->extra_data1 = value;
break;
case CTSVC_PROPERTY_PHONELOG_SIM_SLOT_NO:
- RETVM_IF(phonelog->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < phonelog->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (phonelog)", property_id);
+ CHECK_DIRTY_VAL(phonelog->sim_slot_no, value, is_dirty);
phonelog->sim_slot_no = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_phonelog_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_phonelog_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty)
{
ctsvc_phonelog_s* phonelog = (ctsvc_phonelog_s*)record;
switch(property_id) {
case CTSVC_PROPERTY_PHONELOG_ADDRESS:
- RETVM_IF(phonelog->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < phonelog->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (phonelog)", property_id);
+ CHECK_DIRTY_STR(phonelog->address, str, is_dirty);
FREEandSTRDUP(phonelog->address, str);
break;
case CTSVC_PROPERTY_PHONELOG_EXTRA_DATA2:
+ CHECK_DIRTY_STR(phonelog->extra_data2, str, is_dirty);
FREEandSTRDUP(phonelog->extra_data2, str);
break;
default :
#include "ctsvc_view.h"
#ifdef _CONTACTS_IPC_SERVER
-#ifdef ENABLE_SIM_FEATURE
#include "ctsvc_server_sim.h"
-#endif // ENABLE_SIM_FEATURE
-#endif
+#endif /* _CONTACTS_IPC_SERVER */
static int __ctsvc_result_create(contacts_record_h* out_record);
static int __ctsvc_result_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_result_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_result_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
static int __ctsvc_result_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
-static int __ctsvc_result_get_int(contacts_record_h record, unsigned int property_id, int* out_value );
-static int __ctsvc_result_get_lli(contacts_record_h record, unsigned int property_id, long long int* out_value );
-static int __ctsvc_result_get_bool(contacts_record_h record, unsigned int property_id, bool* out_value );
-static int __ctsvc_result_get_double(contacts_record_h record, unsigned int property_id, double* out_value );
-static int __ctsvc_result_set_int(contacts_record_h record, unsigned int property_id, int value );
-static int __ctsvc_result_set_lli(contacts_record_h record, unsigned int property_id, long long int value );
-static int __ctsvc_result_set_bool(contacts_record_h record, unsigned int property_id, bool value );
-static int __ctsvc_result_set_str(contacts_record_h record, unsigned int property_id, const char *str );
-static int __ctsvc_result_set_double(contacts_record_h record, unsigned int property_id, double value );
+static int __ctsvc_result_get_int(contacts_record_h record, unsigned int property_id, int* out_value);
+static int __ctsvc_result_get_bool(contacts_record_h record, unsigned int property_id, bool* out_value);
+static int __ctsvc_result_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty );
+static int __ctsvc_result_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty );
+static int __ctsvc_result_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty);
ctsvc_record_plugin_cb_s result_plugin_cbs = {
.create = __ctsvc_result_create,
.get_str_p = __ctsvc_result_get_str_p,
.get_int = __ctsvc_result_get_int,
.get_bool = __ctsvc_result_get_bool,
- .get_lli = __ctsvc_result_get_lli,
- .get_double = __ctsvc_result_get_double,
+ .get_lli = NULL,
+ .get_double = NULL,
.set_str = __ctsvc_result_set_str,
.set_int = __ctsvc_result_set_int,
.set_bool = __ctsvc_result_set_bool,
- .set_lli = __ctsvc_result_set_lli,
- .set_double = __ctsvc_result_set_double,
+ .set_lli = NULL,
+ .set_double = NULL,
.add_child_record = NULL,
.remove_child_record = NULL,
.get_child_record_count = NULL,
GSList *cursor;
ctsvc_result_s* result = (ctsvc_result_s*)record;
- for(cursor = result->values;cursor;cursor=cursor->next){
+ for (cursor = result->values;cursor;cursor=cursor->next) {
ctsvc_result_value_s *data = cursor->data;
if (data->type == CTSVC_VIEW_DATA_TYPE_STR)
free(data->value.s);
free(data);
}
g_slist_free(result->values);
- result->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ result->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(result->base.properties_flags);
free(result);
static int __ctsvc_result_clone(contacts_record_h record, contacts_record_h *out_record)
{
- ctsvc_result_s *out_data = NULL;
- ctsvc_result_s *src_data = NULL;
- GSList *cursor;
+ ctsvc_result_s *out_data = NULL;
+ ctsvc_result_s *src_data = NULL;
+ GSList *cursor;
- src_data = (ctsvc_result_s*)record;
- out_data = calloc(1, sizeof(ctsvc_result_s));
- RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_result_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ src_data = (ctsvc_result_s*)record;
+ out_data = calloc(1, sizeof(ctsvc_result_s));
+ RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
+ "Out of memeory : calloc(ctsvc_result_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
- for(cursor=src_data->values;cursor;cursor=cursor->next) {
+ for (cursor=src_data->values;cursor;cursor=cursor->next) {
ctsvc_result_value_s *src = cursor->data;
ctsvc_result_value_s *dest = calloc(1, sizeof(ctsvc_result_value_s));
if (NULL == dest) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
__ctsvc_result_destroy((contacts_record_h)out_data, true);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
out_data->values = g_slist_append(out_data->values, (void*)dest);
}
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_result_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
}
static int __ctsvc_result_get_str_real(contacts_record_h record, unsigned int property_id,
- char** out_str, bool copy )
+ char** out_str, bool copy)
{
ctsvc_result_s* result = (ctsvc_result_s *)record;
GSList *cursor;
- for(cursor = result->values;cursor;cursor=cursor->next){
+ if (CTSVC_VIEW_DATA_TYPE_STR != (CTSVC_VIEW_DATA_TYPE_STR & property_id)) {
+ CTS_ERR("property_id is not str type.");
+ return CONTACTS_ERROR_INVALID_PARAMETER;
+ }
+
+ for (cursor = result->values;cursor;cursor=cursor->next) {
ctsvc_result_value_s *data = cursor->data;
if (data->property_id == property_id) {
- if (data->type == CTSVC_VIEW_DATA_TYPE_STR) {
- *out_str = GET_STR(copy, data->value.s);
- return CONTACTS_ERROR_NONE;
- }
- else {
- CTS_ERR("use another get_type API, (type : %d)", data->type);
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
+ *out_str = GET_STR(copy, data->value.s);
+ return CONTACTS_ERROR_NONE;
}
}
return __ctsvc_result_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_result_get_int(contacts_record_h record, unsigned int property_id, int* out_value )
+static int __ctsvc_result_get_int(contacts_record_h record, unsigned int property_id, int* out_value)
{
ctsvc_result_s* result = (ctsvc_result_s *)record;
GSList *cursor;
- //TODO: check the value type of property_id is int
- for(cursor = result->values;cursor;cursor=cursor->next){
+
+ if (CTSVC_VIEW_DATA_TYPE_INT != (CTSVC_VIEW_DATA_TYPE_INT & property_id)) {
+ CTS_ERR("property_id is not int type.");
+ return CONTACTS_ERROR_INVALID_PARAMETER;
+ }
+
+ for (cursor = result->values;cursor;cursor=cursor->next) {
ctsvc_result_value_s *data = cursor->data;
if (data->property_id == property_id) {
- if (data->type == CTSVC_VIEW_DATA_TYPE_INT) {
- *out_value = data->value.i;
- return CONTACTS_ERROR_NONE;
- }
- else {
- CTS_ERR("use another get_type API, (type : %d)", data->type);
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
+ *out_value = data->value.i;
+ return CONTACTS_ERROR_NONE;
}
}
return CONTACTS_ERROR_NO_DATA;
}
-static int __ctsvc_result_set_int(contacts_record_h record, unsigned int property_id, int value )
+static int __ctsvc_result_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_result_s* result = (ctsvc_result_s *)record;
GSList *cursor;
ctsvc_result_value_s *data;
- // TODO: check the value type of property_id is int
- for(cursor = result->values;cursor;cursor=cursor->next){
+ if (CTSVC_VIEW_DATA_TYPE_INT != (CTSVC_VIEW_DATA_TYPE_INT & property_id)) {
+ CTS_ERR("property_id is not int type.");
+ return CONTACTS_ERROR_INVALID_PARAMETER;
+ }
+
+ for (cursor = result->values;cursor;cursor=cursor->next) {
data = cursor->data;
if (data->property_id == property_id) {
- if (data->type == CTSVC_VIEW_DATA_TYPE_INT) {
#ifdef _CONTACTS_IPC_SERVER
-#ifdef ENABLE_SIM_FEATURE
-
- if (property_id == CTSVC_PROPERTY_PHONELOG_SIM_SLOT_NO)
- data->value.i = ctsvc_server_sim_get_sim_slot_no_by_info_id(value);
- else
-#endif // ENABLE_SIM_FEATURE
-#endif
- data->value.i = value;
- return CONTACTS_ERROR_NONE;
+ if (property_id == CTSVC_PROPERTY_PHONELOG_SIM_SLOT_NO) {
+ CHECK_DIRTY_VAL(data->value.i, value, is_dirty);
+ data->value.i = ctsvc_server_sim_get_sim_slot_no_by_info_id(value);
}
- else {
- CTS_ERR("use another get_type API, (type : %d)", data->type);
- return CONTACTS_ERROR_INVALID_PARAMETER;
+ else
+#endif /* _CONTACTS_IPC_SERVER */
+ {
+ CHECK_DIRTY_VAL(data->value.i, value, is_dirty);
+ data->value.i = value;
}
+ return CONTACTS_ERROR_NONE;
}
}
data = calloc(1, sizeof(ctsvc_result_value_s));
- RETVM_IF(NULL == data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
-
+ if (NULL == data) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
data->property_id = property_id;
data->type = CTSVC_VIEW_DATA_TYPE_INT;
#ifdef _CONTACTS_IPC_SERVER
-#ifdef ENABLE_SIM_FEATURE
- if (property_id == CTSVC_PROPERTY_PHONELOG_SIM_SLOT_NO)
+ if (property_id == CTSVC_PROPERTY_PHONELOG_SIM_SLOT_NO) {
+ CHECK_DIRTY_VAL(data->value.i, value, is_dirty);
data->value.i = ctsvc_server_sim_get_sim_slot_no_by_info_id(value);
- else
-#endif // ENABLE_SIM_FEATURE
-#endif
- data->value.i = value;
- result->values = g_slist_append(result->values, (void*)data);
- return CONTACTS_ERROR_NONE;
-}
-
-static int __ctsvc_result_set_lli(contacts_record_h record, unsigned int property_id, long long int value )
-{
- ctsvc_result_s* result = (ctsvc_result_s *)record;
- GSList *cursor;
- ctsvc_result_value_s *data;
-
- // TODO: check the value type of property_id is int
- for(cursor = result->values;cursor;cursor=cursor->next){
- data = cursor->data;
- if (data->property_id == property_id) {
- if (data->type == CTSVC_VIEW_DATA_TYPE_LLI) {
- data->value.l = value;
- return CONTACTS_ERROR_NONE;
- }
- else {
- CTS_ERR("use another get_type API, (type : %d)", data->type);
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
- }
}
-
- data = calloc(1, sizeof(ctsvc_result_value_s));
- RETVM_IF(NULL == data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
- data->property_id = property_id;
- data->type = CTSVC_VIEW_DATA_TYPE_LLI;
- data->value.l = value;
- result->values = g_slist_append(result->values, (void*)data);
- return CONTACTS_ERROR_NONE;
-}
-
-static int __ctsvc_result_set_double(contacts_record_h record, unsigned int property_id, double value )
-{
- ctsvc_result_s* result = (ctsvc_result_s *)record;
- GSList *cursor;
- ctsvc_result_value_s *data;
-
- for(cursor = result->values;cursor;cursor=cursor->next){
- data = cursor->data;
- if (data->property_id == property_id) {
- if (data->type == CTSVC_VIEW_DATA_TYPE_DOUBLE) {
- data->value.d = value;
- return CONTACTS_ERROR_NONE;
- }
- else {
- CTS_ERR("use another get_type API, (type : %d)", data->type);
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
- }
+ else
+#endif /* _CONTACTS_IPC_SERVER */
+ {
+ CHECK_DIRTY_VAL(data->value.i, value, is_dirty);
+ data->value.i = value;
}
-
- data = calloc(1, sizeof(ctsvc_result_value_s));
- RETVM_IF(NULL == data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
- data->property_id = property_id;
- data->type = CTSVC_VIEW_DATA_TYPE_DOUBLE;
- data->value.d = value;
result->values = g_slist_append(result->values, (void*)data);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_result_set_bool(contacts_record_h record, unsigned int property_id, bool value )
+static int __ctsvc_result_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty)
{
ctsvc_result_s* result = (ctsvc_result_s *)record;
GSList *cursor;
ctsvc_result_value_s *data;
- // TODO: check the value type of property_id is int
+ /* TODO: check the value type of property_id is int */
for(cursor = result->values;cursor;cursor=cursor->next){
data = cursor->data;
if (data->property_id == property_id) {
if (data->type == CTSVC_VIEW_DATA_TYPE_BOOL) {
+ CHECK_DIRTY_VAL(data->value.b, value, is_dirty);
data->value.b = value;
return CONTACTS_ERROR_NONE;
}
}
data = calloc(1, sizeof(ctsvc_result_value_s));
- RETVM_IF(NULL == data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
-
+ if (NULL == data) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
data->property_id = property_id;
data->type = CTSVC_VIEW_DATA_TYPE_BOOL;
- data->value.i = value;
+ CHECK_DIRTY_VAL(data->value.b, value, is_dirty);
+ data->value.b = value;
result->values = g_slist_append(result->values, (void*)data);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_result_set_str(contacts_record_h record, unsigned int property_id, const char *str )
+static int __ctsvc_result_set_str(contacts_record_h record, unsigned int property_id, const char *str, bool *is_dirty)
{
ctsvc_result_s* result = (ctsvc_result_s *)record;
GSList *cursor;
char *full_path = NULL;
int str_len;
- // TODO: check the value type of property_id is int
- for(cursor = result->values;cursor;cursor=cursor->next){
+ if (CTSVC_VIEW_DATA_TYPE_STR != (CTSVC_VIEW_DATA_TYPE_STR & property_id)) {
+ CTS_ERR("property_id is not str type.");
+ return CONTACTS_ERROR_INVALID_PARAMETER;
+ }
+
+ for (cursor = result->values;cursor;cursor=cursor->next) {
data = cursor->data;
if (data->property_id == property_id) {
- if (data->type == CTSVC_VIEW_DATA_TYPE_STR) {
- switch (property_id) {
- case CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL:
- case CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL:
- if (str) {
- str_len = strlen(CTSVC_CONTACT_IMG_FULL_LOCATION) + strlen(str) + 2;
- full_path = calloc(1, str_len);
- RETVM_IF(NULL == full_path, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
- snprintf(full_path, str_len, "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, str);
+ switch (property_id) {
+ case CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL:
+ case CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL:
+ if (str) {
+ str_len = strlen(CTSVC_CONTACT_IMG_FULL_LOCATION) + strlen(str) + 2;
+ full_path = calloc(1, str_len);
+ if (NULL == full_path) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
- free(data->value.s);
- data->value.s = full_path;
- return CONTACTS_ERROR_NONE;
- default:
- FREEandSTRDUP(data->value.s, str);
- return CONTACTS_ERROR_NONE;
+ snprintf(full_path, str_len, "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, str);
}
- }
- else {
- CTS_ERR("use another get_type API, (type : %d)", data->type);
- return CONTACTS_ERROR_INVALID_PARAMETER;
+ CHECK_DIRTY_STR(data->value.s, full_path, is_dirty);
+ free(data->value.s);
+ data->value.s = full_path;
+ return CONTACTS_ERROR_NONE;
+ default:
+ CHECK_DIRTY_STR(data->value.s, str, is_dirty);
+ FREEandSTRDUP(data->value.s, str);
+ return CONTACTS_ERROR_NONE;
}
}
}
data = calloc(1, sizeof(ctsvc_result_value_s));
- RETVM_IF(NULL == data, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
-
+ if (NULL == data) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
data->property_id = property_id;
data->type = CTSVC_VIEW_DATA_TYPE_STR;
switch (property_id) {
str_len = strlen(CTSVC_CONTACT_IMG_FULL_LOCATION) + strlen(str) + 2;
full_path = calloc(1, str_len);
if (NULL == full_path) {
- CTS_ERR("calloc() return NULL");
- free(data->value.s);
+ CTS_ERR("calloc() Fail");
free(data);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
snprintf(full_path, str_len, "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, str);
}
+ CHECK_DIRTY_STR(data->value.s, full_path, is_dirty);
free(data->value.s);
data->value.s = full_path;
break;
default:
+ CHECK_DIRTY_STR(data->value.s, str, is_dirty);
data->value.s = SAFE_STRDUP(str);
break;
}
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_result_get_bool(contacts_record_h record, unsigned int property_id, bool* out_value )
+static int __ctsvc_result_get_bool(contacts_record_h record, unsigned int property_id, bool* out_value)
{
ctsvc_result_s* result = (ctsvc_result_s *)record;
GSList *cursor;
- for(cursor = result->values;cursor;cursor=cursor->next){
+ for (cursor = result->values;cursor;cursor=cursor->next) {
ctsvc_result_value_s *data = cursor->data;
if (data->property_id == property_id) {
if (data->type == CTSVC_VIEW_DATA_TYPE_BOOL) {
return CONTACTS_ERROR_NO_DATA;
}
-static int __ctsvc_result_get_lli(contacts_record_h record, unsigned int property_id, long long int* out_value )
-{
- ctsvc_result_s* result = (ctsvc_result_s *)record;
- GSList *cursor;
- for(cursor = result->values;cursor;cursor=cursor->next){
- ctsvc_result_value_s *data = cursor->data;
- if (data->property_id == property_id) {
- if (data->type == CTSVC_VIEW_DATA_TYPE_LLI) {
- *out_value = data->value.l;
- return CONTACTS_ERROR_NONE;
- }
- else {
- CTS_ERR("use another get_type API, (type : %d)", data->type);
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
- }
- }
-
- return CONTACTS_ERROR_NO_DATA;
-}
-
-static int __ctsvc_result_get_double(contacts_record_h record, unsigned int property_id, double* out_value )
-{
- ctsvc_result_s* result = (ctsvc_result_s *)record;
- GSList *cursor;
- for(cursor = result->values;cursor;cursor=cursor->next){
- ctsvc_result_value_s *data = cursor->data;
- if (data->property_id == property_id) {
- if (data->type == CTSVC_VIEW_DATA_TYPE_DOUBLE) {
- *out_value = data->value.d;
- return CONTACTS_ERROR_NONE;
- }
- else {
- CTS_ERR("use another get_type API, (type : %d)", data->type);
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
- }
- }
-
- return CONTACTS_ERROR_NO_DATA;
-}
-
*
*/
-#include <glib.h>
-
#include "contacts.h"
#include "ctsvc_internal.h"
#include "ctsvc_record.h"
static int __ctsvc_sdn_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_sdn_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_sdn_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_sdn_get_str(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_sdn_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_sdn_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_sdn_set_str(contacts_record_h record, unsigned int property_id, const char* str );
+static int __ctsvc_sdn_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_sdn_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_sdn_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_sdn_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
ctsvc_record_plugin_cb_s sdn_plugin_cbs = {
.create = __ctsvc_sdn_create,
static int __ctsvc_sdn_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_sdn_s* sdn = (ctsvc_sdn_s*)record;
- sdn->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ sdn->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(sdn->base.properties_flags);
free(sdn->name);
src_data = (ctsvc_sdn_s*)record;
out_data = calloc(1, sizeof(ctsvc_sdn_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_sdn_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_sdn_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->name = SAFE_STRDUP(src_data->name);
out_data->number = SAFE_STRDUP(src_data->number);
out_data->sim_slot_no = src_data->sim_slot_no;
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_sdn_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_sdn_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_sdn_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_sdn_s* sdn = (ctsvc_sdn_s*)record;
return __ctsvc_sdn_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_sdn_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_sdn_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_sdn_s* sdn = (ctsvc_sdn_s*)record;
switch(property_id) {
case CTSVC_PROPERTY_SDN_ID:
+ CHECK_DIRTY_VAL(sdn->id, value, is_dirty);
sdn->id = value;
break;
case CTSVC_PROPERTY_SDN_SIM_SLOT_NO:
+ CHECK_DIRTY_VAL(sdn->sim_slot_no, value, is_dirty);
sdn->sim_slot_no = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_sdn_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_sdn_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty)
{
ctsvc_sdn_s* sdn = (ctsvc_sdn_s*)record;
switch(property_id) {
case CTSVC_PROPERTY_SDN_NAME:
+ CHECK_DIRTY_STR(sdn->name, str, is_dirty);
FREEandSTRDUP(sdn->name, str);
break;
case CTSVC_PROPERTY_SDN_NUMBER:
+ CHECK_DIRTY_STR(sdn->number, str, is_dirty);
FREEandSTRDUP(sdn->number, str);
break;
default :
*
*/
-#include <glib.h>
-
#include "contacts.h"
#include "ctsvc_internal.h"
#include "ctsvc_record.h"
static int __ctsvc_speeddial_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_speeddial_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_speeddial_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_speeddial_get_str(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_speeddial_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str );
-static int __ctsvc_speeddial_set_int(contacts_record_h record, unsigned int property_id, int value);
-static int __ctsvc_speeddial_set_str(contacts_record_h record, unsigned int property_id, const char* str );
+static int __ctsvc_speeddial_get_str(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_speeddial_get_str_p(contacts_record_h record, unsigned int property_id, char** out_str);
+static int __ctsvc_speeddial_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+static int __ctsvc_speeddial_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty);
ctsvc_record_plugin_cb_s speeddial_plugin_cbs = {
static int __ctsvc_speeddial_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_speeddial_s* speeddial = (ctsvc_speeddial_s*)record;
- speeddial->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ speeddial->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(speeddial->base.properties_flags);
free(speeddial->display_name);
src_data = (ctsvc_speeddial_s*)record;
out_data = calloc(1, sizeof(ctsvc_speeddial_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_speeddial_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_speeddial_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->dial_number = src_data->dial_number;
out_data->label = SAFE_STRDUP(src_data->label);
out_data->number = SAFE_STRDUP(src_data->number);
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_speeddial_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_speeddial_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy )
+static int __ctsvc_speeddial_get_str_real(contacts_record_h record, unsigned int property_id, char** out_str, bool copy)
{
ctsvc_speeddial_s *speeddial = (ctsvc_speeddial_s*)record;
return __ctsvc_speeddial_get_str_real(record, property_id, out_str, true);
}
-static int __ctsvc_speeddial_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_speeddial_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_speeddial_s *speeddial = (ctsvc_speeddial_s*)record;
switch(property_id) {
case CTSVC_PROPERTY_SPEEDDIAL_NUMBER_TYPE:
+ CHECK_DIRTY_VAL(speeddial->number_type, value, is_dirty);
speeddial->number_type = value;
break;
case CTSVC_PROPERTY_SPEEDDIAL_PERSON_ID:
+ CHECK_DIRTY_VAL(speeddial->person_id, value, is_dirty);
speeddial->person_id = value;
break;
case CTSVC_PROPERTY_SPEEDDIAL_DIAL_NUMBER:
- RETVM_IF(speeddial->id > 0, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(0 < speeddial->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property_id(%d) is a read-only value (speeddial)", property_id);
+ CHECK_DIRTY_VAL(speeddial->dial_number, value, is_dirty);
speeddial->dial_number = value;
break;
case CTSVC_PROPERTY_SPEEDDIAL_NUMBER_ID:
+ CHECK_DIRTY_VAL(speeddial->number_id, value, is_dirty);
speeddial->number_id = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_speeddial_set_str(contacts_record_h record, unsigned int property_id, const char* str )
+static int __ctsvc_speeddial_set_str(contacts_record_h record, unsigned int property_id, const char* str, bool *is_dirty)
{
ctsvc_speeddial_s *speeddial = (ctsvc_speeddial_s*)record;
switch(property_id) {
case CTSVC_PROPERTY_SPEEDDIAL_DISPLAY_NAME:
+ CHECK_DIRTY_STR(speeddial->display_name, str, is_dirty);
FREEandSTRDUP(speeddial->display_name, str);
break;
case CTSVC_PROPERTY_SPEEDDIAL_NUMBER:
+ CHECK_DIRTY_STR(speeddial->number, str, is_dirty);
FREEandSTRDUP(speeddial->number, str);
break;
case CTSVC_PROPERTY_SPEEDDIAL_IMAGE_THUMBNAIL:
+ CHECK_DIRTY_STR(speeddial->image_thumbnail_path, str, is_dirty);
FREEandSTRDUP(speeddial->image_thumbnail_path, str);
break;
case CTSVC_PROPERTY_SPEEDDIAL_NUMBER_LABEL:
+ CHECK_DIRTY_STR(speeddial->label, str, is_dirty);
FREEandSTRDUP(speeddial->label, str);
break;
default :
*
*/
-#include <glib.h>
-
#include "contacts.h"
#include "ctsvc_internal.h"
#include "ctsvc_record.h"
static int __ctsvc_updated_info_destroy(contacts_record_h record, bool delete_child);
static int __ctsvc_updated_info_clone(contacts_record_h record, contacts_record_h *out_record);
static int __ctsvc_updated_info_get_int(contacts_record_h record, unsigned int property_id, int *out);
-static int __ctsvc_updated_info_set_int(contacts_record_h record, unsigned int property_id, int value);
+static int __ctsvc_updated_info_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
static int __ctsvc_updated_info_get_bool(contacts_record_h record, unsigned int property_id, bool *out);
-static int __ctsvc_updated_info_set_bool(contacts_record_h record, unsigned int property_id, bool value);
+static int __ctsvc_updated_info_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty);
ctsvc_record_plugin_cb_s updated_info_plugin_cbs = {
.create = __ctsvc_updated_info_create,
static int __ctsvc_updated_info_destroy(contacts_record_h record, bool delete_child)
{
ctsvc_updated_info_s* updated_info = (ctsvc_updated_info_s*)record;
- updated_info->base.plugin_cbs = NULL; // help to find double destroy bug (refer to the contacts_record_destroy)
+ updated_info->base.plugin_cbs = NULL; /* help to find double destroy bug (refer to the contacts_record_destroy) */
free(updated_info->base.properties_flags);
free(updated_info);
src_data = (ctsvc_updated_info_s*)record;
out_data = calloc(1, sizeof(ctsvc_updated_info_s));
RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
- "Out of memeory : calloc(ctsvc_updated_info_s) Failed(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+ "Out of memeory : calloc(ctsvc_updated_info_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
out_data->id = src_data->id;
out_data->changed_type = src_data->changed_type;
out_data->changed_ver = src_data->changed_ver;
out_data->addressbook_id = src_data->addressbook_id;
-
- CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+ out_data->image_changed = src_data->image_changed;
+ out_data->last_changed_type = src_data->last_changed_type;
+
+ int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_record_copy_base() Fail");
+ __ctsvc_updated_info_destroy((contacts_record_h)out_data, true);
+ return ret;
+ }
*out_record = (contacts_record_h)out_data;
return CONTACTS_ERROR_NONE;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_updated_info_set_int(contacts_record_h record, unsigned int property_id, int value)
+static int __ctsvc_updated_info_set_int(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty)
{
ctsvc_updated_info_s* updated_info = (ctsvc_updated_info_s*)record;
switch(property_id) {
case CTSVC_PROPERTY_UPDATE_INFO_ID :
+ CHECK_DIRTY_VAL(updated_info->id, value, is_dirty);
updated_info->id = value;
break;
case CTSVC_PROPERTY_UPDATE_INFO_ADDRESSBOOK_ID:
+ CHECK_DIRTY_VAL(updated_info->addressbook_id, value, is_dirty);
updated_info->addressbook_id = value;
break;
case CTSVC_PROPERTY_UPDATE_INFO_TYPE:
RETVM_IF(value < CONTACTS_CHANGE_INSERTED
- || value > CONTACTS_CHANGE_DELETED,
+ || CONTACTS_CHANGE_DELETED < value,
CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : update info type is in invalid range (%d)", value);
+ CHECK_DIRTY_VAL(updated_info->changed_type, value, is_dirty);
updated_info->changed_type = value;
break;
case CTSVC_PROPERTY_UPDATE_INFO_VERSION:
+ CHECK_DIRTY_VAL(updated_info->changed_ver, value, is_dirty);
updated_info->changed_ver = value;
break;
case CTSVC_PROPERTY_UPDATE_INFO_LAST_CHANGED_TYPE:
+ CHECK_DIRTY_VAL(updated_info->last_changed_type, value, is_dirty);
updated_info->last_changed_type = value;
break;
default:
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_updated_info_set_bool(contacts_record_h record, unsigned int property_id, bool value)
+static int __ctsvc_updated_info_set_bool(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty)
{
ctsvc_updated_info_s* updated_info = (ctsvc_updated_info_s*)record;
switch(property_id) {
case CTSVC_PROPERTY_UPDATE_INFO_IMAGE_CHANGED :
+ CHECK_DIRTY_VAL(updated_info->image_changed, value, is_dirty);
updated_info->image_changed = value;
break;
default:
*
*/
-#include <glib.h>
-
#include "contacts.h"
#include "ctsvc_internal.h"
#include "ctsvc_mutex.h"
API int contacts_sim_import_all_contacts()
{
-#ifndef ENABLE_SIM_FEATURE
- return CONTACTS_ERROR_NOT_SUPPORTED;
-#endif // ENABLE_SIM_FEATURE
-
int ret;
ctsvc_mutex_lock(CTS_MUTEX_SOCKET_FD);
API int contacts_sim_get_initialization_status(bool *completed)
{
-#ifndef ENABLE_SIM_FEATURE
- return CONTACTS_ERROR_NOT_SUPPORTED;
-#endif // ENABLE_SIM_FEATURE
-
int ret;
RETVM_IF(completed == NULL, CONTACTS_ERROR_INVALID_PARAMETER,
return read_size;
}
-#ifdef ENABLE_SIM_FEATURE
static int __ctsvc_socket_handle_return(int fd, ctsvc_socket_msg_s *msg)
{
CTS_FN_CALL;
RETVM_IF(-1 == ret, CONTACTS_ERROR_IPC, "__ctsvc_safe_write() Failed(errno = %d)", errno);
ret = __ctsvc_socket_handle_return(__ctsvc_sockfd, &msg);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_socket_handle_return() Failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_socket_handle_return() Fail(%d)", ret);
CTS_DBG("attach_num = %d", msg.attach_num);
for (i=0;i<msg.attach_num;i++)
RETVM_IF(-1 == ret, CONTACTS_ERROR_IPC, "__ctsvc_safe_write() Failed(errno = %d)", errno);
ret = __ctsvc_socket_handle_return(__ctsvc_sockfd, &msg);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_socket_handle_return() Failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_socket_handle_return() Fail(%d)", ret);
CTS_DBG("attach_num = %d", msg.attach_num);
ret = __ctsvc_safe_read(__ctsvc_sockfd, dest, msg.attach_sizes[0]);
RETVM_IF(-1 == ret, CONTACTS_ERROR_IPC, "__ctsvc_safe_read() Failed(errno = %d)", errno);
- if(atoi(dest) ==0)
+ if (atoi(dest) ==0)
*completed = false;
else
*completed = true;
return msg.val;
}
-
-#endif // ENABLE_SIM_FEATURE
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_SOCKET_H__
-#define __TIZEN_SOCIAL_CTSVC_SOCKET_H__
+#ifndef __CTSVC_SOCKET_H__
+#define __CTSVC_SOCKET_H__
#include "contacts.h"
#define CTSVC_SOCKET_PATH "/tmp/.contacts-svc.sock"
#define CTSVC_SOCKET_MSG_SIZE 1024
-// for use current contacts-svc-helper daemon
-// Message type
+/* for use current contacts-svc-helper daemon */
+/* Message type */
enum{
CTSVC_SOCKET_MSG_TYPE_REQUEST_RETURN_VALUE,
CTSVC_SOCKET_MSG_TYPE_REQUEST_IMPORT_SIM,
int attach_sizes[CTSVC_SOCKET_MSG_REQUEST_MAX_ATTACH];
}ctsvc_socket_msg_s;
-#ifdef ENABLE_SIM_FEATURE
int ctsvc_request_sim_import(int sim_slot_no);
int ctsvc_request_sim_get_initialization_status(int sim_slot_no, bool* completed);
-#endif // ENABLE_SIM_FEATURE
-
int ctsvc_socket_init(void);
void ctsvc_socket_final(void);
-#endif /* __TIZEN_SOCIAL_CTSVC_SOCKET_H__ */
+#endif /* __CTSVC_SOCKET_H__ */
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_STRUCT_H__
-#define __TIZEN_SOCIAL_CTSVC_STRUCT_H__
+#ifndef __CTSVC_STRUCT_H__
+#define __CTSVC_STRUCT_H__
#include <stdbool.h>
#include <stdlib.h>
#include "contacts_views.h"
-#define CTSVC_IMG_FULL_PATH_SIZE_MAX 1024 // current max length file path is 256
+#define CTSVC_IMG_FULL_PATH_SIZE_MAX 1024 /* current max length file path is 256 */
+#define CTSVC_PATH_MAX_LEN 1024
+#define CTSVC_STR_SHORT_LEN 1024
#define CTSVC_IMG_FULL_LOCATION "/opt/usr/data/contacts-svc/img"
#define CTSVC_CONTACT_IMG_FULL_LOCATION "/opt/usr/data/contacts-svc/img/contact"
+#define STRING_EQUAL 0
#define SAFE_STR(src) (src)?src:""
#define SAFE_STRDUP(src) (src)?strdup(src):NULL
#define SAFE_STRLEN(src) ((src)?strlen(src):0)
#define FREEandSTRDUP(dest, src) \
- do{ \
+ do { \
free(dest);\
if (src) dest = strdup(src);\
else dest = NULL; \
- }while (0)
+ } while (0)
#define GET_STR(copy, str) (copy)?(SAFE_STRDUP(str)):(str)
+#define CHECK_DIRTY_STR(src1, src2, is_dirty) \
+ do { \
+ if (src1 && NULL == src2) \
+ *is_dirty = true; \
+ else if (NULL == src1 && src2) \
+ *is_dirty = true; \
+ else if (src1 && src2 && 0 != strcmp(src1, src2)) \
+ *is_dirty = true; \
+ } while (0)
+#define CHECK_DIRTY_VAL(src1, src2, is_dirty) \
+ do { \
+ if (src1 != src2) \
+ *is_dirty = true; \
+ } while(0)
enum {
CTSVC_DATA_NAME = 1,
}property_info_s;
typedef int (*__ctsvc_record_create_cb)(contacts_record_h* out_record);
-typedef int (*__ctsvc_record_destroy_cb)(contacts_record_h record, bool delete_child );
+typedef int (*__ctsvc_record_destroy_cb)(contacts_record_h record, bool delete_child);
typedef int (*__ctsvc_record_clone_cb)(contacts_record_h record, contacts_record_h* out_record);
typedef int (*__ctsvc_record_get_str_cb)(contacts_record_h record, unsigned int property_id,char** out_str);
typedef int (*__ctsvc_record_get_lli_cb)(contacts_record_h record, unsigned int property_id, long long int *value);
typedef int (*__ctsvc_record_get_double_cb)(contacts_record_h record, unsigned int property_id, double *value);
-typedef int (*__ctsvc_record_set_str_cb)(contacts_record_h record, unsigned int property_id, const char* value);
-typedef int (*__ctsvc_record_set_int_cb)(contacts_record_h record, unsigned int property_id, int value);
-typedef int (*__ctsvc_record_set_bool_cb)(contacts_record_h record, unsigned int property_id, bool value);
-typedef int (*__ctsvc_record_set_lli_cb)(contacts_record_h record, unsigned int property_id, long long int value);
-typedef int (*__ctsvc_record_set_double_cb)(contacts_record_h record, unsigned int property_id, double value);
+typedef int (*__ctsvc_record_set_str_cb)(contacts_record_h record, unsigned int property_id, const char* value, bool *is_dirty);
+typedef int (*__ctsvc_record_set_int_cb)(contacts_record_h record, unsigned int property_id, int value, bool *is_dirty);
+typedef int (*__ctsvc_record_set_bool_cb)(contacts_record_h record, unsigned int property_id, bool value, bool *is_dirty);
+typedef int (*__ctsvc_record_set_lli_cb)(contacts_record_h record, unsigned int property_id, long long int value, bool *is_dirty);
+typedef int (*__ctsvc_record_set_double_cb)(contacts_record_h record, unsigned int property_id, double value, bool *is_dirty);
typedef int (*__ctsvc_record_add_child_record_cb)(contacts_record_h record, unsigned int property_id, contacts_record_h child_record);
typedef int (*__ctsvc_record_remove_child_record_cb)(contacts_record_h record, unsigned int property_id, contacts_record_h child_record);
typedef struct {
int filter_type;
char *view_uri;
- GSList *filter_ops; //ctsvc_filter_operator_e op;
- GSList *filters; //ctsvc_filter_h l_filter;
+ GSList *filter_ops; /* ctsvc_filter_operator_e op; */
+ GSList *filters; /* ctsvc_filter_h l_filter; */
property_info_s *properties;
unsigned int property_count;
}ctsvc_composite_filter_s;
int type;
char *label;
char *number;
- char *cleaned; // internally used
- char *normalized; // internally used
- char *lookup; // internally used : for min match
+ char *cleaned; /* internally used */
+ char *normalized; /* internally used */
+ char *lookup; /* internally used : for min match */
}ctsvc_number_s;
typedef struct {
int type;
char *label;
int date;
- bool is_leap_month;
+ bool is_leap_month; /* deprecated */
int calendar_type;
}ctsvc_event_s;
int id;
int activity_id;
char *photo_url;
- int sort_index;
+ int sort_index;
}ctsvc_activity_photo_s;
typedef struct {
int id;
int person_id;
int changed_time;
- int changed_ver; // internally used, check when updating contact
+ int changed_ver; /* internally used, check when updating contact */
int addressbook_id;
int link_mode;
bool has_phonenumber;
int changed_ver;
int addressbook_id;
bool image_changed;
- int last_changed_type; // it is used for _contacts_my_profile_updated_info
+ int last_changed_type; /* it is used for _contacts_my_profile_updated_info */
}ctsvc_updated_info_s;
typedef struct {
GSList *values;
}ctsvc_result_s;
+typedef struct {
+ char *zone_name;
+ int version;
+ int connection_count;
+}ctsvc_base_s;
-#endif /* __TIZEN_SOCIAL_CTSVC_STRUCT_H__ */
+#endif /* __CTSVC_STRUCT_H__ */
#include <unistd.h>
#include <unicode/ucnv.h>
#include <unicode/ustring.h>
+#include <sys/time.h>
#ifdef _CONTACTS_IPC_CLIENT
-#include <pims-ipc.h>
#include "ctsvc_client_ipc.h"
#endif
#include "contacts.h"
-#include "ctsvc_vcard.h"
#include "ctsvc_internal.h"
#include "ctsvc_record.h"
#include "ctsvc_list.h"
enum{
CTSVC_VCARD_IMG_NONE,
- CTSVC_VCARD_IMG_PNG, // Portable Network Graphics
- // vcard 2.1 spec
- CTSVC_VCARD_IMG_JPEG, // ISO JPEG format
- CTSVC_VCARD_IMG_GIF, //Graphics Interchange Format
- CTSVC_VCARD_IMG_TIFF, // Tagged Image File Format
- CTSVC_VCARD_IMG_CGM, //ISO Computer Graphics Metafile
- CTSVC_VCARD_IMG_WMF, // MS Windows Metafile
- CTSVC_VCARD_IMG_BMP, // MS Windows Bitmap
- CTSVC_VCARD_IMG_MET, // IBM PM Metafile
- CTSVC_VCARD_IMG_PMB, // IBM PM Bitmap
- CTSVC_VCARD_IMG_DIB, // MS Windows DIB
- CTSVC_VCARD_IMG_PICT, // Apple Picture format
- CTSVC_VCARD_IMG_PDF, // Adobe Page Description Format
- CTSVC_VCARD_IMG_PS, // Adobe PostScript format
- CTSVC_VCARD_IMG_QTIME, // Apple QuickTime format
- CTSVC_VCARD_IMG_MPEG, // ISO MPEG format
- CTSVC_VCARD_IMG_MPEG2, // ISO MPEG version 2 format
- CTSVC_VCARD_IMG_AVI, // Intel AVI format
+ CTSVC_VCARD_IMG_PNG, /* Portable Network Graphics */
+ /* vcard 2.1 spec */
+ CTSVC_VCARD_IMG_JPEG, /* ISO JPEG format */
+ CTSVC_VCARD_IMG_GIF, /* Graphics Interchange Format */
+ CTSVC_VCARD_IMG_TIFF, /* Tagged Image File Format */
+ CTSVC_VCARD_IMG_CGM, /* ISO Computer Graphics Metafile */
+ CTSVC_VCARD_IMG_WMF, /* MS Windows Metafile */
+ CTSVC_VCARD_IMG_BMP, /* MS Windows Bitmap */
+ CTSVC_VCARD_IMG_MET, /* IBM PM Metafile */
+ CTSVC_VCARD_IMG_PMB, /* IBM PM Bitmap */
+ CTSVC_VCARD_IMG_DIB, /* MS Windows DIB */
+ CTSVC_VCARD_IMG_PICT, /* Apple Picture format */
+ CTSVC_VCARD_IMG_PDF, /* Adobe Page Description Format */
+ CTSVC_VCARD_IMG_PS, /* Adobe PostScript format */
+ CTSVC_VCARD_IMG_QTIME, /* Apple QuickTime format */
+ CTSVC_VCARD_IMG_MPEG, /* ISO MPEG format */
+ CTSVC_VCARD_IMG_MPEG2, /* ISO MPEG version 2 format */
+ CTSVC_VCARD_IMG_AVI, /* Intel AVI format */
};
static const char *content_name[CTSVC_VCARD_VALUE_MAX] = {0};
static void __ctsvc_vcard_initial(void)
{
if (NULL == *content_name) {
- //content_name[CTSVC_VCARD_VALUE_NAME] = "NAME"; /* not supported */
- //content_name[CTSVC_VCARD_VALUE_PROFILE] = "PROFILE"; /* not supported */
- //content_name[CTSVC_VCARD_VALUE_SOURCE] = "SOURCE"; /* not supported */
+ /* content_name[CTSVC_VCARD_VALUE_NAME] = "NAME"; // not supported */
+ /* content_name[CTSVC_VCARD_VALUE_PROFILE] = "PROFILE"; // not supported */
+ /* content_name[CTSVC_VCARD_VALUE_SOURCE] = "SOURCE"; // not supported */
content_name[CTSVC_VCARD_VALUE_FN] = "FN";
content_name[CTSVC_VCARD_VALUE_N] = "N";
content_name[CTSVC_VCARD_VALUE_PHONETIC_FIRST_NAME] = "X-PHONETIC-FIRST-NAME";
content_name[CTSVC_VCARD_VALUE_X_ANNIVERSARY] = "ANNIVERSARY";
content_name[CTSVC_VCARD_VALUE_X_TIZEN_EVENT] = "X-TIZEN-EVENT";
content_name[CTSVC_VCARD_VALUE_ADR] = "ADR";
- //content_name[CTSVC_VCARD_VALUE_LABEL] = "LABEL"; /* not supported */
+ /* content_name[CTSVC_VCARD_VALUE_LABEL] = "LABEL"; // not supported */
content_name[CTSVC_VCARD_VALUE_TEL] = "TEL";
content_name[CTSVC_VCARD_VALUE_EMAIL] = "EMAIL";
- //content_name[CTSVC_VCARD_VALUE_MAILER] = "MAILER"; /* not supported */
- //content_name[CTSVC_VCARD_VALUE_TZ] = "TZ"; /* not supported */
- //content_name[CTSVC_VCARD_VALUE_GEO] = "GEO"; /* not supported */
+ /* content_name[CTSVC_VCARD_VALUE_MAILER] = "MAILER"; // not supported */
+ /* content_name[CTSVC_VCARD_VALUE_TZ] = "TZ"; // not supported */
+ /* content_name[CTSVC_VCARD_VALUE_GEO] = "GEO"; // not supported */
content_name[CTSVC_VCARD_VALUE_TITLE] = "TITLE";
content_name[CTSVC_VCARD_VALUE_ROLE] = "ROLE";
content_name[CTSVC_VCARD_VALUE_LOGO] = "LOGO";
- //content_name[CTSVC_VCARD_VALUE_AGENT] = "AGENT"; /* not supported */
+ /* content_name[CTSVC_VCARD_VALUE_AGENT] = "AGENT"; // not supported */
content_name[CTSVC_VCARD_VALUE_ORG] = "ORG";
content_name[CTSVC_VCARD_VALUE_X_TIZEN_COMPANY_LOCATION] = "X-TIZEN-COMPANY-LOCATION";
content_name[CTSVC_VCARD_VALUE_X_TIZEN_COMPANY_DESCRIPTION] = "X-TIZEN-COMPANY-DESCRIPTION";
content_name[CTSVC_VCARD_VALUE_X_TIZEN_COMPANY_PHONETIC_NAME] = "X-TIZEN-COMPANY-PHONETIC-NAME";
content_name[CTSVC_VCARD_VALUE_X_TIZEN_COMPANY_ASSISTANT_NAME] = "X-TIZEN-COMPANY-ASSISTANT-NAME";
- //content_name[CTSVC_VCARD_VALUE_CATEGORIES] = "CATEGORIES"; /* not supported */
+ /* content_name[CTSVC_VCARD_VALUE_CATEGORIES] = "CATEGORIES"; // not supported */
content_name[CTSVC_VCARD_VALUE_NOTE] = "NOTE";
- //content_name[CTSVC_VCARD_VALUE_PRODID] = "PRODID"; /* not supported */
+ /* content_name[CTSVC_VCARD_VALUE_PRODID] = "PRODID"; // not supported */
content_name[CTSVC_VCARD_VALUE_REV] = "REV";
- //content_name[CTSVC_VCARD_VALUE_SORT-STRING] = "SORT-STRING"; /* not supported */
+ /* content_name[CTSVC_VCARD_VALUE_SORT-STRING] = "SORT-STRING"; // not supported */
content_name[CTSVC_VCARD_VALUE_UID] = "UID";
content_name[CTSVC_VCARD_VALUE_URL] = "URL";
- //content_name[CTSVC_VCARD_VALUE_VERSION] = "VERSION"; /* not supported */
- //content_name[CTSVC_VCARD_VALUE_CLASS] = "CLASS"; /* not supported */
- //content_name[CTSVC_VCARD_VALUE_KEY] = "KEY"; /* not supported */
+ /* content_name[CTSVC_VCARD_VALUE_VERSION] = "VERSION"; // not supported */
+ /* content_name[CTSVC_VCARD_VALUE_CLASS] = "CLASS"; // not supported */
+ /* content_name[CTSVC_VCARD_VALUE_KEY] = "KEY"; // not supported */
content_name[CTSVC_VCARD_VALUE_X_MSN] = "X-MSN";
content_name[CTSVC_VCARD_VALUE_X_YAHOO] = "X-YAHOO";
content_name[CTSVC_VCARD_VALUE_X_ICQ] = "X-ICQ";
content_name[CTSVC_VCARD_VALUE_X_GOOGLE_TALK] = "X-GOOGLE-TALK";
content_name[CTSVC_VCARD_VALUE_X_TIZEN_MESSENGER] = "X-TIZEN-MESSENGER";
content_name[CTSVC_VCARD_VALUE_X_TIZEN_RELATIONSHIP] = "X-TIZEN-RELATIONSHIP";
- //content_name[CTSVC_VCARD_VALUE_X_CHILDREN] = "X-CHILDREN";
+ /* content_name[CTSVC_VCARD_VALUE_X_CHILDREN] = "X-CHILDREN"; */
content_name[CTSVC_VCARD_VALUE_END] = "END";
}
};
*r = *s;
break;
case 0xA1:
- if (*(s+1) && 0xAC == *(s+1)) { // en/em backslash
+ if (*(s+1) && 0xAC == *(s+1)) { /* en/em backslash */
*r = '\\';
r++;
str_len++;
}
break;
case 0x81:
- if (*(s+1) && 0x5F == *(s+1)) { // en/em backslash
+ if (*(s+1) && 0x5F == *(s+1)) { /* en/em backslash */
*r = '\\';
r++;
str_len++;
{
int char_len = 0;
char *buf_copy = NULL;
- int len, result_len;
+ int len, result_len = 0;
char *r;
const char *s;
bool content_start = false;
bool encode_64 = false;
buf_copy = calloc(1, *buf_size);
- RETVM_IF(NULL == buf_copy, -1, "calloc() return NULL");
+ if (NULL == buf_copy) {
+ CTS_ERR("calloc() Fail");
+ return 0;
+ }
s = *buf;
r = buf_copy;
- len = result_len = 0;
+ len = result_len;
while (*s) {
if (*buf_size < result_len + 5) {
if (false == content_start) {
if (':' == *s)
content_start = true;
- else if (0 == strncmp(s, "ENCODING=BASE64", strlen("ENCODING=BASE64")))
+ else if (STRING_EQUAL == strncmp(s, "ENCODING=BASE64", strlen("ENCODING=BASE64")))
encode_64 = true;
}
CTSVC_VCARD_APPEND_STR(buf, buf_size, len, CTSVC_CRLF);
if (name->first && name->last) {
- contacts_name_display_order_e order;
+ contacts_name_display_order_e order = CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST;
+#ifdef _CONTACTS_IPC_CLIENT
contacts_setting_get_name_display_order(&order);
+#endif
if (CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST == order) {
snprintf(display, sizeof(display), "%s %s", name->first, name->last);
}
+#ifdef _CONTACTS_IPC_CLIENT
else {
- //CONTACTS_NAME_DISPLAY_ORDER_LASTFIRST
+ /* CONTACTS_NAME_DISPLAY_ORDER_LASTFIRST */
snprintf(display, sizeof(display), "%s, %s", name->last, name->first);
}
+#endif
}
else
snprintf(display, sizeof(display), "%s%s", SAFE_STR(name->first), SAFE_STR(name->last));
static inline const char* __ctsvc_get_img_suffix(int type)
{
- switch (type)
- {
+ switch (type) {
case CTSVC_VCARD_IMG_TIFF:
return "tiff";
case CTSVC_VCARD_IMG_GIF:
static inline const char* __ctsvc_get_image_type_str(int type)
{
- switch (type)
- {
+ switch (type) {
case CTSVC_VCARD_IMG_TIFF:
return "TIFF";
case CTSVC_VCARD_IMG_GIF:
gsize read_len;
char *suffix;
gchar *buf_image;
- guchar *image = calloc(1, CTSVC_VCARD_PHOTO_MAX_SIZE);
- RETVM_IF(NULL == image, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
+ guchar image[CTSVC_VCARD_PHOTO_MAX_SIZE] = {0};
suffix = strrchr(path, '.');
type = __ctsvc_vcard_get_image_type(suffix);
fd = open(path, O_RDONLY);
- if (fd < 0) {
- free(image);
- CTS_ERR("System : Open Failed(%d)", errno);
- return CONTACTS_ERROR_SYSTEM;
- }
+ RETVM_IF(fd < 0, CONTACTS_ERROR_SYSTEM, "System : Open Fail(%d)", errno);
read_len = 0;
while ((ret = read(fd, image+read_len, sizeof(image)-read_len))) {
read_len += ret;
}
close(fd);
- if (ret < 0) {
- free(image);
- CTS_ERR("System : read() Failed(%d)", errno);
- return CONTACTS_ERROR_SYSTEM;
- }
+ RETVM_IF(ret < 0, CONTACTS_ERROR_SYSTEM, "System : read() Fail(%d)", errno);
buf_image = g_base64_encode(image, read_len);
- free(image);
if (buf_image) {
CTSVC_VCARD_APPEND_STR(buf, buf_size, len, content_name[CTSVC_VCARD_VALUE_LOGO]);
CTSVC_VCARD_APPEND_STR(buf, buf_size, len, ";ENCODING=BASE64;TYPE=");
}
}
}
- if (!first)
+ if (false == first)
CTSVC_VCARD_APPEND_STR(buf, buf_size, len, CTSVC_CRLF);
return len;
if (3 == char_len) {
if (*s == 0xef) {
if (*(s+1) == 0xbc) {
- if (0x90 <= *(s+2) && *(s+2) <= 0x99) { // ef bc 90 : '0' ~ ef bc 99 : '9'
+ if (0x90 <= *(s+2) && *(s+2) <= 0x99) { /* ef bc 90 : '0' ~ ef bc 99 : '9' */
*r = '0' + (*(s+2) - 0x90);
r++;
s+=3;
}
- else if (0x8b == *(s+2)) { // ef bc 8b : '+'
+ else if (0x8b == *(s+2)) { /* ef bc 8b : '+' */
*r = '+';
r++;
s+=3;
}
- else if (0x8a == *(s+2)) { // ef bc 8a : '*'
+ else if (0x8a == *(s+2)) { /* ef bc 8a : '*' */
*r = '*';
r++;
s+=3;
}
- else if (0x83 == *(s+2)) { // ef bc 83 : '#'
+ else if (0x83 == *(s+2)) { /* ef bc 83 : '#' */
*r = '#';
r++;
s+=3;
}
- else if (0x8c == *(s+2)) { // ef bc 8c : ','
+ else if (0x8c == *(s+2)) { /* ef bc 8c : ',' */
*r = 'p';
r++;
s+=3;
}
- else if (0x9b == *(s+2)) { // ef bc 9b : ';'
+ else if (0x9b == *(s+2)) { /* ef bc 9b : ';' */
*r = 'w';
r++;
s+=3;
else if (1 == char_len) {
switch (*s) {
case '/':
- case 'N':
case '.':
case '0' ... '9':
case '#':
r++;
s++;
break;
+ case 'a' ... 'o':
+ case 'q' ... 'v':
+ case 'x' ... 'z':
+ *r = *s - 0x20;
+ r++;
+ s++;
+ break;
+ case 'A' ... 'O':
+ case 'Q' ... 'V':
+ case 'X' ... 'Z':
+ *r = *s;
+ r++;
+ s++;
+ break;
default:
s++;
break;
for (cursor=event_list->records;cursor;cursor=cursor->next) {
data = cursor->data;
- if (!data->date) continue;
+ if (0 == data->date) continue;
event[0] = '\0';
if (CONTACTS_EVENT_TYPE_BIRTH == data->type) {
CTSVC_VCARD_APPEND_STR(buf, buf_size, len, content_name_messenger);
CTSVC_VCARD_APPEND_CONTENT(buf, buf_size, len, messenger->im_id);
}
- else if(content_name_x_type) {
+ else if (content_name_x_type) {
CTSVC_VCARD_APPEND_STR(buf, buf_size, len, content_name[CTSVC_VCARD_VALUE_X_TIZEN_MESSENGER]);
CTSVC_VCARD_APPEND_STR(buf, buf_size, len, ";TYPE=");
CTSVC_VCARD_APPEND_STR(buf, buf_size, len, content_name_x_type);
gsize read_len;
char *suffix;
gchar *buf_image;
+ guchar image[CTSVC_VCARD_PHOTO_MAX_SIZE] = {0};
- guchar *image = NULL;
GList *cursor;
ctsvc_image_s *data;
for (cursor=image_list->records;cursor;cursor=cursor->next) {
data = cursor->data;
- if (!data->path) continue;
+ if (NULL == data->path) continue;
suffix = strrchr(data->path, '.');
type = __ctsvc_vcard_get_image_type(suffix);
fd = open(data->path, O_RDONLY);
- if (fd < 0) {
- CTS_ERR("System : Open Failed(%d)", errno);
- return CONTACTS_ERROR_SYSTEM;
- }
+ RETVM_IF(fd < 0, CONTACTS_ERROR_SYSTEM, "System : Open Fail(%d)", errno);
- image = calloc(1, CTSVC_VCARD_PHOTO_MAX_SIZE);
- if (NULL == image) {
- CTS_ERR("calloc() return NULL");
- close(fd);
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
read_len = 0;
while ((ret = read(fd, image+read_len, sizeof(image)-read_len))) {
if (-1 == ret) {
read_len += ret;
}
close(fd);
- if (ret < 0) {
- free(image);
- CTS_ERR("System : read() Failed(%d)", errno);
- return CONTACTS_ERROR_SYSTEM;
- }
+ RETVM_IF(ret < 0, CONTACTS_ERROR_SYSTEM, "System : read() Fail(%d)", errno);
buf_image = g_base64_encode(image, read_len);
- free(image);
+
if (buf_image) {
CTSVC_VCARD_APPEND_STR(buf, buf_size, len, content_name[CTSVC_VCARD_VALUE_PHOTO]);
CTSVC_VCARD_APPEND_STR(buf, buf_size, len, ";ENCODING=BASE64;TYPE=");
g_free(buf_image);
}
}
+
return len;
}
__ctsvc_vcard_initial();
buf = calloc(1, buf_size);
- RETVM_IF(NULL == buf, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
+ if (NULL == buf) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
len = __ctsvc_vcard_append_start_vcard_3_0(&buf, &buf_size, len);
if (len < 0) {
__ctsvc_vcard_initial();
buf = calloc(1, buf_size);
- RETVM_IF(NULL == buf, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
+ if (NULL == buf) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
len = __ctsvc_vcard_append_start_vcard_3_0(&buf, &buf_size, len);
if (len < 0) {
return __ctsvc_vcard_make_from_my_profile(my_profile, vcard_stream);
}
-
+#ifdef _CONTACTS_IPC_CLIENT
static int __ctsvc_vcard_append_person(ctsvc_person_s *person, ctsvc_list_s *list_contacts, char **buf, int *buf_size, int len)
{
int changed_time = 0;
ctsvc_contact_s *contact;
GList *cursor = NULL;
- for(cursor=list_contacts->records;cursor;cursor=cursor->next) {
+ for (cursor=list_contacts->records;cursor;cursor=cursor->next) {
contact = (ctsvc_contact_s *)cursor->data;
if (contact && contact->id == person->name_contact_id && contact->name) {
len = __ctsvc_vcard_append_name(contact->name, buf, buf_size, len);
}
}
- for(cursor=list_contacts->records;cursor;cursor=cursor->next) {
+ for (cursor=list_contacts->records;cursor;cursor=cursor->next) {
contact = (ctsvc_contact_s *)cursor->data;
if (contact && contact->company && contact->company->cursor) {
len = __ctsvc_vcard_append_company(contact->company, buf, buf_size, len);
}
}
- for(cursor=list_contacts->records;cursor;cursor=cursor->next) {
+ for (cursor=list_contacts->records;cursor;cursor=cursor->next) {
contact = (ctsvc_contact_s *)cursor->data;
if (contact && contact->note && contact->note->cursor) {
len = __ctsvc_vcard_append_note(contact->note, buf, buf_size, len);
RETV_IF(len < 0, len);
}
}
- for(cursor=list_contacts->records;cursor;cursor=cursor->next) {
+ for (cursor=list_contacts->records;cursor;cursor=cursor->next) {
contact = (ctsvc_contact_s *)cursor->data;
if (contact && contact->postal_addrs && contact->postal_addrs->cursor) {
len = __ctsvc_vcard_append_postals(contact->postal_addrs, buf, buf_size, len);
RETV_IF(len < 0, len);
}
}
- for(cursor=list_contacts->records;cursor;cursor=cursor->next) {
+ for (cursor=list_contacts->records;cursor;cursor=cursor->next) {
contact = (ctsvc_contact_s *)cursor->data;
if (contact && contact->numbers && contact->numbers->cursor) {
len = __ctsvc_vcard_append_numbers(contact->numbers, buf, buf_size, len);
}
}
- for(cursor=list_contacts->records;cursor;cursor=cursor->next) {
+ for (cursor=list_contacts->records;cursor;cursor=cursor->next) {
contact = (ctsvc_contact_s *)cursor->data;
if (contact && contact->emails && contact->emails->cursor) {
len = __ctsvc_vcard_append_emails(contact->emails, buf, buf_size, len);
}
}
- for(cursor=list_contacts->records;cursor;cursor=cursor->next) {
+ for (cursor=list_contacts->records;cursor;cursor=cursor->next) {
contact = (ctsvc_contact_s *)cursor->data;
if (contact && contact->nicknames && contact->nicknames->cursor) {
len = __ctsvc_vcard_append_nicknames(contact->nicknames, buf, buf_size, len);
RETV_IF(len < 0, len);
}
}
- for(cursor=list_contacts->records;cursor;cursor=cursor->next) {
+ for (cursor=list_contacts->records;cursor;cursor=cursor->next) {
contact = (ctsvc_contact_s *)cursor->data;
if (contact && contact->urls && contact->urls->cursor) {
len = __ctsvc_vcard_append_webs(contact->urls, buf, buf_size, len);
}
}
- for(cursor=list_contacts->records;cursor;cursor=cursor->next) {
+ for (cursor=list_contacts->records;cursor;cursor=cursor->next) {
contact = (ctsvc_contact_s *)cursor->data;
if (contact && contact->events && contact->events->cursor) {
len = __ctsvc_vcard_append_events(contact->events, buf, buf_size, len);
RETV_IF(len < 0, len);
}
}
- for(cursor=list_contacts->records;cursor;cursor=cursor->next) {
+ for (cursor=list_contacts->records;cursor;cursor=cursor->next) {
contact = (ctsvc_contact_s *)cursor->data;
if (contact && contact->images && contact->images->cursor) {
len = __ctsvc_vcard_put_photo(contact->images, buf, buf_size, len);
RETV_IF(len < 0, len);
}
}
- for(cursor=list_contacts->records;cursor;cursor=cursor->next) {
+ for (cursor=list_contacts->records;cursor;cursor=cursor->next) {
contact = (ctsvc_contact_s *)cursor->data;
if (contact && contact->messengers && contact->messengers->cursor) {
len = __ctsvc_vcard_append_messengers(contact->messengers, buf, buf_size, len);
}
}
- for(cursor=list_contacts->records;cursor;cursor=cursor->next) {
+ for (cursor=list_contacts->records;cursor;cursor=cursor->next) {
contact = (ctsvc_contact_s *)cursor->data;
if (contact && contact->relationships && contact->relationships->cursor) {
len = __ctsvc_vcard_append_relationships(contact->relationships, buf, buf_size, len);
}
}
- for(cursor=list_contacts->records;cursor;cursor=cursor->next) {
+ for (cursor=list_contacts->records;cursor;cursor=cursor->next) {
contact = (ctsvc_contact_s *)cursor->data;
if (contact && contact->uid && DEFAULT_ADDRESS_BOOK_ID == contact->addressbook_id) {
CTSVC_VCARD_APPEND_STR(buf, buf_size, len, content_name[CTSVC_VCARD_VALUE_UID]);
CTSVC_VCARD_APPEND_CONTENT(buf, buf_size, len, contact->uid);
}
}
- for(cursor=list_contacts->records;cursor;cursor=cursor->next) {
+ for (cursor=list_contacts->records;cursor;cursor=cursor->next) {
contact = (ctsvc_contact_s *)cursor->data;
if (contact && changed_time < contact->changed_time)
changed_time = contact->changed_time;
#endif
return len;
}
+#endif /* _CONTACTS_IPC_CLIENT */
+#ifdef _CONTACTS_IPC_CLIENT
static int __ctsvc_vcard_make_from_person(ctsvc_person_s *person, ctsvc_list_s *list_contacts,
char **vcard_stream)
{
__ctsvc_vcard_initial();
buf = calloc(1, buf_size);
- RETVM_IF(NULL == buf, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
+ if (NULL == buf) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
len = __ctsvc_vcard_append_start_vcard_3_0(&buf, &buf_size, len);
if (len < 0) {
return CONTACTS_ERROR_NONE;
}
+#endif /* _CONTACTS_IPC_CLIENT */
+#ifdef _CONTACTS_IPC_CLIENT
API int contacts_vcard_make_from_person(contacts_record_h record, char **vcard_stream)
{
int ret;
if (CONTACTS_ERROR_NONE != (ret = contacts_db_get_records_with_query(query, 0, 0, &list))) break;
if (CONTACTS_ERROR_NONE != (ret = __ctsvc_vcard_make_from_person(person, (ctsvc_list_s *)list, vcard_stream))) break;
} while (0);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "__ctsvc_vcard_make_from_person() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "__ctsvc_vcard_make_from_person() Fail(%d)", ret);
contacts_query_destroy(query);
contacts_filter_destroy(filter);
contacts_list_destroy(list, true);
return ret;
}
+#endif
-////////////////////////////////////////////////////////////////////////////
static inline char* __ctsvc_vcard_remove_empty_line(char *src)
{
while (*src) {
while (*tmp) {
if ('B' == *tmp) {
ret = strncmp(tmp, "BASE64", sizeof("BASE64") - 1);
- if (!ret)
+ if (STRING_EQUAL == ret)
return true;
} else if (':' == *tmp || '\r' == *tmp) {
break;
while (*src && max) {
if ('Q' == *src) {
ret = strncmp(src, "QUOTED-PRINTABLE", sizeof("QUOTED-PRINTABLE") - 1);
- if (!ret) {
+ if (STRING_EQUAL == ret) {
*quoted = TRUE;
return TRUE;
}
while (*val) {
if ('C' == *val) {
ret = strncmp(val, "CHARSET", sizeof("CHARSET") - 1);
- if (!ret) {
+ if (STRING_EQUAL == ret) {
val += sizeof("CHARSET");
break;
}
temp_size = (src_len+1) * sizeof(UChar);
temp = malloc(temp_size);
- RETVM_IF(NULL == temp, NULL, "malloc() return NULL");
+ if (NULL == temp) {
+ CTS_ERR("malloc() Fail");
+ return NULL;
+ }
conv = ucnv_open(enc, &err);
- WARN_IF(U_FAILURE(err), "ucnv_open() Failed(%d), enc=%s", err, enc);
+ WARN_IF(U_FAILURE(err), "ucnv_open() Fail(%d), enc=%s", err, enc);
ucnv_toUChars(conv, temp, temp_size, val, src_len, &err);
- WARN_IF(U_FAILURE(err), "ucnv_toUChars() Failed(%d), enc=%s", err, enc);
+ WARN_IF(U_FAILURE(err), "ucnv_toUChars() Fail(%d), enc=%s", err, enc);
ucnv_close(conv);
dest_size = temp_size*2;
dest = malloc(dest_size);
if (NULL == dest) {
- CTS_ERR("malloc() return NULL");
- ucnv_close(conv);
+ CTS_ERR("malloc() Fail");
free(temp);
return NULL;
}
conv = ucnv_open("UTF-8", &err);
- WARN_IF(U_FAILURE(err), "ucnv_open() Failed(%d), enc=%s", err, enc);
+ WARN_IF(U_FAILURE(err), "ucnv_open() Fail(%d), enc=%s", err, enc);
ucnv_fromUChars(conv, dest, dest_size, temp, u_strlen(temp), &err);
- WARN_IF(U_FAILURE(err), "ucnv_fromUChars() Failed(%d), enc=%s", err, enc);
+ WARN_IF(U_FAILURE(err), "ucnv_fromUChars() Fail(%d), enc=%s", err, enc);
ucnv_close(conv);
free(temp);
if (temp) {
int len = (int)temp - (int)src;
*prefix = calloc(len+1, sizeof(char));
- RETM_IF(NULL == *prefix, "calloc() return NULL");
- snprintf(*prefix, len+1, "%s", src);
+ if (*prefix)
+ snprintf(*prefix, len+1, "%s", src);
}
else {
*prefix = NULL;
*cursor = '\0';
*dest = strdup(src);
- RETVM_IF(NULL == *dest, NULL, "strdup() return NULL");
+ if (NULL == *dest) {
+ CTS_ERR("strdup() Fail");
+ return NULL;
+ }
if (CTSVC_VCARD_VER_2_1 != ver)
__ctsvc_vcard_remove_folding(*dest);
*r = *n;
s++;
break;
- case 0xA1: // en/em backslash
+ case 0xA1: /* en/em backslash */
if (*(n+1) && 0xAC == *(n+1)) {
*r = *n;
r++;
s+=2;
}
break;
- case 0x81: // en/em backslash
+ case 0x81: /* en/em backslash */
if (*(n+1) && 0x5F == *(n+1)) {
*r = *n;
r++;
contacts_list_get_count((contacts_list_h)name_list, &count);
if (count <= 0) {
ret = contacts_record_create(_contacts_name._uri, &name);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create Fail(%d)", ret);
contacts_list_add((contacts_list_h)name_list, name);
}
else {
}
ret = contacts_record_get_str_p(name, _contacts_name.first, &first_name);
- WARN_IF(ret != CONTACTS_ERROR_NONE, "contacts_record_get_str_p is failed(%d)", ret);
+ WARN_IF(ret != CONTACTS_ERROR_NONE, "contacts_record_get_str_p Fail(%d)", ret);
ret = contacts_record_get_str_p(name, _contacts_name.last, &last_name);
- WARN_IF(ret != CONTACTS_ERROR_NONE, "contacts_record_get_str_p is failed(%d)", ret);
+ WARN_IF(ret != CONTACTS_ERROR_NONE, "contacts_record_get_str_p Fail(%d)", ret);
- if ((NULL == first_name || '\0' == *first_name) && (NULL == last_name || '\0' == *last_name)) {
- ret = contacts_record_set_str(name, _contacts_name.first, __ctsvc_vcard_remove_escape_char(temp));
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
- }
+ if ((NULL == first_name || '\0' == *first_name) && (NULL == last_name || '\0' == *last_name))
+ contacts_record_set_str(name, _contacts_name.first, __ctsvc_vcard_remove_escape_char(temp));
return CONTACTS_ERROR_NONE;
}
contacts_list_get_count((contacts_list_h)name_list, &count);
if (count <= 0) {
ret = contacts_record_create(_contacts_name._uri, &name);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create Fail(%d)", ret);
contacts_list_add((contacts_list_h)name_list, name);
}
else {
contacts_list_get_current_record_p((contacts_list_h)name_list, &name);
}
- ret = contacts_record_set_str(name, _contacts_name.first, NULL); // remove FN
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(name, _contacts_name.first, NULL); /* remove FN */
while (true) {
bool separator = false;
contacts_list_get_count((contacts_list_h)name_list, &count);
if (count <= 0) {
ret = contacts_record_create(_contacts_name._uri, &name);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create Fail(%d)", ret);
contacts_list_add((contacts_list_h)name_list, name);
}
else {
}
__ctsvc_strtok(start, separator);
- if (CTSVC_VCARD_VALUE_PHONETIC_FIRST_NAME == type) {
- ret = contacts_record_set_str(name, _contacts_name.phonetic_first, __ctsvc_vcard_remove_escape_char(start));
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
- }
- else if (CTSVC_VCARD_VALUE_PHONETIC_MIDDLE_NAME == type) {
- ret = contacts_record_set_str(name, _contacts_name.phonetic_middle, __ctsvc_vcard_remove_escape_char(start));
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
- }
- else if (CTSVC_VCARD_VALUE_PHONETIC_LAST_NAME == type) {
- ret = contacts_record_set_str(name, _contacts_name.phonetic_last, __ctsvc_vcard_remove_escape_char(start));
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
- }
+ if (CTSVC_VCARD_VALUE_PHONETIC_FIRST_NAME == type)
+ contacts_record_set_str(name, _contacts_name.phonetic_first, __ctsvc_vcard_remove_escape_char(start));
+ else if (CTSVC_VCARD_VALUE_PHONETIC_MIDDLE_NAME == type)
+ contacts_record_set_str(name, _contacts_name.phonetic_middle, __ctsvc_vcard_remove_escape_char(start));
+ else if (CTSVC_VCARD_VALUE_PHONETIC_LAST_NAME == type)
+ contacts_record_set_str(name, _contacts_name.phonetic_last, __ctsvc_vcard_remove_escape_char(start));
return CONTACTS_ERROR_NONE;
}
ret = contacts_record_create(_contacts_nickname._uri, &nickname);
if (ret < CONTACTS_ERROR_NONE) {
GList *cursor = NULL;
- CTS_ERR("contacts_record_create is failed(%d)", ret);
- for(cursor = nickname_list->records;cursor;cursor=cursor->next)
+ CTS_ERR("contacts_record_create Fail(%d)", ret);
+ for (cursor = nickname_list->records;cursor;cursor=cursor->next)
contacts_record_destroy((contacts_record_h)(cursor->data), true);
g_list_free(nickname_list->records);
nickname_list->records = NULL;
nickname_list->count = 0;
return ret;
}
- ret = contacts_record_set_str(nickname, _contacts_nickname.name, __ctsvc_vcard_remove_escape_char(start));
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(nickname, _contacts_nickname.name, __ctsvc_vcard_remove_escape_char(start));
contacts_list_add((contacts_list_h)nickname_list, nickname);
temp = strtok(NULL, separator);
contacts_record_h image;
struct timeval tv;
- temp = strchr(val , ':');
+ temp = strchr(val, ':');
RETVM_IF(NULL == temp, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : val is invalid");
*temp = '\0';
type = __ctsvc_vcard_get_image_type(prefix);
buf = g_base64_decode(temp+1, &size);
- if (0 == size) {
+ if ((0 == size) || (NULL == buf)) {
g_free(buf);
return CONTACTS_ERROR_NONE;
}
- RETVM_IF(NULL == buf, CONTACTS_ERROR_OUT_OF_MEMORY, "g_base64_decode() return NULL");
gettimeofday(&tv, NULL);
ret = snprintf(dest, sizeof(dest), "%s/vcard-image-%ld%ld.%s",
CTSVC_VCARD_IMAGE_LOCATION, tv.tv_sec, tv.tv_usec, __ctsvc_get_img_suffix(type));
fd = open(dest, O_WRONLY|O_CREAT|O_TRUNC, 0660);
- RETVM_IF(fd < 0, CONTACTS_ERROR_SYSTEM, "System : open Failed(%d)", errno);
+ RETVM_IF(fd < 0, CONTACTS_ERROR_SYSTEM, "System : open Fail(%d)", errno);
while (0 < size) {
ret = write(fd, buf, size);
if (EINTR == errno)
continue;
else {
- CTS_ERR("write() Failed(%d)", errno);
+ CTS_ERR("write() Fail(%d)", errno);
close(fd);
if (ENOSPC == errno)
- return CONTACTS_ERROR_FILE_NO_SPACE; // No space
+ return CONTACTS_ERROR_FILE_NO_SPACE; /* No space */
else
- return CONTACTS_ERROR_SYSTEM; // IO error
+ return CONTACTS_ERROR_SYSTEM; /* IO error */
}
}
size -= ret;
g_free(buf);
ret = contacts_record_create(_contacts_image._uri, &image);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create Fail(%d)", ret);
- ret = contacts_record_set_str(image, _contacts_image.path, dest);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(image, _contacts_image.path, dest);
((ctsvc_image_s *)image)->is_vcard = true;
contacts_list_add((contacts_list_h)image_list, image);
- // _contacts_contact.image_thumbnail_path is a read-only property
+ /* _contacts_contact.image_thumbnail_path is a read-only property */
((ctsvc_contact_s *)contact)->image_thumbnail_path = strdup(dest);
return CONTACTS_ERROR_NONE;
while (temp) {
lower = strdup(temp);
if (NULL == lower) {
- CTS_ERR("strdup() return NULL");
+ CTS_ERR("strdup() Fail");
break;
}
lower_temp = lower;
}
if (strstr(lower, "anniversary"))
type = CONTACTS_EVENT_TYPE_ANNIVERSARY;
- else if (NULL != (result = strstr(lower, "x-"))) {
- int ret;
+ else if ((result = strstr(lower, "x-"))) {
type = CONTACTS_EVENT_TYPE_CUSTOM;
- ret = contacts_record_set_str(event, _contacts_event.label, temp+(result-lower)+2);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(event, _contacts_event.label, temp+(result-lower)+2);
}
free(lower);
{
int ret;
contacts_record_h event;
- char *dest, *src, *temp;
+ char *dest, *src, *date;
- temp = __ctsvc_get_content_value(val);
- if (NULL == temp) {
+ date = __ctsvc_get_content_value(val);
+ if (NULL == date) {
CTS_ERR("Invalid parameter : vcard");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- dest = src = val;
+ dest = src = date;
while (*src) {
if ('0' <= *src && *src <= '9') {
*dest = *src;
dest++;
}
src++;
- if (8 <= dest - val)
+ if (8 <= dest - date)
break;
}
*dest = '\0';
- if ('\0' == *val) {
- CTS_ERR("Invalid parameter : val(%d)", val);
+ if ('\0' == *date) {
+ CTS_ERR("Invalid parameter : date(%d)", date);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
ret = contacts_record_create(_contacts_event._uri, &event);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("contacts_record_create is failed(%d)", ret);
+ CTS_ERR("contacts_record_create Fail(%d)", ret);
return ret;
}
- contacts_record_set_int(event, _contacts_event.date, atoi(val));
+ contacts_record_set_int(event, _contacts_event.date, atoi(date));
if (CTSVC_VCARD_VALUE_BDAY == type)
contacts_record_set_int(event, _contacts_event.type, CONTACTS_EVENT_TYPE_BIRTH);
while (temp) {
lower = strdup(temp);
if (NULL == lower) {
- CTS_ERR("strdup() return NULL");
+ CTS_ERR("strdup() Fail");
break;
}
lower_temp = lower;
result = strstr(lower, "x-");
if (result) {
- int ret;
type = CONTACTS_COMPANY_TYPE_CUSTOM;
- ret = contacts_record_set_str(company, _contacts_company.label, temp+(result-lower)+2);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(company, _contacts_company.label, temp+(result-lower)+2);
}
free(lower);
static contacts_record_h __ctsvc_vcard_get_company_empty_record(ctsvc_list_s *company_list, int property_id)
{
- int ret;
contacts_record_h record_temp = NULL;
contacts_record_h record = NULL;
contacts_list_h list = (contacts_list_h)company_list;
contacts_list_last(list);
while (CONTACTS_ERROR_NONE == contacts_list_get_current_record_p(list, &record_temp)) {
char *value = NULL;
- ret = contacts_record_get_str_p(record_temp, property_id, &value);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_get_str_p() Fail(%d)", ret);
+ contacts_record_get_str_p(record_temp, property_id, &value);
if (NULL == value) {
record = record_temp;
break;
static inline int __ctsvc_vcard_get_company_value(ctsvc_list_s *company_list, int property_id, char *val)
{
- int ret;
char *value;
contacts_record_h company;
company = __ctsvc_vcard_get_company_empty_record(company_list, property_id);
if (NULL == company) {
int ret = contacts_record_create(_contacts_company._uri, &company);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create Fail(%d)", ret);
contacts_list_add((contacts_list_h)company_list, company);
}
value = __ctsvc_get_content_value(val);
RETV_IF(NULL == value, CONTACTS_ERROR_NO_DATA);
- ret = contacts_record_set_str(company, property_id, __ctsvc_vcard_remove_escape_char(value));
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(company, property_id, __ctsvc_vcard_remove_escape_char(value));
return CONTACTS_ERROR_NONE;
}
company = __ctsvc_vcard_get_company_empty_record(company_list, _contacts_company.name);
if (NULL == company) {
int ret = contacts_record_create(_contacts_company._uri, &company);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create Fail(%d)", ret);
contacts_list_add((contacts_list_h)company_list, company);
}
contacts_record_set_str(company, _contacts_company.name, __ctsvc_vcard_remove_escape_char(start));
if (depart) {
- int ret;
__ctsvc_strtok(depart, separator);
- ret = contacts_record_set_str(company, _contacts_company.department, __ctsvc_vcard_remove_escape_char(depart));
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(company, _contacts_company.department, __ctsvc_vcard_remove_escape_char(depart));
}
__ctsvc_vcard_get_company_type(company, prefix);
company = __ctsvc_vcard_get_company_empty_record(company_list, _contacts_company.logo);
if (NULL == company) {
ret = contacts_record_create(_contacts_company._uri, &company);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create Fail(%d)", ret);
contacts_list_add((contacts_list_h)company_list, company);
}
- temp = strchr(val , ':');
+ temp = strchr(val, ':');
RETVM_IF(NULL == temp, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : val is invalid");
*temp = '\0';
type = __ctsvc_vcard_get_image_type(prefix);
buf = g_base64_decode(temp+1, &size);
- if (0 == size) {
+ if ((0 == size) || (NULL == buf)) {
g_free(buf);
return CONTACTS_ERROR_NONE;
}
- RETVM_IF(NULL == buf, CONTACTS_ERROR_OUT_OF_MEMORY, "g_base64_decode() return NULL");
gettimeofday(&tv, NULL);
ret = snprintf(dest, sizeof(dest), "%s/%d-%ld%ld-logo.%s", CTSVC_VCARD_IMAGE_LOCATION,
getpid(), tv.tv_sec, tv.tv_usec, __ctsvc_get_img_suffix(type));
fd = open(dest, O_WRONLY|O_CREAT|O_TRUNC, 0660);
- RETVM_IF(fd < 0, CONTACTS_ERROR_SYSTEM, "System : open Failed(%d)", errno);
+ RETVM_IF(fd < 0, CONTACTS_ERROR_SYSTEM, "System : open Fail(%d)", errno);
while (0 < size) {
ret = write(fd, buf, size);
if (EINTR == errno)
continue;
else {
- CTS_ERR("write() Failed(%d)", errno);
+ CTS_ERR("write() Fail(%d)", errno);
close(fd);
if (ENOSPC == errno)
- return CONTACTS_ERROR_FILE_NO_SPACE; // No space
+ return CONTACTS_ERROR_FILE_NO_SPACE; /* No space */
else
- return CONTACTS_ERROR_SYSTEM; // IO error
+ return CONTACTS_ERROR_SYSTEM; /* IO error */
}
}
size -= ret;
contacts_record_h note;
ret = contacts_record_create(_contacts_note._uri, ¬e);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create Fail(%d)", ret);
contacts_list_add((contacts_list_h)note_list, note);
temp = __ctsvc_get_content_value(val);
RETV_IF(NULL == temp, CONTACTS_ERROR_NO_DATA);
- ret = contacts_record_set_str(note, _contacts_note.note, __ctsvc_vcard_remove_escape_char(temp));
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(note, _contacts_note.note, __ctsvc_vcard_remove_escape_char(temp));
return CONTACTS_ERROR_NONE;
}
while (temp) {
lower = strdup(temp);
if (NULL == lower) {
- CTS_ERR("strdup() return NULL");
+ CTS_ERR("strdup() Fail");
break;
}
lower_temp = lower;
if (result) type = CONTACTS_URL_TYPE_WORK;
result = strstr(lower, "x-");
if (result) {
- int ret;
type = CONTACTS_URL_TYPE_CUSTOM;
- ret = contacts_record_set_str(url, _contacts_url.label, temp+(result-lower)+2);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(url, _contacts_url.label, temp+(result-lower)+2);
}
free(lower);
RETVM_IF(NULL == temp, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : vcard");
ret = contacts_record_create(_contacts_url._uri, &url);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create Fail(%d)", ret);
- ret = contacts_record_set_str(url, _contacts_url.url, __ctsvc_vcard_remove_escape_char(temp));
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(url, _contacts_url.url, __ctsvc_vcard_remove_escape_char(temp));
__ctsvc_vcard_get_url_type(url, prefix);
contacts_list_add((contacts_list_h)url_list, url);
while (temp) {
lower = strdup(temp);
if (NULL == lower) {
- CTS_ERR("strdup() return NULL");
+ CTS_ERR("strdup() Fail");
break;
}
lower_temp = lower;
else if (strstr(lower, "x-main"))
type |= CONTACTS_NUMBER_TYPE_MAIN;
else {
- int ret;
type = CONTACTS_NUMBER_TYPE_CUSTOM;
- ret = contacts_record_set_str(number, _contacts_number.label, temp+(result-lower)+2);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
-
+ contacts_record_set_str(number, _contacts_number.label, temp+(result-lower)+2);
}
}
if (3 == char_len) {
if (*s == 0xef) {
if (*(s+1) == 0xbc) {
- if (0x90 <= *(s+2) && *(s+2) <= 0x99) { // ef bc 90 : '0' ~ ef bc 99 : '9'
+ if (0x90 <= *(s+2) && *(s+2) <= 0x99) { /* ef bc 90 : '0' ~ ef bc 99 : '9' */
*r = '0' + (*(s+2) - 0x90);
r++;
s+=3;
}
- else if (0x8b == *(s+2)) { // ef bc 8b : '+'
+ else if (0x8b == *(s+2)) { /* ef bc 8b : '+' */
*r = '+';
r++;
s+=3;
}
- else if (0x8a == *(s+2)) { // ef bc 8a : '*'
+ else if (0x8a == *(s+2)) { /* ef bc 8a : '*' */
*r = '*';
r++;
s+=3;
}
- else if (0x83 == *(s+2)) { // ef bc 83 : '#'
+ else if (0x83 == *(s+2)) { /* ef bc 83 : '#' */
*r = '#';
r++;
s+=3;
}
- else if (0xb0 == *(s+2) || 0x8c == *(s+2)) { // ef bc b0 : 'P', ef bc 8c : ','
+ else if (0xb0 == *(s+2) || 0x8c == *(s+2)) { /* ef bc b0 : 'P', ef bc 8c : ',' */
*r = ',';
r++;
s+=3;
}
- else if (0xb7 == *(s+2) || 0x9b == *(s+2)) { // ef bc b7 : 'W', ef bc 9b : ';'
+ else if (0xb7 == *(s+2) || 0x9b == *(s+2)) { /* ef bc b7 : 'W', ef bc 9b : ';' */
*r = ';';
r++;
s+=3;
else if (1 == char_len) {
switch (*s) {
case '/':
- case 'N':
case '.':
case '0' ... '9':
case '#':
r++;
s++;
break;
+ case 'a' ... 'o':
+ case 'q' ... 'v':
+ case 'x' ... 'z':
+ *r = *s - 0x20;
+ r++;
+ s++;
+ break;
+ case 'A' ... 'O':
+ case 'Q' ... 'V':
+ case 'X' ... 'Z':
+ *r = *s;
+ r++;
+ s++;
+ break;
default:
s++;
break;
RETVM_IF(NULL == temp, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : vcard");
ret = contacts_record_create(_contacts_number._uri, &number);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create Fail(%d)", ret);
temp = __ctsvc_vcard_remove_escape_char(temp);
- ret = contacts_record_set_str(number, _contacts_number.number, __ctsvc_vcard_get_clean_number_for_import(temp));
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(number, _contacts_number.number, __ctsvc_vcard_get_clean_number_for_import(temp));
is_default = __ctsvc_vcard_get_number_type(number, prefix);
contacts_record_set_bool(number, _contacts_number.is_default, is_default);
while (temp) {
lower = strdup(temp);
if (NULL == lower) {
- CTS_ERR("strdup() return NULL");
+ CTS_ERR("strdup() Fail");
break;
}
lower_temp = lower;
type = CONTACTS_EMAIL_TYPE_WORK;
else if (strstr(lower, "cell"))
type = CONTACTS_EMAIL_TYPE_MOBILE;
- else if (NULL != (result = strstr(lower, "x-"))) {
- int ret;
+ else if ((result = strstr(lower, "x-"))) {
type = CONTACTS_EMAIL_TYPE_CUSTOM;
- ret = contacts_record_set_str(email, _contacts_email.label, temp+(result-lower)+2);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(email, _contacts_email.label, temp+(result-lower)+2);
}
free(lower);
RETVM_IF(NULL == temp, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : vcard");
ret = contacts_record_create(_contacts_email._uri, &email);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create Fail(%d)", ret);
- ret = contacts_record_set_str(email, _contacts_email.email, __ctsvc_vcard_remove_escape_char(temp));
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(email, _contacts_email.email, __ctsvc_vcard_remove_escape_char(temp));
is_default = __ctsvc_vcard_get_email_type(email, prefix);
contacts_record_set_bool(email, _contacts_email.is_default, is_default);
contacts_list_add((contacts_list_h)emails, email);
while (temp) {
lower = strdup(temp);
if (NULL == lower) {
- CTS_ERR("strdup() return NULL");
+ CTS_ERR("strdup() Fail");
break;
}
lower_temp = lower;
if (result) type |= CONTACTS_ADDRESS_TYPE_WORK;
result = strstr(lower, "x-");
if (result) {
- int ret;
type = CONTACTS_ADDRESS_TYPE_CUSTOM;
- ret = contacts_record_set_str(address, _contacts_address.label, temp+(result-lower)+2);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(address, _contacts_address.label, temp+(result-lower)+2);
}
result = strstr(val, "pref");
if (result) pref = true;
while (temp) {
lower = strdup(temp);
if (NULL == lower) {
- CTS_ERR("strdup() return NULL");
+ CTS_ERR("strdup() Fail");
break;
}
lower_temp = lower;
if (result) type = CONTACTS_MESSENGER_TYPE_IRC;
result = strstr(lower, "x-");
if (result) {
- int ret;
type = CONTACTS_MESSENGER_TYPE_CUSTOM;
- ret = contacts_record_set_str(messenger, _contacts_messenger.label, temp+(result-lower)+2);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(messenger, _contacts_messenger.label, temp+(result-lower)+2);
}
free(lower);
temp = strtok_r(NULL, ";", &last);
RETVM_IF(NULL == temp, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : vcard");
ret = contacts_record_create(_contacts_messenger._uri, &messenger);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create Fail(%d)", ret);
- ret = contacts_record_set_str(messenger, _contacts_messenger.im_id, __ctsvc_vcard_remove_escape_char(temp));
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(messenger, _contacts_messenger.im_id, __ctsvc_vcard_remove_escape_char(temp));
switch (type) {
case CTSVC_VCARD_VALUE_X_MSN:
while (temp) {
lower = strdup(temp);
if (NULL == lower) {
- CTS_ERR("strdup() return NULL");
+ CTS_ERR("strdup() Fail");
break;
}
lower_temp = lower;
type = CONTACTS_RELATIONSHIP_TYPE_SISTER;
else if (strstr(lower, "spouse"))
type = CONTACTS_RELATIONSHIP_TYPE_SPOUSE;
- else if (NULL != (result = strstr(lower, "x-"))) {
- int ret;
+ else if ((result = strstr(lower, "x-"))) {
type = CONTACTS_RELATIONSHIP_TYPE_CUSTOM;
- ret = contacts_record_set_str(relationship, _contacts_relationship.label, temp+(result-lower)+2);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(relationship, _contacts_relationship.label, temp+(result-lower)+2);
}
free(lower);
temp = strtok_r(NULL, ";", &last);
RETVM_IF(NULL == temp, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : vcard");
ret = contacts_record_create(_contacts_relationship._uri, &relationship);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create Fail(%d)", ret);
- ret = contacts_record_set_str(relationship, _contacts_relationship.name, __ctsvc_vcard_remove_escape_char(temp));
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str(relationship, _contacts_relationship.name, __ctsvc_vcard_remove_escape_char(temp));
__ctsvc_vcard_get_relationship_type(relationship, prefix);
contacts_list_add((contacts_list_h)relationship_list, relationship);
src++;
decoded_str = g_base64_decode(src, &size);
- RETVM_IF(NULL == decoded_str, NULL, "g_base64_decode() return NULL");
dest = calloc((src-val)+size+1, sizeof(char));
- RETVM_IF(NULL == dest, NULL, "calloc() return NULL");
+ if (NULL == dest) {
+ CTS_ERR("calloc() Fail");
+ return NULL;
+ }
snprintf(dest, (src-val)+1, "%s", val);
snprintf(dest+(src-val), size+1, "%s", decoded_str);
static inline int __ctsvc_vcard_get_contact(int ver, char *vcard, contacts_record_h *record)
{
- int ret;
int type;
char *cursor, *new_start, *val, *prefix;
ctsvc_contact_s *contact = (ctsvc_contact_s*)*record;
if (base64_encoded) {
char *temp = __ctsvc_vcard_decode_base64_val(val);
- free(val);
- val = temp;
- if (NULL == val) {
- CTS_ERR("__ctsvc_vcard_decode_base64_val() return NULL");
- cursor = new_start;
+ if (NULL == temp) {
+ CTS_ERR("__ctsvc_vcard_decode_base64_val() Fail");
free(prefix);
- continue;
+ free(val);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
+ free(val);
+ val = temp;
}
switch (type) {
contact->changed_time = __ctsvc_vcard_get_time(val);
break;
case CTSVC_VCARD_VALUE_UID:
- ret = contacts_record_set_str((contacts_record_h)contact, _contacts_contact.uid, __ctsvc_vcard_remove_escape_char(val));
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_record_set_str() Fail(%d)", ret);
+ contacts_record_set_str((contacts_record_h)contact, _contacts_contact.uid, __ctsvc_vcard_remove_escape_char(val));
break;
case CTSVC_VCARD_VALUE_URL:
__ctsvc_vcard_get_url(contact->urls, prefix, val);
free(prefix);
return CONTACTS_ERROR_NONE;
default:
- CTS_ERR("Invalid parameter : __ctsvc_vcard_check_content_type() Failed(%d)", type);
+ CTS_ERR("Invalid parameter : __ctsvc_vcard_check_content_type() Fail(%d)", type);
free(val);
free(prefix);
return CONTACTS_ERROR_INVALID_PARAMETER;
if (start) break;
}
- if (0 == strcmp(src, ver3))
+ if (STRING_EQUAL == strcmp(src, ver3))
return CTSVC_VCARD_VER_3_0;
else
return CTSVC_VCARD_VER_2_1;
free(contact->reverse_display_name);
contact->reverse_display_name = NULL;
- if (contact->name->count > 0 && contact->name->records != NULL && contact->name->records->data != NULL) {
+ if (0 < contact->name->count && contact->name->records && contact->name->records->data) {
name = (ctsvc_name_s *)contact->name->records->data;
}
- if (name && ( name->first || name->last || name->prefix || name->addition || name->suffix)) {
+ if (name && (name->first || name->last || name->prefix || name->addition || name->suffix)) {
int reverse_lang_type = -1;
char *display = NULL;
char *reverse_display = NULL;
char *temp_display = NULL;
contacts_name_display_order_e name_display_order = CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST;
- ///////////////////////////////////////////////
- // Make reverse display name (Last name first)
- // Default : Prefix Last, First Middle(addition), Suffix
- // Korean, Chinese : Prefix LastFirstMiddleSuffix
- // Japanese : Prefix Last Middle First Suffix
- // reverse sort name does not include prefix
- // But, if there is only prefix, reverse sort_name is prefix
- //////////////////////////////////////////////
+ /*
+ * Make reverse display name (Last name first)
+ * Default : Prefix Last, First Middle(addition), Suffix
+ * Korean, Chinese : Prefix LastFirstMiddleSuffix
+ * Japanese : Prefix Last Middle First Suffix
+ * reverse sort name does not include prefix
+ * But, if there is only prefix, reverse sort_name is prefix
+ */
temp_display_len = SAFE_STRLEN(name->first)
+ SAFE_STRLEN(name->addition)
+ SAFE_STRLEN(name->last)
if (0 < temp_display_len) {
temp_display_len += 7;
temp_display = calloc(1, temp_display_len);
- RETM_IF(NULL == temp_display, "calloc() return NULL");
+ if (NULL == temp_display) {
+ CTS_ERR("calloc() Fail");
+ return;
+ }
+
len=0;
if (name->last) {
}
}
- if(reverse_lang_type == CTSVC_LANG_JAPANESE) {
- // make temp_display name Prefix - Last - Middle - First - Suffix
- if(name->addition) {
+ if (reverse_lang_type == CTSVC_LANG_JAPANESE) {
+ /* make temp_display name Prefix - Last - Middle - First - Suffix */
+ if (name->addition) {
if (*temp_display)
len += snprintf(temp_display + len, temp_display_len - len, " ");
len += snprintf(temp_display + len, temp_display_len - len, "%s", name->addition);
}
- if(name->first) {
+ if (name->first) {
if (*temp_display)
len += snprintf(temp_display + len, temp_display_len - len, " ");
len += snprintf(temp_display + len, temp_display_len - len, "%s", name->first);
}
}
else {
- // make temp_display name Prefix - Last - First -Middle - Suffix
+ /* make temp_display name Prefix - Last - First -Middle - Suffix */
if (name->first) {
if (*temp_display) {
if (reverse_lang_type < 0) {
}
}
- if(name->prefix && temp_display) {
+ if (name->prefix && temp_display) {
display_len = SAFE_STRLEN(name->prefix) + temp_display_len + 2;
reverse_display = calloc(1, display_len);
if (NULL == reverse_display) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(temp_display);
return;
}
reverse_display = strdup(name->prefix);
}
- ///////////////////////////////////////////////
- // Make display name (First name first)
- // Default : Prefix First Middle Last, Suffix
- // Korean, Chinese : Prefix LastFirstMiddleSuffix (Same as reverse display name)
- // Japanese : Prefix First Middle Last Suffix
- // sort name does not include prefix
- // But, if there is only prefix, sort_name is prefix
- //////////////////////////////////////////////
+ /*
+ * Make display name (First name first)
+ * Default : Prefix First Middle Last, Suffix
+ * Korean, Chinese : Prefix LastFirstMiddleSuffix (Same as reverse display name)
+ * Japanese : Prefix First Middle Last Suffix
+ * sort name does not include prefix
+ * But, if there is only prefix, sort_name is prefix
+ */
if (reverse_lang_type == CTSVC_LANG_KOREAN ||
- reverse_lang_type == CTSVC_LANG_CHINESE) {
+ reverse_lang_type == CTSVC_LANG_CHINESE)
display = strdup(reverse_display);
- if (NULL == display) {
- free(reverse_display);
- CTS_ERR("strdup() return NULL");
- return;
- }
- }
else {
int lang_type = -1;
temp_display = NULL;
+ SAFE_STRLEN(name->suffix);
if (0 < temp_display_len) {
temp_display_len += 6;
- // make reverse_temp_display_name
+ /* make reverse_temp_display_name */
temp_display = calloc(1, temp_display_len);
if (NULL == temp_display) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(reverse_display);
return;
}
+
len = 0;
if (name->first) {
len += snprintf(temp_display + len, temp_display_len - len, "%s", name->last);
}
- if(name->suffix) {
+ if (name->suffix) {
if (*temp_display) {
lang_type = ctsvc_check_language_type(temp_display);
if (lang_type == CTSVC_LANG_JAPANESE)
}
}
- if(name->prefix && temp_display) {
+ if (name->prefix && temp_display) {
display_len = SAFE_STRLEN(name->prefix) + temp_display_len + 2;
display = calloc(1, display_len);
if (NULL == display) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(temp_display);
free(reverse_display);
return;
}
else if (name->prefix) {
display = strdup(name->prefix);
- if (NULL == display) {
- CTS_ERR("strdup() return NULL");
- free(temp_display);
- free(reverse_display);
- return;
- }
}
}
+#ifdef _CONTACTS_IPC_CLIENT
contacts_setting_get_name_display_order(&name_display_order);
+#endif
if (CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST == name_display_order) {
contact->display_name = display;
free(reverse_display);
}
+#ifdef _CONTACTS_IPC_CLIENT
else {
contact->display_name = reverse_display;
free(display);
}
+#endif
contact->display_source_type = CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NAME;
}
}
}
- if (!set_display_name &&
+ if (false == set_display_name &&
contact->nicknames && contact->nicknames->records) {
for (cur=contact->nicknames->records;cur;cur=cur->next) {
ctsvc_nickname_s *nickname = (ctsvc_nickname_s *)cur->data;
}
}
- if (!set_display_name &&
+ if (false == set_display_name &&
contact->numbers && contact->numbers->records) {
for (cur=contact->numbers->records;cur;cur=cur->next) {
ctsvc_number_s *number = (ctsvc_number_s *)cur->data;
}
}
- if (!set_display_name &&
+ if (false == set_display_name &&
contact->emails && contact->emails->records) {
for (cur=contact->emails->records;cur;cur=cur->next) {
ctsvc_email_s *email = (ctsvc_email_s *)cur->data;
if (CONTACTS_ERROR_NONE!= ret) {
contacts_record_destroy((contacts_record_h)contact, true);
if (CONTACTS_ERROR_INVALID_PARAMETER == ret) {
- CTS_ERR("cts_vcard_get_contact() Failed(%d)", ret);
+ CTS_ERR("cts_vcard_get_contact() Fail(%d)", ret);
}
else
- CTS_ERR("cts_vcard_get_contact() Failed(%d)", ret);
+ CTS_ERR("cts_vcard_get_contact() Fail(%d)", ret);
return ret;
}
vcard_start_cursor = __contacts_vcard_remove_line_break(vcard_start_cursor);
- if (0 != strncmp(vcard_start_cursor, begin, strlen(begin)))
+ if (STRING_EQUAL != strncmp(vcard_start_cursor, begin, strlen(begin)))
return vcard_start_cursor;
vcard_cursor = vcard_start_cursor;
while (*vcard_cursor) {
if (new_line) {
- if (0 == strncmp(vcard_cursor, end, strlen(end))) {
+ if (STRING_EQUAL == strncmp(vcard_cursor, end, strlen(end))) {
GList *sub_vcard_cursor = NULL;
int vcard_len = 0;
const char *pos_start = NULL;
vcard_len += (vcard_cursor - pos_start);
vcard_object = calloc(vcard_len + 1, sizeof(char));
if (NULL == vcard_object) {
- CTS_ERR("calloc() return NULL");
- break;
+ CTS_ERR("calloc() Fail");
+ __contacts_vcard_free_sub_vcard_info_list(sub_vcard_list);
+ return NULL;
}
vcard_len = 0;
return vcard_cursor;
}
- else if (0 == strncmp(vcard_cursor, begin, strlen(begin))) { // sub vcard
+ else if (STRING_EQUAL == strncmp(vcard_cursor, begin, strlen(begin))) { /* sub vcard */
sub_vcard_info_s *sub_vcard_info = calloc(1, sizeof(sub_vcard_info_s));
if (NULL == sub_vcard_info) {
- CTS_ERR("calloc() return NULL");
- break;
+ CTS_ERR("calloc() Fail");
+ __contacts_vcard_free_sub_vcard_info_list(sub_vcard_list);
+ return NULL;
}
sub_vcard_info->pos_start = vcard_cursor;
RETV_IF(NULL == cb, CONTACTS_ERROR_INVALID_PARAMETER);
file = fopen(vcard_file_name, "r");
- RETVM_IF(NULL == file, CONTACTS_ERROR_SYSTEM, "System : fopen() Failed(%d)", errno);
+ RETVM_IF(NULL == file, CONTACTS_ERROR_SYSTEM, "System : fopen() Fail(%d)", errno);
len = 0;
buf_size = CTSVC_VCARD_MAX_SIZE;
while (fgets(line, sizeof(line), file)) {
if (0 == len)
- if (strncmp(line, "BEGIN:VCARD", strlen("BEGIN:VCARD")))
+ if (STRING_EQUAL != strncmp(line, "BEGIN:VCARD", strlen("BEGIN:VCARD")))
continue;
if (len + sizeof(line) < buf_size)
len += snprintf(stream + len, buf_size - len, "%s", line);
}
- if (0 == strncmp(line, "END:VCARD", 9)) {
+ if (STRING_EQUAL == strncmp(line, "END:VCARD", 9)) {
vcard_depth--;
if (0 == vcard_depth) {
return ret;
}
- if (!cb(record, data)) {
+ if (false == cb(record, data)) {
free(stream);
fclose(file);
__contacts_vcard_free_vcard_object_list(list_vcard_object);
}
}
}
- else if (0 == strncmp(line, "BEGIN:VCARD", 11)) { // sub vcard object
+ else if (STRING_EQUAL == strncmp(line, "BEGIN:VCARD", 11)) { /* sub vcard object */
vcard_depth++;
}
}
RETV_IF(NULL == vcard_file_name, CONTACTS_ERROR_INVALID_PARAMETER);
file = fopen(vcard_file_name, "r");
- RETVM_IF(NULL == file, CONTACTS_ERROR_SYSTEM, "System : fopen() Failed(%d)", errno);
+ RETVM_IF(NULL == file, CONTACTS_ERROR_SYSTEM, "System : fopen() Fail(%d)", errno);
cnt = 0;
while (fgets(line, sizeof(line), file)) {
- if (0 == strncmp(line, "END:VCARD", 9))
+ if (STRING_EQUAL == strncmp(line, "END:VCARD", 9))
cnt++;
}
fclose(file);
.im_id = CTSVC_PROPERTY_MESSENGER_IM_ID,
};
-#ifdef ENABLE_SIM_FEATURE
API const _contacts_sdn_property_ids _contacts_sdn = {
._uri = CTSVC_VIEW_URI_SDN,
.id = CTSVC_PROPERTY_SDN_ID,
.cleaned_number = CTSVC_PROPERTY_SPEEDDIAL_CLEANED_NUMBER,
.number_filter = CTSVC_PROPERTY_SPEEDDIAL_NUMBER_FILTER,
};
-#endif // ENABLE_SIM_FEATURE
API const _contacts_contact_updated_info_property_ids _contacts_contact_updated_info = {
._uri = CTSVC_VIEW_URI_CONTACTS_UPDATED_INFO,
.address_filter = CTSVC_PROPERTY_PHONELOG_ADDRESS_FILTER,
.sim_slot_no = CTSVC_PROPERTY_PHONELOG_SIM_SLOT_NO,
};
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
API const _contacts_extension_property_ids _contacts_extension = {
._uri = CTSVC_VIEW_URI_EXTENSION,
.address_filter = CTSVC_PROPERTY_PHONELOG_CLEANED_ADDRESS,
.sim_slot_no = CTSVC_PROPERTY_PHONELOG_SIM_SLOT_NO,
};
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
API const _contacts_contact_number_property_ids _contacts_contact_number = {
._uri = CTSVC_VIEW_URI_READ_ONLY_CONTACT_NUMBER,
.log_count = CTSVC_PROPERTY_PHONELOG_STAT_LOG_COUNT,
.log_type = CTSVC_PROPERTY_PHONELOG_STAT_LOG_TYPE,
};
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
const property_info_s __property_addressbook[] = {
{CTSVC_PROPERTY_ADDRESSBOOK_ID, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_id"},
{CTSVC_PROPERTY_ADDRESSBOOK_MODE, CTSVC_SEARCH_PROPERTY_ALL, "mode"},
};
-#ifdef ENABLE_SIM_FEATURE
-const property_info_s __property_sdn[] = { // _contacts_sdn
+const property_info_s __property_sdn[] = { /* _contacts_sdn */
{CTSVC_PROPERTY_SDN_ID, CTSVC_SEARCH_PROPERTY_ALL, "id"},
{CTSVC_PROPERTY_SDN_NAME, CTSVC_SEARCH_PROPERTY_ALL, "name"},
{CTSVC_PROPERTY_SDN_NUMBER, CTSVC_SEARCH_PROPERTY_ALL, "number"},
{CTSVC_PROPERTY_SDN_SIM_SLOT_NO, CTSVC_SEARCH_PROPERTY_ALL, "sim_slot_no"},
};
-#endif // ENABLE_SIM_FEATURE
const property_info_s __property_group[] = {
{CTSVC_PROPERTY_GROUP_ID, CTSVC_SEARCH_PROPERTY_ALL, "group_id"},
const property_info_s __property_person[] = {
{CTSVC_PROPERTY_PERSON_ID, CTSVC_SEARCH_PROPERTY_ALL, "person_id"},
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, // "dispaly_name" or "reverse_dispaly_name"
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX, CTSVC_SEARCH_PROPERTY_PROJECTION, NULL}, // "dispaly_name" or "reverse_dispaly_name"
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX, CTSVC_SEARCH_PROPERTY_PROJECTION, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
{CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID,CTSVC_SEARCH_PROPERTY_ALL, "name_contact_id"},
{CTSVC_PROPERTY_PERSON_RINGTONE, CTSVC_SEARCH_PROPERTY_ALL, "ringtone_path"},
{CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL, CTSVC_SEARCH_PROPERTY_ALL, "image_thumbnail_path"},
const property_info_s __property_simple_contact[] = {
{CTSVC_PROPERTY_CONTACT_ID, CTSVC_SEARCH_PROPERTY_ALL, "contact_id"},
- {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, // "dispaly_name" or "reverse_dispaly_name"
+ {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
{CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID, CTSVC_SEARCH_PROPERTY_ALL, "display_name_source"},
{CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_id"},
{CTSVC_PROPERTY_CONTACT_RINGTONE, CTSVC_SEARCH_PROPERTY_ALL, "ringtone_path"},
{CTSVC_PROPERTY_NAME_PHONETIC_LAST, CTSVC_SEARCH_PROPERTY_ALL, "data9"},
};
-const property_info_s __property_number[] = { //_contacts_number
+const property_info_s __property_number[] = { /* _contacts_number */
{CTSVC_PROPERTY_NUMBER_ID, CTSVC_SEARCH_PROPERTY_ALL, "id"},
{CTSVC_PROPERTY_NUMBER_CONTACT_ID, CTSVC_SEARCH_PROPERTY_ALL, "contact_id"},
{CTSVC_PROPERTY_NUMBER_TYPE, CTSVC_SEARCH_PROPERTY_ALL, "data1"},
const property_info_s __property_contact[] = {
{CTSVC_PROPERTY_CONTACT_ID, CTSVC_SEARCH_PROPERTY_ALL, "contact_id"},
- {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, //dispaly_name, reverse_display_name
+ {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* dispaly_name, reverse_display_name */
{CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID, CTSVC_SEARCH_PROPERTY_ALL, "display_name_source"},
{CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_id"},
{CTSVC_PROPERTY_CONTACT_RINGTONE, CTSVC_SEARCH_PROPERTY_ALL, "ringtone_path"},
const property_info_s __property_my_profile[] = {
{CTSVC_PROPERTY_MY_PROFILE_ID, CTSVC_SEARCH_PROPERTY_ALL, "my_profile_id"},
- {CTSVC_PROPERTY_MY_PROFILE_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, //dispaly_name, reverse_display_name
+ {CTSVC_PROPERTY_MY_PROFILE_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* dispaly_name, reverse_display_name */
{CTSVC_PROPERTY_MY_PROFILE_ADDRESSBOOK_ID, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_id"},
{CTSVC_PROPERTY_MY_PROFILE_IMAGE_THUMBNAIL, CTSVC_SEARCH_PROPERTY_ALL, "image_thumbnail_path"},
{CTSVC_PROPERTY_MY_PROFILE_UID, CTSVC_SEARCH_PROPERTY_ALL, "uid"},
{CTSVC_PROPERTY_MY_PROFILE_EXTENSION, CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_extension},
};
-#ifdef ENABLE_SIM_FEATURE
-const property_info_s __property_speeddial[] = { // _contacts_speeddial
+const property_info_s __property_speeddial[] = { /* _contacts_speeddial */
{CTSVC_PROPERTY_SPEEDDIAL_DIAL_NUMBER, CTSVC_SEARCH_PROPERTY_ALL, "speed_number"},
{CTSVC_PROPERTY_SPEEDDIAL_NUMBER_ID, CTSVC_SEARCH_PROPERTY_ALL, "number_id"},
{CTSVC_PROPERTY_SPEEDDIAL_NUMBER, CTSVC_SEARCH_PROPERTY_ALL, "number"},
{CTSVC_PROPERTY_SPEEDDIAL_NUMBER_LABEL, CTSVC_SEARCH_PROPERTY_ALL, "label"},
{CTSVC_PROPERTY_SPEEDDIAL_NUMBER_TYPE, CTSVC_SEARCH_PROPERTY_ALL, "type"},
{CTSVC_PROPERTY_SPEEDDIAL_PERSON_ID, CTSVC_SEARCH_PROPERTY_ALL, "person_id"},
- {CTSVC_PROPERTY_SPEEDDIAL_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, // display_name or reverse_display_name
+ {CTSVC_PROPERTY_SPEEDDIAL_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* display_name or reverse_display_name */
{CTSVC_PROPERTY_SPEEDDIAL_IMAGE_THUMBNAIL, CTSVC_SEARCH_PROPERTY_ALL, "image_thumbnail_path"},
{CTSVC_PROPERTY_SPEEDDIAL_NORMALIZED_NUMBER, CTSVC_SEARCH_PROPERTY_FILTER, "normalized_number"},
{CTSVC_PROPERTY_SPEEDDIAL_CLEANED_NUMBER, CTSVC_SEARCH_PROPERTY_FILTER, "cleaned_number"},
{CTSVC_PROPERTY_SPEEDDIAL_NUMBER_FILTER, CTSVC_SEARCH_PROPERTY_FILTER, "minmatch"},
};
-#endif // ENABLE_SIM_FEATURE
#ifdef ENABLE_LOG_FEATURE
-const property_info_s __property_phonelog[] = { // _contacts_phone_log
+const property_info_s __property_phonelog[] = { /* _contacts_phone_log */
{CTSVC_PROPERTY_PHONELOG_ID, CTSVC_SEARCH_PROPERTY_ALL, "id"},
{CTSVC_PROPERTY_PHONELOG_PERSON_ID, CTSVC_SEARCH_PROPERTY_ALL, "person_id"},
{CTSVC_PROPERTY_PHONELOG_ADDRESS, CTSVC_SEARCH_PROPERTY_ALL, "number"},
{CTSVC_PROPERTY_PHONELOG_LOG_TIME, CTSVC_SEARCH_PROPERTY_ALL, "log_time"},
{CTSVC_PROPERTY_PHONELOG_LOG_TYPE, CTSVC_SEARCH_PROPERTY_ALL, "log_type"},
- {CTSVC_PROPERTY_PHONELOG_EXTRA_DATA1, CTSVC_SEARCH_PROPERTY_ALL, "data1"}, // duration
- {CTSVC_PROPERTY_PHONELOG_EXTRA_DATA2, CTSVC_SEARCH_PROPERTY_ALL, "data2"}, // short message, email subject
+ {CTSVC_PROPERTY_PHONELOG_EXTRA_DATA1, CTSVC_SEARCH_PROPERTY_ALL, "data1"}, /* duration */
+ {CTSVC_PROPERTY_PHONELOG_EXTRA_DATA2, CTSVC_SEARCH_PROPERTY_ALL, "data2"}, /* short message, email subject */
{CTSVC_PROPERTY_PHONELOG_NORMALIZED_ADDRESS, CTSVC_SEARCH_PROPERTY_FILTER, "normal_num"},
{CTSVC_PROPERTY_PHONELOG_CLEANED_ADDRESS, CTSVC_SEARCH_PROPERTY_FILTER, "clean_num"},
{CTSVC_PROPERTY_PHONELOG_ADDRESS_FILTER, CTSVC_SEARCH_PROPERTY_FILTER, "minmatch"},
{CTSVC_PROPERTY_PHONELOG_SIM_SLOT_NO, CTSVC_SEARCH_PROPERTY_ALL, "sim_id"},
};
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
-#if 0
-const property_info_s __property_updated_info[] = {
- {CTSVC_PROPERTY_UPDATE_INFO_ID, CTSVC_SEARCH_PROPERTY_ALL, "id"},
- {CTSVC_PROPERTY_UPDATE_INFO_ADDRESSBOOK_ID, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_id"},
- {CTSVC_PROPERTY_UPDATE_INFO_TYPE, CTSVC_SEARCH_PROPERTY_ALL, "type"},
- {CTSVC_PROPERTY_UPDATE_INFO_VERSION, CTSVC_SEARCH_PROPERTY_ALL, "version"},
- {CTSVC_PROPERTY_UPDATE_INFO_IMAGE_CHANGED, CTSVC_SEARCH_PROPERTY_ALL, "image_changed"},
- {CTSVC_PROPERTY_UPDATE_INFO_LAST_CHANGED_TYPE, CTSVC_SEARCH_PROPERTY_ALL, "is_deleted"},
-};
-
-const property_info_s __property_grouprel_updated_info[] = {
- {CTSVC_PROPERTY_GROUP_ID, CTSVC_SEARCH_PROPERTY_ALL, "group_id"},
- {CTSVC_PROPERTY_CONTACT_ID, CTSVC_SEARCH_PROPERTY_ALL, "id"},
- {CTSVC_PROPERTY_ADDRESSBOOK_ID, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_id"},
- {CTSVC_PROPERTY_UPDATE_INFO_TYPE, CTSVC_SEARCH_PROPERTY_ALL, "type"},
- {CTSVC_PROPERTY_UPDATE_INFO_VERSION, CTSVC_SEARCH_PROPERTY_ALL, "version"},
-};
-#endif
-
-// search properties ///////////////////////////////////////////////////////////////////////////////////////////////////
-const property_info_s __property_person_contact[] = { // _contacts_person_contact
+/* search properties */
+const property_info_s __property_person_contact[] = { /* _contacts_person_contact */
{CTSVC_PROPERTY_PERSON_ID, CTSVC_SEARCH_PROPERTY_ALL, "person_id"},
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, // "dispaly_name" or "reverse_dispaly_name"
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX, CTSVC_SEARCH_PROPERTY_PROJECTION, NULL}, // "dispaly_name" or "reverse_dispaly_name"
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX, CTSVC_SEARCH_PROPERTY_PROJECTION, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
{CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID, CTSVC_SEARCH_PROPERTY_PROJECTION, "name_contact_id"},
{CTSVC_PROPERTY_PERSON_RINGTONE, CTSVC_SEARCH_PROPERTY_PROJECTION, "ringtone_path"},
{CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL, CTSVC_SEARCH_PROPERTY_PROJECTION, "image_thumbnail_path"},
{CTSVC_PROPERTY_PERSON_ADDRESSBOOK_IDS, CTSVC_SEARCH_PROPERTY_PROJECTION, "addressbook_ids"},
{CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER, CTSVC_SEARCH_PROPERTY_ALL, "has_phonenumber"},
{CTSVC_PROPERTY_PERSON_HAS_EMAIL, CTSVC_SEARCH_PROPERTY_ALL, "has_email"},
- // contact
+ /* contact */
{CTSVC_PROPERTY_CONTACT_ID, CTSVC_SEARCH_PROPERTY_ALL, "contact_id"},
{CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_id"},
- // addressbook
+ /* addressbook */
{CTSVC_PROPERTY_ADDRESSBOOK_NAME, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_name"},
{CTSVC_PROPERTY_ADDRESSBOOK_MODE, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_mode"},
};
-const property_info_s __property_person_number[] = { // _contacts_person_number
+const property_info_s __property_person_number[] = { /* _contacts_person_number */
{CTSVC_PROPERTY_PERSON_ID, CTSVC_SEARCH_PROPERTY_ALL, "person_id"},
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, // "dispaly_name" or "reverse_dispaly_name"
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX, CTSVC_SEARCH_PROPERTY_PROJECTION, NULL}, // "dispaly_name" or "reverse_dispaly_name"
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX, CTSVC_SEARCH_PROPERTY_PROJECTION, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
{CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID, CTSVC_SEARCH_PROPERTY_PROJECTION, "name_contact_id"},
{CTSVC_PROPERTY_PERSON_RINGTONE, CTSVC_SEARCH_PROPERTY_PROJECTION, "ringtone_path"},
{CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL, CTSVC_SEARCH_PROPERTY_PROJECTION, "image_thumbnail_path"},
{CTSVC_PROPERTY_PERSON_IS_FAVORITE, CTSVC_SEARCH_PROPERTY_ALL, "is_favorite"},
{CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER, CTSVC_SEARCH_PROPERTY_ALL, "has_phonenumber"},
{CTSVC_PROPERTY_PERSON_HAS_EMAIL, CTSVC_SEARCH_PROPERTY_ALL, "has_email"},
- // number
+ /* number */
{CTSVC_PROPERTY_NUMBER_ID, CTSVC_SEARCH_PROPERTY_ALL, "number_id"},
{CTSVC_PROPERTY_DATA_IS_PRIMARY_DEFAULT, CTSVC_SEARCH_PROPERTY_ALL, "is_primary_default"},
{CTSVC_PROPERTY_NUMBER_TYPE, CTSVC_SEARCH_PROPERTY_PROJECTION, "type"},
{CTSVC_PROPERTY_NUMBER_CLEANED_NUMBER, CTSVC_SEARCH_PROPERTY_FILTER, "cleaned_number"},
};
-const property_info_s __property_person_email[] = { // _contacts_person_email
+const property_info_s __property_person_email[] = { /* _contacts_person_email */
{CTSVC_PROPERTY_PERSON_ID, CTSVC_SEARCH_PROPERTY_ALL, "person_id"},
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, // "dispaly_name" or "reverse_dispaly_name"
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX, CTSVC_SEARCH_PROPERTY_PROJECTION, NULL}, // "dispaly_name" or "reverse_dispaly_name"
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX, CTSVC_SEARCH_PROPERTY_PROJECTION, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
{CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID, CTSVC_SEARCH_PROPERTY_PROJECTION, "name_contact_id"},
{CTSVC_PROPERTY_PERSON_RINGTONE, CTSVC_SEARCH_PROPERTY_PROJECTION, "ringtone_path"},
{CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL, CTSVC_SEARCH_PROPERTY_PROJECTION, "image_thumbnail_path"},
{CTSVC_PROPERTY_PERSON_IS_FAVORITE, CTSVC_SEARCH_PROPERTY_ALL, "is_favorite"},
{CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER, CTSVC_SEARCH_PROPERTY_ALL, "has_phonenumber"},
{CTSVC_PROPERTY_PERSON_HAS_EMAIL, CTSVC_SEARCH_PROPERTY_ALL, "has_email"},
- // email
+ /* email */
{CTSVC_PROPERTY_EMAIL_ID, CTSVC_SEARCH_PROPERTY_ALL, "email_id"},
{CTSVC_PROPERTY_EMAIL_TYPE, CTSVC_SEARCH_PROPERTY_PROJECTION, "type"},
{CTSVC_PROPERTY_EMAIL_LABEL, CTSVC_SEARCH_PROPERTY_PROJECTION, "label"},
{CTSVC_PROPERTY_EMAIL_EMAIL, CTSVC_SEARCH_PROPERTY_ALL, "email"},
};
-const property_info_s __property_person_grouprel[] = { // _contacts_person_grouprel
+const property_info_s __property_person_grouprel[] = { /* _contacts_person_grouprel */
{CTSVC_PROPERTY_PERSON_ID, CTSVC_SEARCH_PROPERTY_ALL, "person_id"},
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, // "dispaly_name" or "reverse_dispaly_name"
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX, CTSVC_SEARCH_PROPERTY_PROJECTION, NULL}, // "dispaly_name" or "reverse_dispaly_name"
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX, CTSVC_SEARCH_PROPERTY_PROJECTION, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
{CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID, CTSVC_SEARCH_PROPERTY_PROJECTION, "name_contact_id"},
{CTSVC_PROPERTY_PERSON_RINGTONE, CTSVC_SEARCH_PROPERTY_PROJECTION, "ringtone_path"},
{CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL, CTSVC_SEARCH_PROPERTY_PROJECTION, "image_thumbnail_path"},
{CTSVC_PROPERTY_PERSON_ADDRESSBOOK_IDS, CTSVC_SEARCH_PROPERTY_PROJECTION, "addressbook_ids"},
{CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER, CTSVC_SEARCH_PROPERTY_ALL, "has_phonenumber"},
{CTSVC_PROPERTY_PERSON_HAS_EMAIL, CTSVC_SEARCH_PROPERTY_ALL, "has_email"},
- // contacts
+ /* contacts */
{CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_id"},
- // group relation
+ /* group relation */
{CTSVC_PROPERTY_GROUP_RELATION_GROUP_ID, CTSVC_SEARCH_PROPERTY_ALL, "group_id"},
{CTSVC_PROPERTY_GROUP_RELATION_CONTACT_ID, CTSVC_SEARCH_PROPERTY_PROJECTION, "contact_id"},
- // addressbook
+ /* addressbook */
{CTSVC_PROPERTY_ADDRESSBOOK_NAME, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_name"},
{CTSVC_PROPERTY_ADDRESSBOOK_MODE, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_mode"},
};
-const property_info_s __property_person_group_assigned[] = { // _contacts_person_group_assigned
+const property_info_s __property_person_group_assigned[] = { /* _contacts_person_group_assigned */
{CTSVC_PROPERTY_PERSON_ID, CTSVC_SEARCH_PROPERTY_ALL, "person_id"},
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, // "dispaly_name" or "reverse_dispaly_name"
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX, CTSVC_SEARCH_PROPERTY_PROJECTION, NULL}, // "dispaly_name" or "reverse_dispaly_name"
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX, CTSVC_SEARCH_PROPERTY_PROJECTION, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
{CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID, CTSVC_SEARCH_PROPERTY_PROJECTION, "name_contact_id"},
{CTSVC_PROPERTY_PERSON_RINGTONE, CTSVC_SEARCH_PROPERTY_PROJECTION, "ringtone_path"},
{CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL, CTSVC_SEARCH_PROPERTY_PROJECTION, "image_thumbnail_path"},
{CTSVC_PROPERTY_PERSON_ADDRESSBOOK_IDS, CTSVC_SEARCH_PROPERTY_PROJECTION, "addressbook_ids"},
{CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER, CTSVC_SEARCH_PROPERTY_ALL, "has_phonenumber"},
{CTSVC_PROPERTY_PERSON_HAS_EMAIL, CTSVC_SEARCH_PROPERTY_ALL, "has_email"},
- // contacts
+ /* contacts */
{CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_id"},
- // group relation
+ /* group relation */
{CTSVC_PROPERTY_GROUP_RELATION_GROUP_ID, CTSVC_SEARCH_PROPERTY_ALL, "group_id"},
{CTSVC_PROPERTY_GROUP_RELATION_CONTACT_ID, CTSVC_SEARCH_PROPERTY_PROJECTION, "contact_id"},
- // addressbook
+ /* addressbook */
{CTSVC_PROPERTY_ADDRESSBOOK_MODE, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_mode"},
};
-const property_info_s __property_person_group_not_assigned[] = { // _contacts_person_group_not_assigned
+const property_info_s __property_person_group_not_assigned[] = { /* _contacts_person_group_not_assigned */
{CTSVC_PROPERTY_PERSON_ID, CTSVC_SEARCH_PROPERTY_ALL, "person_id"},
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, // "dispaly_name" or "reverse_dispaly_name"
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX, CTSVC_SEARCH_PROPERTY_PROJECTION, NULL}, // "dispaly_name" or "reverse_dispaly_name"
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX, CTSVC_SEARCH_PROPERTY_PROJECTION, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
{CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID, CTSVC_SEARCH_PROPERTY_PROJECTION, "name_contact_id"},
{CTSVC_PROPERTY_PERSON_RINGTONE, CTSVC_SEARCH_PROPERTY_PROJECTION, "ringtone_path"},
{CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL, CTSVC_SEARCH_PROPERTY_PROJECTION, "image_thumbnail_path"},
{CTSVC_PROPERTY_PERSON_ADDRESSBOOK_IDS, CTSVC_SEARCH_PROPERTY_PROJECTION, "addressbook_ids"},
{CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER, CTSVC_SEARCH_PROPERTY_ALL, "has_phonenumber"},
{CTSVC_PROPERTY_PERSON_HAS_EMAIL, CTSVC_SEARCH_PROPERTY_ALL, "has_email"},
- // contacts
+ /* contacts */
{CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_id"},
{CTSVC_PROPERTY_CONTACT_ID, CTSVC_SEARCH_PROPERTY_PROJECTION, "contact_id"},
- // addressbook
+ /* addressbook */
{CTSVC_PROPERTY_ADDRESSBOOK_MODE, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_mode"},
};
#ifdef ENABLE_LOG_FEATURE
-const property_info_s __property_person_phonelog[] = { // _contacts_person_phone_log
+const property_info_s __property_person_phonelog[] = { /* _contacts_person_phone_log */
{CTSVC_PROPERTY_PERSON_ID, CTSVC_SEARCH_PROPERTY_ALL, "id"},
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, // "dispaly_name" or "reverse_dispaly_name"
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
{CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL, CTSVC_SEARCH_PROPERTY_PROJECTION, "image_thumbnail_path"},
- // phonelog
+ /* phonelog */
{CTSVC_PROPERTY_PHONELOG_ID, CTSVC_SEARCH_PROPERTY_ALL, "phonelog_id"},
{CTSVC_PROPERTY_PHONELOG_ADDRESS, CTSVC_SEARCH_PROPERTY_ALL, "address"},
{CTSVC_PROPERTY_DATA_DATA1, CTSVC_SEARCH_PROPERTY_PROJECTION, "address_type"},
{CTSVC_PROPERTY_PHONELOG_LOG_TIME, CTSVC_SEARCH_PROPERTY_ALL, "log_time"},
{CTSVC_PROPERTY_PHONELOG_LOG_TYPE, CTSVC_SEARCH_PROPERTY_ALL, "log_type"},
- {CTSVC_PROPERTY_PHONELOG_EXTRA_DATA1, CTSVC_SEARCH_PROPERTY_PROJECTION, "data1"}, // duration
- {CTSVC_PROPERTY_PHONELOG_EXTRA_DATA2, CTSVC_SEARCH_PROPERTY_PROJECTION, "data2"}, // message_id
+ {CTSVC_PROPERTY_PHONELOG_EXTRA_DATA1, CTSVC_SEARCH_PROPERTY_PROJECTION, "data1"}, /* duration */
+ {CTSVC_PROPERTY_PHONELOG_EXTRA_DATA2, CTSVC_SEARCH_PROPERTY_PROJECTION, "data2"}, /* message_id */
{CTSVC_PROPERTY_PHONELOG_NORMALIZED_ADDRESS, CTSVC_SEARCH_PROPERTY_FILTER, "normal_num"},
{CTSVC_PROPERTY_PHONELOG_CLEANED_ADDRESS, CTSVC_SEARCH_PROPERTY_FILTER, "clean_num"},
{CTSVC_PROPERTY_PHONELOG_ADDRESS_FILTER, CTSVC_SEARCH_PROPERTY_FILTER, "minmatch"},
{CTSVC_PROPERTY_PHONELOG_SIM_SLOT_NO, CTSVC_SEARCH_PROPERTY_ALL, "sim_id"},
};
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
-const property_info_s __property_person_usage[] = { // _contacts_person_usage
+const property_info_s __property_person_usage[] = { /* _contacts_person_usage */
{CTSVC_PROPERTY_PERSON_ID, CTSVC_SEARCH_PROPERTY_ALL, "person_id"},
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, // "dispaly_name" or "reverse_dispaly_name"
- {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX, CTSVC_SEARCH_PROPERTY_PROJECTION, NULL}, // "dispaly_name" or "reverse_dispaly_name"
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
+ {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX, CTSVC_SEARCH_PROPERTY_PROJECTION, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
{CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID, CTSVC_SEARCH_PROPERTY_PROJECTION, "name_contact_id"},
{CTSVC_PROPERTY_PERSON_RINGTONE, CTSVC_SEARCH_PROPERTY_PROJECTION, "ringtone_path"},
{CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL, CTSVC_SEARCH_PROPERTY_PROJECTION, "image_thumbnail_path"},
{CTSVC_PROPERTY_PERSON_IS_FAVORITE, CTSVC_SEARCH_PROPERTY_ALL, "is_favorite"},
{CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER, CTSVC_SEARCH_PROPERTY_ALL, "has_phonenumber"},
{CTSVC_PROPERTY_PERSON_HAS_EMAIL, CTSVC_SEARCH_PROPERTY_ALL, "has_email"},
- // contact_stat
+ /* contact_stat */
{CTSVC_PROPERTY_PERSON_USAGE_TYPE, CTSVC_SEARCH_PROPERTY_ALL, "usage_type"},
{CTSVC_PROPERTY_PERSON_TIMES_USED, CTSVC_SEARCH_PROPERTY_ALL, "times_used"},
};
-const property_info_s __property_contact_number[] = { // _contacts_contact_number
+const property_info_s __property_contact_number[] = { /* _contacts_contact_number */
{CTSVC_PROPERTY_CONTACT_ID, CTSVC_SEARCH_PROPERTY_ALL, "contact_id"},
- {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, // "dispaly_name" or "reverse_dispaly_name"
+ {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
{CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID, CTSVC_SEARCH_PROPERTY_PROJECTION, "display_name_source"},
{CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_id"},
{CTSVC_PROPERTY_CONTACT_PERSON_ID, CTSVC_SEARCH_PROPERTY_ALL, "person_id"},
{CTSVC_PROPERTY_CONTACT_RINGTONE, CTSVC_SEARCH_PROPERTY_PROJECTION, "ringtone_path"},
{CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL, CTSVC_SEARCH_PROPERTY_PROJECTION, "image_thumbnail_path"},
- // number
+ /* number */
{CTSVC_PROPERTY_NUMBER_ID, CTSVC_SEARCH_PROPERTY_ALL, "number_id"},
{CTSVC_PROPERTY_NUMBER_TYPE, CTSVC_SEARCH_PROPERTY_PROJECTION, "type"},
{CTSVC_PROPERTY_NUMBER_LABEL, CTSVC_SEARCH_PROPERTY_PROJECTION, "label"},
{CTSVC_PROPERTY_NUMBER_CLEANED_NUMBER, CTSVC_SEARCH_PROPERTY_FILTER, "cleaned_number"},
};
-const property_info_s __property_contact_email[] = { // _contacts_contact_email
+const property_info_s __property_contact_email[] = { /* _contacts_contact_email */
{CTSVC_PROPERTY_CONTACT_ID, CTSVC_SEARCH_PROPERTY_ALL, "contact_id"},
- {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, // "dispaly_name" or "reverse_dispaly_name"
+ {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
{CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID, CTSVC_SEARCH_PROPERTY_ALL, "display_name_source"},
{CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_id"},
{CTSVC_PROPERTY_CONTACT_PERSON_ID, CTSVC_SEARCH_PROPERTY_ALL, "person_id"},
{CTSVC_PROPERTY_CONTACT_RINGTONE, CTSVC_SEARCH_PROPERTY_PROJECTION, "ringtone_path"},
{CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL, CTSVC_SEARCH_PROPERTY_PROJECTION, "image_thumbnail_path"},
- // email
+ /* email */
{CTSVC_PROPERTY_EMAIL_ID, CTSVC_SEARCH_PROPERTY_ALL, "email_id"},
{CTSVC_PROPERTY_EMAIL_TYPE, CTSVC_SEARCH_PROPERTY_PROJECTION, "type"},
{CTSVC_PROPERTY_EMAIL_LABEL, CTSVC_SEARCH_PROPERTY_PROJECTION, "label"},
{CTSVC_PROPERTY_EMAIL_EMAIL, CTSVC_SEARCH_PROPERTY_ALL, "email"},
};
-const property_info_s __property_contact_grouprel[] = { // _contacts_contact_grouprel
+const property_info_s __property_contact_grouprel[] = { /* _contacts_contact_grouprel */
{CTSVC_PROPERTY_CONTACT_ID, CTSVC_SEARCH_PROPERTY_ALL, "contact_id"},
- {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, // "dispaly_name" or "reverse_dispaly_name"
+ {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
{CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID, CTSVC_SEARCH_PROPERTY_PROJECTION, "display_name_source"},
{CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_id"},
{CTSVC_PROPERTY_CONTACT_PERSON_ID, CTSVC_SEARCH_PROPERTY_ALL, "person_id"},
{CTSVC_PROPERTY_CONTACT_RINGTONE, CTSVC_SEARCH_PROPERTY_PROJECTION, "ringtone_path"},
{CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL, CTSVC_SEARCH_PROPERTY_PROJECTION, "image_thumbnail_path"},
- // group relation
+ /* group relation */
{CTSVC_PROPERTY_GROUP_RELATION_GROUP_ID, CTSVC_SEARCH_PROPERTY_ALL, "group_id"},
{CTSVC_PROPERTY_GROUP_RELATION_GROUP_NAME, CTSVC_SEARCH_PROPERTY_PROJECTION, "group_name"},
};
-const property_info_s __property_contact_activity[] = { // _contacts_contact_activity
+const property_info_s __property_contact_activity[] = { /* _contacts_contact_activity */
{CTSVC_PROPERTY_CONTACT_ID, CTSVC_SEARCH_PROPERTY_ALL, "contact_id"},
- {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, // "dispaly_name" or "reverse_dispaly_name"
+ {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL, NULL}, /* "dispaly_name" or "reverse_dispaly_name" */
{CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID, CTSVC_SEARCH_PROPERTY_PROJECTION, "display_name_source"},
{CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID, CTSVC_SEARCH_PROPERTY_ALL, "addressbook_id"},
{CTSVC_PROPERTY_CONTACT_PERSON_ID, CTSVC_SEARCH_PROPERTY_ALL, "person_id"},
};
#ifdef ENABLE_LOG_FEATURE
-const property_info_s __property_phonelog_stat[] = { //_contacts_phone_log_stat
+const property_info_s __property_phonelog_stat[] = { /* _contacts_phone_log_stat */
{CTSVC_PROPERTY_PHONELOG_STAT_LOG_COUNT, CTSVC_SEARCH_PROPERTY_PROJECTION, "log_count"},
{CTSVC_PROPERTY_PHONELOG_STAT_LOG_TYPE, CTSVC_SEARCH_PROPERTY_ALL, "log_type"},
};
{CTSVC_VIEW_URI_ACTIVITY_PHOTO, CTSVC_RECORD_ACTIVITY_PHOTO, PTR_COUNT(__property_activity_photo)},
#ifdef ENABLE_LOG_FEATURE
{CTSVC_VIEW_URI_PHONELOG, CTSVC_RECORD_PHONELOG, PTR_COUNT(__property_phonelog)},
-#endif // ENABLE_LOG_FEATURE
-#ifdef ENABLE_SIM_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
{CTSVC_VIEW_URI_SPEEDDIAL, CTSVC_RECORD_SPEEDDIAL, PTR_COUNT(__property_speeddial)},
{CTSVC_VIEW_URI_SDN, CTSVC_RECORD_SDN, PTR_COUNT(__property_sdn)},
-#endif // ENABLE_SIM_FEATURE
{CTSVC_VIEW_URI_NAME, CTSVC_RECORD_NAME, PTR_COUNT(__property_name)},
{CTSVC_VIEW_URI_COMPANY, CTSVC_RECORD_COMPANY, PTR_COUNT(__property_company)},
{CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_NOT_ASSIGNED, CTSVC_RECORD_RESULT, PTR_COUNT(__property_person_group_not_assigned)},
#ifdef ENABLE_LOG_FEATURE
{CTSVC_VIEW_URI_READ_ONLY_PERSON_PHONELOG, CTSVC_RECORD_RESULT, PTR_COUNT(__property_person_phonelog)},
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
{CTSVC_VIEW_URI_READ_ONLY_PERSON_USAGE, CTSVC_RECORD_RESULT, PTR_COUNT(__property_person_usage)},
{CTSVC_VIEW_URI_READ_ONLY_CONTACT_NUMBER, CTSVC_RECORD_RESULT, PTR_COUNT(__property_contact_number)},
{CTSVC_VIEW_URI_READ_ONLY_CONTACT_ACTIVITY, CTSVC_RECORD_RESULT, PTR_COUNT(__property_contact_activity)},
#ifdef ENABLE_LOG_FEATURE
{CTSVC_VIEW_URI_READ_ONLY_PHONELOG_STAT, CTSVC_RECORD_RESULT, PTR_COUNT(__property_phonelog_stat)},
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
};
static GHashTable *__ctsvc_view_uri_hash = NULL;
-#ifndef _CONTACTS_IPC_SERVER // native or client library
+#ifndef _CONTACTS_IPC_SERVER /* native or client library */
static int __ctsvc_view_ref_count = 0;
#endif
int i;
int count;
-#ifndef _CONTACTS_IPC_SERVER // native or client library
- // it is called in mutex lock
+#ifndef _CONTACTS_IPC_SERVER /* native or client library */
+ /* it is called in mutex lock */
__ctsvc_view_ref_count++;
#endif
void ctsvc_view_uri_deinit()
{
-#ifndef _CONTACTS_IPC_SERVER // native or client library
- // it is called in mutex lock
+#ifndef _CONTACTS_IPC_SERVER /* native or client library */
+ /* it is called in mutex lock */
__ctsvc_view_ref_count--;
if (__ctsvc_view_ref_count != 0)
return;
return type;
}
-const char* ctsvc_view_get_uri( const char* view_uri )
+const char* ctsvc_view_get_uri(const char* view_uri)
{
view_uri_info_s* view_uri_info = NULL;
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_VIEW_H__
-#define __TIZEN_SOCIAL_CTSVC_VIEW_H__
+#ifndef __CTSVC_VIEW_H__
+#define __CTSVC_VIEW_H__
#include "ctsvc_struct.h"
-#define CTSVC_VIEW_URI_ADDRESSBOOK "tizen.contacts_view.addressbook"
-#define CTSVC_VIEW_URI_GROUP "tizen.contacts_view.group"
-#define CTSVC_VIEW_URI_PERSON "tizen.contacts_view.person"
-#define CTSVC_VIEW_URI_SIMPLE_CONTACT "tizen.contacts_view.simple_contact"
-#define CTSVC_VIEW_URI_CONTACT "tizen.contacts_view.contact"
-#define CTSVC_VIEW_URI_MY_PROFILE "tizen.contacts_view.my_profile"
-#define CTSVC_VIEW_URI_ACTIVITY "tizen.contacts_view.activity"
-#define CTSVC_VIEW_URI_ACTIVITY_PHOTO "tizen.contacts_view.activity/photo"
-#define CTSVC_VIEW_URI_PHONELOG "tizen.contacts_view.phonelog"
-#define CTSVC_VIEW_URI_SPEEDDIAL "tizen.contacts_view.speeddial"
-#define CTSVC_VIEW_URI_SDN "tizen.contacts_view.sdn"
-#define CTSVC_VIEW_URI_CONTACTS_UPDATED_INFO "tizen.contacts_view.contacts_updated_info"
-#define CTSVC_VIEW_URI_MY_PROFILE_UPDATED_INFO "tizen.contacts_view.my_profile_updated_info"
-#define CTSVC_VIEW_URI_GROUPS_UPDATED_INFO "tizen.contacts_view.groups_updated_info"
+#define CTSVC_VIEW_URI_ADDRESSBOOK "tizen.contacts_view.addressbook"
+#define CTSVC_VIEW_URI_GROUP "tizen.contacts_view.group"
+#define CTSVC_VIEW_URI_PERSON "tizen.contacts_view.person"
+#define CTSVC_VIEW_URI_SIMPLE_CONTACT "tizen.contacts_view.simple_contact"
+#define CTSVC_VIEW_URI_CONTACT "tizen.contacts_view.contact"
+#define CTSVC_VIEW_URI_MY_PROFILE "tizen.contacts_view.my_profile"
+#define CTSVC_VIEW_URI_ACTIVITY "tizen.contacts_view.activity"
+#define CTSVC_VIEW_URI_ACTIVITY_PHOTO "tizen.contacts_view.activity/photo"
+#define CTSVC_VIEW_URI_PHONELOG "tizen.contacts_view.phonelog"
+#define CTSVC_VIEW_URI_SPEEDDIAL "tizen.contacts_view.speeddial"
+#define CTSVC_VIEW_URI_SDN "tizen.contacts_view.sdn"
+#define CTSVC_VIEW_URI_CONTACTS_UPDATED_INFO "tizen.contacts_view.contacts_updated_info"
+#define CTSVC_VIEW_URI_MY_PROFILE_UPDATED_INFO "tizen.contacts_view.my_profile_updated_info"
+#define CTSVC_VIEW_URI_GROUPS_UPDATED_INFO "tizen.contacts_view.groups_updated_info"
#define CTSVC_VIEW_URI_GROUPS_MEMBER_UPDATED_INFO "tizen.contacts_view.groups_member_updated_info"
-#define CTSVC_VIEW_URI_GROUPRELS_UPDATED_INFO "tizen.contacts_view.group_relations_updated_info"
-#define CTSVC_VIEW_URI_NAME "tizen.contacts_view.name"
-#define CTSVC_VIEW_URI_COMPANY "tizen.contacts_view.company"
-#define CTSVC_VIEW_URI_NUMBER "tizen.contacts_view.number"
-#define CTSVC_VIEW_URI_EMAIL "tizen.contacts_view.email"
-#define CTSVC_VIEW_URI_URL "tizen.contacts_view.url"
-#define CTSVC_VIEW_URI_ADDRESS "tizen.contacts_view.address"
-#define CTSVC_VIEW_URI_PROFILE "tizen.contacts_view.profile"
-#define CTSVC_VIEW_URI_RELATIONSHIP "tizen.contacts_view.relationship"
-#define CTSVC_VIEW_URI_IMAGE "tizen.contacts_view.image"
-#define CTSVC_VIEW_URI_NOTE "tizen.contacts_view.note"
-#define CTSVC_VIEW_URI_NICKNAME "tizen.contacts_view.nickname"
-#define CTSVC_VIEW_URI_EVENT "tizen.contacts_view.event"
-#define CTSVC_VIEW_URI_MESSENGER "tizen.contacts_view.messenger"
-#define CTSVC_VIEW_URI_GROUP_RELATION "tizen.contacts_view.group_relation"
-#define CTSVC_VIEW_URI_EXTENSION "tizen.contacts_view.extension"
-
-#define CTSVC_VIEW_URI_READ_ONLY_PERSON_CONTACT "tizen.contacts_view.person/simple_contact"
-#define CTSVC_VIEW_URI_READ_ONLY_PERSON_NUMBER "tizen.contacts_view.person/simple_contact/number"
-#define CTSVC_VIEW_URI_READ_ONLY_PERSON_EMAIL "tizen.contacts_view.person/simple_contact/email"
-
-#define CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP "tizen.contacts_view.person/simple_contact/group"
-#define CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_ASSIGNED "tizen.contacts_view.person/simple_contact/group_assigned"
-#define CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_NOT_ASSIGNED "tizen.contacts_view.person/simple_contact/group_not_assigned"
-
-#define CTSVC_VIEW_URI_READ_ONLY_PERSON_PHONELOG "tizen.contacts_view.person/simple_contact/phonelog"
-#define CTSVC_VIEW_URI_READ_ONLY_PERSON_USAGE "tizen.contacts_view.person/usage"
-
-#define CTSVC_VIEW_URI_READ_ONLY_CONTACT_NUMBER "tizen.contacts_view.simple_contact/number"
-#define CTSVC_VIEW_URI_READ_ONLY_CONTACT_EMAIL "tizen.contacts_view.simple_contact/email"
-#define CTSVC_VIEW_URI_READ_ONLY_CONTACT_GROUP "tizen.contacts_view.simple_contact/group"
-#define CTSVC_VIEW_URI_READ_ONLY_CONTACT_ACTIVITY "tizen.contacts_view.simple_contact/activity"
-
-#define CTSVC_VIEW_URI_READ_ONLY_PHONELOG_STAT "tizen.contacts_view.phonelog_stat"
+#define CTSVC_VIEW_URI_GROUPRELS_UPDATED_INFO "tizen.contacts_view.group_relations_updated_info"
+#define CTSVC_VIEW_URI_NAME "tizen.contacts_view.name"
+#define CTSVC_VIEW_URI_COMPANY "tizen.contacts_view.company"
+#define CTSVC_VIEW_URI_NUMBER "tizen.contacts_view.number"
+#define CTSVC_VIEW_URI_EMAIL "tizen.contacts_view.email"
+#define CTSVC_VIEW_URI_URL "tizen.contacts_view.url"
+#define CTSVC_VIEW_URI_ADDRESS "tizen.contacts_view.address"
+#define CTSVC_VIEW_URI_PROFILE "tizen.contacts_view.profile"
+#define CTSVC_VIEW_URI_RELATIONSHIP "tizen.contacts_view.relationship"
+#define CTSVC_VIEW_URI_IMAGE "tizen.contacts_view.image"
+#define CTSVC_VIEW_URI_NOTE "tizen.contacts_view.note"
+#define CTSVC_VIEW_URI_NICKNAME "tizen.contacts_view.nickname"
+#define CTSVC_VIEW_URI_EVENT "tizen.contacts_view.event"
+#define CTSVC_VIEW_URI_MESSENGER "tizen.contacts_view.messenger"
+#define CTSVC_VIEW_URI_GROUP_RELATION "tizen.contacts_view.group_relation"
+#define CTSVC_VIEW_URI_EXTENSION "tizen.contacts_view.extension"
+
+#define CTSVC_VIEW_URI_READ_ONLY_PERSON_CONTACT "tizen.contacts_view.person/simple_contact"
+#define CTSVC_VIEW_URI_READ_ONLY_PERSON_NUMBER "tizen.contacts_view.person/simple_contact/number"
+#define CTSVC_VIEW_URI_READ_ONLY_PERSON_EMAIL "tizen.contacts_view.person/simple_contact/email"
+
+#define CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP "tizen.contacts_view.person/simple_contact/group"
+#define CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_ASSIGNED "tizen.contacts_view.person/simple_contact/group_assigned"
+#define CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_NOT_ASSIGNED "tizen.contacts_view.person/simple_contact/group_not_assigned"
+
+#define CTSVC_VIEW_URI_READ_ONLY_PERSON_PHONELOG "tizen.contacts_view.person/simple_contact/phonelog"
+#define CTSVC_VIEW_URI_READ_ONLY_PERSON_USAGE "tizen.contacts_view.person/usage"
+
+#define CTSVC_VIEW_URI_READ_ONLY_CONTACT_NUMBER "tizen.contacts_view.simple_contact/number"
+#define CTSVC_VIEW_URI_READ_ONLY_CONTACT_EMAIL "tizen.contacts_view.simple_contact/email"
+#define CTSVC_VIEW_URI_READ_ONLY_CONTACT_GROUP "tizen.contacts_view.simple_contact/group"
+#define CTSVC_VIEW_URI_READ_ONLY_CONTACT_ACTIVITY "tizen.contacts_view.simple_contact/activity"
+
+#define CTSVC_VIEW_URI_READ_ONLY_PHONELOG_STAT "tizen.contacts_view.phonelog_stat"
typedef enum
{
CTSVC_PROPERTY_FLAG_PROJECTION = 0x00000001,
- CTSVC_PROPERTY_FLAG_DIRTY = 0x00000002, // for dirty bit
+ CTSVC_PROPERTY_FLAG_DIRTY = 0x00000002, /* for dirty bit */
} contacts_property_flag_e;
-// for type check // data_type mask 0x000FF000
-#define CTSVC_VIEW_DATA_TYPE_MASK 0x000F0000
-#define CTSVC_VIEW_DATA_TYPE_BOOL 0x00010000
-#define CTSVC_VIEW_DATA_TYPE_INT 0x00020000
-#define CTSVC_VIEW_DATA_TYPE_LLI 0x00030000
-#define CTSVC_VIEW_DATA_TYPE_STR 0x00040000
-#define CTSVC_VIEW_DATA_TYPE_DOUBLE 0x00050000
-#define CTSVC_VIEW_DATA_TYPE_REC 0x00060000
+/* for type check */ /* data_type mask 0x000FF000 */
+#define CTSVC_VIEW_DATA_TYPE_MASK 0x000F0000
+#define CTSVC_VIEW_DATA_TYPE_BOOL 0x00010000
+#define CTSVC_VIEW_DATA_TYPE_INT 0x00020000
+#define CTSVC_VIEW_DATA_TYPE_LLI 0x00030000
+#define CTSVC_VIEW_DATA_TYPE_STR 0x00040000
+#define CTSVC_VIEW_DATA_TYPE_DOUBLE 0x00050000
+#define CTSVC_VIEW_DATA_TYPE_REC 0x00060000
#define CTSVC_VIEW_CHECK_DATA_TYPE(property_id,data_type) \
((property_id&CTSVC_VIEW_DATA_TYPE_MASK) == data_type ? true : false)
-#define CTSVC_READ_WRITE_TYPE_MASK 0x0000F000
-#define CTSVC_READ_ONLY_PROPERTY 0x00001000
+#define CTSVC_READ_WRITE_TYPE_MASK 0x0000F000
+#define CTSVC_READ_ONLY_PROPERTY 0x00001000
#define CTSVC_READ_ONLY_CHECK(property_id, data_type) \
((property_id & CTSVC_READ_WRITE_TYPE_MASK) == data_type ? true : false)
-// for property // 0x0FF00000
-#define CTSVC_PROPERTY_MASK 0x0FF00000
-
-#define CTSVC_PROPERTY_ADDRESSBOOK 0x00100000
-#define CTSVC_PROPERTY_GROUP 0x00200000
-#define CTSVC_PROPERTY_PERSON 0x00300000
-#define CTSVC_PROPERTY_ACTIVITY 0x00500000
-#define CTSVC_PROPERTY_DATA 0x00600000
-#define CTSVC_PROPERTY_SPEEDDIAL 0x00700000
-#define CTSVC_PROPERTY_PHONELOG 0x00800000
-#define CTSVC_PROPERTY_UPDATE_INFO 0x00900000
-#define CTSVC_PROPERTY_SDN 0x00A00000
-#define CTSVC_PROPERTY_PHONELOG_STAT 0x00B00000
-
-#define CTSVC_PROPERTY_CONTACT 0x01000000
-#define CTSVC_PROPERTY_NAME 0x01100000
-#define CTSVC_PROPERTY_NUMBER 0x01200000
-#define CTSVC_PROPERTY_EMAIL 0x01300000
-#define CTSVC_PROPERTY_ADDRESS 0x01400000
-#define CTSVC_PROPERTY_URL 0x01500000
-#define CTSVC_PROPERTY_EVENT 0x01600000
-#define CTSVC_PROPERTY_GROUP_RELATION 0x01700000
-#define CTSVC_PROPERTY_RELATIONSHIP 0x01800000
-#define CTSVC_PROPERTY_COMPANY 0x01900000
-#define CTSVC_PROPERTY_NICKNAME 0x01A00000
-#define CTSVC_PROPERTY_MESSENGER 0x01B00000
-#define CTSVC_PROPERTY_NOTE 0x01C00000
-#define CTSVC_PROPERTY_PROFILE 0x01D00000
-#define CTSVC_PROPERTY_IMAGE 0x01E00000
-#define CTSVC_PROPERTY_EXTENSION 0x01F00000
-#define CTSVC_PROPERTY_MY_PROFILE 0x02000000
-#define CTSVC_PROPERTY_ACTIVITY_PHOTO 0x02100000
+/* for property */ /* 0x0FF00000 */
+#define CTSVC_PROPERTY_MASK 0x0FF00000
+
+#define CTSVC_PROPERTY_ADDRESSBOOK 0x00100000
+#define CTSVC_PROPERTY_GROUP 0x00200000
+#define CTSVC_PROPERTY_PERSON 0x00300000
+#define CTSVC_PROPERTY_ACTIVITY 0x00500000
+#define CTSVC_PROPERTY_DATA 0x00600000
+#define CTSVC_PROPERTY_SPEEDDIAL 0x00700000
+#define CTSVC_PROPERTY_PHONELOG 0x00800000
+#define CTSVC_PROPERTY_UPDATE_INFO 0x00900000
+#define CTSVC_PROPERTY_SDN 0x00A00000
+#define CTSVC_PROPERTY_PHONELOG_STAT 0x00B00000
+
+#define CTSVC_PROPERTY_CONTACT 0x01000000
+#define CTSVC_PROPERTY_NAME 0x01100000
+#define CTSVC_PROPERTY_NUMBER 0x01200000
+#define CTSVC_PROPERTY_EMAIL 0x01300000
+#define CTSVC_PROPERTY_ADDRESS 0x01400000
+#define CTSVC_PROPERTY_URL 0x01500000
+#define CTSVC_PROPERTY_EVENT 0x01600000
+#define CTSVC_PROPERTY_GROUP_RELATION 0x01700000
+#define CTSVC_PROPERTY_RELATIONSHIP 0x01800000
+#define CTSVC_PROPERTY_COMPANY 0x01900000
+#define CTSVC_PROPERTY_NICKNAME 0x01A00000
+#define CTSVC_PROPERTY_MESSENGER 0x01B00000
+#define CTSVC_PROPERTY_NOTE 0x01C00000
+#define CTSVC_PROPERTY_PROFILE 0x01D00000
+#define CTSVC_PROPERTY_IMAGE 0x01E00000
+#define CTSVC_PROPERTY_EXTENSION 0x01F00000
+#define CTSVC_PROPERTY_MY_PROFILE 0x02000000
+#define CTSVC_PROPERTY_ACTIVITY_PHOTO 0x02100000
#define CTSVC_PROPERTY_CHECK(property_id,data_type) \
((property_id & CTSVC_PROPERTY_MASK) == data_type ? true : false)
-#define CTSVC_SEARCH_PROPERTY_MASK 0xF0000000
-#define CTSVC_SEARCH_PROPERTY_NONE 0x10000000
-#define CTSVC_SEARCH_PROPERTY_FILTER 0x20000000
-#define CTSVC_SEARCH_PROPERTY_PROJECTION 0x30000000
-#define CTSVC_SEARCH_PROPERTY_ALL 0x40000000
+#define CTSVC_SEARCH_PROPERTY_MASK 0xF0000000
+#define CTSVC_SEARCH_PROPERTY_NONE 0x10000000
+#define CTSVC_SEARCH_PROPERTY_FILTER 0x20000000
+#define CTSVC_SEARCH_PROPERTY_PROJECTION 0x30000000
+#define CTSVC_SEARCH_PROPERTY_ALL 0x40000000
#define CTSVC_SEARCH_PROPERTY_CHECK(property_id,data_type) \
((property_id & CTSVC_SEARCH_PROPERTY_MASK) == data_type ? true : false)
typedef enum {
- // addressbook
+ /* addressbook */
CTSVC_PROPERTY_ADDRESSBOOK_ID = (CTSVC_PROPERTY_ADDRESSBOOK | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_ADDRESSBOOK_ACCOUNT_ID = (CTSVC_PROPERTY_ADDRESSBOOK | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_ADDRESSBOOK_NAME = (CTSVC_PROPERTY_ADDRESSBOOK | CTSVC_VIEW_DATA_TYPE_STR) +2,
CTSVC_PROPERTY_ADDRESSBOOK_MODE = (CTSVC_PROPERTY_ADDRESSBOOK | CTSVC_VIEW_DATA_TYPE_INT) +3,
- // group
+ /* group */
CTSVC_PROPERTY_GROUP_ID = (CTSVC_PROPERTY_GROUP | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_GROUP_ADDRESSBOOK_ID = (CTSVC_PROPERTY_GROUP | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_GROUP_NAME = (CTSVC_PROPERTY_GROUP | CTSVC_VIEW_DATA_TYPE_STR) +2,
CTSVC_PROPERTY_GROUP_IS_READ_ONLY = (CTSVC_PROPERTY_GROUP | CTSVC_VIEW_DATA_TYPE_BOOL) +7,
CTSVC_PROPERTY_GROUP_MESSAGE_ALERT = (CTSVC_PROPERTY_GROUP | CTSVC_VIEW_DATA_TYPE_STR) +8,
- // person
+ /* person */
CTSVC_PROPERTY_PERSON_ID = (CTSVC_PROPERTY_PERSON | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_PERSON_DISPLAY_NAME = (CTSVC_PROPERTY_PERSON | CTSVC_VIEW_DATA_TYPE_STR | CTSVC_READ_ONLY_PROPERTY) +1,
- CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID = (CTSVC_PROPERTY_PERSON | CTSVC_VIEW_DATA_TYPE_INT ) +2,
+ CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID = (CTSVC_PROPERTY_PERSON | CTSVC_VIEW_DATA_TYPE_INT) +2,
CTSVC_PROPERTY_PERSON_RINGTONE = (CTSVC_PROPERTY_PERSON | CTSVC_VIEW_DATA_TYPE_STR) +3,
CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL = (CTSVC_PROPERTY_PERSON | CTSVC_VIEW_DATA_TYPE_STR | CTSVC_READ_ONLY_PROPERTY) +4,
CTSVC_PROPERTY_PERSON_VIBRATION = (CTSVC_PROPERTY_PERSON | CTSVC_VIEW_DATA_TYPE_STR) +5,
CTSVC_PROPERTY_PERSON_STATUS = (CTSVC_PROPERTY_PERSON | CTSVC_VIEW_DATA_TYPE_STR | CTSVC_READ_ONLY_PROPERTY) +13,
CTSVC_PROPERTY_PERSON_MESSAGE_ALERT = (CTSVC_PROPERTY_PERSON | CTSVC_VIEW_DATA_TYPE_STR) +14,
- // person-stat
+ /* person-stat */
CTSVC_PROPERTY_PERSON_USAGE_TYPE = (CTSVC_PROPERTY_PERSON | CTSVC_VIEW_DATA_TYPE_INT) +100,
CTSVC_PROPERTY_PERSON_TIMES_USED = (CTSVC_PROPERTY_PERSON | CTSVC_VIEW_DATA_TYPE_INT) +101,
- // simple contact : read only
- // contact
+ /* simple contact : read only */
+ /* contact */
CTSVC_PROPERTY_CONTACT_ID = (CTSVC_PROPERTY_CONTACT | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_CONTACT_DISPLAY_NAME = (CTSVC_PROPERTY_CONTACT | CTSVC_VIEW_DATA_TYPE_STR | CTSVC_READ_ONLY_PROPERTY) +1,
CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID = (CTSVC_PROPERTY_CONTACT | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY) +2,
CTSVC_PROPERTY_CONTACT_LINK_MODE = (CTSVC_PROPERTY_CONTACT | CTSVC_VIEW_DATA_TYPE_INT) +28,
CTSVC_PROPERTY_CONTACT_MESSAGE_ALERT = (CTSVC_PROPERTY_CONTACT | CTSVC_VIEW_DATA_TYPE_STR) +29,
- // my_profile
+ /* my_profile */
CTSVC_PROPERTY_MY_PROFILE_ID = (CTSVC_PROPERTY_MY_PROFILE | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_MY_PROFILE_DISPLAY_NAME = (CTSVC_PROPERTY_MY_PROFILE | CTSVC_VIEW_DATA_TYPE_STR | CTSVC_READ_ONLY_PROPERTY) +1,
CTSVC_PROPERTY_MY_PROFILE_ADDRESSBOOK_ID = (CTSVC_PROPERTY_MY_PROFILE | CTSVC_VIEW_DATA_TYPE_INT) +2,
CTSVC_PROPERTY_MY_PROFILE_RELATIONSHIP = (CTSVC_PROPERTY_MY_PROFILE | CTSVC_VIEW_DATA_TYPE_REC) +18,
CTSVC_PROPERTY_MY_PROFILE_EXTENSION = (CTSVC_PROPERTY_MY_PROFILE | CTSVC_VIEW_DATA_TYPE_REC) +19,
- // contact_name
+ /* contact_name */
CTSVC_PROPERTY_NAME_ID = (CTSVC_PROPERTY_NAME | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_NAME_CONTACT_ID = (CTSVC_PROPERTY_NAME | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_NAME_FIRST = (CTSVC_PROPERTY_NAME | CTSVC_VIEW_DATA_TYPE_STR) +2,
CTSVC_PROPERTY_NAME_PHONETIC_MIDDLE = (CTSVC_PROPERTY_NAME | CTSVC_VIEW_DATA_TYPE_STR) +8,
CTSVC_PROPERTY_NAME_PHONETIC_LAST = (CTSVC_PROPERTY_NAME | CTSVC_VIEW_DATA_TYPE_STR) +9,
- // contact_number
+ /* contact_number */
CTSVC_PROPERTY_NUMBER_ID = (CTSVC_PROPERTY_NUMBER | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_NUMBER_CONTACT_ID = (CTSVC_PROPERTY_NUMBER | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_NUMBER_TYPE = (CTSVC_PROPERTY_NUMBER | CTSVC_VIEW_DATA_TYPE_INT) +2,
CTSVC_PROPERTY_NUMBER_NORMALIZED_NUMBER = (CTSVC_PROPERTY_NUMBER | CTSVC_VIEW_DATA_TYPE_STR | CTSVC_READ_ONLY_PROPERTY) +7,
CTSVC_PROPERTY_NUMBER_CLEANED_NUMBER = (CTSVC_PROPERTY_NUMBER | CTSVC_VIEW_DATA_TYPE_STR | CTSVC_READ_ONLY_PROPERTY) +8,
- // contact_email
+ /* contact_email */
CTSVC_PROPERTY_EMAIL_ID = (CTSVC_PROPERTY_EMAIL | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_EMAIL_CONTACT_ID = (CTSVC_PROPERTY_EMAIL | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_EMAIL_TYPE = (CTSVC_PROPERTY_EMAIL | CTSVC_VIEW_DATA_TYPE_INT) +2,
CTSVC_PROPERTY_EMAIL_IS_DEFAULT = (CTSVC_PROPERTY_EMAIL | CTSVC_VIEW_DATA_TYPE_BOOL) +4,
CTSVC_PROPERTY_EMAIL_EMAIL = (CTSVC_PROPERTY_EMAIL | CTSVC_VIEW_DATA_TYPE_STR) +5,
- // contact_address
+ /* contact_address */
CTSVC_PROPERTY_ADDRESS_ID = (CTSVC_PROPERTY_ADDRESS | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_ADDRESS_CONTACT_ID = (CTSVC_PROPERTY_ADDRESS | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_ADDRESS_TYPE = (CTSVC_PROPERTY_ADDRESS | CTSVC_VIEW_DATA_TYPE_INT) +2,
CTSVC_PROPERTY_ADDRESS_EXTENDED = (CTSVC_PROPERTY_ADDRESS | CTSVC_VIEW_DATA_TYPE_STR) +10,
CTSVC_PROPERTY_ADDRESS_IS_DEFAULT = (CTSVC_PROPERTY_ADDRESS | CTSVC_VIEW_DATA_TYPE_BOOL) +11,
- // contact_url
+ /* contact_url */
CTSVC_PROPERTY_URL_ID = (CTSVC_PROPERTY_URL | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_URL_CONTACT_ID = (CTSVC_PROPERTY_URL | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_URL_TYPE = (CTSVC_PROPERTY_URL | CTSVC_VIEW_DATA_TYPE_INT) +2,
CTSVC_PROPERTY_URL_LABEL = (CTSVC_PROPERTY_URL | CTSVC_VIEW_DATA_TYPE_STR) +3,
CTSVC_PROPERTY_URL_URL = (CTSVC_PROPERTY_URL | CTSVC_VIEW_DATA_TYPE_STR) +4,
- // contact_event
+ /* contact_event */
CTSVC_PROPERTY_EVENT_ID = (CTSVC_PROPERTY_EVENT | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_EVENT_CONTACT_ID = (CTSVC_PROPERTY_EVENT | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_EVENT_TYPE = (CTSVC_PROPERTY_EVENT | CTSVC_VIEW_DATA_TYPE_INT) +2,
CTSVC_PROPERTY_EVENT_CALENDAR_TYPE = (CTSVC_PROPERTY_EVENT | CTSVC_VIEW_DATA_TYPE_INT) +5,
CTSVC_PROPERTY_EVENT_IS_LEAP_MONTH = (CTSVC_PROPERTY_EVENT | CTSVC_VIEW_DATA_TYPE_BOOL) +6,
- // contact_grouprelation
+ /* contact_grouprelation */
CTSVC_PROPERTY_GROUP_RELATION_ID = (CTSVC_PROPERTY_GROUP_RELATION | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_GROUP_RELATION_GROUP_ID = (CTSVC_PROPERTY_GROUP_RELATION | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_GROUP_RELATION_CONTACT_ID = (CTSVC_PROPERTY_GROUP_RELATION | CTSVC_VIEW_DATA_TYPE_INT) +2,
CTSVC_PROPERTY_GROUP_RELATION_GROUP_NAME = (CTSVC_PROPERTY_GROUP_RELATION | CTSVC_VIEW_DATA_TYPE_STR) +3,
- // contact_relationship
+ /* contact_relationship */
CTSVC_PROPERTY_RELATIONSHIP_ID = (CTSVC_PROPERTY_RELATIONSHIP | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_RELATIONSHIP_CONTACT_ID = (CTSVC_PROPERTY_RELATIONSHIP | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_RELATIONSHIP_TYPE = (CTSVC_PROPERTY_RELATIONSHIP | CTSVC_VIEW_DATA_TYPE_INT) +2,
CTSVC_PROPERTY_RELATIONSHIP_LABEL = (CTSVC_PROPERTY_RELATIONSHIP | CTSVC_VIEW_DATA_TYPE_STR) +3,
CTSVC_PROPERTY_RELATIONSHIP_NAME = (CTSVC_PROPERTY_RELATIONSHIP | CTSVC_VIEW_DATA_TYPE_STR) +4,
- // contact_image
+ /* contact_image */
CTSVC_PROPERTY_IMAGE_ID = (CTSVC_PROPERTY_IMAGE | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_IMAGE_CONTACT_ID = (CTSVC_PROPERTY_IMAGE | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_IMAGE_TYPE = (CTSVC_PROPERTY_IMAGE | CTSVC_VIEW_DATA_TYPE_INT) +2,
CTSVC_PROPERTY_IMAGE_PATH = (CTSVC_PROPERTY_IMAGE | CTSVC_VIEW_DATA_TYPE_STR) +4,
CTSVC_PROPERTY_IMAGE_IS_DEFAULT = (CTSVC_PROPERTY_IMAGE | CTSVC_VIEW_DATA_TYPE_BOOL) + 5,
- // contact_company
+ /* contact_company */
CTSVC_PROPERTY_COMPANY_ID = (CTSVC_PROPERTY_COMPANY | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_COMPANY_CONTACT_ID = (CTSVC_PROPERTY_COMPANY | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_COMPANY_TYPE = (CTSVC_PROPERTY_COMPANY | CTSVC_VIEW_DATA_TYPE_INT) +2,
CTSVC_PROPERTY_COMPANY_DESCRIPTION = (CTSVC_PROPERTY_COMPANY | CTSVC_VIEW_DATA_TYPE_STR) +11,
CTSVC_PROPERTY_COMPANY_PHONETIC_NAME = (CTSVC_PROPERTY_COMPANY | CTSVC_VIEW_DATA_TYPE_STR) +12,
- // contact_nickname
+ /* contact_nickname */
CTSVC_PROPERTY_NICKNAME_ID = (CTSVC_PROPERTY_NICKNAME | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_NICKNAME_CONTACT_ID = (CTSVC_PROPERTY_NICKNAME | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_NICKNAME_NAME = (CTSVC_PROPERTY_NICKNAME | CTSVC_VIEW_DATA_TYPE_STR) +2,
- // contact_messenger
+ /* contact_messenger */
CTSVC_PROPERTY_MESSENGER_ID = (CTSVC_PROPERTY_MESSENGER | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_MESSENGER_CONTACT_ID = (CTSVC_PROPERTY_MESSENGER | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_MESSENGER_TYPE = (CTSVC_PROPERTY_MESSENGER | CTSVC_VIEW_DATA_TYPE_INT) +2,
CTSVC_PROPERTY_MESSENGER_LABEL = (CTSVC_PROPERTY_MESSENGER | CTSVC_VIEW_DATA_TYPE_STR) +3,
CTSVC_PROPERTY_MESSENGER_IM_ID = (CTSVC_PROPERTY_MESSENGER | CTSVC_VIEW_DATA_TYPE_STR) +4,
- // contact_note
+ /* contact_note */
CTSVC_PROPERTY_NOTE_ID = (CTSVC_PROPERTY_NOTE | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_NOTE_CONTACT_ID = (CTSVC_PROPERTY_NOTE | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_NOTE_NOTE = (CTSVC_PROPERTY_NOTE | CTSVC_VIEW_DATA_TYPE_STR) +2,
- // contact_extend
+ /* contact_extend */
CTSVC_PROPERTY_EXTENSION_ID = (CTSVC_PROPERTY_EXTENSION | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_EXTENSION_CONTACT_ID = (CTSVC_PROPERTY_EXTENSION | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_EXTENSION_DATA1 = (CTSVC_PROPERTY_EXTENSION | CTSVC_VIEW_DATA_TYPE_INT) +2,
CTSVC_PROPERTY_EXTENSION_DATA11 = (CTSVC_PROPERTY_EXTENSION | CTSVC_VIEW_DATA_TYPE_STR) +12,
CTSVC_PROPERTY_EXTENSION_DATA12 = (CTSVC_PROPERTY_EXTENSION | CTSVC_VIEW_DATA_TYPE_STR) +13,
- // contact_profile
+ /* contact_profile */
CTSVC_PROPERTY_PROFILE_ID = (CTSVC_PROPERTY_PROFILE | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_PROFILE_CONTACT_ID = (CTSVC_PROPERTY_PROFILE | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_PROFILE_UID = (CTSVC_PROPERTY_PROFILE | CTSVC_VIEW_DATA_TYPE_STR) +2,
CTSVC_PROPERTY_PROFILE_CATEGORY = (CTSVC_PROPERTY_PROFILE | CTSVC_VIEW_DATA_TYPE_STR) +9,
CTSVC_PROPERTY_PROFILE_EXTRA_DATA = (CTSVC_PROPERTY_PROFILE | CTSVC_VIEW_DATA_TYPE_STR) +10,
- // activity
+ /* activity */
CTSVC_PROPERTY_ACTIVITY_ID = (CTSVC_PROPERTY_ACTIVITY | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_ACTIVITY_CONTACT_ID = (CTSVC_PROPERTY_ACTIVITY | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_ACTIVITY_SOURCE_NAME = (CTSVC_PROPERTY_ACTIVITY | CTSVC_VIEW_DATA_TYPE_STR) +2,
CTSVC_PROPERTY_ACTIVITY_URI = (CTSVC_PROPERTY_ACTIVITY | CTSVC_VIEW_DATA_TYPE_STR) +6,
CTSVC_PROPERTY_ACTIVITY_ACTIVITY_PHOTO = (CTSVC_PROPERTY_ACTIVITY | CTSVC_VIEW_DATA_TYPE_REC) +7,
- // activity photo
+ /* activity photo */
CTSVC_PROPERTY_ACTIVITY_PHOTO_ID = (CTSVC_PROPERTY_ACTIVITY_PHOTO | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_ACTIVITY_PHOTO_ACTIVITY_ID = (CTSVC_PROPERTY_ACTIVITY_PHOTO | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_ACTIVITY_PHOTO_URL = (CTSVC_PROPERTY_ACTIVITY_PHOTO | CTSVC_VIEW_DATA_TYPE_STR) +2,
CTSVC_PROPERTY_ACTIVITY_PHOTO_SORT_INDEX = (CTSVC_PROPERTY_ACTIVITY_PHOTO | CTSVC_VIEW_DATA_TYPE_INT) +3,
- // data
+ /* data */
CTSVC_PROPERTY_DATA_ID = (CTSVC_PROPERTY_DATA | CTSVC_VIEW_DATA_TYPE_INT),
CTSVC_PROPERTY_DATA_CONTACT_ID = (CTSVC_PROPERTY_DATA | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_DATA_TYPE = (CTSVC_PROPERTY_DATA | CTSVC_VIEW_DATA_TYPE_INT) +2,
CTSVC_PROPERTY_DATA_DATA9 = (CTSVC_PROPERTY_DATA | CTSVC_VIEW_DATA_TYPE_STR) +13,
CTSVC_PROPERTY_DATA_DATA10 = (CTSVC_PROPERTY_DATA | CTSVC_VIEW_DATA_TYPE_STR) +14,
- // speeddial
+ /* speeddial */
CTSVC_PROPERTY_SPEEDDIAL_DIAL_NUMBER = (CTSVC_PROPERTY_SPEEDDIAL | CTSVC_VIEW_DATA_TYPE_INT),
CTSVC_PROPERTY_SPEEDDIAL_NUMBER_ID = (CTSVC_PROPERTY_SPEEDDIAL | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_SPEEDDIAL_NUMBER = (CTSVC_PROPERTY_SPEEDDIAL | CTSVC_VIEW_DATA_TYPE_STR | CTSVC_READ_ONLY_PROPERTY) +2,
CTSVC_PROPERTY_SPEEDDIAL_CLEANED_NUMBER = (CTSVC_PROPERTY_SPEEDDIAL | CTSVC_VIEW_DATA_TYPE_STR | CTSVC_READ_ONLY_PROPERTY) +9,
CTSVC_PROPERTY_SPEEDDIAL_NUMBER_FILTER = (CTSVC_PROPERTY_SPEEDDIAL | CTSVC_VIEW_DATA_TYPE_STR | CTSVC_READ_ONLY_PROPERTY) +10,
- // phonelog
+ /* phonelog */
CTSVC_PROPERTY_PHONELOG_ID = (CTSVC_PROPERTY_PHONELOG | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_PHONELOG_PERSON_ID = (CTSVC_PROPERTY_PHONELOG | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_PHONELOG_ADDRESS = (CTSVC_PROPERTY_PHONELOG | CTSVC_VIEW_DATA_TYPE_STR) +2,
CTSVC_PROPERTY_PHONELOG_LOG_TIME = (CTSVC_PROPERTY_PHONELOG | CTSVC_VIEW_DATA_TYPE_INT) +3,
CTSVC_PROPERTY_PHONELOG_LOG_TYPE = (CTSVC_PROPERTY_PHONELOG | CTSVC_VIEW_DATA_TYPE_INT) +4,
- CTSVC_PROPERTY_PHONELOG_EXTRA_DATA1 = (CTSVC_PROPERTY_PHONELOG | CTSVC_VIEW_DATA_TYPE_INT) +5, // duration, message_id, email_id
- CTSVC_PROPERTY_PHONELOG_EXTRA_DATA2 = (CTSVC_PROPERTY_PHONELOG | CTSVC_VIEW_DATA_TYPE_STR) +6, // short message, subject
- CTSVC_PROPERTY_PHONELOG_NORMALIZED_ADDRESS = (CTSVC_PROPERTY_PHONELOG | CTSVC_VIEW_DATA_TYPE_STR|CTSVC_READ_ONLY_PROPERTY) +7, // for search by calllog number
- CTSVC_PROPERTY_PHONELOG_CLEANED_ADDRESS = (CTSVC_PROPERTY_PHONELOG | CTSVC_VIEW_DATA_TYPE_STR|CTSVC_READ_ONLY_PROPERTY) +8, // for search by calllog number
- CTSVC_PROPERTY_PHONELOG_ADDRESS_FILTER = (CTSVC_PROPERTY_PHONELOG | CTSVC_VIEW_DATA_TYPE_STR|CTSVC_READ_ONLY_PROPERTY) +9, // for search by calllog number
+ CTSVC_PROPERTY_PHONELOG_EXTRA_DATA1 = (CTSVC_PROPERTY_PHONELOG | CTSVC_VIEW_DATA_TYPE_INT) +5, /* duration, message_id, email_id */
+ CTSVC_PROPERTY_PHONELOG_EXTRA_DATA2 = (CTSVC_PROPERTY_PHONELOG | CTSVC_VIEW_DATA_TYPE_STR) +6, /* short message, subject */
+ CTSVC_PROPERTY_PHONELOG_NORMALIZED_ADDRESS = (CTSVC_PROPERTY_PHONELOG | CTSVC_VIEW_DATA_TYPE_STR|CTSVC_READ_ONLY_PROPERTY) +7, /* for search by calllog number */
+ CTSVC_PROPERTY_PHONELOG_CLEANED_ADDRESS = (CTSVC_PROPERTY_PHONELOG | CTSVC_VIEW_DATA_TYPE_STR|CTSVC_READ_ONLY_PROPERTY) +8, /* for search by calllog number */
+ CTSVC_PROPERTY_PHONELOG_ADDRESS_FILTER = (CTSVC_PROPERTY_PHONELOG | CTSVC_VIEW_DATA_TYPE_STR|CTSVC_READ_ONLY_PROPERTY) +9, /* for search by calllog number */
CTSVC_PROPERTY_PHONELOG_SIM_SLOT_NO = (CTSVC_PROPERTY_PHONELOG | CTSVC_VIEW_DATA_TYPE_INT) +10,
- // updated_info : read only
+ /* updated_info : read only */
CTSVC_PROPERTY_UPDATE_INFO_ID = (CTSVC_PROPERTY_UPDATE_INFO | CTSVC_VIEW_DATA_TYPE_INT),
CTSVC_PROPERTY_UPDATE_INFO_ADDRESSBOOK_ID = (CTSVC_PROPERTY_UPDATE_INFO | CTSVC_VIEW_DATA_TYPE_INT) +1,
CTSVC_PROPERTY_UPDATE_INFO_TYPE = (CTSVC_PROPERTY_UPDATE_INFO | CTSVC_VIEW_DATA_TYPE_INT) +2,
CTSVC_PROPERTY_UPDATE_INFO_VERSION = (CTSVC_PROPERTY_UPDATE_INFO | CTSVC_VIEW_DATA_TYPE_INT) +3,
CTSVC_PROPERTY_UPDATE_INFO_IMAGE_CHANGED = (CTSVC_PROPERTY_UPDATE_INFO | CTSVC_VIEW_DATA_TYPE_BOOL) +4,
- CTSVC_PROPERTY_UPDATE_INFO_LAST_CHANGED_TYPE = (CTSVC_PROPERTY_UPDATE_INFO | CTSVC_VIEW_DATA_TYPE_INT)+5, // now, it is used for _contacts_my_profile_updated_info
+ CTSVC_PROPERTY_UPDATE_INFO_LAST_CHANGED_TYPE = (CTSVC_PROPERTY_UPDATE_INFO | CTSVC_VIEW_DATA_TYPE_INT)+5, /* now, it is used for _contacts_my_profile_updated_info */
- // contact_sdn
+ /* contact_sdn */
CTSVC_PROPERTY_SDN_ID = (CTSVC_PROPERTY_SDN | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
CTSVC_PROPERTY_SDN_NAME = (CTSVC_PROPERTY_SDN | CTSVC_VIEW_DATA_TYPE_STR | CTSVC_READ_ONLY_PROPERTY) +1,
CTSVC_PROPERTY_SDN_NUMBER = (CTSVC_PROPERTY_SDN | CTSVC_VIEW_DATA_TYPE_STR | CTSVC_READ_ONLY_PROPERTY) +2,
CTSVC_PROPERTY_SDN_SIM_SLOT_NO = (CTSVC_PROPERTY_SDN | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY) +3,
- // phonelog_stat
- CTSVC_PROPERTY_PHONELOG_STAT_LOG_COUNT = (CTSVC_PROPERTY_PHONELOG_STAT | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY ),
- CTSVC_PROPERTY_PHONELOG_STAT_LOG_TYPE = (CTSVC_PROPERTY_PHONELOG_STAT | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY ) +1,
+ /* phonelog_stat */
+ CTSVC_PROPERTY_PHONELOG_STAT_LOG_COUNT = (CTSVC_PROPERTY_PHONELOG_STAT | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY),
+ CTSVC_PROPERTY_PHONELOG_STAT_LOG_TYPE = (CTSVC_PROPERTY_PHONELOG_STAT | CTSVC_VIEW_DATA_TYPE_INT | CTSVC_READ_ONLY_PROPERTY) +1,
}ctsvc_property_ids_e;
void ctsvc_view_uri_init();
void ctsvc_view_uri_deinit();
-const char* ctsvc_view_get_uri( const char* view_uri );
+const char* ctsvc_view_get_uri(const char* view_uri);
ctsvc_record_type_e ctsvc_view_get_record_type(const char* view_uri);
const property_info_s* ctsvc_view_get_all_property_infos(const char *view_uri, unsigned int *count);
-#endif /* __TIZEN_SOCIAL_CTSVC_VIEW_H__ */
+#endif /* __CTSVC_VIEW_H__ */
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2015 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 <vasum.h>
+#include "ctsvc_internal.h"
+#include "ctsvc_handle.h"
+#include "ctsvc_zone.h"
+
+int ctsvc_zone_get_root_path(const char *zone_name, char *dest, int dest_size)
+{
+ int len = 0;
+ if (zone_name && *zone_name)
+ len = snprintf(dest, dest_size, CTSVC_ZONE_BASE_PATH, zone_name);
+ else
+ dest[0] = '\0';
+ return len;
+}
+
+int ctsvc_zone_get_canonicalize_path(contacts_h contact, const char *path, char **p_path)
+{
+ char *zone_name = NULL;
+ if (NULL == path)
+ return CONTACTS_ERROR_INVALID_PARAMETER;
+
+ ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (zone_name) {
+ if (*zone_name) {
+ char temp[CTSVC_PATH_MAX_LEN] = {0};
+ snprintf(temp, sizeof(temp), CTSVC_ZONE_BASE_PATH"/%s", zone_name, path);
+ *p_path = strdup(temp);
+ }
+ else {
+ *p_path = strdup(path);
+ }
+ free(zone_name);
+ return CONTACTS_ERROR_NONE;
+ }
+
+ int ret = vsm_canonicalize_path((char *)path, p_path);
+ WARN_IF(0 != ret, "vsm_canonicalize_path() Fail(%d)", ret);
+ return CONTACTS_ERROR_NONE;
+}
+
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2015 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.
+ *
+ */
+
+#ifndef __CTSVC_ZONE_H__
+#define __CTSVC_ZONE_H__
+
+#include "contacts_types.h"
+
+#define CTSVC_ZONE_BASE_PATH "/var/lib/lxc/%s/rootfs"
+#define CTSVC_ZONE_NAME_PERSONAL "personal"
+#define CTSVC_ZONE_NAME_HOST ""
+
+
+int ctsvc_zone_get_root_path(const char *zone_name, char *dest, int dest_size);
+int ctsvc_zone_get_canonicalize_path(contacts_h contact, const char *path, char **p_path);
+
+#endif /* __CTSVC_ZONE_H__ */
+
static int __ctsvc_ipc_unmarshal_activity(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_activity(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_activity_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_activity_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_activity,
- .marshal_record = __ctsvc_ipc_marshal_activity,
- .get_primary_id = __ctsvc_ipc_marshal_activity_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_activity
};
ctsvc_activity_s* activity_p = (ctsvc_activity_s*) record;
- do
- {
+ do {
if (ctsvc_ipc_unmarshal_int(ipc_data, &activity_p->id) != CONTACTS_ERROR_NONE) break;
if (ctsvc_ipc_unmarshal_int(ipc_data, &activity_p->contact_id) != CONTACTS_ERROR_NONE) break;
if (ctsvc_ipc_unmarshal_string(ipc_data, &activity_p->source_name) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_string((activity_p->service_operation),ipc_data) != CONTACTS_ERROR_NONE) break;
if (ctsvc_ipc_marshal_string((activity_p->uri),ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)activity_p->photos, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)activity_p->photos, ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
}
-static int __ctsvc_ipc_marshal_activity_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_ACTIVITY_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
static int __ctsvc_ipc_unmarshal_activity_photo(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_activity_photo(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_activity_photo_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_activity_photo_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_activity_photo,
- .marshal_record = __ctsvc_ipc_marshal_activity_photo,
- .get_primary_id = __ctsvc_ipc_marshal_activity_photo_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_activity_photo
};
ctsvc_activity_photo_s* photo_p = (ctsvc_activity_photo_s*) record;
- do
- {
+ do {
if (ctsvc_ipc_unmarshal_int(ipc_data, &photo_p->id) != CONTACTS_ERROR_NONE) break;
if (ctsvc_ipc_unmarshal_int(ipc_data, &photo_p->activity_id) != CONTACTS_ERROR_NONE) break;
if (ctsvc_ipc_unmarshal_string(ipc_data, &photo_p->photo_url) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_int((photo_p->sort_index),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
}
-static int __ctsvc_ipc_marshal_activity_photo_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_ACTIVITY_PHOTO_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
static int __ctsvc_ipc_unmarshal_address(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_address(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_address_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_address_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_address,
- .marshal_record = __ctsvc_ipc_marshal_address,
- .get_primary_id = __ctsvc_ipc_marshal_address_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_address
};
if (ctsvc_ipc_unmarshal_string(ipc_data, &address_p->country) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
if (ctsvc_ipc_marshal_string((address_p->country),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_address_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_ADDRESS_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
-
static int __ctsvc_ipc_unmarshal_addressbook(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_addressbook(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_addressbook_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_addressbook_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_addressbook,
- .marshal_record = __ctsvc_ipc_marshal_addressbook,
- .get_primary_id = __ctsvc_ipc_marshal_addressbook_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_addressbook
};
if (ctsvc_ipc_unmarshal_int(ipc_data, &addressbook_p->mode) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_int((addressbook_p->mode),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_addressbook_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_ADDRESSBOOK_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
-
static int __ctsvc_ipc_unmarshal_company(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_company(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_company_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_company_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_company,
- .marshal_record = __ctsvc_ipc_marshal_company,
- .get_primary_id = __ctsvc_ipc_marshal_company_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_company
};
if (ctsvc_ipc_unmarshal_string(ipc_data, &company_p->phonetic_name) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_string((company_p->phonetic_name),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_company_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_COMPANY_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
static int __ctsvc_ipc_unmarshal_contact(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_contact(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_contact_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_contact_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_contact,
- .marshal_record = __ctsvc_ipc_marshal_contact,
- .get_primary_id = __ctsvc_ipc_marshal_contact_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_contact
};
static int __ctsvc_ipc_unmarshal_contact(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record)
if (ctsvc_ipc_unmarshal_child_list(ipc_data, (contacts_list_h*)&pcontact->extensions) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_string((pcontact->message_alert),ipc_data) != CONTACTS_ERROR_NONE) break;
if (ctsvc_ipc_marshal_int((pcontact->changed_ver),ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->name, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->note, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->company, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->numbers, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->emails, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->grouprelations, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->events, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->messengers, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->postal_addrs, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->urls, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->nicknames, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->profiles, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->relationships, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->images, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->extensions, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->name, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->note, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->company, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->numbers, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->emails, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->grouprelations, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->events, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->messengers, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->postal_addrs, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->urls, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->nicknames, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->profiles, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->relationships, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->images, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->extensions, ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_contact_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_CONTACT_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
#define __CTSVC_IPC_DEFINE_H__
#define CTSVC_IPC_SERVICE "contacts_svc_ipc"
-#define CTSVC_IPC_SOCKET_PATH "/tmp/."CTSVC_IPC_SERVICE
+#define CTSVC_IPC_SOCKET_BASE "/tmp/"
+#define CTSVC_IPC_SOCKET_PATH CTSVC_IPC_SOCKET_BASE"."CTSVC_IPC_SERVICE
-#define CTSVC_IPC_SOCKET_PATH_FOR_CHANGE_SUBSCRIPTION "/tmp/."CTSVC_IPC_SERVICE"_for_subscribe"
+#define CTSVC_IPC_SOCKET_PATH_FOR_CHANGE_SUBSCRIPTION CTSVC_IPC_SOCKET_BASE"."CTSVC_IPC_SERVICE"_for_subscribe"
#define CTSVC_IPC_SUBSCRIBE_MODULE "ctsvc_ipc_subscribe_module"
#define CTSVC_IPC_MODULE "ctsvc_ipc_module"
static int __ctsvc_ipc_unmarshal_email(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_email(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_email_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_email_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_email,
- .marshal_record = __ctsvc_ipc_marshal_email,
- .get_primary_id = __ctsvc_ipc_marshal_email_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_email
};
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_email_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_EMAIL_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
static int __ctsvc_ipc_unmarshal_event(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_event(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_event_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_event_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_event,
- .marshal_record = __ctsvc_ipc_marshal_event,
- .get_primary_id = __ctsvc_ipc_marshal_event_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_event
};
if (ctsvc_ipc_unmarshal_bool(ipc_data, &event_p->is_leap_month) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_bool((event_p->is_leap_month),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_event_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_EVENT_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
static int __ctsvc_ipc_unmarshal_extension(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_extension(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_extension_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_extension_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_extension,
- .marshal_record = __ctsvc_ipc_marshal_extension,
- .get_primary_id = __ctsvc_ipc_marshal_extension_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_extension
};
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_extension_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_EXTENSION_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
-
static int __ctsvc_ipc_unmarshal_group(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_group(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_group_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_group_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_group,
- .marshal_record = __ctsvc_ipc_marshal_group,
- .get_primary_id = __ctsvc_ipc_marshal_group_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_group
};
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_string((group_p->image_thumbnail_path),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_group_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_GROUP_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
static int __ctsvc_ipc_unmarshal_group_relation(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_group_relation(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_group_relation_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_group_relation_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_group_relation,
- .marshal_record = __ctsvc_ipc_marshal_group_relation,
- .get_primary_id = __ctsvc_ipc_marshal_group_relation_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_group_relation
};
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_group_relation_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_GROUP_RELATION_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
static int __ctsvc_ipc_unmarshal_image(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_image(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_image_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_image_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_image,
- .marshal_record = __ctsvc_ipc_marshal_image,
- .get_primary_id = __ctsvc_ipc_marshal_image_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_image
};
if (ctsvc_ipc_unmarshal_bool(ipc_data, &image_p->is_default) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_bool((image_p->is_default),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_image_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_IMAGE_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
*
*/
-#include <stdlib.h> //calloc
+#include <stdlib.h>
#include <string.h>
#include "ctsvc_ipc_marshal.h"
#include "contacts_record.h"
#include "contacts_filter.h"
#include "contacts_list.h"
#include "ctsvc_list.h"
+#include "ctsvc_handle.h"
extern ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_contact_plugin_cb;
extern ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_my_profile_plugin_cb;
extern ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_person_plugin_cb;
#ifdef ENABLE_LOG_FEATURE
extern ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_phonelog_plugin_cb;
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
extern ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_result_plugin_cb;
-#ifdef ENABLE_SIM_FEATURE
extern ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_sdn_plugin_cb;
extern ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_speeddial_plugin_cb;
-#endif // ENABLE_SIM_FEATURE
extern ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_updated_info_plugin_cb;
extern ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_simple_contact_plugin_cb;
static ctsvc_ipc_marshal_record_plugin_cb_s* __ctsvc_ipc_marshal_get_plugin_cb(ctsvc_record_type_e type)
{
- switch (type)
- {
+ switch (type) {
case CTSVC_RECORD_ADDRESSBOOK:
return (&_ctsvc_ipc_record_addressbook_plugin_cb);
case CTSVC_RECORD_GROUP:
#ifdef ENABLE_LOG_FEATURE
case CTSVC_RECORD_PHONELOG:
return (&_ctsvc_ipc_record_phonelog_plugin_cb);
-#endif // ENABLE_LOG_FEATURE
-#ifdef ENABLE_SIM_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
case CTSVC_RECORD_SPEEDDIAL:
return (&_ctsvc_ipc_record_speeddial_plugin_cb);
case CTSVC_RECORD_SDN:
return (&_ctsvc_ipc_record_sdn_plugin_cb);
-#endif // ENABLE_SIM_FEATURE
case CTSVC_RECORD_RESULT:
return (&_ctsvc_ipc_record_result_plugin_cb);
case CTSVC_RECORD_SIMPLE_CONTACT:
{
if (filter->filters) {
GSList *cursor = NULL;
- for(cursor=filter->filters;cursor;cursor=cursor->next) {
+ for (cursor=filter->filters;cursor;cursor=cursor->next) {
ctsvc_filter_s *src = (ctsvc_filter_s*)cursor->data;
if (src->filter_type == CTSVC_FILTER_COMPOSITE)
__ctsvc_ipc_unmarshal_composite_filter_free((ctsvc_composite_filter_s *)src);
static int __ctsvc_ipc_unmarshal_composite_filter(const pims_ipc_data_h ipc_data, ctsvc_composite_filter_s* filter)
{
- int ret = CONTACTS_ERROR_NONE;
unsigned int size = 0;
char* str = NULL;
int count =0, i=0;
filter->filter_type = CTSVC_FILTER_COMPOSITE;
- // view_uri
+ /* view_uri */
str = (char*)pims_ipc_data_get(ipc_data,&size);
filter->view_uri = (char*)SAFE_STRDUP(str);
- // filters
- if (ctsvc_ipc_unmarshal_int(ipc_data,&count) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
+ /* filters */
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(ipc_data,&count)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- for(i=0;i<count;i++)
- {
- if (ctsvc_ipc_unmarshal_int(ipc_data,(int*)&filter_type) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
- goto ERROR_RETURN;
+ for (i=0;i<count;i++) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(ipc_data, (int*)&filter_type)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ __ctsvc_ipc_unmarshal_composite_filter_free(filter);
+ return CONTACTS_ERROR_IPC;
}
- if (filter_type == CTSVC_FILTER_COMPOSITE)
- {
- ctsvc_composite_filter_s* com_filter = NULL;
+ if (filter_type == CTSVC_FILTER_COMPOSITE) {
+ ctsvc_composite_filter_s *com_filter = NULL;
com_filter = (ctsvc_composite_filter_s*)calloc(1,sizeof(ctsvc_composite_filter_s));
- if (com_filter == NULL)
- {
- CTS_ERR("calloc fail");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- goto ERROR_RETURN;
+ if (com_filter == NULL) {
+ CTS_ERR("calloc() Fail");
+ __ctsvc_ipc_unmarshal_composite_filter_free(filter);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
- if (__ctsvc_ipc_unmarshal_composite_filter(ipc_data, com_filter) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
+ if (CONTACTS_ERROR_NONE != __ctsvc_ipc_unmarshal_composite_filter(ipc_data, com_filter)) {
+ CTS_ERR("__ctsvc_ipc_unmarshal_composite_filter() Fail");
CONTACTS_FREE(com_filter);
- goto ERROR_RETURN;
+ __ctsvc_ipc_unmarshal_composite_filter_free(filter);
+ return CONTACTS_ERROR_IPC;
}
- filter->filters = g_slist_append(filter->filters,com_filter);
+ filter->filters = g_slist_append(filter->filters, com_filter);
}
- else
- {
- ctsvc_attribute_filter_s* attr_filter = NULL;
+ else {
+ ctsvc_attribute_filter_s *attr_filter = NULL;
attr_filter = (ctsvc_attribute_filter_s*)calloc(1,sizeof(ctsvc_attribute_filter_s));
- if (attr_filter == NULL)
- {
- CTS_ERR("calloc fail");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- goto ERROR_RETURN;
+ if (attr_filter == NULL) {
+ CTS_ERR("calloc() Fail");
+ __ctsvc_ipc_unmarshal_composite_filter_free(filter);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
- if (__ctsvc_ipc_unmarshal_attribute_filter(ipc_data, filter_type, attr_filter) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
+ if (CONTACTS_ERROR_NONE != __ctsvc_ipc_unmarshal_attribute_filter(ipc_data, filter_type, attr_filter)) {
+ CTS_ERR("__ctsvc_ipc_unmarshal_attribute_filter() Fail");
CONTACTS_FREE(attr_filter);
- goto ERROR_RETURN;
+ __ctsvc_ipc_unmarshal_composite_filter_free(filter);
+ return CONTACTS_ERROR_IPC;
}
filter->filters = g_slist_append(filter->filters,attr_filter);
}
}
- // filters
- if (ctsvc_ipc_unmarshal_int(ipc_data,&count) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
- goto ERROR_RETURN;
+ /* filters */
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(ipc_data, &count)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ __ctsvc_ipc_unmarshal_composite_filter_free(filter);
+ return CONTACTS_ERROR_IPC;
}
- for(i=0;i<count;i++)
- {
- if (ctsvc_ipc_unmarshal_int(ipc_data,(int*)&op) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
- goto ERROR_RETURN;
+ for (i=0;i<count;i++) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(ipc_data, (int *)&op)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ __ctsvc_ipc_unmarshal_composite_filter_free(filter);
+ return CONTACTS_ERROR_IPC;
}
filter->filter_ops = g_slist_append(filter->filter_ops, (void*)op);
}
- // properties //property_count
+ /* properties property_count */
filter->properties = (property_info_s *)ctsvc_view_get_all_property_infos(filter->view_uri, &filter->property_count);
return CONTACTS_ERROR_NONE;
-
-ERROR_RETURN:
- __ctsvc_ipc_unmarshal_composite_filter_free(filter);
- return ret;
}
static int __ctsvc_ipc_marshal_composite_filter(const ctsvc_composite_filter_s* filter, pims_ipc_data_h ipc_data)
{
- if (ctsvc_ipc_marshal_int((filter->filter_type),ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int((filter->filter_type),ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- // view_uri
+ /* view_uri */
int length = strlen(filter->view_uri);
- if (pims_ipc_data_put(ipc_data,(void*)filter->view_uri,length+1) < 0)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (pims_ipc_data_put(ipc_data,(void*)filter->view_uri,length+1) < 0) {
+ CTS_ERR("pims_ipc_data_put() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- // filter->filters
- if (filter->filters)
- {
+ /* filter->filters */
+ if (filter->filters) {
int count = g_slist_length(filter->filters);
GSList *cursor = filter->filters;
ctsvc_filter_s* child_filter;
- if (ctsvc_ipc_marshal_int(count,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(count,ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- while (cursor)
- {
+ while (cursor) {
child_filter = (ctsvc_filter_s*)cursor->data;
- if (child_filter->filter_type == CTSVC_FILTER_COMPOSITE)
- {
- if (__ctsvc_ipc_marshal_composite_filter((ctsvc_composite_filter_s*)child_filter, ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("__ctsvc_ipc_marshal_composite_filter fail");
+ if (child_filter->filter_type == CTSVC_FILTER_COMPOSITE) {
+ if (CONTACTS_ERROR_NONE != __ctsvc_ipc_marshal_composite_filter((ctsvc_composite_filter_s*)child_filter, ipc_data)) {
+ CTS_ERR("__ctsvc_ipc_marshal_composite_filter() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- else
- {
- if (__ctsvc_ipc_marshal_attribute_filter((ctsvc_attribute_filter_s*)child_filter, ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("__ctsvc_ipc_marshal_attribute_filter fail");
+ else {
+ if (CONTACTS_ERROR_NONE != __ctsvc_ipc_marshal_attribute_filter((ctsvc_attribute_filter_s*)child_filter, ipc_data)) {
+ CTS_ERR("__ctsvc_ipc_marshal_attribute_filter() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
cursor = g_slist_next(cursor);
}
}
- else
- {
- if (ctsvc_ipc_marshal_int(0,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ else {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(0,ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (filter->filter_ops)
- {
+ if (filter->filter_ops) {
int count = g_slist_length(filter->filter_ops);
GSList *cursor = filter->filter_ops;
- if (ctsvc_ipc_marshal_int(count,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(count,ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- while (cursor)
- {
+ while (cursor) {
contacts_filter_operator_e op = (contacts_filter_operator_e)cursor->data;
- if (ctsvc_ipc_marshal_int(op,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(op,ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
cursor = g_slist_next(cursor);
}
}
- else
- {
- if (ctsvc_ipc_marshal_int(0,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ else {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(0,ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- // properties //property_count
-
return CONTACTS_ERROR_NONE;
}
static int __ctsvc_ipc_unmarshal_attribute_filter(const pims_ipc_data_h ipc_data, const ctsvc_filter_type_e filter_type, ctsvc_attribute_filter_s* filter)
{
filter->filter_type = filter_type;
- if (ctsvc_ipc_unmarshal_int(ipc_data,&filter->property_id) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(ipc_data,&filter->property_id)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (ctsvc_ipc_unmarshal_int(ipc_data,&filter->match) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(ipc_data,&filter->match)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- switch(filter->filter_type)
- {
+ switch(filter->filter_type) {
case CTSVC_FILTER_STR:
- if (ctsvc_ipc_unmarshal_string(ipc_data,&filter->value.s) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_string(ipc_data,&filter->value.s)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_string() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
break;
case CTSVC_FILTER_INT:
- if (ctsvc_ipc_unmarshal_int(ipc_data,&filter->value.i) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(ipc_data,&filter->value.i)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
break;
case CTSVC_FILTER_BOOL:
- if (ctsvc_ipc_unmarshal_bool(ipc_data,&filter->value.b) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_bool(ipc_data,&filter->value.b)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_bool() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
break;
case CTSVC_FILTER_DOUBLE:
- if (ctsvc_ipc_unmarshal_double(ipc_data,&filter->value.d) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
- break;
case CTSVC_FILTER_LLI:
- if (ctsvc_ipc_unmarshal_lli(ipc_data,&filter->value.l) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
- break;
default:
break;
}
static int __ctsvc_ipc_marshal_attribute_filter(const ctsvc_attribute_filter_s* filter, pims_ipc_data_h ipc_data)
{
- if (ctsvc_ipc_marshal_int((filter->filter_type),ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int((filter->filter_type),ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (ctsvc_ipc_marshal_int((filter->property_id),ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int((filter->property_id),ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (ctsvc_ipc_marshal_int((filter->match),ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int((filter->match),ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- switch(filter->filter_type)
- {
+ switch(filter->filter_type) {
case CTSVC_FILTER_STR:
- if (ctsvc_ipc_marshal_string((filter->value.s),ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_string((filter->value.s),ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_string() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
break;
case CTSVC_FILTER_INT:
- if (ctsvc_ipc_marshal_int((filter->value.i),ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int((filter->value.i),ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
break;
case CTSVC_FILTER_BOOL:
- if (ctsvc_ipc_marshal_bool((filter->value.b),ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_bool((filter->value.b),ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_bool() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
break;
case CTSVC_FILTER_DOUBLE:
- if (ctsvc_ipc_marshal_double((filter->value.d),ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
- break;
case CTSVC_FILTER_LLI:
- if (ctsvc_ipc_marshal_lli((filter->value.l),ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
- break;
default:
break;
}
return CONTACTS_ERROR_NONE;
}
+int ctsvc_ipc_marshal_handle(const contacts_h contact, pims_ipc_data_h ipc_data)
+{
+ int ret;
+ ctsvc_base_s *base = (ctsvc_base_s *)contact;
+
+ ret = ctsvc_ipc_marshal_string(base->zone_name, ipc_data);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_ipc_marshal_string() Fail(%d)", ret);
+
+ ret = ctsvc_ipc_marshal_int(base->version, ipc_data);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_ipc_marshal_int() Fail(%d)", ret);
+
+ ret = ctsvc_ipc_marshal_int(base->connection_count, ipc_data);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_ipc_marshal_int() Fail(%d)", ret);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_ipc_unmarshal_handle(const pims_ipc_data_h ipc_data, contacts_h *pcontact)
+{
+ int ret;
+ ctsvc_base_s *base = NULL;
+
+ ret = ctsvc_handle_create(pcontact);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_handle_create() Fail(%d)", ret);
+
+ base = (ctsvc_base_s *)*pcontact;
+
+ ret = ctsvc_ipc_unmarshal_string(ipc_data, &(base->zone_name));
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_ipc_unmarshal_string() Fail(%d)", ret);
+
+ ret = ctsvc_ipc_unmarshal_int(ipc_data, &(base->version));
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_ipc_unmarshal_int() Fail(%d)", ret);
+
+ ret = ctsvc_ipc_unmarshal_int(ipc_data, &(base->connection_count));
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_ipc_unmarshal_int() Fail(%d)", ret);
+
+ return CONTACTS_ERROR_NONE;
+}
int ctsvc_ipc_unmarshal_record(const pims_ipc_data_h ipc_data, contacts_record_h* precord)
{
ctsvc_record_s *precord_common = NULL;
ctsvc_ipc_marshal_record_plugin_cb_s *plugin_cb;
- RETVM_IF( NULL == precord || NULL == ipc_data, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
+ RETVM_IF(NULL == precord || NULL == ipc_data, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- if (ctsvc_ipc_unmarshal_record_common(ipc_data, &common) != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_common fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_record_common(ipc_data, &common)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record_common() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
ret = contacts_record_create(common.view_uri, precord);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("create activity record fail");
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("contacts_record_create() Fail");
free(common.properties_flags);
return ret;
}
precord_common->property_flag = common.property_flag;
ret = plugin_cb->unmarshal_record(ipc_data, common.view_uri, *precord);
- if( CONTACTS_ERROR_NONE != ret )
- {
+ if (CONTACTS_ERROR_NONE != ret) {
contacts_record_destroy(*precord,true);
*precord = NULL;
return CONTACTS_ERROR_IPC;
ctsvc_record_s *common = (ctsvc_record_s*)(record);
- if (ctsvc_ipc_marshal_record_common(common, ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_marshal_common fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_record_common(common, ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_record_common() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
return ret;
}
-int ctsvc_ipc_marshal_record_get_primary_id(const contacts_record_h record,
- unsigned int *property_id, int *id)
-{
- RETVM_IF(NULL == record || NULL == property_id || NULL == id, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
-
- ctsvc_record_s *temp = (ctsvc_record_s*)(record);
-
- ctsvc_ipc_marshal_record_plugin_cb_s *plugin_cb = __ctsvc_ipc_marshal_get_plugin_cb(temp->r_type);
-
- RETVM_IF(NULL == plugin_cb || NULL == plugin_cb->get_primary_id, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
-
- int ret = plugin_cb->get_primary_id(record, property_id,id);
-
- return ret;
-}
-
int ctsvc_ipc_unmarshal_string(const pims_ipc_data_h ipc_data, char** ppbufchar)
{
int ret = CONTACTS_ERROR_NONE;
RETV_IF(ppbufchar==NULL,CONTACTS_ERROR_INVALID_PARAMETER);
tmp = pims_ipc_data_get(ipc_data,&size);
- if ( tmp == NULL){
- CTS_ERR("pims_ipc_data_get string fail");
+ if (tmp == NULL) {
+ CTS_ERR("pims_ipc_data_get() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
length = *(int*)tmp;
- if(length == -1)
- {
+ if (length == -1) {
ret = CONTACTS_ERROR_NONE;
CTS_VERBOSE("string is null");
*ppbufchar = NULL;
}
str = (char*)pims_ipc_data_get(ipc_data,&size);
- if (str)
- {
+ if (str) {
*ppbufchar = SAFE_STRDUP(str);
}
unsigned int size = 0;
void *tmp = pims_ipc_data_get(data,&size);
- if ( tmp == NULL)
- {
- CTS_ERR("pims_ipc_data_get int fail");
+ if (tmp == NULL) {
+ CTS_ERR("pims_ipc_data_get() Fail");
return CONTACTS_ERROR_NO_DATA;
}
- else
- {
+ else {
*pout = *(int*)tmp;
}
return CONTACTS_ERROR_NONE;
unsigned int size = 0;
void *tmp = pims_ipc_data_get(data,&size);
- if ( tmp == NULL)
- {
- CTS_ERR("pims_ipc_data_get unsigned int fail");
+ if (tmp == NULL) {
+ CTS_ERR("pims_ipc_data_get() Fail");
return CONTACTS_ERROR_NO_DATA;
}
- else
- {
+ else {
*pout = *(unsigned int*)tmp;
}
return CONTACTS_ERROR_NONE;
unsigned int size = 0;
void *tmp = pims_ipc_data_get(data,&size);
- if ( tmp == NULL)
- {
- CTS_ERR("pims_ipc_data_get bool fail");
+ if (tmp == NULL) {
+ CTS_ERR("pims_ipc_data_get() Fail");
return CONTACTS_ERROR_NO_DATA;
}
- else
- {
+ else {
*pout = *(bool*)tmp;
}
return CONTACTS_ERROR_NONE;
}
-int ctsvc_ipc_unmarshal_lli(const pims_ipc_data_h data, long long int *pout)
-{
- RETV_IF(data==NULL,CONTACTS_ERROR_INVALID_PARAMETER);
- RETV_IF(pout==NULL,CONTACTS_ERROR_INVALID_PARAMETER);
-
- unsigned int size = 0;
- void *tmp = pims_ipc_data_get(data,&size);
- if ( tmp == NULL)
- {
- CTS_ERR("pims_ipc_data_get lli fail");
- return CONTACTS_ERROR_NO_DATA;
- }
- else
- {
- *pout = *(long long int*)tmp;
- }
- return CONTACTS_ERROR_NONE;
-}
-
-int ctsvc_ipc_unmarshal_long(const pims_ipc_data_h data, long *pout)
-{
- RETV_IF(data==NULL,CONTACTS_ERROR_INVALID_PARAMETER);
- RETV_IF(pout==NULL,CONTACTS_ERROR_INVALID_PARAMETER);
-
- unsigned int size = 0;
- void *tmp = pims_ipc_data_get(data, &size);
- if ( tmp == NULL )
- {
- CTS_ERR("pims_ipc_data_get long fail");
- return CONTACTS_ERROR_NO_DATA;
- }
- else
- {
- *pout = *(long*)tmp;
- }
- return CONTACTS_ERROR_NONE;
-}
-
-int ctsvc_ipc_unmarshal_double(const pims_ipc_data_h data, double *pout)
-{
- RETV_IF(data==NULL,CONTACTS_ERROR_INVALID_PARAMETER);
- RETV_IF(pout==NULL,CONTACTS_ERROR_INVALID_PARAMETER);
-
- unsigned int size = 0;
- void* tmp = pims_ipc_data_get(data,&size);
- if ( tmp == NULL)
- {
- CTS_ERR("pims_ipc_data_get double fail");
- return CONTACTS_ERROR_NO_DATA;
- }
- else
- {
- *pout = *(double*)tmp;
- }
- return CONTACTS_ERROR_NONE;
-}
-
int ctsvc_ipc_unmarshal_record_common(const pims_ipc_data_h ipc_data, ctsvc_record_s* common)
{
void *tmp = NULL;
RETV_IF(ipc_data==NULL,CONTACTS_ERROR_NO_DATA);
tmp = pims_ipc_data_get(ipc_data,&size);
- if ( tmp == NULL)
- {
- CTS_ERR("pims_ipc_data_get fail");
+ if (tmp == NULL) {
+ CTS_ERR("pims_ipc_data_get() Fail");
return CONTACTS_ERROR_NO_DATA;
}
- else
- {
+ else {
common->r_type = *(ctsvc_record_type_e*)tmp;
}
str = (char*)pims_ipc_data_get(ipc_data,&size);
+ if (NULL == str) {
+ CTS_ERR("pims_ipc_data_get() Fail");
+ return CONTACTS_ERROR_NO_DATA;
+ }
common->view_uri = ctsvc_view_get_uri(str);
- ctsvc_ipc_unmarshal_unsigned_int(ipc_data, &(common->property_max_count));
- if (common->property_max_count > 0) {
+ tmp = pims_ipc_data_get(ipc_data,&size);
+ if (NULL == tmp) {
+ CTS_ERR("pims_ipc_data_get() Fail");
+ return CONTACTS_ERROR_NO_DATA;
+ }
+ common->property_max_count = *(unsigned int*)tmp;
+
+ if (0 < common->property_max_count) {
unsigned char *tmp_properties_flags;
tmp_properties_flags = (unsigned char*)pims_ipc_data_get(ipc_data, &size);
if (NULL == tmp_properties_flags) {
- CTS_ERR("pims_ipc_data_get() return NULL");
- return CONTACTS_ERROR_IPC;
+ CTS_ERR("pims_ipc_data_get() Fail");
+ return CONTACTS_ERROR_NO_DATA;
}
+
common->properties_flags = calloc(common->property_max_count, sizeof(char));
if (common->properties_flags == NULL) {
- CTS_ERR("calloc fail");
+ CTS_ERR("calloc() Fail");
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
memcpy(common->properties_flags, tmp_properties_flags, sizeof(char)*common->property_max_count);
}
tmp = pims_ipc_data_get(ipc_data,&size);
- RETVM_IF(NULL == tmp, CONTACTS_ERROR_NO_DATA, "pims_ipc_data_get() return NULL");
+ if (NULL == tmp) {
+ CTS_ERR("pims_ipc_data_get() Fail");
+ return CONTACTS_ERROR_NO_DATA;
+ }
common->property_flag = *(unsigned char*)tmp;
return CONTACTS_ERROR_NONE;
RETV_IF(ipc_data==NULL,CONTACTS_ERROR_INVALID_PARAMETER);
- if( bufchar != NULL)
- {
+ if (bufchar) {
int length = strlen(bufchar);
- if (pims_ipc_data_put(ipc_data,(void*)&length,sizeof(int)) != 0)
- {
+ if (pims_ipc_data_put(ipc_data,(void*)&length,sizeof(int)) != 0) {
ret = CONTACTS_ERROR_OUT_OF_MEMORY;
}
- if ( pims_ipc_data_put(ipc_data,(void*)bufchar,length+1) != 0)
- {
+ if (pims_ipc_data_put(ipc_data,(void*)bufchar,length+1) != 0) {
ret = CONTACTS_ERROR_OUT_OF_MEMORY;
return ret;
}
}
- else
- {
+ else {
int length = -1;
- if (pims_ipc_data_put(ipc_data,(void*)&length,sizeof(int)) != 0)
- {
+ if (pims_ipc_data_put(ipc_data,(void*)&length,sizeof(int)) != 0) {
ret = CONTACTS_ERROR_OUT_OF_MEMORY;
}
}
{
RETV_IF(ipc_data==NULL,CONTACTS_ERROR_INVALID_PARAMETER);
- if (pims_ipc_data_put(ipc_data,(void*)&in,sizeof(int)) != 0)
- {
+ if (pims_ipc_data_put(ipc_data,(void*)&in,sizeof(int)) != 0) {
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
return CONTACTS_ERROR_NONE;
{
RETV_IF(ipc_data==NULL,CONTACTS_ERROR_INVALID_PARAMETER);
- if (pims_ipc_data_put(ipc_data,(void*)&in,sizeof(unsigned int)) != 0)
- {
+ if (pims_ipc_data_put(ipc_data,(void*)&in,sizeof(unsigned int)) != 0) {
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
return CONTACTS_ERROR_NONE;
{
RETV_IF(ipc_data==NULL,CONTACTS_ERROR_INVALID_PARAMETER);
- if (pims_ipc_data_put(ipc_data,(void*)&in,sizeof(bool)) != 0)
- {
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- return CONTACTS_ERROR_NONE;
-}
-
-int ctsvc_ipc_marshal_lli(const long long int in, pims_ipc_data_h ipc_data)
-{
- RETV_IF(ipc_data==NULL,CONTACTS_ERROR_INVALID_PARAMETER);
-
- if (pims_ipc_data_put(ipc_data,(void*)&in,sizeof(long long int)) != 0)
- {
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- return CONTACTS_ERROR_NONE;
-}
-
-int ctsvc_ipc_marshal_long(const long in, pims_ipc_data_h ipc_data)
-{
- RETV_IF(ipc_data==NULL,CONTACTS_ERROR_INVALID_PARAMETER);
-
- if (pims_ipc_data_put(ipc_data,(void*)&in,sizeof(long)) != 0)
- {
- return CONTACTS_ERROR_OUT_OF_MEMORY;
- }
- return CONTACTS_ERROR_NONE;
-}
-
-int ctsvc_ipc_marshal_double(const double in, pims_ipc_data_h ipc_data)
-{
- RETV_IF(ipc_data==NULL,CONTACTS_ERROR_INVALID_PARAMETER);
-
- if (pims_ipc_data_put(ipc_data,(void*)&in,sizeof(double)) != 0)
- {
+ if (pims_ipc_data_put(ipc_data,(void*)&in,sizeof(bool)) != 0) {
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
return CONTACTS_ERROR_NONE;
RETV_IF(NULL == common, CONTACTS_ERROR_INVALID_PARAMETER);
RETV_IF(NULL == ipc_data, CONTACTS_ERROR_INVALID_PARAMETER);
- if(pims_ipc_data_put(ipc_data,(void*)&common->r_type,sizeof(int)) < 0)
- {
+ if (pims_ipc_data_put(ipc_data,(void*)&common->r_type,sizeof(int)) < 0) {
return CONTACTS_ERROR_NO_DATA;
}
int length = strlen(common->view_uri);
- if (pims_ipc_data_put(ipc_data,(void*)common->view_uri,length+1) < 0)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (pims_ipc_data_put(ipc_data,(void*)common->view_uri,length+1) < 0) {
+ CTS_ERR("pims_ipc_data_put() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (pims_ipc_data_put(ipc_data,(void*)&common->property_max_count,sizeof(unsigned int)) < 0)
- {
+ if (pims_ipc_data_put(ipc_data,(void*)&common->property_max_count,sizeof(unsigned int)) < 0) {
return CONTACTS_ERROR_NO_DATA;
}
- if (0 < common->property_max_count)
- {
- if (pims_ipc_data_put(ipc_data,(void*)common->properties_flags,sizeof(unsigned char)*common->property_max_count) < 0)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (0 < common->property_max_count) {
+ if (pims_ipc_data_put(ipc_data,(void*)common->properties_flags,sizeof(unsigned char)*common->property_max_count) < 0) {
+ CTS_ERR("pims_ipc_data_put() Fail");
return CONTACTS_ERROR_NO_DATA;
}
}
- if (pims_ipc_data_put(ipc_data,(void*)&common->property_flag,sizeof(char)) < 0)
- {
+ if (pims_ipc_data_put(ipc_data,(void*)&common->property_flag,sizeof(char)) < 0) {
return CONTACTS_ERROR_NO_DATA;
}
return CONTACTS_ERROR_NONE;
}
-int ctsvc_ipc_unmarshal_query(const pims_ipc_data_h ipc_data, contacts_query_h *query)
+int ctsvc_ipc_unmarshal_query(const pims_ipc_data_h ipc_data, contacts_query_h *out_query)
{
- ctsvc_query_s *que = NULL;
+ ctsvc_query_s *query = NULL;
unsigned int size = 0;
char* str = NULL;
unsigned int count = 0, i = 0;
int ret = CONTACTS_ERROR_NONE;
- RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
+ RETV_IF(NULL == out_query, CONTACTS_ERROR_INVALID_PARAMETER);
RETV_IF(NULL == ipc_data, CONTACTS_ERROR_INVALID_PARAMETER);
- // view_uri
- str = (char*)pims_ipc_data_get(ipc_data,&size);
+ /* view_uri */
+ str = (char*)pims_ipc_data_get(ipc_data, &size);
- ret = contacts_query_create(str, query);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("contacts_query_create fail");
+ ret = contacts_query_create(str, out_query);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("contacts_query_create() Fail");
return ret;
}
+ query = (ctsvc_query_s *)*out_query;
- que = (ctsvc_query_s *) *query;
-
- if (ctsvc_ipc_unmarshal_unsigned_int(ipc_data,&count) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
- goto ERROR_RETURN;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_unsigned_int(ipc_data, &count)) {
+ CTS_ERR("contacts_query_create() Fail");
+ contacts_query_destroy(*out_query);
+ *out_query = NULL;
+ return CONTACTS_ERROR_IPC;
}
- if (count == 0)
- {
- que->filter = NULL;
+ if (0 == count) {
+ query->filter = NULL;
}
- else
- {
+ else {
ctsvc_composite_filter_s *filter = NULL;
filter = (ctsvc_composite_filter_s *)calloc(1, sizeof(ctsvc_composite_filter_s));
if (NULL == filter) {
- CTS_ERR("calloc fail");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- goto ERROR_RETURN;
+ CTS_ERR("calloc() Fail");
+ contacts_query_destroy(*out_query);
+ *out_query = NULL;
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
filter->filter_type = CTSVC_FILTER_COMPOSITE;
- filter->properties = (property_info_s *)ctsvc_view_get_all_property_infos(que->view_uri, &filter->property_count);
- que->filter = filter;
-
- // for filter_type
- if (ctsvc_ipc_unmarshal_unsigned_int(ipc_data, &count) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
- goto ERROR_RETURN;
+ filter->properties = (property_info_s *)ctsvc_view_get_all_property_infos(query->view_uri, &filter->property_count);
+ query->filter = filter;
+
+ /* for filter_type */
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_unsigned_int(ipc_data, &count)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_unsigned_int() Fail");
+ contacts_query_destroy(*out_query);
+ *out_query = NULL;
+ return CONTACTS_ERROR_IPC;
}
- if (__ctsvc_ipc_unmarshal_composite_filter(ipc_data,que->filter) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
- goto ERROR_RETURN;
+ if (CONTACTS_ERROR_NONE != __ctsvc_ipc_unmarshal_composite_filter(ipc_data, query->filter)) {
+ CTS_ERR("__ctsvc_ipc_unmarshal_composite_filter() Fail");
+ contacts_query_destroy(*out_query);
+ *out_query = NULL;
+ return CONTACTS_ERROR_IPC;
}
}
- if (ctsvc_ipc_unmarshal_unsigned_int(ipc_data,&(que->projection_count)) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
- goto ERROR_RETURN;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_unsigned_int(ipc_data, &(query->projection_count))) {
+ CTS_ERR("ctsvc_ipc_unmarshal_unsigned_int() Fail");
+ contacts_query_destroy(*out_query);
+ *out_query = NULL;
+ return CONTACTS_ERROR_IPC;
}
- if (que->projection_count > 0)
- {
- que->projection = (unsigned int*)malloc(sizeof(unsigned int)*que->projection_count);
- if (que->projection == NULL)
- {
- CTS_ERR("malloc fail");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- goto ERROR_RETURN;
+ if (0 < query->projection_count) {
+ query->projection = (unsigned int*)malloc(sizeof(unsigned int)*query->projection_count);
+ if (query->projection == NULL) {
+ CTS_ERR("malloc() Fail");
+ contacts_query_destroy(*out_query);
+ *out_query = NULL;
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
- for(i=0;i<que->projection_count;i++)
- {
- if (ctsvc_ipc_unmarshal_unsigned_int(ipc_data,&(que->projection[i])) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
- goto ERROR_RETURN;
+ for (i=0;i<query->projection_count;i++) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_unsigned_int(ipc_data,&(query->projection[i]))) {
+ CTS_ERR("ctsvc_ipc_unmarshal_unsigned_int() Fail");
+ contacts_query_destroy(*out_query);
+ *out_query = NULL;
+ return CONTACTS_ERROR_IPC;
}
}
}
- else
- {
- que->projection = NULL;
+ else {
+ query->projection = NULL;
}
- if (ctsvc_ipc_unmarshal_unsigned_int(ipc_data,&(que->sort_property_id)) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
- goto ERROR_RETURN;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_unsigned_int(ipc_data,&(query->sort_property_id))) {
+ CTS_ERR("ctsvc_ipc_unmarshal_unsigned_int() Fail");
+ contacts_query_destroy(*out_query);
+ *out_query = NULL;
+ return CONTACTS_ERROR_IPC;
}
- if (ctsvc_ipc_unmarshal_bool(ipc_data,&(que->sort_asc)) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
- goto ERROR_RETURN;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_bool(ipc_data,&(query->sort_asc))) {
+ CTS_ERR("ctsvc_ipc_unmarshal_bool() Fail");
+ contacts_query_destroy(*out_query);
+ *out_query = NULL;
+ return CONTACTS_ERROR_IPC;
}
- if (ctsvc_ipc_unmarshal_bool(ipc_data,&(que->distinct)) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
- goto ERROR_RETURN;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_bool(ipc_data,&(query->distinct))) {
+ CTS_ERR("ctsvc_ipc_unmarshal_bool() Fail");
+ contacts_query_destroy(*out_query);
+ *out_query = NULL;
+ return CONTACTS_ERROR_IPC;
}
return CONTACTS_ERROR_NONE;
-
-ERROR_RETURN:
- contacts_query_destroy(*query);
- *query = NULL;
-
- return ret;
}
int ctsvc_ipc_marshal_query(const contacts_query_h query, pims_ipc_data_h ipc_data)
RETV_IF(NULL == ipc_data, CONTACTS_ERROR_INVALID_PARAMETER);
que = (ctsvc_query_s *)query;
- //view_uri
+ /* view_uri */
length = strlen(que->view_uri);
- if (pims_ipc_data_put(ipc_data,(void*)que->view_uri,length+1) < 0)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (pims_ipc_data_put(ipc_data,(void*)que->view_uri,length+1) < 0) {
+ CTS_ERR("pims_ipc_data_put() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (que->filter)
- {
- if (ctsvc_ipc_marshal_int(1,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (que->filter) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(1,ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (__ctsvc_ipc_marshal_composite_filter(que->filter,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != __ctsvc_ipc_marshal_composite_filter(que->filter,ipc_data)) {
+ CTS_ERR("__ctsvc_ipc_marshal_composite_filter() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- else
- {
- if (ctsvc_ipc_marshal_int(0,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ else {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(0,ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (ctsvc_ipc_marshal_unsigned_int(que->projection_count,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_unsigned_int(que->projection_count,ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_unsigned_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- for(i=0;i<que->projection_count;i++)
- {
- if (ctsvc_ipc_marshal_unsigned_int(que->projection[i],ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ for (i=0;i<que->projection_count;i++) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_unsigned_int(que->projection[i],ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_unsigned_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (ctsvc_ipc_marshal_unsigned_int(que->sort_property_id,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_unsigned_int(que->sort_property_id,ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_unsigned_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (ctsvc_ipc_marshal_bool(que->sort_asc,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_bool(que->sort_asc,ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_bool() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (ctsvc_ipc_marshal_bool(que->distinct,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_bool(que->distinct,ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_bool() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- //properties // property_count
-
return CONTACTS_ERROR_NONE;
}
int count = 0;
unsigned int deleted_count = 0;
contacts_record_h record;
- int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == list, CONTACTS_ERROR_INVALID_PARAMETER);
RETV_IF(NULL == ipc_data, CONTACTS_ERROR_INVALID_PARAMETER);
- if (contacts_list_create(list) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("contacts_list_create fail");
+ if (CONTACTS_ERROR_NONE != contacts_list_create(list)) {
+ CTS_ERR("contacts_list_create() Fail");
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
- if (ctsvc_ipc_unmarshal_int(ipc_data,&(count)) != CONTACTS_ERROR_NONE)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(ipc_data, &(count))) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
contacts_list_destroy(*list, true);
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- return CONTACTS_ERROR_INVALID_PARAMETER;
+ *list = NULL;
+ return CONTACTS_ERROR_IPC;
}
unsigned int i = 0;
- for(i=0;i<count;i++)
- {
- if (ctsvc_ipc_unmarshal_record(ipc_data,&record) != CONTACTS_ERROR_NONE )
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
- goto ERROR_RETURN;
+ for (i=0;i<count;i++) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_record(ipc_data, &record)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
+ contacts_list_destroy(*list, true);
+ *list = NULL;
+ return CONTACTS_ERROR_IPC;
}
- if (contacts_list_add(*list,record) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("contacts_list_add fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
- goto ERROR_RETURN;
+ if (CONTACTS_ERROR_NONE != contacts_list_add(*list, record)) {
+ CTS_ERR("contacts_list_add() Fail");
+ contacts_list_destroy(*list, true);
+ *list = NULL;
+ return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (ctsvc_ipc_unmarshal_unsigned_int(ipc_data,&deleted_count) != CONTACTS_ERROR_NONE) {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
- goto ERROR_RETURN;
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_unsigned_int(ipc_data, &deleted_count)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_unsigned_int() Fail");
+ contacts_list_destroy(*list, true);
+ *list = NULL;
+ return CONTACTS_ERROR_IPC;
}
i = 0;
- for(i=0;i<deleted_count;i++)
- {
- if (ctsvc_ipc_unmarshal_record(ipc_data,&record) != CONTACTS_ERROR_NONE )
- {
- CTS_ERR("_ctsvc_ipc_unmarshal fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
- goto ERROR_RETURN;
+ for (i=0;i<deleted_count;i++) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_record(ipc_data, &record)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
+ contacts_list_destroy(*list, true);
+ *list = NULL;
+ return CONTACTS_ERROR_IPC;
}
- if (ctsvc_list_append_deleted_record(*list,record) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("contacts_list_add fail");
- ret = CONTACTS_ERROR_INVALID_PARAMETER;
- goto ERROR_RETURN;
+ if (CONTACTS_ERROR_NONE != ctsvc_list_append_deleted_record(*list, record)) {
+ CTS_ERR("ctsvc_list_append_deleted_record() Fail");
+ contacts_list_destroy(*list, true);
+ *list = NULL;
+ return CONTACTS_ERROR_IPC;
}
}
return CONTACTS_ERROR_NONE;
-
-ERROR_RETURN:
- if (*list)
- {
- contacts_list_destroy(*list, true);
- *list = NULL;
- }
-
- return ret;
}
int ctsvc_ipc_unmarshal_child_list(const pims_ipc_data_h ipc_data, contacts_list_h* list)
RETV_IF(NULL == list, CONTACTS_ERROR_INVALID_PARAMETER);
RETV_IF(NULL == ipc_data, CONTACTS_ERROR_INVALID_PARAMETER);
- if (ctsvc_ipc_unmarshal_int(ipc_data,&(count)) != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_int(ipc_data,&(count))) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- for(i=0;i<count;i++) {
- if (ctsvc_ipc_unmarshal_record(ipc_data,&record) != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_record fail");
+ for (i=0;i<count;i++) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_record(ipc_data,&record)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (contacts_list_add(*list,record) != CONTACTS_ERROR_NONE) {
- CTS_ERR("contacts_list_add fail");
+ if (CONTACTS_ERROR_NONE != contacts_list_add(*list,record)) {
+ CTS_ERR("contacts_list_add() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (ctsvc_ipc_unmarshal_unsigned_int(ipc_data,&deleted_count) != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_unsigned_int fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_unsigned_int(ipc_data,&deleted_count)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_unsigned_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
i = 0;
- for(i=0;i<deleted_count;i++) {
- if (ctsvc_ipc_unmarshal_record(ipc_data,&record) != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_record fail");
+ for (i=0;i<deleted_count;i++) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_unmarshal_record(ipc_data,&record)) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (ctsvc_list_append_deleted_record(*list,record) != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_list_append_deleted_record fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_list_append_deleted_record(*list,record)) {
+ CTS_ERR("ctsvc_list_append_deleted_record() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
RETV_IF(NULL == list, CONTACTS_ERROR_INVALID_PARAMETER);
RETV_IF(NULL == ipc_data, CONTACTS_ERROR_INVALID_PARAMETER);
- // count
- if (contacts_list_get_count(list, &count) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("contacts_list_get_count fail");
+ /* count */
+ if (CONTACTS_ERROR_NONE != contacts_list_get_count(list, &count)) {
+ CTS_ERR("contacts_list_get_count() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (ctsvc_ipc_marshal_int(count,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(count,ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
contacts_list_first(list);
unsigned int i = 0;
- for(i=0;i<count;i++)
- {
- if (contacts_list_get_current_record_p(list,&record) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("contacts_list_get_count fail");
+ for (i=0;i<count;i++) {
+ if (CONTACTS_ERROR_NONE != contacts_list_get_current_record_p(list,&record)) {
+ CTS_ERR("contacts_list_get_current_record_p() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (ctsvc_ipc_marshal_record(record,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_record(record,ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_record() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if ( contacts_list_next(list) == CONTACTS_ERROR_NO_DATA )
- {
+ if (CONTACTS_ERROR_NO_DATA == contacts_list_next(list)) {
break;
}
}
- // count
- if (ctsvc_list_get_deleted_count(list, &deleted_count) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("contacts_list_get_count fail");
+ /* count */
+ if (ctsvc_list_get_deleted_count(list, &deleted_count)) {
+ CTS_ERR("ctsvc_list_get_deleted_count() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (ctsvc_ipc_marshal_int(deleted_count,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(deleted_count,ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
i = 0;
- for(i=0;i<deleted_count;i++)
- {
- if (ctsvc_list_get_deleted_nth_record_p(list, i, &record) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("contacts_list_get_count fail");
+ for (i=0;i<deleted_count;i++) {
+ if (CONTACTS_ERROR_NONE != ctsvc_list_get_deleted_nth_record_p(list, i, &record)) {
+ CTS_ERR("ctsvc_list_get_deleted_nth_record_p() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (ctsvc_ipc_marshal_record(record,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("_ctsvc_ipc_marshal fail");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_record(record,ipc_data)) {
+ CTS_ERR("ctsvc_ipc_marshal_record() Fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
*/
typedef int (*ctsvc_ipc_unmarshal_record_cb)(const pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h precord);
typedef int (*ctsvc_ipc_marshal_record_cb)(const contacts_record_h record, pims_ipc_data_h ipc_data);
-typedef int (*ctsvc_ipc_marshal_record_get_primary_id_cb)(const contacts_record_h record, unsigned int *property_id, int *id);
typedef struct {
ctsvc_ipc_unmarshal_record_cb unmarshal_record;
ctsvc_ipc_marshal_record_cb marshal_record;
- ctsvc_ipc_marshal_record_get_primary_id_cb get_primary_id;
} ctsvc_ipc_marshal_record_plugin_cb_s;
int ctsvc_ipc_unmarshal_record(const pims_ipc_data_h ipc_data, contacts_record_h* precord);
int ctsvc_ipc_marshal_record(const contacts_record_h record, pims_ipc_data_h ipc_data);
-int ctsvc_ipc_marshal_record_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
+
+int ctsvc_ipc_marshal_handle(const contacts_h contact, pims_ipc_data_h ipc_data);
+int ctsvc_ipc_unmarshal_handle(const pims_ipc_data_h ipc_data, contacts_h *pcontact);
/*
* string
int ctsvc_ipc_unmarshal_bool(const pims_ipc_data_h data, bool *pout);
int ctsvc_ipc_unmarshal_int(const pims_ipc_data_h data, int *pout);
int ctsvc_ipc_unmarshal_unsigned_int(const pims_ipc_data_h data, unsigned int *pout);
-int ctsvc_ipc_unmarshal_lli(const pims_ipc_data_h data, long long int *pout);
-int ctsvc_ipc_unmarshal_long(const pims_ipc_data_h data, long *pout);
-int ctsvc_ipc_unmarshal_double(const pims_ipc_data_h data, double *pout);
int ctsvc_ipc_unmarshal_record_common(const pims_ipc_data_h ipc_data, ctsvc_record_s* common);
/*
int ctsvc_ipc_marshal_bool(const bool in, pims_ipc_data_h ipc_data);
int ctsvc_ipc_marshal_int(const int in, pims_ipc_data_h ipc_data);
int ctsvc_ipc_marshal_unsigned_int(const unsigned int in, pims_ipc_data_h ipc_data);
-int ctsvc_ipc_marshal_lli(const long long int in, pims_ipc_data_h ipc_data);
-int ctsvc_ipc_marshal_long(const long in, pims_ipc_data_h ipc_data);
-int ctsvc_ipc_marshal_double(const double in, pims_ipc_data_h ipc_data);
int ctsvc_ipc_marshal_record_common(const ctsvc_record_s* common, pims_ipc_data_h ipc_data);
/*
* marsharl : view_uri + other
* unmarshal : view_uri를 먼저 get 하고 난 이후 나머지를 ..
*/
-//int ctsvc_ipc_unmarshal_filter(const pims_ipc_data_h ipc_data, contacts_filter_h *filter);
-//int ctsvc_ipc_marshal_filter(const contacts_filter_h filter, pims_ipc_data_h ipc_data);
int ctsvc_ipc_unmarshal_query(const pims_ipc_data_h ipc_data, contacts_query_h *query);
int ctsvc_ipc_marshal_query(const contacts_query_h query, pims_ipc_data_h ipc_data);
int ctsvc_ipc_unmarshal_list(const pims_ipc_data_h ipc_data, contacts_list_h *list);
static int __ctsvc_ipc_unmarshal_messenger(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_messenger(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_messenger_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_messenger_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_messenger,
- .marshal_record = __ctsvc_ipc_marshal_messenger,
- .get_primary_id = __ctsvc_ipc_marshal_messenger_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_messenger
};
if (ctsvc_ipc_unmarshal_string(ipc_data, &messenger_p->im_id) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_messenger_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_MESSENGER_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
static int __ctsvc_ipc_unmarshal_my_profile(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_my_profile(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_my_profile_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_my_profile_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_my_profile,
- .marshal_record = __ctsvc_ipc_marshal_my_profile,
- .get_primary_id = __ctsvc_ipc_marshal_my_profile_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_my_profile
};
static int __ctsvc_ipc_unmarshal_my_profile(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record)
if (ctsvc_ipc_unmarshal_child_list(ipc_data, (contacts_list_h*)&pmy_profile->extensions) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_string((pcontact->uid),ipc_data) != CONTACTS_ERROR_NONE) break;
if (ctsvc_ipc_marshal_string((pcontact->image_thumbnail_path),ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->name, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->note, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->company, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->numbers, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->emails, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->events, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->messengers, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->postal_addrs, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->urls, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->nicknames, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->profiles, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->relationships, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->images, ipc_data) != CONTACTS_ERROR_NONE) break;
- if (ctsvc_ipc_marshal_list( (contacts_list_h)pcontact->extensions, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->name, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->note, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->company, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->numbers, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->emails, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->events, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->messengers, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->postal_addrs, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->urls, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->nicknames, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->profiles, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->relationships, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->images, ipc_data) != CONTACTS_ERROR_NONE) break;
+ if (ctsvc_ipc_marshal_list((contacts_list_h)pcontact->extensions, ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_my_profile_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_CONTACT_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
-
static int __ctsvc_ipc_unmarshal_name(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_name(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_name_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_name_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_name,
- .marshal_record = __ctsvc_ipc_marshal_name,
- .get_primary_id = __ctsvc_ipc_marshal_name_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_name
};
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_name_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_NAME_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
static int __ctsvc_ipc_unmarshal_nickname(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_nickname(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_nickname_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_nickname_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_nickname,
- .marshal_record = __ctsvc_ipc_marshal_nickname,
- .get_primary_id = __ctsvc_ipc_marshal_nickname_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_nickname
};
if (ctsvc_ipc_unmarshal_string(ipc_data, &nickname_p->nickname) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
RETV_IF(ipc_data==NULL,CONTACTS_ERROR_NO_DATA);
RETV_IF(nickname_p==NULL,CONTACTS_ERROR_NO_DATA);
- do{
+ do {
if (ctsvc_ipc_marshal_int((nickname_p->id),ipc_data) != CONTACTS_ERROR_NONE) break;
if (ctsvc_ipc_marshal_int((nickname_p->contact_id),ipc_data) != CONTACTS_ERROR_NONE) break;
if (ctsvc_ipc_marshal_int((nickname_p->type),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_nickname_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_NICKNAME_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
static int __ctsvc_ipc_unmarshal_note(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_note(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_note_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_note_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_note,
- .marshal_record = __ctsvc_ipc_marshal_note,
- .get_primary_id = __ctsvc_ipc_marshal_note_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_note
};
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_string((note_p->note),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_note_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_NOTE_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
static int __ctsvc_ipc_unmarshal_number(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_number(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_number_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_number_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_number,
- .marshal_record = __ctsvc_ipc_marshal_number,
- .get_primary_id = __ctsvc_ipc_marshal_number_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_number
};
static int __ctsvc_ipc_unmarshal_number(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record)
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_string((number_p->number),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_number_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_NUMBER_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
static int __ctsvc_ipc_unmarshal_person(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_person(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_person_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_person_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_person,
- .marshal_record = __ctsvc_ipc_marshal_person,
- .get_primary_id = __ctsvc_ipc_marshal_person_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_person
};
if (ctsvc_ipc_unmarshal_string(ipc_data, &person_p->addressbook_ids) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_string((person_p->addressbook_ids),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_person_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_PERSON_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
static int __ctsvc_ipc_unmarshal_phonelog(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_phonelog(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_phonelog_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_phonelog_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_phonelog,
- .marshal_record = __ctsvc_ipc_marshal_phonelog,
- .get_primary_id = __ctsvc_ipc_marshal_phonelog_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_phonelog
};
if (ctsvc_ipc_unmarshal_int(ipc_data, &phonelog_p->sim_slot_no) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_int((phonelog_p->sim_slot_no),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_phonelog_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_PHONELOG_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
static int __ctsvc_ipc_unmarshal_profile(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_profile(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_profile_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_profile_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_profile,
- .marshal_record = __ctsvc_ipc_marshal_profile,
- .get_primary_id = __ctsvc_ipc_marshal_profile_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_profile
};
if (ctsvc_ipc_unmarshal_string(ipc_data, &profile_p->extra_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_string((profile_p->extra_data),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_profile_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_PROFILE_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
static int __ctsvc_ipc_unmarshal_relationship(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_relationship(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_relationship_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_relationship_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_relationship,
- .marshal_record = __ctsvc_ipc_marshal_relationship,
- .get_primary_id = __ctsvc_ipc_marshal_relationship_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_relationship
};
if (ctsvc_ipc_unmarshal_string(ipc_data, &relationship_p->name) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_string((relationship_p->name),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_relationship_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_RELATIONSHIP_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_result_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_result,
- .marshal_record = __ctsvc_ipc_marshal_result,
- .get_primary_id = NULL
+ .marshal_record = __ctsvc_ipc_marshal_result
};
static int __ctsvc_ipc_unmarshal_search_value(pims_ipc_data_h ipc_data, ctsvc_result_value_s* pvalue)
{
- if (ctsvc_ipc_unmarshal_int(ipc_data,&pvalue->property_id) != CONTACTS_ERROR_NONE)
- {
+ if (ctsvc_ipc_unmarshal_int(ipc_data,&pvalue->property_id) != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (ctsvc_ipc_unmarshal_int(ipc_data,&pvalue->type) != CONTACTS_ERROR_NONE)
- {
+ if (ctsvc_ipc_unmarshal_int(ipc_data,&pvalue->type) != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_STR) == true)
- {
- if (ctsvc_ipc_unmarshal_string(ipc_data,&pvalue->value.s) != CONTACTS_ERROR_NONE)
- {
+ if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_STR) == true) {
+ if (ctsvc_ipc_unmarshal_string(ipc_data,&pvalue->value.s) != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- else if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_BOOL) == true)
- {
- if (ctsvc_ipc_unmarshal_bool(ipc_data,&pvalue->value.b) != CONTACTS_ERROR_NONE)
- {
+ else if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_BOOL) == true) {
+ if (ctsvc_ipc_unmarshal_bool(ipc_data,&pvalue->value.b) != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- else if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_INT) == true)
- {
- if (ctsvc_ipc_unmarshal_int(ipc_data,&pvalue->value.i) != CONTACTS_ERROR_NONE)
- {
+ else if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_INT) == true) {
+ if (ctsvc_ipc_unmarshal_int(ipc_data,&pvalue->value.i) != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- else if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_DOUBLE) == true)
- {
- if (ctsvc_ipc_unmarshal_double(ipc_data,&pvalue->value.d) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_marshal fail");
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
+ else if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_DOUBLE) == true) {
+ return CONTACTS_ERROR_NONE;
}
- else if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_LLI) == true)
- {
- if (ctsvc_ipc_unmarshal_lli(ipc_data,&pvalue->value.l) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_marshal fail");
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
+ else if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_LLI) == true) {
+ return CONTACTS_ERROR_NONE;
}
- else
- {
+ else {
ASSERT_NOT_REACHED("invalid parameter (property:%d)",pvalue->property_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
static int __ctsvc_ipc_marshal_search_value(const ctsvc_result_value_s* pvalue, pims_ipc_data_h ipc_data)
{
- if (ctsvc_ipc_marshal_int(pvalue->property_id,ipc_data) != CONTACTS_ERROR_NONE)
- {
+ if (ctsvc_ipc_marshal_int(pvalue->property_id,ipc_data) != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (ctsvc_ipc_marshal_int(pvalue->type,ipc_data) != CONTACTS_ERROR_NONE)
- {
+ if (ctsvc_ipc_marshal_int(pvalue->type,ipc_data) != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_STR) == true)
- {
- if (ctsvc_ipc_marshal_string(pvalue->value.s,ipc_data) != CONTACTS_ERROR_NONE)
- {
+ if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_STR) == true) {
+ if (ctsvc_ipc_marshal_string(pvalue->value.s,ipc_data) != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- else if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_BOOL) == true)
- {
- if (ctsvc_ipc_marshal_bool(pvalue->value.b,ipc_data) != CONTACTS_ERROR_NONE)
- {
+ else if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_BOOL) == true) {
+ if (ctsvc_ipc_marshal_bool(pvalue->value.b,ipc_data) != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- else if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_INT) == true)
- {
- if (ctsvc_ipc_marshal_int(pvalue->value.i,ipc_data) != CONTACTS_ERROR_NONE)
- {
+ else if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_INT) == true) {
+ if (ctsvc_ipc_marshal_int(pvalue->value.i,ipc_data) != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- else if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_DOUBLE) == true)
- {
- if (ctsvc_ipc_marshal_double(pvalue->value.d,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_marshal fail");
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
+ else if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_DOUBLE) == true) {
+ return CONTACTS_ERROR_NONE;
}
- else if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_LLI) == true)
- {
- if (ctsvc_ipc_marshal_lli(pvalue->value.l,ipc_data) != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_marshal fail");
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
+ else if (CTSVC_VIEW_CHECK_DATA_TYPE(pvalue->property_id, CTSVC_VIEW_DATA_TYPE_LLI) == true) {
+ return CONTACTS_ERROR_NONE;
}
- else
- {
+ else {
ASSERT_NOT_REACHED("invalid parameter (property:%d)",pvalue->property_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
ctsvc_result_s* result_p = (ctsvc_result_s*)record;
unsigned int count = 0;
- if (ctsvc_ipc_unmarshal_unsigned_int(ipc_data, &count) != CONTACTS_ERROR_NONE)
- {
+ if (ctsvc_ipc_unmarshal_unsigned_int(ipc_data, &count) != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
unsigned int i = 0;
- for ( i=0; i<count; i++ )
- {
+ for (i=0; i<count; i++) {
ctsvc_result_value_s* value_data = NULL;
value_data = calloc(1, sizeof(ctsvc_result_value_s));
- if (value_data == NULL)
- {
+ if (value_data == NULL) {
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
- if (__ctsvc_ipc_unmarshal_search_value(ipc_data, value_data) != CONTACTS_ERROR_NONE)
- {
+ if (__ctsvc_ipc_unmarshal_search_value(ipc_data, value_data) != CONTACTS_ERROR_NONE) {
CONTACTS_FREE(value_data);
CTS_ERR("ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
ctsvc_result_s* result_p = (ctsvc_result_s*)record;
RETV_IF(result_p==NULL,CONTACTS_ERROR_NO_DATA);
- if (result_p->values)
- {
+ if (result_p->values) {
unsigned int count = g_slist_length(result_p->values);
- if (ctsvc_ipc_marshal_unsigned_int(count, ipc_data) != CONTACTS_ERROR_NONE)
- {
+ if (ctsvc_ipc_marshal_unsigned_int(count, ipc_data) != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
GSList *cursor = result_p->values;
- while (cursor)
- {
+ while (cursor) {
ctsvc_result_value_s* value_data = (ctsvc_result_value_s *)cursor->data;
- if (value_data == NULL)
- {
+ if (value_data == NULL) {
cursor = g_slist_next(cursor);
continue;
}
- if (__ctsvc_ipc_marshal_search_value((const ctsvc_result_value_s*)value_data, ipc_data) != CONTACTS_ERROR_NONE)
- {
+ if (__ctsvc_ipc_marshal_search_value((const ctsvc_result_value_s*)value_data, ipc_data) != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
cursor = g_slist_next(cursor);
}
}
- else
- {
- if (ctsvc_ipc_marshal_int(0, ipc_data) != CONTACTS_ERROR_NONE)
- {
+ else {
+ if (ctsvc_ipc_marshal_int(0, ipc_data) != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
static int __ctsvc_ipc_unmarshal_sdn(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_sdn(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_sdn_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_sdn_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_sdn,
- .marshal_record = __ctsvc_ipc_marshal_sdn,
- .get_primary_id = __ctsvc_ipc_marshal_sdn_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_sdn
};
if (ctsvc_ipc_unmarshal_int(ipc_data, &sdn_p->sim_slot_no) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_int((sdn_p->sim_slot_no),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_sdn_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_SDN_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
static int __ctsvc_ipc_unmarshal_simple_contact(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_simple_contact(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_simple_contact_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_simple_contact_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_simple_contact,
- .marshal_record = __ctsvc_ipc_marshal_simple_contact,
- .get_primary_id = __ctsvc_ipc_marshal_simple_contact_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_simple_contact
};
static int __ctsvc_ipc_unmarshal_simple_contact(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record)
if (ctsvc_ipc_unmarshal_int(ipc_data, &pcontact->display_source_type) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_int((pcontact->display_source_type),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_simple_contact_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_CONTACT_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
-
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_speeddial_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_speeddial,
- .marshal_record = __ctsvc_ipc_marshal_speeddial,
- .get_primary_id = NULL
+ .marshal_record = __ctsvc_ipc_marshal_speeddial
};
if (ctsvc_ipc_unmarshal_int(ipc_data, &speeddial_p->dial_number) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_int((speeddial_p->dial_number),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_updated_info_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_updated_info,
- .marshal_record = __ctsvc_ipc_marshal_updated_info,
- .get_primary_id = NULL
+ .marshal_record = __ctsvc_ipc_marshal_updated_info
};
if (ctsvc_ipc_unmarshal_int(ipc_data,&updated_info_p->last_changed_type) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_int((updated_info_p->last_changed_type),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
static int __ctsvc_ipc_unmarshal_url(pims_ipc_data_h ipc_data, const char* view_uri, contacts_record_h record);
static int __ctsvc_ipc_marshal_url(const contacts_record_h record, pims_ipc_data_h ipc_data);
-static int __ctsvc_ipc_marshal_url_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id);
ctsvc_ipc_marshal_record_plugin_cb_s _ctsvc_ipc_record_url_plugin_cb = {
.unmarshal_record = __ctsvc_ipc_unmarshal_url,
- .marshal_record = __ctsvc_ipc_marshal_url,
- .get_primary_id = __ctsvc_ipc_marshal_url_get_primary_id
+ .marshal_record = __ctsvc_ipc_marshal_url
};
if (ctsvc_ipc_unmarshal_string(ipc_data, &url_p->url) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_unmarshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
if (ctsvc_ipc_marshal_string((url_p->url),ipc_data) != CONTACTS_ERROR_NONE) break;
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
CTS_ERR("_ctsvc_ipc_marshal fail");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_ipc_marshal_url_get_primary_id(const contacts_record_h record, unsigned int *property_id, int *id)
-{
- *property_id = CTSVC_PROPERTY_URL_ID;
- return contacts_record_get_int(record, *property_id, id );
-}
-
<label name="contacts-service::db"/>
<label name="contacts-service::svc"/>
<label name="contacts-service::phonelog"/>
- <label name="contacts-service::vconf"/>
- <label name="contacts-service::vconf-private"/>
</provide>
+ <permit>
+ <smack permit="telephony_framework" type="rw"/>
+ </permit>
<request>
<smack request="contacts-service::db" type="rwxatl"/>
<smack request="contacts-service::svc" type="rwxatl"/>
<smack request="contacts-service::phonelog" type="rwxatl"/>
- <smack request="contacts-service::vconf" type="rwxatl"/>
- <smack request="contacts-service::vconf-private" type="rwxatl"/>
<smack request="sys-assert::core" type="rwxat"/>
- <smack request="libaccounts-svc" type="rw"/>
<smack request="libaccounts-svc::db" type="rwl"/>
<smack request="libaccounts-svc::check_read" type="r"/>
<smack request="telephony_framework::api_sim" type="r"/>
<smack request="telephony_framework::api_phonebook" type="rx"/>
<smack request="telephony_framework::properties" type="rw"/>
- <smack request="system::vconf_system" type="r"/>
- <smack request="system::vconf_inhouse" type="r"/>
+ <smack request="system::media" type="rwaxt"/>
+ <smack request="system::homedir" type="rwaxt"/>
<smack request="security-server::api-privilege-by-pid" type="w"/>
<smack request="security-server::api-cookie-check" type="w"/>
+ <smack request="device::app_logging" type="rw"/>
+ <smack request="device::sys_logging" type="rw"/>
+ <smack request="xorg" type="w"/>
+ <smack request="tizen::vconf::contact" type="rwxatl"/>
+ <smack request="tizen::vconf::platform::r" type="rwxatl"/>
+ <smack request="tizen::vconf::account" type="rw"/>
+ <smack request="tizen::vconf::public::r" type="rl"/>
+ <smack request="tizen::vconf::setting::admin" type="rl"/>
+ <smack request="tizen::vconf::telephony::admin" type="rl"/>
+ <smack request="aul::terminatebgapp" type="x"/>
</request>
</define>
<assign>
- <filesystem path="/usr/lib/libcontacts-service2.so.0*" label="_" exec_label="none"/>
+ <filesystem path="/usr/lib/libcontacts-service2.so.0*" label="_" exec_label="_"/>
<filesystem path="/opt/usr/dbspace/.contacts-svc.db" label="contacts-service::db"/>
<filesystem path="/opt/usr/dbspace/.contacts-svc.db-journal" label="contacts-service::db"/>
<filesystem path="/opt/usr/data/contacts-svc/.CONTACTS_SVC_IPC_READY" label="contacts-service::svc"/>
*
* APIs which needs _uri
* @code
- * API int contacts_record_create( const char* view_uri, ... )
- * API int contacts_filter_create( const char* view_uri, ... )
- * API int contacts_query_create( const char* view_uri, ... )
- * API int contacts_db_get_record( const char* view_uri, ... )
- * API int contacts_db_delete_record( const char* view_uri, ... )
- * API int contacts_db_get_all_records( const char* view_uri, ... )
- * API int contacts_db_delete_records(const char* view_uri, ... )
- * API int contacts_db_add_changed_cb( const char* view_uri, ... )
- * API int contacts_db_remove_changed_cb( const char* view_uri, ... )
- * API int contacts_db_get_changes_by_version( const char* view_uri, ... )
- * API int contacts_db_search_records(const char* view_uri, ... )
- * API int contacts_db_search_records_with_range(const char* view_uri, ... )
- * API int contacts_db_get_count( const char* view_uri, ... )
+ * API int contacts_record_create(const char* view_uri, ...)
+ * API int contacts_filter_create(const char* view_uri, ...)
+ * API int contacts_query_create(const char* view_uri, ...)
+ * API int contacts_db_get_record(const char* view_uri, ...)
+ * API int contacts_db_delete_record(const char* view_uri, ...)
+ * API int contacts_db_get_all_records(const char* view_uri, ...)
+ * API int contacts_db_delete_records(const char* view_uri, ...)
+ * API int contacts_db_add_changed_cb(const char* view_uri, ...)
+ * API int contacts_db_remove_changed_cb(const char* view_uri, ...)
+ * API int contacts_db_get_changes_by_version(const char* view_uri, ...)
+ * API int contacts_db_search_records(const char* view_uri, ...)
+ * API int contacts_db_search_records_with_range(const char* view_uri, ...)
+ * API int contacts_db_get_count(const char* view_uri, ...)
* @endcode
*
*
* int i = 0;
* contacts_db_get_record(_contacts_contact._uri, contact_id, &contact);
* contacts_record_get_child_record_count(contact, _contacts_contact.address, &address_num);
- * for(i=0; i<address_num; i++) {
+ * for (i=0; i<address_num; i++) {
* contacts_record_h address = NULL;
* contacts_record_get_child_record_at_p(contact, _contacts_contact.address, i, &address);
* contacts_record_set_str(address, _contacts_address.country, "Korea");
*
* To operate a list, you must obtain its handle. The handle is provided during creation of the list. List handle must destroy after use.
* @code
- * API int contacts_list_create( contacts_list_h* contacts_list );
- * API int contacts_list_destroy( contacts_list_h contacts_list, bool delete_child );
+ * API int contacts_list_create(contacts_list_h* contacts_list);
+ * API int contacts_list_destroy(contacts_list_h contacts_list, bool delete_child);
* @endcode
*
* If ‘delete_child’ parameter is the true, child resources will destroy automatically.
* @subsection CAPI_SOCIAL_CONTACTS_SVC_MODULE_LISTS_CURSOR Cursor
* The list can be traversed by using cursor.
* @code
- * API int contacts_list_first( contacts_list_h contacts_list );
- * API int contacts_list_last( contacts_list_h contacts_list );
- * API int contacts_list_next( contacts_list_h contacts_list );
- * API int contacts_list_prev( contacts_list_h contacts_list );
+ * API int contacts_list_first(contacts_list_h contacts_list);
+ * API int contacts_list_last(contacts_list_h contacts_list);
+ * API int contacts_list_next(contacts_list_h contacts_list);
+ * API int contacts_list_prev(contacts_list_h contacts_list);
* @endcode
*
* You can get a record of current cursor.
* @code
- * API int contacts_list_get_current_record_p( contacts_list_h contacts_list, contacts_record_h* record );
+ * API int contacts_list_get_current_record_p(contacts_list_h contacts_list, contacts_record_h* record);
* @endcode
*
* Sample code: Loop list
* @subsection CAPI_SOCIAL_CONTACTS_SVC_MODULE_LISTS_ADD_REMOVE Add / Remove
* The contacts-service provides functions for adding/removing child record on list.
* @code
- * API int contacts_list_add( contacts_list_h contacts_list, contacts_record_h record );
- * API int contacts_list_remove( contacts_list_h contacts_list, contacts_record_h record );
+ * API int contacts_list_add(contacts_list_h contacts_list, contacts_record_h record);
+ * API int contacts_list_remove(contacts_list_h contacts_list, contacts_record_h record);
* @endcode
*
* Sample code: Adds records to the list
* Bulk APIs provide to insert/update/delete multiple records. There is no limit of record count on bulk API, but it cause a process to hang during the api is operated. Bulk APIs guarantee atomicity. That is, the api operations either all, or nothing.
*
* @code
- * API int contacts_db_insert_records( contacts_list_h record_list, int **ids, int *count);
- * API int contacts_db_update_records( contacts_list_h record_list);
+ * API int contacts_db_insert_records(contacts_list_h record_list, int **ids, int *count);
+ * API int contacts_db_update_records(contacts_list_h record_list);
* API int contacts_db_delete_records(const char* view_uri, int record_id_array[], int count);
- * API int contacts_db_replace_records( contacts_list_h list, int record_id_array[], int count );
+ * API int contacts_db_replace_records(contacts_list_h list, int record_id_array[], int count);
* @endcode
*
* Sample code: Insert two contact records using bulk API.
* The contacts Filter API provides the set of definitions and interfaces that enable application developers to make filters to set query. <br>
* When creating a filter, you need to specify what type of filter you want to create using _uri property. Filter handle must destroy after use.
* @code
- * API int contacts_filter_create( const char* view_uri, contacts_filter_h* filter );
- * API int contacts_filter_destroy( contacts_filter_h filter );
+ * API int contacts_filter_create(const char* view_uri, contacts_filter_h* filter);
+ * API int contacts_filter_destroy(contacts_filter_h filter);
* @endcode
*
* Sample code: Set filter condition to contain a given substring.
*
*/
-#endif //__TIZEN_SOCIAL_CONTACTS_DOC_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_DOC_H__ */
#include <contacts_phone_log.h>
#include <contacts_db_status.h>
-#endif //__TIZEN_SOCIAL_CONTACTS_H__
+#endif /*__TIZEN_SOCIAL_CONTACTS_H__ */
/**
* @brief Deletes an activity record from the contacts database by contact ID.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
*
/**
* @brief Deletes an activity record from the contacts database by account ID.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
*
#endif
-#endif //__TIZEN_SOCIAL_CONTACTS_ACTIVITY_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_ACTIVITY_H__ */
/**
* @brief Enumeration for contact change state.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum
/**
* @brief Called when the designated view changes.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] view_uri The view URI
* @param[in] user_data The user data passed from the callback registration function
/**
* @brief Inserts a record to the contacts database.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
* @privilege %http://tizen.org/privilege/callhistory.write
* @see contacts_db_delete_record()
* @see contacts_db_get_record()
*/
-int contacts_db_insert_record( contacts_record_h record, int *id );
+int contacts_db_insert_record(contacts_record_h record, int *id);
/**
* @brief Gets a record from the contacts database.
* @details This function creates a new contact handle from the contacts database by the given @a record_id. \n
* @a record will be created, which is filled with contact information.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
* @privilege %http://tizen.org/privilege/callhistory.read
* @see contacts_connect()
* @see contacts_record_destroy()
*/
-int contacts_db_get_record( const char* view_uri, int record_id, contacts_record_h* record );
+int contacts_db_get_record(const char* view_uri, int record_id, contacts_record_h* record);
/**
* @brief Updates a record in the contacts database.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
* @privilege %http://tizen.org/privilege/callhistory.write
* @see contacts_db_delete_record()
* @see contacts_db_get_record()
*/
-int contacts_db_update_record( contacts_record_h record );
+int contacts_db_update_record(contacts_record_h record);
/**
* @brief Deletes a record from the contacts database with related child records.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
* @privilege %http://tizen.org/privilege/callhistory.write
* @see contacts_connect()
* @see contacts_db_insert_record()
*/
-int contacts_db_delete_record( const char* view_uri, int record_id );
+int contacts_db_delete_record(const char* view_uri, int record_id);
/**
* @brief Replaces an id-identified record with the given record.
*
* @details Now, this API supports only _contacts_contact view_uri.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
*
* @see contacts_db_delete_record()
* @see contacts_db_get_record()
*/
-int contacts_db_replace_record( contacts_record_h record, int id );
+int contacts_db_replace_record(contacts_record_h record, int id);
/**
* @brief Retrieves all records and returns the results list.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
*@privilege %http://tizen.org/privilege/callhistory.read
* @see contacts_connect()
* @see contacts_list_destroy()
*/
-int contacts_db_get_all_records( const char* view_uri, int offset, int limit, contacts_list_h* record_list );
+int contacts_db_get_all_records(const char* view_uri, int offset, int limit, contacts_list_h* record_list);
/**
* @brief Uses a query to find records.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
* @privilege %http://tizen.org/privilege/callhistory.read
* @see contacts_connect()
* @see contacts_list_destroy()
*/
-int contacts_db_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* record_list );
+int contacts_db_get_records_with_query(contacts_query_h query, int offset, int limit, contacts_list_h* record_list);
/**
* @brief Inserts multiple records to the contacts database.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
* @privilege %http://tizen.org/privilege/callhistory.write
* @see contacts_db_update_records()
* @see contacts_db_delete_records()
*/
-int contacts_db_insert_records( contacts_list_h record_list, int **ids, int *count);
+int contacts_db_insert_records(contacts_list_h record_list, int **ids, int *count);
/**
* @brief Updates multiple records in the contacts database.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
* @privilege %http://tizen.org/privilege/callhistory.write
* @see contacts_db_insert_records()
* @see contacts_db_delete_records()
*/
-int contacts_db_update_records( contacts_list_h record_list);
+int contacts_db_update_records(contacts_list_h record_list);
/**
* @brief Deletes multiple records in the contacts database with related child records.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
* @privilege %http://tizen.org/privilege/callhistory.write
/**
* @brief Replaces database records identified by given ids with a given record list.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
*
* @see contacts_db_delete_record()
* @see contacts_db_get_record()
*/
-int contacts_db_replace_records( contacts_list_h list, int record_id_array[], int count );
+int contacts_db_replace_records(contacts_list_h list, int record_id_array[], int count);
/**
* @brief Gets the current contacts database version.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
* @privilege %http://tizen.org/privilege/callhistory.read
* @see contacts_connect()
* @see contacts_db_get_changes_by_version()
*/
-int contacts_db_get_current_version( int* contacts_db_version );
+int contacts_db_get_current_version(int* contacts_db_version);
/**
* @brief Registers a callback function to be invoked when a record changes.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
* @privilege %http://tizen.org/privilege/callhistory.read
* @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_note, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_url, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_event, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_image, \n
* @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_company, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_nickname, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_messenger, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_extension, \n
* @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_profile, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_relationship, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_activity, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_activity_photo, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_speeddial. \n\n
+ * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_speeddial, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_sdn, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_group_relation.\n\n
* %http://tizen.org/privilege/callhistory.read is needed for record which is related to @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_phone_log.
* If successive change notification produced on the view_uri are identical,
* then they are coalesced into a single notification if the older notification has not yet been called
* @see contacts_db_changed_cb()
* @see contacts_db_remove_changed_cb()
*/
-int contacts_db_add_changed_cb( const char* view_uri, contacts_db_changed_cb callback, void* user_data );
+int contacts_db_add_changed_cb(const char* view_uri, contacts_db_changed_cb callback, void* user_data);
/**
* @brief Unregisters a callback function.
*
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/contact.read
- * @privilege %http://tizen.org/privilege/callhistory.read
- *
- * @remarks %http://tizen.org/privilege/contact.read is needed for record which is related to @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_address_book, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_person, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_contact, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_simple_contact, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_group, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_my_profile, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_name, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_number, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_email, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_address, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_note, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_url, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_event, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_image, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_company, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_nickname, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_messenger, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_extension, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_profile, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_relationship, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_activity, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_activity_photo, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_speeddial. \n\n
- * %http://tizen.org/privilege/callhistory.read is needed for record which is related to @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_phone_log.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] view_uri The view URI of records whose changes are monitored
* @param[in] callback The callback function to register
* @see contacts_db_changed_cb()
* @see contacts_db_add_changed_cb()
*/
-int contacts_db_remove_changed_cb( const char* view_uri, contacts_db_changed_cb callback, void* user_data );
+int contacts_db_remove_changed_cb(const char* view_uri, contacts_db_changed_cb callback, void* user_data);
/**
* @brief Retrieves records changes since the given database version.
* Now, support @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_contact_updated_info, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_group_updated_info \n
* @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_my_profile_updated_info and @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_grouprel_updated_info.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
*
* @see contacts_connect()
* @see contacts_list_destroy()
*/
-int contacts_db_get_changes_by_version( const char* view_uri, int address_book_id, int contacts_db_version,
- contacts_list_h* change_record_list, int* current_contacts_db_version );
+int contacts_db_get_changes_by_version(const char* view_uri, int address_book_id, int contacts_db_version,
+ contacts_list_h* change_record_list, int* current_contacts_db_version);
/**
* @brief Finds records based on a given keyword.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
*
/**
* @brief Finds records based on given query and keyword.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
*
/**
* @brief Finds records based on a keyword and range.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
*
/**
* @brief Gets the number of records in a specific view.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
* @privilege %http://tizen.org/privilege/callhistory.read
*
* @see contacts_connect()
*/
-int contacts_db_get_count( const char* view_uri, int *count);
+int contacts_db_get_count(const char* view_uri, int *count);
/**
* @brief Gets the number of records matching a query.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
* @privilege %http://tizen.org/privilege/callhistory.read
*
* @see contacts_connect()
*/
-int contacts_db_get_count_with_query( contacts_query_h query, int *count);
+int contacts_db_get_count_with_query(contacts_query_h query, int *count);
/**
* @brief Gets the last successful changed contacts database version on the current connection.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
* @privilege %http://tizen.org/privilege/callhistory.read
int contacts_db_get_last_change_version(int* last_change_version);
/**
- * @internal
- * @brief Called to get the result of an insert batch operation.
- *
- * @since_tizen 2.3
- *
- * @param[in] error Error code for batch operation
- * @param[in] ids IDs of inserted records
- * @param[in] count The number of ids
- * @param[in] user_data The user data passed from the batch operation
- *
- * @return @c True to continue with the next iteration of the loop or @c false to break out of the loop
- *
- * @pre contacts_db_insert_records_async() will invoke this callback.
- *
- * @see contacts_db_insert_records_async()
- */
-typedef void (*contacts_db_insert_result_cb)( int error, int *ids, int count, void *user_data);
-
-/**
- * @internal
- * @brief Called to get the result of a batch operation.
- *
- * @since_tizen 2.3
- *
- * @param[in] error Error code for batch operation
- * @param[in] user_data The user data passed from the batch operation
- *
- * @return @c True to continue with the next iteration of the loop or @c false to break out of the loop
- *
- * @pre contacts_db_update_records_async() will invoke this callback.
- *
- * @see contacts_db_update_records_async()
- * @see contacts_db_delete_records_async()
- * @see contacts_db_replace_records_async()
- */
-typedef void (*contacts_db_result_cb)( int error, void *user_data);
-
-/**
- * @internal
- * @brief Inserts multiple records to the contacts database as a batch operation.
- *
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/contact.write
- * @privilege %http://tizen.org/privilege/callhistory.write
- *
- * @remarks The purpose of async API is for the UI not to create a thread.
- * If you have to display progress during the DB operation, you can use this API.
- * The callback function will be called in main loop.
- * Do not use this API in a thread.
- * During the execution of this API, you can not call the other DB operation APIs.
- * %http://tizen.org/privilege/contact.write is needed for record which is related to @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_address_book, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_contact, \n @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_group, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_my_profile,
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_name, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_number, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_email, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_address, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_note, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_url, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_event, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_image, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_company, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_nickname, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_messenger, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_extension, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_profile, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_relationship, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_activity, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_activity_photo, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_speeddial. \n\n
- * %http://tizen.org/privilege/callhistory.write is needed for record which is related to @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_phone_log.
- *
- * @param[in] record_list The record list handle
- * @param[in] callback The callback function to inform about the batch operation result
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return @c 0 on sucess,
- * otherwise a negative error value (#contacts_error_e)
- *
- * @retval #CONTACTS_ERROR_NONE Successful
- * @retval #CONTACTS_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #CONTACTS_ERROR_DB Database operation failure
- * @retval #CONTACTS_ERROR_PERMISSION_DENIED Permission denied
- * @retval #CONTACTS_ERROR_NOT_SUPPORTED Not supported
- *
- * @pre contacts_connect() should be called to open a connection to the contacts service.
- *
- * @post contacts_db_insert_result_cb() callback will be called
- *
- * @see contacts_connect()
- * @see contacts_db_insert_records()
- * @see contacts_db_update_records_async()
- * @see contacts_db_delete_records_async()
- */
-int contacts_db_insert_records_async( contacts_list_h record_list, contacts_db_insert_result_cb callback, void *user_data);
-
-/**
- * @internal
- * @brief Updates multiple records in the contacts database as a batch operation.
- *
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/contact.write
- * @privilege %http://tizen.org/privilege/callhistory.write
- *
- * @remarks %http://tizen.org/privilege/contact.write is needed for record which is related to @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_address_book, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_contact, \n @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_group, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_my_profile,
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_name, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_number, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_email, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_address, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_note, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_url, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_event, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_image, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_company, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_nickname, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_messenger, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_extension, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_profile, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_relationship, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_activity, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_activity_photo, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_speeddial. \n\n
- * %http://tizen.org/privilege/callhistory.write is needed for record which is related to @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_phone_log.
- *
- * @param[in] record_list The record list handle
- * @param[in] callback The callback function to inform about the batch operation result
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return 0 on success, otherwise a negative error value
- * @retval #CONTACTS_ERROR_NONE Successful
- * @retval #CONTACTS_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #CONTACTS_ERROR_DB Database operation failure
- * @retval #CONTACTS_ERROR_PERMISSION_DENIED Permission denied
- * @retval #CONTACTS_ERROR_NOT_SUPPORTED Not supported
- *
- * @pre contacts_connect() should be called to open a connection to the contacts service.
- * @post contacts_db_result_cb() callback will be called
- *
- * @see contacts_connect()
- * @see contacts_db_update_records()
- * @see contacts_db_insert_records_async()
- * @see contacts_db_delete_records_async()
- */
-int contacts_db_update_records_async( contacts_list_h record_list, contacts_db_result_cb callback, void *user_data);
-
-/**
- * @internal
- * @brief Deletes multiple records with related child records in the contacts database as a batch operation.
- *
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/contact.write
- * @privilege %http://tizen.org/privilege/callhistory.write
- *
- * @remarks %http://tizen.org/privilege/contact.write is needed for record which is related to @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_address_book, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_contact, \n @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_group, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_my_profile,
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_name, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_number, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_email, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_address, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_note, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_url, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_event, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_image, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_company, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_nickname, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_messenger, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_extension, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_profile, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_relationship, \n
- * @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_activity, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_activity_photo, @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_speeddial. \n\n
- * %http://tizen.org/privilege/callhistory.write is needed for record which is related to @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_phone_log.
- *
- * @param[in] view_uri The view URI of records
- * @param[in] record_id_array The record IDs to delete
- * @param[in] count The size of record ID array
- * @param[in] callback The callback function to inform about the batch operation result
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return @c 0 on sucess,
- * otherwise a negative error value (#contacts_error_e)
- *
- * @retval #CONTACTS_ERROR_NONE Successful
- * @retval #CONTACTS_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #CONTACTS_ERROR_DB Database operation failure
- * @retval #CONTACTS_ERROR_PERMISSION_DENIED Permission denied
- * @retval #CONTACTS_ERROR_NOT_SUPPORTED Not supported
- *
- * @pre contacts_connect() should be called to open a connection to the contacts service.
- * @post contacts_db_result_cb() callback will be called
- *
- * @see contacts_connect()
- * @see contacts_db_delete_records()
- * @see contacts_db_insert_records_async()
- * @see contacts_db_update_records_async()
- */
-int contacts_db_delete_records_async(const char* view_uri, int record_id_array[], int count, contacts_db_result_cb callback, void *user_data);
-
-/**
- * @internal
- * @brief Replaces database records identified by given ids with a given record list, asynchronously.
- *
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/contact.write
- *
- * @remarks the write-once value of record is not replaced.\n
- * This API works only for @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_contact
- *
- * @param[in] list The new record list handle to replace
- * @param[in] record_id_array The record IDs to replace
- * @param[in] count The size of record ID array
- * @param[in] callback The callback function to inform about the batch operation result
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return @c 0 on sucess,
- * otherwise a negative error value (#contacts_error_e)
- *
- * @retval #CONTACTS_ERROR_NONE Successful
- * @retval #CONTACTS_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #CONTACTS_ERROR_DB Database operation failure
- * @retval #CONTACTS_ERROR_PERMISSION_DENIED Permission denied
- * @retval #CONTACTS_ERROR_NOT_SUPPORTED Not supported
- *
- * @pre contacts_connect() should be called to open a connection to the contacts service.
- * @post contacts_db_result_cb() callback will be called
- *
- * @see contacts_connect()
- * @see contacts_db_replace_record()
- * @see contacts_db_update_record_async()
- * @see contacts_db_delete_records_async()
- */
-int contacts_db_replace_records_async( contacts_list_h list, int record_id_array[], int count, contacts_db_result_cb callback, void *user_data );
-
-#ifndef _CONTACTS_NATIVE
-
-/**
- * @internal
- * @brief Called when the designated view changes.
- *
- * @since_tizen 2.3
- *
- * @param[in] view_uri The view URI, only _contacts_person and _contacts_phone_log are now supported
- * @param[in] changes It includes changes information ("type:id," string is repeated, you should parse it)
- * @param[in] user_data The user data passed from the callback registration function
- *
- * @see contacts_db_add_changed_cb_with_info()
- */
-
-typedef void (*contacts_db_change_cb_with_info)(const char* view_uri, char *changes, void* user_data);
-
-/**
- * @internal
- * @brief Registers a callback function.
- * @details Now, support only _contacts_person and _contacts_phone_log view_uri.
- *
- * @since_tizen 2.3
- * @privlevel public
- * @privilege %http://tizen.org/privilege/contact.read
- * @privilege %http://tizen.org/privilege/callhistory.read
- *
- * @remarks %http://tizen.org/privilege/contact.read is needed to get notification whenever record which is related to @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_person is changed, \n
- * %http://tizen.org/privilege/callhistory.read is needed to get notification whenever record which is related to @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_phone_log is changed.
- *
- * @param[in] view_uri The view URI of records whose changes are monitored
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return @c 0 on sucess,
- * otherwise a negative error value (#contacts_error_e)
- *
- * @retval #CONTACTS_ERROR_NONE Successful
- * @retval #CONTACTS_ERROR_OUT_OF_MEMORY Out of memory
- * @retval #CONTACTS_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #CONTACTS_ERROR_IPC IPC error
- * @retval #CONTACTS_ERROR_PERMISSION_DENIED Permission denied
- * @retval #CONTACTS_ERROR_NOT_SUPPORTED Not supported
- *
- * @pre contacts_connect() should be called to open a connection to the contacts service.
- * @post contacts_db_change_cb_with_info() callback will be called
- *
- * @see contacts_connect()
- * @see contacts_db_changed_cb_with_info()
- * @see contacts_db_remove_changed_cb_with_info()
- */
-int contacts_db_add_changed_cb_with_info(const char* view_uri, contacts_db_change_cb_with_info callback, void* user_data);
-
-/**
- * @internal
- * @brief Unregisters a callback function.
- * @details Now, support only _contacts_person and _contacts_phone_log view_uri.
- *
- * @since_tizen 2.3
- *
- * @param[in] view_uri The view URI of records whose changes are monitored
- * @param[in] callback The callback function to register
- * @param[in] user_data The user data to be passed to the callback function
- *
- * @return @c 0 on sucess,
- * otherwise a negative error value (#contacts_error_e)
- *
- * @retval #CONTACTS_ERROR_NONE Successful
- * @retval #CONTACTS_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #CONTACTS_ERROR_NOT_SUPPORTED Not supported
- *
- * @pre contacts_connect() should be called to open a connection to the contacts service.
- *
- * @see contacts_connect()
- * @see contacts_db_changed_cb_with_info()
- * @see contacts_db_add_changed_cb_with_info()
- */
-int contacts_db_remove_changed_cb_with_info(const char* view_uri, contacts_db_change_cb_with_info callback, void* user_data);
-
-#endif
-
-/**
* @}
*/
#endif
-#endif //__TIZEN_SOCIAL_CONTACTS_DB_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_DB_H__ */
\ No newline at end of file
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2015 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.
+ *
+ */
+
+#ifndef __TIZEN_SOCIAL_CONTACTS_DB_EXTENSION_H__
+#define __TIZEN_SOCIAL_CONTACTS_DB_EXTENSION_H__
+
+#ifndef API
+#define API __attribute__ ((visibility("default")))
+#endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/**
+ * @file contacts_db_extension.h
+ */
+
+/**
+ * @brief Called when the designated view changes.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ *
+ * @param[in] view_uri The view URI, only _contacts_person and _contacts_phone_log are now supported
+ * @param[in] changes It includes changes information ("type:id," string is repeated, you should parse it)
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see contacts_db_add_changed_cb_with_info()
+ */
+
+typedef void (*contacts_db_change_cb_with_info)(const char* view_uri, char *changes, void* user_data);
+
+/**
+ * @brief Registers a callback function.
+ * @details Now, support only _contacts_person and _contacts_phone_log view_uri.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/contact.read
+ * @privilege %http://tizen.org/privilege/callhistory.read
+ *
+ * @remarks %http://tizen.org/privilege/contact.read is needed to get notification whenever record which is related to @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_person is changed, \n
+ * %http://tizen.org/privilege/callhistory.read is needed to get notification whenever record which is related to @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_phone_log is changed.
+ *
+ * @param[in] view_uri The view URI of records whose changes are monitored
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on sucess,
+ * otherwise a negative error value (#contacts_error_e)
+ *
+ * @retval #CONTACTS_ERROR_NONE Successful
+ * @retval #CONTACTS_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #CONTACTS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #CONTACTS_ERROR_IPC IPC error
+ * @retval #CONTACTS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #CONTACTS_ERROR_NOT_SUPPORTED Not supported
+ *
+ * @pre contacts_connect() should be called to open a connection to the contacts service.
+ * @post contacts_db_change_cb_with_info() callback will be called
+ *
+ * @see contacts_connect()
+ * @see contacts_db_changed_cb_with_info()
+ * @see contacts_db_remove_changed_cb_with_info()
+ */
+int contacts_db_add_changed_cb_with_info(const char* view_uri, contacts_db_change_cb_with_info callback, void* user_data);
+
+/**
+ * @brief Unregisters a callback function.
+ * @details Now, support only _contacts_person and _contacts_phone_log view_uri.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ *
+ * @param[in] view_uri The view URI of records whose changes are monitored
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on sucess,
+ * otherwise a negative error value (#contacts_error_e)
+ *
+ * @retval #CONTACTS_ERROR_NONE Successful
+ * @retval #CONTACTS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #CONTACTS_ERROR_NOT_SUPPORTED Not supported
+ *
+ * @pre contacts_connect() should be called to open a connection to the contacts service.
+ *
+ * @see contacts_connect()
+ * @see contacts_db_changed_cb_with_info()
+ * @see contacts_db_add_changed_cb_with_info()
+ */
+int contacts_db_remove_changed_cb_with_info(const char* view_uri, contacts_db_change_cb_with_info callback, void* user_data);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __TIZEN_SOCIAL_CONTACTS_DB_EXTENSION_H__ */
+
/**
* @brief Enumeration for contact DB status.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
/**
* @brief Gets the current status of server.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] status The current status of server
*
/**
* @brief Called when contacts-service server status changes.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] status The current status of server
* @param[in] user_data The user data passed from the callback registration function
/**
* @brief Registers a callback function.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] callback The callback function to register
* @param[in] user_data The user data to be passed to the callback function
/**
* @brief Unregisters a callback function.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] callback The callback function to register
* @param[in] user_data The user data to be passed to the callback function
#endif
-#endif //__TIZEN_SOCIAL_CONTACTS_DB_STATUS_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_DB_STATUS_H__ */
\ No newline at end of file
/**
* @brief Enumeration for contacts errors.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum
CONTACTS_ERROR_IPC = TIZEN_ERROR_CONTACTS | 0xBF, /**< Unknown IPC error */
/* ENVIRONMENT & OTHER MODULE */
- // Socket, inotify, vconf, icu, tapi, security/smack, account and so on
+ /* Socket, inotify, vconf, icu, tapi, security/smack, account and so on */
CONTACTS_ERROR_SYSTEM = TIZEN_ERROR_CONTACTS | 0xEF, /**< Internal system module error */
/* UNHANDLED EXCEPTION */
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2015 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.
+ *
+ */
+#ifndef __TIZEN_SOCIAL_CONTACTS_EXTENSION_H__
+#define __TIZEN_SOCIAL_CONTACTS_EXTENSION_H__
+
+#include <contacts_db_extension.h>
+
+#endif /* __TIZEN_SOCIAL_CONTACTS_EXTENSION_H__ */
+
+
/**
* @brief Enumeration for Contacts match string flags.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum
/**
* @brief Enumeration for Contacts match int flags.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum
/**
* @brief Enumeration for Contacts filter operators.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum {
/**
* @brief Creates a filter.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @remarks You must release @a filter using contacts_filter_destroy().
*
*
* @see contacts_filter_destroy()
*/
-int contacts_filter_create( const char* view_uri, contacts_filter_h* filter );
+int contacts_filter_create(const char* view_uri, contacts_filter_h* filter);
/**
* @brief Destroys a filter.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] filter The filter handle
*
*
* @see contacts_filter_create()
*/
-int contacts_filter_destroy( contacts_filter_h filter );
+int contacts_filter_destroy(contacts_filter_h filter);
/**
* @brief Adds a condition for a string type property.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] filter The filter handle
* @param[in] property_id The property ID to add a condition
*
* @see contacts_filter_add_operator()
*/
-int contacts_filter_add_str( contacts_filter_h filter, unsigned int property_id, contacts_match_str_flag_e match, const char* match_value );
+int contacts_filter_add_str(contacts_filter_h filter, unsigned int property_id, contacts_match_str_flag_e match, const char* match_value);
/**
* @brief Adds a condition for an integer type property.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] filter The filter handle
* @param[in] property_id The property ID to add a condition
*
* @see contacts_filter_add_operator()
*/
-int contacts_filter_add_int( contacts_filter_h filter, unsigned int property_id, contacts_match_int_flag_e match, int match_value );
+int contacts_filter_add_int(contacts_filter_h filter, unsigned int property_id, contacts_match_int_flag_e match, int match_value);
/**
* @brief Adds a condition for a long int type property.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] filter The filter handle
* @param[in] property_id The property ID to add a condition
*
* @see contacts_filter_add_operator()
*/
-int contacts_filter_add_lli( contacts_filter_h filter, unsigned int property_id, contacts_match_int_flag_e match, long long int match_value );
+int contacts_filter_add_lli(contacts_filter_h filter, unsigned int property_id, contacts_match_int_flag_e match, long long int match_value);
/**
* @brief Adds a condition for a double type property.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] filter The filter handle
* @param[in] property_id The property ID to add a condition
*
* @see contacts_filter_add_operator()
*/
-int contacts_filter_add_double( contacts_filter_h filter, unsigned int property_id, contacts_match_int_flag_e match, double match_value );
+int contacts_filter_add_double(contacts_filter_h filter, unsigned int property_id, contacts_match_int_flag_e match, double match_value);
/**
* @brief Adds a condition for a boolean type property.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] filter The filter handle
* @param[in] property_id The property ID to add a condition
*
* @see contacts_filter_add_operator()
*/
-int contacts_filter_add_bool( contacts_filter_h filter, unsigned int property_id, bool match_value );
+int contacts_filter_add_bool(contacts_filter_h filter, unsigned int property_id, bool match_value);
/**
* @brief Adds an operator between conditions.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] filter The filter handle
* @param[in] operator_type The operator type
* @see contacts_filter_add_int()
* @see contacts_filter_add_bool()
*/
-int contacts_filter_add_operator( contacts_filter_h filter, contacts_filter_operator_e operator_type );
+int contacts_filter_add_operator(contacts_filter_h filter, contacts_filter_operator_e operator_type);
/**
* @brief Adds a filter to a given filter.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] parent_filter The parent filter handle
* @param[in] child_filter The child filter handle
#endif
-#endif //__TIZEN_SOCIAL_CONTACTS_FILTER_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_FILTER_H__ */
\ No newline at end of file
/**
* @brief Adds a contact and a group relationship to the contacts database.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
*
/**
* @brief Removes a contact and a group relationship from the contacts database.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
*
/**
* @brief Sets a group between the previous group and the next group.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
*
#endif
-#endif //__TIZEN_SOCIAL_CONTACTS_GROUP_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_GROUP_H__ */
\ No newline at end of file
#include <contacts_phone_log_internal.h>
-#endif //__TIZEN_SOCIAL_CONTACTS_INTERNAL_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_INTERNAL_H__ */
/**
* @brief Creates a contacts list.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @remarks You must release @a contacts_list using contacts_list_destroy().
*
*
* @see contacts_list_destroy()
*/
-int contacts_list_create( contacts_list_h* contacts_list );
+int contacts_list_create(contacts_list_h* contacts_list);
/**
* @brief Destroys a contacts list and releases its all resources.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] contacts_list The contacts list handle
* @param[in] delete_child Set @c true to destroy child records automatically,
*
* @see contacts_list_create()
*/
-int contacts_list_destroy( contacts_list_h contacts_list, bool delete_child );
+int contacts_list_destroy(contacts_list_h contacts_list, bool delete_child);
/**
* @brief Retrieves the number of contact entities from a contacts list.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] contacts_list The contacts list handle
* @param[out] count The count of contact entity
*
* @see contacts_list_add()
*/
-int contacts_list_get_count( contacts_list_h contacts_list, int *count );
+int contacts_list_get_count(contacts_list_h contacts_list, int *count);
/**
* @brief Adds a record to a contacts list.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @remarks Same kind of record can be added.
*
*
* @see contacts_list_remove()
*/
-int contacts_list_add( contacts_list_h contacts_list, contacts_record_h record );
+int contacts_list_add(contacts_list_h contacts_list, contacts_record_h record);
/**
* @brief Removes a record from the contacts list.
* @details If the record is current record, then current record is changed the next record.\n
* If the record is the last record, then current record will be @c NULL.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] contacts_list The contacts list handle
* @param[in] record The record handle
*
* @see contacts_list_add()
*/
-int contacts_list_remove( contacts_list_h contacts_list, contacts_record_h record );
+int contacts_list_remove(contacts_list_h contacts_list, contacts_record_h record);
/**
* @brief Retrieves a record from the contacts list.
*
* @details The default current record is the first record.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @remarks You MUST NOT destroy the @a record.
* It is destroyed automatically when the @a contacts_list is destroyed.
* @retval #CONTACTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #CONTACTS_ERROR_NO_DATA Requested data does not exist
*/
-int contacts_list_get_current_record_p( contacts_list_h contacts_list, contacts_record_h* record );
+int contacts_list_get_current_record_p(contacts_list_h contacts_list, contacts_record_h* record);
/**
* @brief Moves a contacts list to the previous position.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] contacts_list The contacts list handle
*
*
* @see contacts_list_next()
*/
-int contacts_list_prev( contacts_list_h contacts_list );
+int contacts_list_prev(contacts_list_h contacts_list);
/**
* @brief Moves a contacts list to the next position.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] contacts_list The contacts list handle
*
*
* @see contacts_list_prev()
*/
-int contacts_list_next( contacts_list_h contacts_list );
+int contacts_list_next(contacts_list_h contacts_list);
/**
* @brief Moves a contacts list to the first position.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] contacts_list The contacts list handle
*
*
* @see contacts_list_last()
*/
-int contacts_list_first( contacts_list_h contacts_list );
+int contacts_list_first(contacts_list_h contacts_list);
/**
* @brief Moves a contacts list to the last position.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] contacts_list The contacts list handle
*
*
* @see contacts_list_first()
*/
-int contacts_list_last( contacts_list_h contacts_list );
+int contacts_list_last(contacts_list_h contacts_list);
/**
* @}
#endif
-#endif //__TIZEN_SOCIAL_CONTACTS_LIST_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_LIST_H__ */
\ No newline at end of file
/**
* @brief Links a person to another person.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
*
/**
* @brief Unlinks a contact from a person.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
*
*
* @details The person is no longer in the most frequently contacted person list.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
*
/**
* @brief Sets the order of a (favorite) contact.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
*
/**
* @brief Enumeration for Contacts person properties.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum {
/**
* @brief Sets a record's default property.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
*
/**
* @brief Gets a default property for a record.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
*
#endif
-#endif //__TIZEN_SOCIAL_CONTACTS_PERSON_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_PERSON_H__ */
\ No newline at end of file
*
* To ensure your application is only running on the device with specific features, please define the features in your manifest file using the manifest editor in the SDK.\n
*
- * More details on featuring your application can be found from <a href="../org.tizen.mobile.native.appprogramming/html/ide_sdk_tools/feature_element.htm"><b>Feature Element</b>.</a>
+ * More details on featuring your application can be found from <a href="https://developer.tizen.org/development/tools/native-tools/manifest-text-editor#feature"><b>Feature Element</b>.</a>
*
* <BR>
* @{
* @brief Resets the phone log's count.
* @details The number of all types in the phone log will be @c 0.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/callhistory.write
*
#endif
-#endif //__TIZEN_SOCIAL_CONTACTS_PHONELOG_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_PHONELOG_H__ */
\ No newline at end of file
/**
* @brief Deletes a phone log with extra_data1.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/callhistory.write
*
#endif
-#endif //__TIZEN_SOCIAL_CONTACTS_PHONELOG_INTERNAL_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_PHONELOG_INTERNAL_H__ */
\ No newline at end of file
/**
* @brief Creates a query.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @remarks You must release @a query using contacts_query_destroy().
*
*
* @see contacts_query_destroy()
*/
-int contacts_query_create( const char* view_uri, contacts_query_h* query );
+int contacts_query_create(const char* view_uri, contacts_query_h* query);
/**
* @brief Destroys a query.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] query The query handle
*
*
* @see contacts_query_create()
*/
-int contacts_query_destroy( contacts_query_h query );
+int contacts_query_destroy(contacts_query_h query);
/**
* @brief Adds property IDs for projection.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] query The query handle
* @param[in] property_id_array The property ID array
/**
* @brief Sets the "distinct" option for projection.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] query The query handle
* @param[in] set Set @c true to set the distinct option for projection,
/**
* @brief Sets a filter for query.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] query The query handle
* @param[in] filter The filter handle
/**
* @brief Sets a sort mode for query.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] query The query handle
* @param[in] property_id The property ID to sort
#endif
-#endif //__TIZEN_SOCIAL_CONTACTS_QUERY_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_QUERY_H__ */
\ No newline at end of file
/**
* @brief Creates a record.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @remarks You must release @a record using contacts_record_destroy().
*
*
* @see contacts_record_destroy()
*/
-int contacts_record_create( const char* view_uri, contacts_record_h* record );
+int contacts_record_create(const char* view_uri, contacts_record_h* record);
/**
* @brief Destroys a record and releases its all resources.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] record The record handle
* @param[in] delete_child Set @c true to destroy child records automatically,
*
* @see contacts_record_create()
*/
-int contacts_record_destroy( contacts_record_h record, bool delete_child );
+int contacts_record_destroy(contacts_record_h record, bool delete_child);
/**
* @brief Makes a clone of a record.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @remarks You must release @a cloned_record using contacts_record_destroy().
*
*
* @see contacts_record_destroy()
*/
-int contacts_record_clone( contacts_record_h record, contacts_record_h* cloned_record );
+int contacts_record_clone(contacts_record_h record, contacts_record_h* cloned_record);
/**
* @brief Gets a string from the record handle.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @remarks You must release @a value using free().
*
* @see contacts_record_get_str_p()
* @see contacts_record_set_str()
*/
-int contacts_record_get_str( contacts_record_h record, unsigned int property_id, char** value );
+int contacts_record_get_str(contacts_record_h record, unsigned int property_id, char** value);
/**
* @brief Gets a string pointer from the record handle.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @remarks You MUST NOT release @a value.
*
* @see contacts_record_get_str()
* @see contacts_record_set_str()
*/
-int contacts_record_get_str_p( contacts_record_h record, unsigned int property_id, char** value );
+int contacts_record_get_str_p(contacts_record_h record, unsigned int property_id, char** value);
/**
* @brief Sets a string to a record.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] record The record handle
* @param[in] property_id The property ID
* @see contacts_record_get_str()
* @see contacts_record_get_str_p()
*/
-int contacts_record_set_str( contacts_record_h record, unsigned int property_id, const char* value );
+int contacts_record_set_str(contacts_record_h record, unsigned int property_id, const char* value);
/**
* @brief Gets a record's integer value.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] record The record handle
* @param[in] property_id The property ID
*
* @see contacts_record_set_int()
*/
-int contacts_record_get_int( contacts_record_h record, unsigned int property_id, int* value );
+int contacts_record_get_int(contacts_record_h record, unsigned int property_id, int* value);
/**
* @brief Sets an integer value to a record.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] record The record handle
* @param[in] property_id The property ID
*
* @see contacts_record_get_int()
*/
-int contacts_record_set_int( contacts_record_h record, unsigned int property_id, int value );
+int contacts_record_set_int(contacts_record_h record, unsigned int property_id, int value);
/**
* @brief Gets a record's long integer value.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] record The record handle
* @param[in] property_id The property ID
*
* @see contacts_record_set_lli()
*/
-int contacts_record_get_lli( contacts_record_h record, unsigned int property_id, long long int *value );
+int contacts_record_get_lli(contacts_record_h record, unsigned int property_id, long long int *value);
/**
* @brief Sets a long long integer value to a record.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] record The record handle
* @param[in] property_id The property ID
*
* @see contacts_record_get_lli()
*/
-int contacts_record_set_lli( contacts_record_h record, unsigned int property_id, long long int value );
+int contacts_record_set_lli(contacts_record_h record, unsigned int property_id, long long int value);
/**
* @brief Gets a record's boolean value.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] record The record handle
* @param[in] property_id The property ID
*
* @see contacts_record_set_bool()
*/
-int contacts_record_get_bool( contacts_record_h record, unsigned int property_id, bool *value );
+int contacts_record_get_bool(contacts_record_h record, unsigned int property_id, bool *value);
/**
* @brief Sets a boolean value to a record.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] record The record handle
* @param[in] property_id The property ID
*
* @see contacts_record_get_bool()
*/
-int contacts_record_set_bool( contacts_record_h record, unsigned int property_id, bool value );
+int contacts_record_set_bool(contacts_record_h record, unsigned int property_id, bool value);
/**
* @brief Gets a record's double value.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] record The record handle
* @param[in] property_id The property ID
*
* @see contacts_record_set_double()
*/
-int contacts_record_get_double( contacts_record_h record, unsigned int property_id, double *value );
+int contacts_record_get_double(contacts_record_h record, unsigned int property_id, double *value);
/**
* @brief Sets a double value to a record.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] record The record handle
* @param[in] property_id The property ID
*
* @see contacts_record_get_double()
*/
-int contacts_record_set_double( contacts_record_h record, unsigned int property_id, double value );
+int contacts_record_set_double(contacts_record_h record, unsigned int property_id, double value);
/**
* @brief Adds a child record to the parent record.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] record The parent record handle
* @param[in] property_id The property ID
*
* @see contacts_record_remove_child_record()
*/
-int contacts_record_add_child_record( contacts_record_h record, unsigned int property_id, contacts_record_h child_record );
+int contacts_record_add_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record);
/**
* @brief Removes a child record from the parent record.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] record The parent record handle
* @param[in] property_id The property ID
*
* @see contacts_record_add_child_record()
*/
-int contacts_record_remove_child_record( contacts_record_h record, unsigned int property_id, contacts_record_h child_record );
+int contacts_record_remove_child_record(contacts_record_h record, unsigned int property_id, contacts_record_h child_record);
/**
* @brief Gets the number of child records of a parent record.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] record The parent record handle
* @param[in] property_id The property ID
* @see contacts_record_add_child_record()
* @see contacts_record_remove_child_record()
*/
-int contacts_record_get_child_record_count( contacts_record_h record, unsigned int property_id, int *count );
+int contacts_record_get_child_record_count(contacts_record_h record, unsigned int property_id, int *count);
/**
* @brief Gets a child record handle pointer from the parent record.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @remarks You MUST NOT release @a child_record. It is released when the parent record is destroyed.
*
* @see contacts_record_remove_child_record()
* @see contacts_record_get_child_record_count()
*/
-int contacts_record_get_child_record_at_p( contacts_record_h record, unsigned int property_id, int index, contacts_record_h* child_record );
+int contacts_record_get_child_record_at_p(contacts_record_h record, unsigned int property_id, int index, contacts_record_h* child_record);
/**
* @brief Clones a child record list of the given parent record.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @remarks You must release @a cloned_list using contacts_list_destroy().
*
*
* @see contacts_list_destroy()
*/
-int contacts_record_clone_child_record_list( contacts_record_h record, unsigned int property_id, contacts_list_h* cloned_list );
+int contacts_record_clone_child_record_list(contacts_record_h record, unsigned int property_id, contacts_list_h* cloned_list);
/**
* @brief Gets URI string from a record.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] record The record handle
* @param[out] view_uri The URI of record
* @retval #CONTACTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #CONTACTS_ERROR_NOT_SUPPORTED Not supported
*/
-int contacts_record_get_uri_p( contacts_record_h record, const char** view_uri );
+int contacts_record_get_uri_p(contacts_record_h record, const char** view_uri);
/**
* @}
#endif
-#endif //__TIZEN_SOCIAL_CONTACTS_RECORD_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_RECORD_H__ */
\ No newline at end of file
/**
* @brief Connects to the contacts service.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @remarks Connection opening is necessary to access the contacts server such as fetching, inserting, or updating records.\n
* The execution of contacts_connect() and contacts_disconnect() could slow down your application. So it is not recommended to call them frequently.
* otherwise a negative error value
*
* @retval #CONTACTS_ERROR_NONE Successful
- * @retval #CONTACTS_ERROR_DB Database operation failure
- * @retval #CONTACTS_ERROR_IPC_NOT_AVALIABLE IPC server is not available
* @retval #CONTACTS_ERROR_IPC IPC error
+ * @retval #CONTACTS_ERROR_OUT_OF_MEMORY Out of memory
* @retval #CONTACTS_ERROR_SYSTEM System error
+ * @retval #CONTACTS_ERROR_INTERNAL Internal error
*
* @see contacts_disconnect()
*/
/**
* @brief Disconnects from the contacts service.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @remarks If there is no opened connection, this function returns #CONTACTS_ERROR_DB.
*
* otherwise a negative error value
*
* @retval #CONTACTS_ERROR_NONE Successful
- * @retval #CONTACTS_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #CONTACTS_ERROR_DB Database operation failure
* @retval #CONTACTS_ERROR_IPC IPC error
+ * @retval #CONTACTS_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #CONTACTS_ERROR_SYSTEM System error
+ * @retval #CONTACTS_ERROR_DB Database operation failure
*
* @see contacts_connect()
*/
/**
* @brief Connects to the contacts service with a connection on another thread.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @remarks Opening connection is necessary to access the contact server and to perform operations such as fetching, inserting, or updating records.\n
* On multiple thread environment with contacts_connect(), request can be failed in one thread, while another request is working by the connection in the other thread.
* otherwise a negative error value
*
* @retval #CONTACTS_ERROR_NONE Successful
- * @retval #CONTACTS_ERROR_OUT_OF_MEMORY Out of memory
- * @retval #CONTACTS_ERROR_DB Database operation failure
- * @retval #CONTACTS_ERROR_IPC_NOT_AVALIABLE IPC server is not available
* @retval #CONTACTS_ERROR_IPC IPC error
+ * @retval #CONTACTS_ERROR_OUT_OF_MEMORY Out of memory
* @retval #CONTACTS_ERROR_SYSTEM System error
* @retval #CONTACTS_ERROR_INTERNAL Internal error
*
/**
* @brief Disconnects from the contacts service.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
+ *
+ * @remarks If there is no opened connection, this function returns #CONTACTS_ERROR_DB.
*
* @return @c 0 on success,
* otherwise a negative error value
*
* @retval #CONTACTS_ERROR_NONE Successful
- * @retval #CONTACTS_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #CONTACTS_ERROR_DB Database operation failure
* @retval #CONTACTS_ERROR_IPC IPC error
+ * @retval #CONTACTS_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #CONTACTS_ERROR_SYSTEM System error
+ * @retval #CONTACTS_ERROR_DB Database operation failure
*
* @see contacts_connect_on_thread()
*/
/**
* @brief Definition for contacts_connect_with_flags(). If it is called the API with this flag, then retry to call contacts_connect() for several times.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @see contacts_connect_with_flags()
*/
/**
* @brief Definition for default flag of contacts_connect_with_flags().
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @see contacts_connect_with_flags()
*/
/**
* @brief Connects to the contacts service.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] flags connection flag
*
* otherwise a negative error value
*
* @retval #CONTACTS_ERROR_NONE Successful
- * @retval #CONTACTS_ERROR_DB Database operation failure
- * @retval #CONTACTS_ERROR_IPC_NOT_AVALIABLE IPC server is not available
* @retval #CONTACTS_ERROR_IPC IPC error
+ * @retval #CONTACTS_ERROR_OUT_OF_MEMORY Out of memory
* @retval #CONTACTS_ERROR_SYSTEM System error
+ * @retval #CONTACTS_ERROR_INTERNAL Internal error
*
* @see contacts_disconnect()
*/
#endif
-#endif //__TIZEN_SOCIAL_CONTACTS_SERVICE_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_SERVICE_H__ */
/**
* @brief Enumeration for name display order.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum
/**
* @brief Gets the contacts name display order.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
*
/**
* @brief Sets the contacts name display order.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
*
/**
* @brief Enumeration for name sorting order.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum
/**
* @brief Gets the contacts name sorting order in which contacts are returned.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
*
/**
* @brief Sets the contacts name sorting order in which contacts are returned.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
*
/**
* @brief Called when a designated view changes.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] name_display_order The name display order setting value
* @param[in] user_data The user data passed from the callback registration function
/**
* @brief Registers a callback function.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
*
/**
* @brief Unregisters a callback function.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @param[in] callback The callback function to register
* @param[in] user_data The user data to be passed to the callback function
*
/**
* @brief Called when a designated view changes.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @param[in] name_sorting_order The name sorting order setting value
* @param[in] user_data The user data passed from the callback registration function
*
/**
* @brief Registers a callback function.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
*
/**
* @brief Unregisters a callback function.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @param[in] callback The callback function to register
* @param[in] user_data The user data to be passed to the callback function
*
#endif
-#endif //__TIZEN_SOCIAL_CONTACTS_SETTING_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_SETTING_H__ */
\ No newline at end of file
*
* To ensure your application is only running on the device with specific features, please define the features in your manifest file using the manifest editor in the SDK.\n
*
- * More details on featuring your application can be found from <a href="../org.tizen.mobile.native.appprogramming/html/ide_sdk_tools/feature_element.htm"><b>Feature Element</b>.</a>
+ * More details on featuring your application can be found from <a href="https://developer.tizen.org/development/tools/native-tools/manifest-text-editor#feature"><b>Feature Element</b>.</a>
* <BR>
* @{
*/
/**
* @brief Imports all contacts from SIM to Contacts Database.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.write
*
/**
* @brief Checks whether SIM initialization is completed.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
*
#endif
-#endif //__TIZEN_SOCIAL_CONTACTS_SIM_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_SIM_H__ */
\ No newline at end of file
#define _CONTACTS_HANDLE(A) typedef struct __##A{}* A;
-_CONTACTS_HANDLE( contacts_record_h )
-_CONTACTS_HANDLE( contacts_filter_h )
-_CONTACTS_HANDLE( contacts_list_h )
-_CONTACTS_HANDLE( contacts_query_h )
+_CONTACTS_HANDLE(contacts_record_h)
+_CONTACTS_HANDLE(contacts_filter_h)
+_CONTACTS_HANDLE(contacts_list_h)
+_CONTACTS_HANDLE(contacts_query_h)
+_CONTACTS_HANDLE(contacts_h)
/**
* @file contacts_types.h
* \n Example : CTS_NUM_TYPE_HOME|CTS_NUM_TYPE_VOICE
* \n Exceptionally, CTS_NUM_TYPE_CUSTOM is exclusive.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum {
/**
* @brief Enumeration for Contact email type.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum {
/**
* @brief Enumeration for Contact company type.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum {
/**
* @brief Enumeration for Contact address type.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum {
/**
* @brief Enumeration for Contact URL type.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum {
/**
* @brief Enumeration for Contact messenger type.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum{
/**
* @brief Enumeration for Call history type.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum {
/**
* @brief Enumeration for Contact event type.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum {
/**
* @brief Enumeration for Contact event calendar type.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum {
/**
* @brief Enumeration of Contact image type
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum {
/**
* @brief Enumeration for usage type.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum {
/**
* @brief Enumeration for Contact display name source type.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum {
/**
* @brief Enumeration for Address book mode.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum {
/**
* @brief Enumeration for link mode when inserting contact.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum{
/**
* @brief Enumeration for Contact relationship type.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum {
/**
* @brief Enumeration for Contact search range.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
*/
typedef enum {
/**
* @brief Called to get a record handle of @ref CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE_contacts_contact.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] record The record handle
* @param[in] user_data The user data passed from the foreach function
/**
* @brief Retrieves all contacts with a record handle (_contacts_contact) from a vCard file.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] vcard_file_path The file path of vCard stream file
* @param[in] callback The callback function to invoke
/**
* @brief Retrieves all contacts with a contacts list from a vCard stream.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] vcard_stream The vCard stream
* @param[out] contacts_list The contacts list handle
/**
* @brief Retrieves the vCard stream from a contact.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] contact The contact record handle
* @param[out] vcard_stream The vCard stream
/**
* @brief Retrieves the vCard stream from a contact.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] my_profile The my_profile record handle
* @param[out] vcard_stream The vCard stream
/**
* @brief Retrieves the vCard stream from a person.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
* @privlevel public
* @privilege %http://tizen.org/privilege/contact.read
*
/**
* @brief Retrieves the count of contact entities from a vCard file.
*
- * @since_tizen 2.3
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.4 @endif
*
* @param[in] vcard_file_path The person record handle
* @param[out] count The count of contact entity
#endif
-#endif //__TIZEN_SOCIAL_CONTACTS_VCARD_H__
+#endif /* __TIZEN_SOCIAL_CONTACTS_VCARD_H__ */
\ No newline at end of file
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( account_id ) // read, write once
- _CONTACTS_PROPERTY_STR( name ) // read, write
- _CONTACTS_PROPERTY_INT( mode ) // read, write
-_CONTACTS_END_VIEW( _contacts_address_book )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(account_id) /* read, write once */
+ _CONTACTS_PROPERTY_STR(name) /* read, write */
+ _CONTACTS_PROPERTY_INT(mode) /* read, write */
+_CONTACTS_END_VIEW(_contacts_address_book)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
*
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( address_book_id ) // read, write once
- _CONTACTS_PROPERTY_STR( name ) // read, write
- _CONTACTS_PROPERTY_STR( ringtone_path ) // read, write
- _CONTACTS_PROPERTY_STR( image_path ) // read, write
- _CONTACTS_PROPERTY_STR( vibration ) // read, write
- _CONTACTS_PROPERTY_STR( extra_data ) // read, write, string
- _CONTACTS_PROPERTY_BOOL( is_read_only ) // read, write once
- _CONTACTS_PROPERTY_STR( message_alert ) // read, write
-_CONTACTS_END_VIEW( _contacts_group )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(address_book_id) /* read, write once */
+ _CONTACTS_PROPERTY_STR(name) /* read, write */
+ _CONTACTS_PROPERTY_STR(ringtone_path) /* read, write */
+ _CONTACTS_PROPERTY_STR(image_path) /* read, write */
+ _CONTACTS_PROPERTY_STR(vibration) /* read, write */
+ _CONTACTS_PROPERTY_STR(extra_data) /* read, write, string */
+ _CONTACTS_PROPERTY_BOOL(is_read_only) /* read, write once */
+ _CONTACTS_PROPERTY_STR(message_alert) /* read, write */
+_CONTACTS_END_VIEW(_contacts_group)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_STR( display_name ) // read only
- _CONTACTS_PROPERTY_STR( display_name_index) // read only
- _CONTACTS_PROPERTY_INT( display_contact_id ) // read, write
- _CONTACTS_PROPERTY_STR( ringtone_path ) // read, write
- _CONTACTS_PROPERTY_STR( image_thumbnail_path ) // read only
- _CONTACTS_PROPERTY_STR( vibration ) // read, write
- _CONTACTS_PROPERTY_STR( status ) // read only
- _CONTACTS_PROPERTY_BOOL( is_favorite ) // read, write
- _CONTACTS_PROPERTY_DOUBLE( favorite_priority ) // sort only
- _CONTACTS_PROPERTY_INT( link_count ) // read only
- _CONTACTS_PROPERTY_STR( addressbook_ids ) // read only
- _CONTACTS_PROPERTY_BOOL( has_phonenumber ) // read only
- _CONTACTS_PROPERTY_BOOL( has_email ) // read only
- _CONTACTS_PROPERTY_STR( message_alert ) // read, write
-_CONTACTS_END_VIEW( _contacts_person )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_STR(display_name) /* read only */
+ _CONTACTS_PROPERTY_STR(display_name_index) /* read only */
+ _CONTACTS_PROPERTY_INT(display_contact_id) /* read, write */
+ _CONTACTS_PROPERTY_STR(ringtone_path) /* read, write */
+ _CONTACTS_PROPERTY_STR(image_thumbnail_path) /* read only */
+ _CONTACTS_PROPERTY_STR(vibration) /* read, write */
+ _CONTACTS_PROPERTY_STR(status) /* read only */
+ _CONTACTS_PROPERTY_BOOL(is_favorite) /* read, write */
+ _CONTACTS_PROPERTY_DOUBLE(favorite_priority) /* sort only */
+ _CONTACTS_PROPERTY_INT(link_count) /* read only */
+ _CONTACTS_PROPERTY_STR(addressbook_ids) /* read only */
+ _CONTACTS_PROPERTY_BOOL(has_phonenumber) /* read only */
+ _CONTACTS_PROPERTY_BOOL(has_email) /* read only */
+ _CONTACTS_PROPERTY_STR(message_alert) /* read, write */
+_CONTACTS_END_VIEW(_contacts_person)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
*
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_STR( display_name ) // read only
- _CONTACTS_PROPERTY_INT( display_source_type) // read only
- _CONTACTS_PROPERTY_INT( address_book_id ) // read only
- _CONTACTS_PROPERTY_STR( ringtone_path ) // read only
- _CONTACTS_PROPERTY_STR( image_thumbnail_path ) // read only
- _CONTACTS_PROPERTY_BOOL( is_favorite ) // read only
- _CONTACTS_PROPERTY_BOOL( has_phonenumber ) // read only
- _CONTACTS_PROPERTY_BOOL( has_email ) // read only
- _CONTACTS_PROPERTY_INT( person_id ) // read only
- _CONTACTS_PROPERTY_STR( uid ) // read only
- _CONTACTS_PROPERTY_STR( vibration ) // read only
- _CONTACTS_PROPERTY_INT( changed_time ) // read only
- _CONTACTS_PROPERTY_STR( message_alert ) // read only
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_simple_contact )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_STR(display_name) /* read only */
+ _CONTACTS_PROPERTY_INT(display_source_type) /* read only */
+ _CONTACTS_PROPERTY_INT(address_book_id) /* read only */
+ _CONTACTS_PROPERTY_STR(ringtone_path) /* read only */
+ _CONTACTS_PROPERTY_STR(image_thumbnail_path) /* read only */
+ _CONTACTS_PROPERTY_BOOL(is_favorite) /* read only */
+ _CONTACTS_PROPERTY_BOOL(has_phonenumber) /* read only */
+ _CONTACTS_PROPERTY_BOOL(has_email) /* read only */
+ _CONTACTS_PROPERTY_INT(person_id) /* read only */
+ _CONTACTS_PROPERTY_STR(uid) /* read only */
+ _CONTACTS_PROPERTY_STR(vibration) /* read only */
+ _CONTACTS_PROPERTY_INT(changed_time) /* read only */
+ _CONTACTS_PROPERTY_STR(message_alert) /* read only */
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_simple_contact)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_STR( display_name ) // read only
- _CONTACTS_PROPERTY_INT( display_source_type ) // read only
- _CONTACTS_PROPERTY_INT( address_book_id ) // read, write once
- _CONTACTS_PROPERTY_STR( ringtone_path ) // read, write
- _CONTACTS_PROPERTY_STR( image_thumbnail_path ) // read only
- _CONTACTS_PROPERTY_BOOL( is_favorite ) // read, write
- _CONTACTS_PROPERTY_BOOL( has_phonenumber ) // read only
- _CONTACTS_PROPERTY_BOOL( has_email ) // read only
- _CONTACTS_PROPERTY_INT( person_id ) // read, write once
- _CONTACTS_PROPERTY_STR( uid ) // read, write
- _CONTACTS_PROPERTY_STR( vibration ) // read, write
- _CONTACTS_PROPERTY_INT( changed_time ) // read only
- _CONTACTS_PROPERTY_INT( link_mode ) // read, write
- _CONTACTS_PROPERTY_CHILD_SINGLE( name ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( image ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( company ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( note ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( number ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( email ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( event ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( messenger ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( address ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( url ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( nickname ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( profile ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( relationship ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( group_relation ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( extension ) // read, write
- _CONTACTS_PROPERTY_STR( message_alert ) // read, write
-_CONTACTS_END_VIEW( _contacts_contact )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_STR(display_name) /* read only */
+ _CONTACTS_PROPERTY_INT(display_source_type) /* read only */
+ _CONTACTS_PROPERTY_INT(address_book_id) /* read, write once */
+ _CONTACTS_PROPERTY_STR(ringtone_path) /* read, write */
+ _CONTACTS_PROPERTY_STR(image_thumbnail_path) /* read only */
+ _CONTACTS_PROPERTY_BOOL(is_favorite) /* read, write */
+ _CONTACTS_PROPERTY_BOOL(has_phonenumber) /* read only */
+ _CONTACTS_PROPERTY_BOOL(has_email) /* read only */
+ _CONTACTS_PROPERTY_INT(person_id) /* read, write once */
+ _CONTACTS_PROPERTY_STR(uid) /* read, write */
+ _CONTACTS_PROPERTY_STR(vibration) /* read, write */
+ _CONTACTS_PROPERTY_INT(changed_time) /* read only */
+ _CONTACTS_PROPERTY_INT(link_mode) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_SINGLE(name) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(image) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(company) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(note) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(number) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(email) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(event) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(messenger) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(address) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(url) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(nickname) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(profile) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(relationship) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(group_relation) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(extension) /* read, write */
+ _CONTACTS_PROPERTY_STR(message_alert) /* read, write */
+_CONTACTS_END_VIEW(_contacts_contact)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_STR( display_name ) // read only
- _CONTACTS_PROPERTY_INT( address_book_id ) // read, write once
- _CONTACTS_PROPERTY_STR( image_thumbnail_path ) // read only
- _CONTACTS_PROPERTY_STR( uid ) // read, write
- _CONTACTS_PROPERTY_INT( changed_time ) // read only
- _CONTACTS_PROPERTY_CHILD_SINGLE( name ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( image ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( company ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( note ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( number ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( email ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( event ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( messenger ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( address ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( url ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( nickname ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( profile ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( relationship ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE( extension ) // read, write
-_CONTACTS_END_VIEW( _contacts_my_profile )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_STR(display_name) /* read only */
+ _CONTACTS_PROPERTY_INT(address_book_id) /* read, write once */
+ _CONTACTS_PROPERTY_STR(image_thumbnail_path) /* read only */
+ _CONTACTS_PROPERTY_STR(uid) /* read, write */
+ _CONTACTS_PROPERTY_INT(changed_time) /* read only */
+ _CONTACTS_PROPERTY_CHILD_SINGLE(name) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(image) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(company) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(note) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(number) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(email) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(event) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(messenger) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(address) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(url) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(nickname) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(profile) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(relationship) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(extension) /* read, write */
+_CONTACTS_END_VIEW(_contacts_my_profile)
/**
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( contact_id ) // read, write once
- _CONTACTS_PROPERTY_STR( first ) // read, write
- _CONTACTS_PROPERTY_STR( last ) // read, write
- _CONTACTS_PROPERTY_STR( addition ) // read, write
- _CONTACTS_PROPERTY_STR( suffix ) // read, write
- _CONTACTS_PROPERTY_STR( prefix ) // read, write
- _CONTACTS_PROPERTY_STR( phonetic_first ) // read, write
- _CONTACTS_PROPERTY_STR( phonetic_middle ) // read, write
- _CONTACTS_PROPERTY_STR( phonetic_last ) // read, write
-_CONTACTS_END_VIEW( _contacts_name )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(contact_id) /* read, write once */
+ _CONTACTS_PROPERTY_STR(first) /* read, write */
+ _CONTACTS_PROPERTY_STR(last) /* read, write */
+ _CONTACTS_PROPERTY_STR(addition) /* read, write */
+ _CONTACTS_PROPERTY_STR(suffix) /* read, write */
+ _CONTACTS_PROPERTY_STR(prefix) /* read, write */
+ _CONTACTS_PROPERTY_STR(phonetic_first) /* read, write */
+ _CONTACTS_PROPERTY_STR(phonetic_middle) /* read, write */
+ _CONTACTS_PROPERTY_STR(phonetic_last) /* read, write */
+_CONTACTS_END_VIEW(_contacts_name)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( contact_id ) // read, write once
- _CONTACTS_PROPERTY_INT( type ) // read, write
- _CONTACTS_PROPERTY_STR( label ) // read, write
- _CONTACTS_PROPERTY_BOOL( is_default ) // read, write
- _CONTACTS_PROPERTY_STR( number ) // read, write
- _CONTACTS_PROPERTY_STR( normalized_number ) // filter only
- _CONTACTS_PROPERTY_STR( cleaned_number ) // filter only
- _CONTACTS_PROPERTY_STR( number_filter ) // filter only
-_CONTACTS_END_VIEW( _contacts_number )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(contact_id) /* read, write once */
+ _CONTACTS_PROPERTY_INT(type) /* read, write */
+ _CONTACTS_PROPERTY_STR(label) /* read, write */
+ _CONTACTS_PROPERTY_BOOL(is_default) /* read, write */
+ _CONTACTS_PROPERTY_STR(number) /* read, write */
+ _CONTACTS_PROPERTY_STR(normalized_number) /* filter only */
+ _CONTACTS_PROPERTY_STR(cleaned_number) /* filter only */
+ _CONTACTS_PROPERTY_STR(number_filter) /* filter only */
+_CONTACTS_END_VIEW(_contacts_number)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( contact_id ) // read, write once
- _CONTACTS_PROPERTY_INT( type ) // read, write
- _CONTACTS_PROPERTY_STR( label ) // read, write
- _CONTACTS_PROPERTY_BOOL( is_default ) // read, write
- _CONTACTS_PROPERTY_STR( email ) // read, write
-_CONTACTS_END_VIEW( _contacts_email )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(contact_id) /* read, write once */
+ _CONTACTS_PROPERTY_INT(type) /* read, write */
+ _CONTACTS_PROPERTY_STR(label) /* read, write */
+ _CONTACTS_PROPERTY_BOOL(is_default) /* read, write */
+ _CONTACTS_PROPERTY_STR(email) /* read, write */
+_CONTACTS_END_VIEW(_contacts_email)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( contact_id ) // read, write once
- _CONTACTS_PROPERTY_INT( type ) // read, write
- _CONTACTS_PROPERTY_STR( label ) // read, write
- _CONTACTS_PROPERTY_STR( postbox ) // read, write
- _CONTACTS_PROPERTY_STR( extended ) // read, write
- _CONTACTS_PROPERTY_STR( street ) // read, write
- _CONTACTS_PROPERTY_STR( locality ) // read, write
- _CONTACTS_PROPERTY_STR( region ) // read, write
- _CONTACTS_PROPERTY_STR( postal_code ) // read, write
- _CONTACTS_PROPERTY_STR( country ) // read, write
- _CONTACTS_PROPERTY_BOOL( is_default ) // read, write
-_CONTACTS_END_VIEW( _contacts_address )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(contact_id) /* read, write once */
+ _CONTACTS_PROPERTY_INT(type) /* read, write */
+ _CONTACTS_PROPERTY_STR(label) /* read, write */
+ _CONTACTS_PROPERTY_STR(postbox) /* read, write */
+ _CONTACTS_PROPERTY_STR(extended) /* read, write */
+ _CONTACTS_PROPERTY_STR(street) /* read, write */
+ _CONTACTS_PROPERTY_STR(locality) /* read, write */
+ _CONTACTS_PROPERTY_STR(region) /* read, write */
+ _CONTACTS_PROPERTY_STR(postal_code) /* read, write */
+ _CONTACTS_PROPERTY_STR(country) /* read, write */
+ _CONTACTS_PROPERTY_BOOL(is_default) /* read, write */
+_CONTACTS_END_VIEW(_contacts_address)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( contact_id ) // read, write once
- _CONTACTS_PROPERTY_STR( note ) // read, write
-_CONTACTS_END_VIEW( _contacts_note )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(contact_id) /* read, write once */
+ _CONTACTS_PROPERTY_STR(note) /* read, write */
+_CONTACTS_END_VIEW(_contacts_note)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( contact_id ) // read, write once
- _CONTACTS_PROPERTY_INT( type ) // read, write
- _CONTACTS_PROPERTY_STR( label ) // read, write
- _CONTACTS_PROPERTY_STR( url ) // read, write
-_CONTACTS_END_VIEW( _contacts_url )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(contact_id) /* read, write once */
+ _CONTACTS_PROPERTY_INT(type) /* read, write */
+ _CONTACTS_PROPERTY_STR(label) /* read, write */
+ _CONTACTS_PROPERTY_STR(url) /* read, write */
+_CONTACTS_END_VIEW(_contacts_url)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* <tr><td>integer</td><td> contact_id </td><td>read, write once</td><td> Contact ID that the event belongs to </td></tr>
* <tr><td>integer</td><td> type </td><td>read, write</td><td> Event type, refer to the @ref contacts_event_type_e </td></tr>
* <tr><td>string</td><td> label </td><td>read, write</td><td> Custom event type label, when the event type is #CONTACTS_EVENT_TYPE_CUSTOM </td></tr>
- * <tr><td>integer</td><td> date </td><td>read, write</td><td> Event date(YYYYMMDD). e.g. 2014/1/1 : 20140101 </td></tr>
+ * <tr><td>integer</td><td> date </td><td>read, write</td><td> Event date(YYYYMMDD). e.g. 2014/1/1 : 20140101. If the calendar_type is set as CONTACTS_EVENT_CALENDAR_TYPE_CHINESE, you SHOULD convert this value to lunar date </td></tr>
* <tr><td>integer</td><td> calendar_type </td><td>read, write</td><td> Calendar type, refer to the @ref contacts_event_calendar_type_e </td></tr>
- * <tr><td>bool</td><td> is_leap_month </td><td>read, write</td><td> The month is leap or not (valid on lunisolar calendar only) </td></tr>
+ * <tr><td>bool</td><td> is_leap_month (Deprecated) </td><td>read, write</td><td> The month is leap or not (valid on lunisolar calendar only) </td></tr>
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( contact_id ) // read, write once
- _CONTACTS_PROPERTY_INT( type ) // read, write
- _CONTACTS_PROPERTY_STR( label ) // read, write
- _CONTACTS_PROPERTY_INT( date ) // read, write
- _CONTACTS_PROPERTY_INT( calendar_type ) // read, write
- _CONTACTS_PROPERTY_BOOL( is_leap_month ) // read, write
-_CONTACTS_END_VIEW( _contacts_event )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(contact_id) /* read, write once */
+ _CONTACTS_PROPERTY_INT(type) /* read, write */
+ _CONTACTS_PROPERTY_STR(label) /* read, write */
+ _CONTACTS_PROPERTY_INT(date) /* read, write */
+ _CONTACTS_PROPERTY_INT(calendar_type) /* read, write */
+ _CONTACTS_PROPERTY_BOOL(is_leap_month) /* read, write (Deprecated since 2.4) */
+_CONTACTS_END_VIEW(_contacts_event)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* <th>Description</th>
* </tr>
* <tr><td>string</td><td>_uri</td><td>read only</td><td> Identifier of this relationship view </td></tr>
- * <tr><td>integer</td><td> id </td><td>read only</td><td> DB record ID of the group (can not used as filter) </td></tr>
+ * <tr><td>integer</td><td> id </td><td>read only</td><td> DB record ID of the group (can not be used as filter) </td></tr>
* <tr><td>integer</td><td> group_id </td><td>read, write once</td><td> DB record ID of the group </td></tr>
* <tr><td>integer</td><td> contact_id </td><td>read, write once</td><td> DB record ID of the contact </td></tr>
* <tr><td>string</td><td> name </td><td>read only</td><td> Group name </td></tr>
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only, can not used as filter
- _CONTACTS_PROPERTY_INT( group_id ) // read, write once
- _CONTACTS_PROPERTY_INT( contact_id ) // read, write once
- _CONTACTS_PROPERTY_STR( name ) // read only
-_CONTACTS_END_VIEW( _contacts_group_relation )
+ _CONTACTS_PROPERTY_INT(id) /* read only, can not be used as filter */
+ _CONTACTS_PROPERTY_INT(group_id) /* read, write once */
+ _CONTACTS_PROPERTY_INT(contact_id) /* read, write once */
+ _CONTACTS_PROPERTY_STR(name) /* read only */
+_CONTACTS_END_VIEW(_contacts_group_relation)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
*
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( contact_id ) // read, write once
- _CONTACTS_PROPERTY_INT( type ) // read, write
- _CONTACTS_PROPERTY_STR( label ) // read, write
- _CONTACTS_PROPERTY_STR( name ) // read, write
-_CONTACTS_END_VIEW( _contacts_relationship )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(contact_id) /* read, write once */
+ _CONTACTS_PROPERTY_INT(type) /* read, write */
+ _CONTACTS_PROPERTY_STR(label) /* read, write */
+ _CONTACTS_PROPERTY_STR(name) /* read, write */
+_CONTACTS_END_VIEW(_contacts_relationship)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( contact_id ) // read, write once
- _CONTACTS_PROPERTY_INT( type ) // read, write
- _CONTACTS_PROPERTY_STR( label ) // read, write
- _CONTACTS_PROPERTY_STR( path ) // read, write
- _CONTACTS_PROPERTY_BOOL( is_default )
-_CONTACTS_END_VIEW( _contacts_image )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(contact_id) /* read, write once */
+ _CONTACTS_PROPERTY_INT(type) /* read, write */
+ _CONTACTS_PROPERTY_STR(label) /* read, write */
+ _CONTACTS_PROPERTY_STR(path) /* read, write */
+ _CONTACTS_PROPERTY_BOOL(is_default)
+_CONTACTS_END_VIEW(_contacts_image)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( contact_id ) // read, write once
- _CONTACTS_PROPERTY_INT( type ) // read, write
- _CONTACTS_PROPERTY_STR( label ) // read, write
- _CONTACTS_PROPERTY_STR( name ) // read, write
- _CONTACTS_PROPERTY_STR( department ) // read, write
- _CONTACTS_PROPERTY_STR( job_title ) // read, write
- _CONTACTS_PROPERTY_STR( assistant_name ) // read, write
- _CONTACTS_PROPERTY_STR( role ) // read, write
- _CONTACTS_PROPERTY_STR( logo ) // read, write
- _CONTACTS_PROPERTY_STR( location ) // read, write
- _CONTACTS_PROPERTY_STR( description ) // read, write
- _CONTACTS_PROPERTY_STR( phonetic_name ) // read, write
-_CONTACTS_END_VIEW( _contacts_company )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(contact_id) /* read, write once */
+ _CONTACTS_PROPERTY_INT(type) /* read, write */
+ _CONTACTS_PROPERTY_STR(label) /* read, write */
+ _CONTACTS_PROPERTY_STR(name) /* read, write */
+ _CONTACTS_PROPERTY_STR(department) /* read, write */
+ _CONTACTS_PROPERTY_STR(job_title) /* read, write */
+ _CONTACTS_PROPERTY_STR(assistant_name) /* read, write */
+ _CONTACTS_PROPERTY_STR(role) /* read, write */
+ _CONTACTS_PROPERTY_STR(logo) /* read, write */
+ _CONTACTS_PROPERTY_STR(location) /* read, write */
+ _CONTACTS_PROPERTY_STR(description) /* read, write */
+ _CONTACTS_PROPERTY_STR(phonetic_name) /* read, write */
+_CONTACTS_END_VIEW(_contacts_company)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* <tr><td>string</td><td>_uri</td><td>read only</td><td> Identifier of this contacts nickname view </td></tr>
* <tr><td>integer</td><td> id </td><td>read only</td><td> DB record ID of the nickname </td></tr>
* <tr><td>integer</td><td> contact_id </td><td>read, write once</td><td> Contact ID that the nickname belongs to </td></tr>
- * <tr><td>string</td><td> nickname </td><td>read, write</td><td> Nickname </td></tr>
+ * <tr><td>string</td><td> name </td><td>read, write</td><td> Nickname </td></tr>
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( contact_id ) // read, write once
- _CONTACTS_PROPERTY_STR( name ) // read, write
-_CONTACTS_END_VIEW( _contacts_nickname )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(contact_id) /* read, write once */
+ _CONTACTS_PROPERTY_STR(name) /* read, write */
+_CONTACTS_END_VIEW(_contacts_nickname)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( contact_id ) // read, write once
- _CONTACTS_PROPERTY_INT( type ) // read, write
- _CONTACTS_PROPERTY_STR( label ) // read, write
- _CONTACTS_PROPERTY_STR( im_id ) // read, write
-_CONTACTS_END_VIEW( _contacts_messenger )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(contact_id) /* read, write once */
+ _CONTACTS_PROPERTY_INT(type) /* read, write */
+ _CONTACTS_PROPERTY_STR(label) /* read, write */
+ _CONTACTS_PROPERTY_STR(im_id) /* read, write */
+_CONTACTS_END_VIEW(_contacts_messenger)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( contact_id ) // read, write once
- _CONTACTS_PROPERTY_INT( data1 ) // read, write
- _CONTACTS_PROPERTY_STR( data2 ) // read, write
- _CONTACTS_PROPERTY_STR( data3 ) // read, write
- _CONTACTS_PROPERTY_STR( data4 ) // read, write
- _CONTACTS_PROPERTY_STR( data5 ) // read, write
- _CONTACTS_PROPERTY_STR( data6 ) // read, write
- _CONTACTS_PROPERTY_STR( data7 ) // read, write
- _CONTACTS_PROPERTY_STR( data8 ) // read, write
- _CONTACTS_PROPERTY_STR( data9 ) // read, write
- _CONTACTS_PROPERTY_STR( data10 ) // read, write
- _CONTACTS_PROPERTY_STR( data11 ) // read, write
- _CONTACTS_PROPERTY_STR( data12 ) // read, write
-_CONTACTS_END_VIEW( _contacts_extension )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(contact_id) /* read, write once */
+ _CONTACTS_PROPERTY_INT(data1) /* read, write */
+ _CONTACTS_PROPERTY_STR(data2) /* read, write */
+ _CONTACTS_PROPERTY_STR(data3) /* read, write */
+ _CONTACTS_PROPERTY_STR(data4) /* read, write */
+ _CONTACTS_PROPERTY_STR(data5) /* read, write */
+ _CONTACTS_PROPERTY_STR(data6) /* read, write */
+ _CONTACTS_PROPERTY_STR(data7) /* read, write */
+ _CONTACTS_PROPERTY_STR(data8) /* read, write */
+ _CONTACTS_PROPERTY_STR(data9) /* read, write */
+ _CONTACTS_PROPERTY_STR(data10) /* read, write */
+ _CONTACTS_PROPERTY_STR(data11) /* read, write */
+ _CONTACTS_PROPERTY_STR(data12) /* read, write */
+_CONTACTS_END_VIEW(_contacts_extension)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_STR( name ) // read only
- _CONTACTS_PROPERTY_STR( number ) // read only
- _CONTACTS_PROPERTY_INT( sim_slot_no ) // read only
-_CONTACTS_END_VIEW( _contacts_sdn )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_STR(name) /* read only */
+ _CONTACTS_PROPERTY_STR(number) /* read only */
+ _CONTACTS_PROPERTY_INT(sim_slot_no) /* read only */
+_CONTACTS_END_VIEW(_contacts_sdn)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_STR( uid ) // read, write
- _CONTACTS_PROPERTY_STR( text ) // read, write
- _CONTACTS_PROPERTY_INT( order ) // read, write
- _CONTACTS_PROPERTY_STR( service_operation ) // read, write
- _CONTACTS_PROPERTY_STR( mime ) // read, write
- _CONTACTS_PROPERTY_STR( app_id ) // read, write
- _CONTACTS_PROPERTY_STR( uri ) // read, write
- _CONTACTS_PROPERTY_STR( category ) // read, write
- _CONTACTS_PROPERTY_STR( extra_data ) // read, write
- _CONTACTS_PROPERTY_INT( contact_id ) // read, write once
-_CONTACTS_END_VIEW( _contacts_profile )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_STR(uid) /* read, write */
+ _CONTACTS_PROPERTY_STR(text) /* read, write */
+ _CONTACTS_PROPERTY_INT(order) /* read, write */
+ _CONTACTS_PROPERTY_STR(service_operation) /* read, write */
+ _CONTACTS_PROPERTY_STR(mime) /* read, write */
+ _CONTACTS_PROPERTY_STR(app_id) /* read, write */
+ _CONTACTS_PROPERTY_STR(uri) /* read, write */
+ _CONTACTS_PROPERTY_STR(category) /* read, write */
+ _CONTACTS_PROPERTY_STR(extra_data) /* read, write */
+ _CONTACTS_PROPERTY_INT(contact_id) /* read, write once */
+_CONTACTS_END_VIEW(_contacts_profile)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( activity_id ) // read, write once
- _CONTACTS_PROPERTY_STR( photo_url ) // read, write
- _CONTACTS_PROPERTY_INT( sort_index ) // read, write
-_CONTACTS_END_VIEW( _contacts_activity_photo )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(activity_id) /* read, write once */
+ _CONTACTS_PROPERTY_STR(photo_url) /* read, write */
+ _CONTACTS_PROPERTY_INT(sort_index) /* read, write */
+_CONTACTS_END_VIEW(_contacts_activity_photo)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( contact_id ) // read, write once
- _CONTACTS_PROPERTY_STR( source_name ) // read, write
- _CONTACTS_PROPERTY_STR( status ) // read, write
- _CONTACTS_PROPERTY_INT( timestamp ) // read, write
- _CONTACTS_PROPERTY_STR( service_operation ) // read, write
- _CONTACTS_PROPERTY_STR( uri ) // read, write
- _CONTACTS_PROPERTY_CHILD_MULTIPLE(photo) // read, write
-_CONTACTS_END_VIEW( _contacts_activity )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(contact_id) /* read, write once */
+ _CONTACTS_PROPERTY_STR(source_name) /* read, write */
+ _CONTACTS_PROPERTY_STR(status) /* read, write */
+ _CONTACTS_PROPERTY_INT(timestamp) /* read, write */
+ _CONTACTS_PROPERTY_STR(service_operation) /* read, write */
+ _CONTACTS_PROPERTY_STR(uri) /* read, write */
+ _CONTACTS_PROPERTY_CHILD_MULTIPLE(photo) /* read, write */
+_CONTACTS_END_VIEW(_contacts_activity)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( speeddial_number ) // read, write once
- _CONTACTS_PROPERTY_INT( number_id ) // read, write
- _CONTACTS_PROPERTY_STR( number ) // read only
- _CONTACTS_PROPERTY_STR( number_label ) // read only
- _CONTACTS_PROPERTY_INT( number_type ) // read only
- _CONTACTS_PROPERTY_INT( person_id ) // read only
- _CONTACTS_PROPERTY_STR( display_name ) // read only
- _CONTACTS_PROPERTY_STR( image_thumbnail_path ) // read only
- _CONTACTS_PROPERTY_STR( normalized_number) // filter only
- _CONTACTS_PROPERTY_STR( cleaned_number) // filter only
- _CONTACTS_PROPERTY_STR( number_filter) // filter only
-_CONTACTS_END_VIEW( _contacts_speeddial )
+ _CONTACTS_PROPERTY_INT(speeddial_number) /* read, write once */
+ _CONTACTS_PROPERTY_INT(number_id) /* read, write */
+ _CONTACTS_PROPERTY_STR(number) /* read only */
+ _CONTACTS_PROPERTY_STR(number_label) /* read only */
+ _CONTACTS_PROPERTY_INT(number_type) /* read only */
+ _CONTACTS_PROPERTY_INT(person_id) /* read only */
+ _CONTACTS_PROPERTY_STR(display_name) /* read only */
+ _CONTACTS_PROPERTY_STR(image_thumbnail_path) /* read only */
+ _CONTACTS_PROPERTY_STR(normalized_number) /* filter only */
+ _CONTACTS_PROPERTY_STR(cleaned_number) /* filter only */
+ _CONTACTS_PROPERTY_STR(number_filter) /* filter only */
+_CONTACTS_END_VIEW(_contacts_speeddial)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_VIEW()
- _CONTACTS_PROPERTY_INT( id ) // read only
- _CONTACTS_PROPERTY_INT( person_id ) // read, write once
- _CONTACTS_PROPERTY_STR( address ) // read, write once, number or email
- _CONTACTS_PROPERTY_INT( log_time ) // read, write once
- _CONTACTS_PROPERTY_INT( log_type ) // read, write
- _CONTACTS_PROPERTY_INT( extra_data1 ) // read, write once : message or email ID, duration(seconds)
- _CONTACTS_PROPERTY_STR( extra_data2 ) // read, write once : shortmsg, subject
- _CONTACTS_PROPERTY_STR( normalized_address ) // filter only
- _CONTACTS_PROPERTY_STR( cleaned_address ) // filter only
- _CONTACTS_PROPERTY_STR( address_filter ) // filter only
- _CONTACTS_PROPERTY_INT( sim_slot_no ) // read, write once
-_CONTACTS_END_VIEW( _contacts_phone_log )
+ _CONTACTS_PROPERTY_INT(id) /* read only */
+ _CONTACTS_PROPERTY_INT(person_id) /* read, write once */
+ _CONTACTS_PROPERTY_STR(address) /* read, write once, number or email */
+ _CONTACTS_PROPERTY_INT(log_time) /* read, write once */
+ _CONTACTS_PROPERTY_INT(log_type) /* read, write */
+ _CONTACTS_PROPERTY_INT(extra_data1) /* read, write once : message or email ID, duration(seconds) */
+ _CONTACTS_PROPERTY_STR(extra_data2) /* read, write once : shortmsg, subject */
+ _CONTACTS_PROPERTY_STR(normalized_address) /* filter only */
+ _CONTACTS_PROPERTY_STR(cleaned_address) /* filter only */
+ _CONTACTS_PROPERTY_STR(address_filter) /* filter only */
+ _CONTACTS_PROPERTY_INT(sim_slot_no) /* read, write once */
+_CONTACTS_END_VIEW(_contacts_phone_log)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( contact_id )
- _CONTACTS_PROPERTY_INT( address_book_id )
- _CONTACTS_PROPERTY_INT( type ) // insert/update/delete
- _CONTACTS_PROPERTY_INT( version )
- _CONTACTS_PROPERTY_BOOL( image_changed )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_contact_updated_info )
+ _CONTACTS_PROPERTY_INT(contact_id)
+ _CONTACTS_PROPERTY_INT(address_book_id)
+ _CONTACTS_PROPERTY_INT(type) /* insert/update/delete */
+ _CONTACTS_PROPERTY_INT(version)
+ _CONTACTS_PROPERTY_BOOL(image_changed)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_contact_updated_info)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( address_book_id )
- _CONTACTS_PROPERTY_INT( last_changed_type )
- _CONTACTS_PROPERTY_INT( version )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_my_profile_updated_info )
+ _CONTACTS_PROPERTY_INT(address_book_id)
+ _CONTACTS_PROPERTY_INT(last_changed_type)
+ _CONTACTS_PROPERTY_INT(version)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_my_profile_updated_info)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( group_id )
- _CONTACTS_PROPERTY_INT( address_book_id )
- _CONTACTS_PROPERTY_INT( type ) // insert/update/delete
- _CONTACTS_PROPERTY_INT( version )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_group_updated_info )
+ _CONTACTS_PROPERTY_INT(group_id)
+ _CONTACTS_PROPERTY_INT(address_book_id)
+ _CONTACTS_PROPERTY_INT(type) /* insert/update/delete */
+ _CONTACTS_PROPERTY_INT(version)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_group_updated_info)
/**
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( group_id )
- _CONTACTS_PROPERTY_INT( address_book_id )
- _CONTACTS_PROPERTY_INT( version )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_group_member_updated_info )
+ _CONTACTS_PROPERTY_INT(group_id)
+ _CONTACTS_PROPERTY_INT(address_book_id)
+ _CONTACTS_PROPERTY_INT(version)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_group_member_updated_info)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( group_id )
- _CONTACTS_PROPERTY_INT( contact_id )
- _CONTACTS_PROPERTY_INT( address_book_id )
- _CONTACTS_PROPERTY_INT( type ) // insert/delete
- _CONTACTS_PROPERTY_INT( version )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_grouprel_updated_info )
+ _CONTACTS_PROPERTY_INT(group_id)
+ _CONTACTS_PROPERTY_INT(contact_id)
+ _CONTACTS_PROPERTY_INT(address_book_id)
+ _CONTACTS_PROPERTY_INT(type) /* insert/delete */
+ _CONTACTS_PROPERTY_INT(version)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_grouprel_updated_info)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( person_id )
- _CONTACTS_PROPERTY_STR( display_name )
- _CONTACTS_PROPERTY_PROJECTION_STR( display_name_index)
- _CONTACTS_PROPERTY_PROJECTION_INT( display_contact_id )
- _CONTACTS_PROPERTY_PROJECTION_STR( ringtone_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( image_thumbnail_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( vibration )
- _CONTACTS_PROPERTY_PROJECTION_STR( status )
- _CONTACTS_PROPERTY_BOOL( is_favorite )
- _CONTACTS_PROPERTY_PROJECTION_INT( link_count )
- _CONTACTS_PROPERTY_PROJECTION_STR( addressbook_ids )
- _CONTACTS_PROPERTY_BOOL( has_phonenumber )
- _CONTACTS_PROPERTY_BOOL( has_email )
- _CONTACTS_PROPERTY_INT( contact_id )
- _CONTACTS_PROPERTY_INT( address_book_id )
- _CONTACTS_PROPERTY_STR( address_book_name )
- _CONTACTS_PROPERTY_INT( address_book_mode )
- _CONTACTS_PROPERTY_PROJECTION_STR( message_alert )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_person_contact )
+ _CONTACTS_PROPERTY_INT(person_id)
+ _CONTACTS_PROPERTY_STR(display_name)
+ _CONTACTS_PROPERTY_PROJECTION_STR(display_name_index)
+ _CONTACTS_PROPERTY_PROJECTION_INT(display_contact_id)
+ _CONTACTS_PROPERTY_PROJECTION_STR(ringtone_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(image_thumbnail_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(vibration)
+ _CONTACTS_PROPERTY_PROJECTION_STR(status)
+ _CONTACTS_PROPERTY_BOOL(is_favorite)
+ _CONTACTS_PROPERTY_PROJECTION_INT(link_count)
+ _CONTACTS_PROPERTY_PROJECTION_STR(addressbook_ids)
+ _CONTACTS_PROPERTY_BOOL(has_phonenumber)
+ _CONTACTS_PROPERTY_BOOL(has_email)
+ _CONTACTS_PROPERTY_INT(contact_id)
+ _CONTACTS_PROPERTY_INT(address_book_id)
+ _CONTACTS_PROPERTY_STR(address_book_name)
+ _CONTACTS_PROPERTY_INT(address_book_mode)
+ _CONTACTS_PROPERTY_PROJECTION_STR(message_alert)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_person_contact)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( person_id )
- _CONTACTS_PROPERTY_STR( display_name )
- _CONTACTS_PROPERTY_PROJECTION_STR( display_name_index)
- _CONTACTS_PROPERTY_PROJECTION_INT( display_contact_id )
- _CONTACTS_PROPERTY_PROJECTION_STR( ringtone_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( image_thumbnail_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( vibration )
- _CONTACTS_PROPERTY_BOOL( is_favorite )
- _CONTACTS_PROPERTY_BOOL( has_phonenumber )
- _CONTACTS_PROPERTY_BOOL( has_email )
- _CONTACTS_PROPERTY_INT( number_id )
- _CONTACTS_PROPERTY_PROJECTION_INT( type )
- _CONTACTS_PROPERTY_PROJECTION_STR( label )
- _CONTACTS_PROPERTY_BOOL( is_primary_default )
- _CONTACTS_PROPERTY_STR( number )
- _CONTACTS_PROPERTY_FILTER_STR( number_filter )
- _CONTACTS_PROPERTY_FILTER_STR( normalized_number )
- _CONTACTS_PROPERTY_PROJECTION_STR( message_alert )
- _CONTACTS_PROPERTY_FILTER_STR( cleaned_number )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_person_number )
+ _CONTACTS_PROPERTY_INT(person_id)
+ _CONTACTS_PROPERTY_STR(display_name)
+ _CONTACTS_PROPERTY_PROJECTION_STR(display_name_index)
+ _CONTACTS_PROPERTY_PROJECTION_INT(display_contact_id)
+ _CONTACTS_PROPERTY_PROJECTION_STR(ringtone_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(image_thumbnail_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(vibration)
+ _CONTACTS_PROPERTY_BOOL(is_favorite)
+ _CONTACTS_PROPERTY_BOOL(has_phonenumber)
+ _CONTACTS_PROPERTY_BOOL(has_email)
+ _CONTACTS_PROPERTY_INT(number_id)
+ _CONTACTS_PROPERTY_PROJECTION_INT(type)
+ _CONTACTS_PROPERTY_PROJECTION_STR(label)
+ _CONTACTS_PROPERTY_BOOL(is_primary_default)
+ _CONTACTS_PROPERTY_STR(number)
+ _CONTACTS_PROPERTY_FILTER_STR(number_filter)
+ _CONTACTS_PROPERTY_FILTER_STR(normalized_number)
+ _CONTACTS_PROPERTY_PROJECTION_STR(message_alert)
+ _CONTACTS_PROPERTY_FILTER_STR(cleaned_number)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_person_number)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( person_id )
- _CONTACTS_PROPERTY_STR( display_name )
- _CONTACTS_PROPERTY_PROJECTION_STR( display_name_index)
- _CONTACTS_PROPERTY_PROJECTION_INT( display_contact_id )
- _CONTACTS_PROPERTY_PROJECTION_STR( ringtone_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( image_thumbnail_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( vibration )
- _CONTACTS_PROPERTY_BOOL( is_favorite )
- _CONTACTS_PROPERTY_BOOL( has_phonenumber )
- _CONTACTS_PROPERTY_BOOL( has_email )
- _CONTACTS_PROPERTY_INT( email_id )
- _CONTACTS_PROPERTY_PROJECTION_INT( type )
- _CONTACTS_PROPERTY_PROJECTION_STR( label )
- _CONTACTS_PROPERTY_BOOL( is_primary_default )
- _CONTACTS_PROPERTY_STR( email )
- _CONTACTS_PROPERTY_PROJECTION_STR( message_alert )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_person_email )
+ _CONTACTS_PROPERTY_INT(person_id)
+ _CONTACTS_PROPERTY_STR(display_name)
+ _CONTACTS_PROPERTY_PROJECTION_STR(display_name_index)
+ _CONTACTS_PROPERTY_PROJECTION_INT(display_contact_id)
+ _CONTACTS_PROPERTY_PROJECTION_STR(ringtone_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(image_thumbnail_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(vibration)
+ _CONTACTS_PROPERTY_BOOL(is_favorite)
+ _CONTACTS_PROPERTY_BOOL(has_phonenumber)
+ _CONTACTS_PROPERTY_BOOL(has_email)
+ _CONTACTS_PROPERTY_INT(email_id)
+ _CONTACTS_PROPERTY_PROJECTION_INT(type)
+ _CONTACTS_PROPERTY_PROJECTION_STR(label)
+ _CONTACTS_PROPERTY_BOOL(is_primary_default)
+ _CONTACTS_PROPERTY_STR(email)
+ _CONTACTS_PROPERTY_PROJECTION_STR(message_alert)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_person_email)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( person_id )
- _CONTACTS_PROPERTY_STR( display_name )
- _CONTACTS_PROPERTY_PROJECTION_STR( display_name_index)
- _CONTACTS_PROPERTY_PROJECTION_INT( display_contact_id )
- _CONTACTS_PROPERTY_PROJECTION_STR( ringtone_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( image_thumbnail_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( vibration )
- _CONTACTS_PROPERTY_PROJECTION_STR( status )
- _CONTACTS_PROPERTY_BOOL( is_favorite )
- _CONTACTS_PROPERTY_PROJECTION_INT( link_count )
- _CONTACTS_PROPERTY_PROJECTION_STR( addressbook_ids )
- _CONTACTS_PROPERTY_BOOL( has_phonenumber )
- _CONTACTS_PROPERTY_BOOL( has_email )
- _CONTACTS_PROPERTY_INT( address_book_id )
- _CONTACTS_PROPERTY_INT( group_id )
- _CONTACTS_PROPERTY_STR( address_book_name )
- _CONTACTS_PROPERTY_INT( address_book_mode )
- _CONTACTS_PROPERTY_PROJECTION_INT( contact_id )
- _CONTACTS_PROPERTY_PROJECTION_STR( message_alert )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_person_grouprel )
+ _CONTACTS_PROPERTY_INT(person_id)
+ _CONTACTS_PROPERTY_STR(display_name)
+ _CONTACTS_PROPERTY_PROJECTION_STR(display_name_index)
+ _CONTACTS_PROPERTY_PROJECTION_INT(display_contact_id)
+ _CONTACTS_PROPERTY_PROJECTION_STR(ringtone_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(image_thumbnail_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(vibration)
+ _CONTACTS_PROPERTY_PROJECTION_STR(status)
+ _CONTACTS_PROPERTY_BOOL(is_favorite)
+ _CONTACTS_PROPERTY_PROJECTION_INT(link_count)
+ _CONTACTS_PROPERTY_PROJECTION_STR(addressbook_ids)
+ _CONTACTS_PROPERTY_BOOL(has_phonenumber)
+ _CONTACTS_PROPERTY_BOOL(has_email)
+ _CONTACTS_PROPERTY_INT(address_book_id)
+ _CONTACTS_PROPERTY_INT(group_id)
+ _CONTACTS_PROPERTY_STR(address_book_name)
+ _CONTACTS_PROPERTY_INT(address_book_mode)
+ _CONTACTS_PROPERTY_PROJECTION_INT(contact_id)
+ _CONTACTS_PROPERTY_PROJECTION_STR(message_alert)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_person_grouprel)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( person_id )
- _CONTACTS_PROPERTY_STR( display_name )
- _CONTACTS_PROPERTY_PROJECTION_STR( display_name_index)
- _CONTACTS_PROPERTY_PROJECTION_INT( display_contact_id )
- _CONTACTS_PROPERTY_PROJECTION_STR( ringtone_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( image_thumbnail_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( vibration )
- _CONTACTS_PROPERTY_PROJECTION_STR( status )
- _CONTACTS_PROPERTY_BOOL( is_favorite )
- _CONTACTS_PROPERTY_PROJECTION_INT( link_count )
- _CONTACTS_PROPERTY_PROJECTION_STR( linked_address_book_ids )
- _CONTACTS_PROPERTY_BOOL( has_phonenumber )
- _CONTACTS_PROPERTY_BOOL( has_email )
- _CONTACTS_PROPERTY_INT( address_book_id )
- _CONTACTS_PROPERTY_INT( group_id )
- _CONTACTS_PROPERTY_INT( address_book_mode )
- _CONTACTS_PROPERTY_PROJECTION_INT( contact_id )
- _CONTACTS_PROPERTY_PROJECTION_STR( message_alert )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_person_group_assigned )
+ _CONTACTS_PROPERTY_INT(person_id)
+ _CONTACTS_PROPERTY_STR(display_name)
+ _CONTACTS_PROPERTY_PROJECTION_STR(display_name_index)
+ _CONTACTS_PROPERTY_PROJECTION_INT(display_contact_id)
+ _CONTACTS_PROPERTY_PROJECTION_STR(ringtone_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(image_thumbnail_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(vibration)
+ _CONTACTS_PROPERTY_PROJECTION_STR(status)
+ _CONTACTS_PROPERTY_BOOL(is_favorite)
+ _CONTACTS_PROPERTY_PROJECTION_INT(link_count)
+ _CONTACTS_PROPERTY_PROJECTION_STR(linked_address_book_ids)
+ _CONTACTS_PROPERTY_BOOL(has_phonenumber)
+ _CONTACTS_PROPERTY_BOOL(has_email)
+ _CONTACTS_PROPERTY_INT(address_book_id)
+ _CONTACTS_PROPERTY_INT(group_id)
+ _CONTACTS_PROPERTY_INT(address_book_mode)
+ _CONTACTS_PROPERTY_PROJECTION_INT(contact_id)
+ _CONTACTS_PROPERTY_PROJECTION_STR(message_alert)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_person_group_assigned)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( person_id )
- _CONTACTS_PROPERTY_STR( display_name )
- _CONTACTS_PROPERTY_PROJECTION_STR( display_name_index)
- _CONTACTS_PROPERTY_PROJECTION_INT( display_contact_id )
- _CONTACTS_PROPERTY_PROJECTION_STR( ringtone_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( image_thumbnail_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( vibration )
- _CONTACTS_PROPERTY_PROJECTION_STR( status )
- _CONTACTS_PROPERTY_BOOL( is_favorite )
- _CONTACTS_PROPERTY_PROJECTION_INT( link_count )
- _CONTACTS_PROPERTY_PROJECTION_STR( linked_address_book_ids )
- _CONTACTS_PROPERTY_BOOL( has_phonenumber )
- _CONTACTS_PROPERTY_BOOL( has_email )
- _CONTACTS_PROPERTY_INT( address_book_id )
- _CONTACTS_PROPERTY_INT( address_book_mode )
- _CONTACTS_PROPERTY_PROJECTION_INT( contact_id )
- _CONTACTS_PROPERTY_PROJECTION_STR( message_alert )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_person_group_not_assigned )
+ _CONTACTS_PROPERTY_INT(person_id)
+ _CONTACTS_PROPERTY_STR(display_name)
+ _CONTACTS_PROPERTY_PROJECTION_STR(display_name_index)
+ _CONTACTS_PROPERTY_PROJECTION_INT(display_contact_id)
+ _CONTACTS_PROPERTY_PROJECTION_STR(ringtone_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(image_thumbnail_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(vibration)
+ _CONTACTS_PROPERTY_PROJECTION_STR(status)
+ _CONTACTS_PROPERTY_BOOL(is_favorite)
+ _CONTACTS_PROPERTY_PROJECTION_INT(link_count)
+ _CONTACTS_PROPERTY_PROJECTION_STR(linked_address_book_ids)
+ _CONTACTS_PROPERTY_BOOL(has_phonenumber)
+ _CONTACTS_PROPERTY_BOOL(has_email)
+ _CONTACTS_PROPERTY_INT(address_book_id)
+ _CONTACTS_PROPERTY_INT(address_book_mode)
+ _CONTACTS_PROPERTY_PROJECTION_INT(contact_id)
+ _CONTACTS_PROPERTY_PROJECTION_STR(message_alert)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_person_group_not_assigned)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( person_id )
- _CONTACTS_PROPERTY_STR( display_name )
- _CONTACTS_PROPERTY_PROJECTION_STR( image_thumbnail_path )
- _CONTACTS_PROPERTY_INT( log_id )
- _CONTACTS_PROPERTY_STR( address )
- _CONTACTS_PROPERTY_PROJECTION_INT( address_type )
- _CONTACTS_PROPERTY_INT( log_time )
- _CONTACTS_PROPERTY_INT( log_type )
- _CONTACTS_PROPERTY_PROJECTION_INT( extra_data1 )
- _CONTACTS_PROPERTY_PROJECTION_STR( extra_data2 )
- _CONTACTS_PROPERTY_FILTER_STR( normalized_address)
- _CONTACTS_PROPERTY_FILTER_STR( cleaned_address)
- _CONTACTS_PROPERTY_FILTER_STR( address_filter)
- _CONTACTS_PROPERTY_INT( sim_slot_no )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_person_phone_log )
+ _CONTACTS_PROPERTY_INT(person_id)
+ _CONTACTS_PROPERTY_STR(display_name)
+ _CONTACTS_PROPERTY_PROJECTION_STR(image_thumbnail_path)
+ _CONTACTS_PROPERTY_INT(log_id)
+ _CONTACTS_PROPERTY_STR(address)
+ _CONTACTS_PROPERTY_PROJECTION_INT(address_type)
+ _CONTACTS_PROPERTY_INT(log_time)
+ _CONTACTS_PROPERTY_INT(log_type)
+ _CONTACTS_PROPERTY_PROJECTION_INT(extra_data1)
+ _CONTACTS_PROPERTY_PROJECTION_STR(extra_data2)
+ _CONTACTS_PROPERTY_FILTER_STR(normalized_address)
+ _CONTACTS_PROPERTY_FILTER_STR(cleaned_address)
+ _CONTACTS_PROPERTY_FILTER_STR(address_filter)
+ _CONTACTS_PROPERTY_INT(sim_slot_no)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_person_phone_log)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( person_id )
- _CONTACTS_PROPERTY_STR( display_name )
- _CONTACTS_PROPERTY_PROJECTION_STR( display_name_index)
- _CONTACTS_PROPERTY_PROJECTION_INT( display_contact_id )
- _CONTACTS_PROPERTY_PROJECTION_STR( ringtone_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( image_thumbnail_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( vibration )
- _CONTACTS_PROPERTY_BOOL( is_favorite )
- _CONTACTS_PROPERTY_BOOL( has_phonenumber )
- _CONTACTS_PROPERTY_BOOL( has_email )
- _CONTACTS_PROPERTY_INT( usage_type )
- _CONTACTS_PROPERTY_INT( times_used )
- _CONTACTS_PROPERTY_PROJECTION_STR( message_alert )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_person_usage )
+ _CONTACTS_PROPERTY_INT(person_id)
+ _CONTACTS_PROPERTY_STR(display_name)
+ _CONTACTS_PROPERTY_PROJECTION_STR(display_name_index)
+ _CONTACTS_PROPERTY_PROJECTION_INT(display_contact_id)
+ _CONTACTS_PROPERTY_PROJECTION_STR(ringtone_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(image_thumbnail_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(vibration)
+ _CONTACTS_PROPERTY_BOOL(is_favorite)
+ _CONTACTS_PROPERTY_BOOL(has_phonenumber)
+ _CONTACTS_PROPERTY_BOOL(has_email)
+ _CONTACTS_PROPERTY_INT(usage_type)
+ _CONTACTS_PROPERTY_INT(times_used)
+ _CONTACTS_PROPERTY_PROJECTION_STR(message_alert)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_person_usage)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( contact_id )
- _CONTACTS_PROPERTY_STR( display_name )
- _CONTACTS_PROPERTY_PROJECTION_INT( display_source_type)
- _CONTACTS_PROPERTY_INT( address_book_id )
- _CONTACTS_PROPERTY_INT( person_id )
- _CONTACTS_PROPERTY_PROJECTION_STR( ringtone_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( image_thumbnail_path )
- _CONTACTS_PROPERTY_INT( number_id )
- _CONTACTS_PROPERTY_PROJECTION_INT( type )
- _CONTACTS_PROPERTY_PROJECTION_STR( label )
- _CONTACTS_PROPERTY_BOOL( is_default )
- _CONTACTS_PROPERTY_STR( number )
- _CONTACTS_PROPERTY_FILTER_STR( number_filter )
- _CONTACTS_PROPERTY_FILTER_STR( normalized_number )
- _CONTACTS_PROPERTY_FILTER_STR( cleaned_number )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_contact_number )
+ _CONTACTS_PROPERTY_INT(contact_id)
+ _CONTACTS_PROPERTY_STR(display_name)
+ _CONTACTS_PROPERTY_PROJECTION_INT(display_source_type)
+ _CONTACTS_PROPERTY_INT(address_book_id)
+ _CONTACTS_PROPERTY_INT(person_id)
+ _CONTACTS_PROPERTY_PROJECTION_STR(ringtone_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(image_thumbnail_path)
+ _CONTACTS_PROPERTY_INT(number_id)
+ _CONTACTS_PROPERTY_PROJECTION_INT(type)
+ _CONTACTS_PROPERTY_PROJECTION_STR(label)
+ _CONTACTS_PROPERTY_BOOL(is_default)
+ _CONTACTS_PROPERTY_STR(number)
+ _CONTACTS_PROPERTY_FILTER_STR(number_filter)
+ _CONTACTS_PROPERTY_FILTER_STR(normalized_number)
+ _CONTACTS_PROPERTY_FILTER_STR(cleaned_number)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_contact_number)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( contact_id )
- _CONTACTS_PROPERTY_STR( display_name )
- _CONTACTS_PROPERTY_PROJECTION_INT( display_source_type)
- _CONTACTS_PROPERTY_INT( address_book_id )
- _CONTACTS_PROPERTY_INT( person_id )
- _CONTACTS_PROPERTY_PROJECTION_STR( ringtone_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( image_thumbnail_path )
- _CONTACTS_PROPERTY_INT( email_id )
- _CONTACTS_PROPERTY_PROJECTION_INT( type )
- _CONTACTS_PROPERTY_PROJECTION_STR( label )
- _CONTACTS_PROPERTY_BOOL( is_default )
- _CONTACTS_PROPERTY_STR( email )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_contact_email )
+ _CONTACTS_PROPERTY_INT(contact_id)
+ _CONTACTS_PROPERTY_STR(display_name)
+ _CONTACTS_PROPERTY_PROJECTION_INT(display_source_type)
+ _CONTACTS_PROPERTY_INT(address_book_id)
+ _CONTACTS_PROPERTY_INT(person_id)
+ _CONTACTS_PROPERTY_PROJECTION_STR(ringtone_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(image_thumbnail_path)
+ _CONTACTS_PROPERTY_INT(email_id)
+ _CONTACTS_PROPERTY_PROJECTION_INT(type)
+ _CONTACTS_PROPERTY_PROJECTION_STR(label)
+ _CONTACTS_PROPERTY_BOOL(is_default)
+ _CONTACTS_PROPERTY_STR(email)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_contact_email)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( contact_id )
- _CONTACTS_PROPERTY_STR( display_name )
- _CONTACTS_PROPERTY_PROJECTION_INT( display_source_type)
- _CONTACTS_PROPERTY_INT( address_book_id )
- _CONTACTS_PROPERTY_INT( person_id )
- _CONTACTS_PROPERTY_PROJECTION_STR( ringtone_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( image_thumbnail_path )
- _CONTACTS_PROPERTY_INT( group_id )
- _CONTACTS_PROPERTY_PROJECTION_STR( group_name )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_contact_grouprel )
+ _CONTACTS_PROPERTY_INT(contact_id)
+ _CONTACTS_PROPERTY_STR(display_name)
+ _CONTACTS_PROPERTY_PROJECTION_INT(display_source_type)
+ _CONTACTS_PROPERTY_INT(address_book_id)
+ _CONTACTS_PROPERTY_INT(person_id)
+ _CONTACTS_PROPERTY_PROJECTION_STR(ringtone_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(image_thumbnail_path)
+ _CONTACTS_PROPERTY_INT(group_id)
+ _CONTACTS_PROPERTY_PROJECTION_STR(group_name)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_contact_grouprel)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_INT( contact_id )
- _CONTACTS_PROPERTY_STR( display_name )
- _CONTACTS_PROPERTY_PROJECTION_INT( display_source_type)
- _CONTACTS_PROPERTY_INT( address_book_id )
- _CONTACTS_PROPERTY_INT( account_id )
- _CONTACTS_PROPERTY_INT( person_id )
- _CONTACTS_PROPERTY_PROJECTION_STR( ringtone_path )
- _CONTACTS_PROPERTY_PROJECTION_STR( image_thumbnail_path )
- _CONTACTS_PROPERTY_INT( activity_id )
- _CONTACTS_PROPERTY_STR( source_name )
- _CONTACTS_PROPERTY_PROJECTION_STR( status )
- _CONTACTS_PROPERTY_INT( timestamp )
- _CONTACTS_PROPERTY_STR( service_operation )
- _CONTACTS_PROPERTY_STR( uri )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_contact_activity )
+ _CONTACTS_PROPERTY_INT(contact_id)
+ _CONTACTS_PROPERTY_STR(display_name)
+ _CONTACTS_PROPERTY_PROJECTION_INT(display_source_type)
+ _CONTACTS_PROPERTY_INT(address_book_id)
+ _CONTACTS_PROPERTY_INT(account_id)
+ _CONTACTS_PROPERTY_INT(person_id)
+ _CONTACTS_PROPERTY_PROJECTION_STR(ringtone_path)
+ _CONTACTS_PROPERTY_PROJECTION_STR(image_thumbnail_path)
+ _CONTACTS_PROPERTY_INT(activity_id)
+ _CONTACTS_PROPERTY_STR(source_name)
+ _CONTACTS_PROPERTY_PROJECTION_STR(status)
+ _CONTACTS_PROPERTY_INT(timestamp)
+ _CONTACTS_PROPERTY_STR(service_operation)
+ _CONTACTS_PROPERTY_STR(uri)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_contact_activity)
/**
* @addtogroup CAPI_SOCIAL_CONTACTS_SVC_VIEW_MODULE View/Property
* </table>
*/
_CONTACTS_BEGIN_READ_ONLY_VIEW()
- _CONTACTS_PROPERTY_PROJECTION_INT( log_count )
- _CONTACTS_PROPERTY_INT( log_type )
-_CONTACTS_END_READ_ONLY_VIEW( _contacts_phone_log_stat )
+ _CONTACTS_PROPERTY_PROJECTION_INT(log_count)
+ _CONTACTS_PROPERTY_INT(log_type)
+_CONTACTS_END_READ_ONLY_VIEW(_contacts_phone_log_stat)
#ifdef __cplusplus
}
+++ /dev/null
-/*
- * Contacts Service
- *
- * Copyright (c) 2010 - 2012 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.
- *
- */
-
-#ifndef __TIZEN_SOCIAL_CTSVC_DB_ACCESS_CONTROL_H__
-#define __TIZEN_SOCIAL_CTSVC_DB_ACCESS_CONTROL_H__
-
-int ctsvc_have_file_read_permission(const char *path);
-
-void ctsvc_set_client_access_info(const char *smack_label, const char *cookie);
-void ctsvc_unset_client_access_info(void);
-void ctsvc_reset_all_client_access_info(void);
-
-bool ctsvc_have_permission(int permission);
-char* ctsvc_get_client_smack_label(void);
-
-int ctsvc_get_write_permitted_addressbook_ids(int **addressbook_ids, int *count);
-bool ctsvc_have_ab_write_permission(int addressbook_id);
-int ctsvc_is_owner(int addressbook_id);
-
-
-#endif // __TIZEN_SOCIAL_CTSVC_DB_ACCESS_CONTROL_H__
+++ /dev/null
-/*
- * Contacts Service
- *
- * Copyright (c) 2010 - 2012 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 "contacts.h"
-#include "ctsvc_internal.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_utils.h"
-#include "ctsvc_person.h"
-#include "ctsvc_notification.h"
-#include "ctsvc_db_access_control.h"
-#include "ctsvc_db_plugin_addressbook_helper.h"
-
-int ctsvc_addressbook_reset_internal_addressbook(void)
-{
- CTS_FN_CALL;
- char query[CTS_SQL_MIN_LEN] = {0};
- int ret;
-
- ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE > ret, ret, "DB error : ctsvc_begin_trans() Failed(%d)", ret);
-
- ret = ctsvc_is_owner(0);
- if (CONTACTS_ERROR_NONE != ret) {
- if (CONTACTS_ERROR_PERMISSION_DENIED == ret)
- CTS_ERR("Does not have permission of address_book (0)");
- else
- CTS_ERR("ctsvc_is_owner Fail(%d)", ret);
- ctsvc_end_trans(false);
- return ret;
- }
-
- snprintf(query, sizeof(query), "UPDATE %s SET deleted=1, person_id=0, "
- "changed_ver = ((SELECT ver FROM cts_version) + 1) WHERE addressbook_id = %d",
- CTS_TABLE_CONTACTS, 0 /*CTS_ADDRESSBOOK_INTERNAL*/);
-
- /* DOING JOB */
- do {
- ret = ctsvc_query_exec(query);
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_query_exec() Failed(%d)", ret);
- break;
- }
-
- snprintf(query, sizeof(query), "DELETE FROM %s WHERE addressbook_id = %d",
- CTS_TABLE_MY_PROFILES, 0);
-
- ret = ctsvc_query_exec(query);
- if (CONTACTS_ERROR_NONE != ret)
- {
- CTS_ERR("DB error : ctsvc_query_exec() Failed(%d)", ret);
- break;
- }
-
- snprintf(query, sizeof(query), "DELETE FROM %s WHERE addressbook_id = %d",
- CTS_TABLE_GROUPS, 0 /*CTS_ADDRESSBOOK_INTERNAL*/);
- ret = ctsvc_query_exec(query);
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_query_exec() Failed(%d)", ret);
- break;
- }
-
- snprintf(query, sizeof(query), "DELETE FROM %s WHERE addressbook_id = %d",
- CTS_TABLE_GROUP_DELETEDS, 0 /*CTS_ADDRESSBOOK_INTERNAL*/);
- ret = ctsvc_query_exec(query);
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_query_exec() Failed(%d)", ret);
- break;
- }
-
- snprintf(query, sizeof(query), "DELETE FROM %s WHERE addressbook_id = %d",
- CTS_TABLE_DELETEDS, 0 /*CTS_ADDRESSBOOK_INTERNAL*/);
- ret = ctsvc_query_exec(query);
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_query_exec() Failed(%d)", ret);
- break;
- }
-
- ret = ctsvc_person_do_garbage_collection();
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_person_garbagecollection() Failed(%d)", ret);
- break;
- }
-
- ctsvc_set_contact_noti();
- ctsvc_set_my_profile_noti();
- // person noti will set in ctsvc_person_do_garbage_collection : ctsvc_set_person_noti();
- ctsvc_set_group_noti();
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
- return ret;
- }
-
- return CONTACTS_ERROR_NONE;
- } while(0);
-
- /* ROLLBACK TRANSACTION */
- ctsvc_end_trans(false);
-
- return ret;
-}
-
-int ctsvc_addressbook_delete(int account_id)
-{
- CTS_FN_CALL;
- int ret;
- int addressbook_id = -1;
- char query[CTS_SQL_MAX_LEN] = {0};
- RETVM_IF(account_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "Account_id(%d) is invalid", account_id);
-
- // delete addressbook whish has account_id
- ret = ctsvc_begin_trans();
- RETVM_IF (CONTACTS_ERROR_NONE != ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
-
- snprintf(query, sizeof(query), "SELECT addressbook_id FROM %s WHERE account_id = %d",
- CTS_TABLE_ADDRESSBOOKS, account_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_query_get_first_int_result() Failed(%d)", ret);
- ctsvc_end_trans(false);
- return ret;
- }
-
- if (addressbook_id == 0) {
- ret = ctsvc_addressbook_reset_internal_addressbook();
- if (ret == CONTACTS_ERROR_NONE)
- ret = ctsvc_end_trans(true);
- else
- ctsvc_end_trans(false);
- return ret;
- }
-
- snprintf(query, sizeof(query), "DELETE FROM %s WHERE account_id = %d",
- CTS_TABLE_ADDRESSBOOKS, account_id);
- ret = ctsvc_query_exec(query);
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
- return ret;
- }
-
- ret = ctsvc_db_change();
- if (0 < ret) {
- ctsvc_set_my_profile_noti();
- ctsvc_set_contact_noti();
- // person noti will set in ctsvc_person_do_garbage_collection : ctsvc_set_person_noti();
- ctsvc_set_group_noti();
- ctsvc_set_addressbook_noti();
- }
- else {
- CTS_ERR("There is no addressbook which has account_id (%d)", account_id);
- ctsvc_end_trans(false);
- return CONTACTS_ERROR_NO_DATA;
- }
-
- ret = ctsvc_person_do_garbage_collection();
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_person_garbagecollection() Failed(%d)", ret);
- ctsvc_end_trans(false);
- return ret;
- }
-
- return ctsvc_end_trans(true);
-}
-
+++ /dev/null
-/*
- * Contacts Service
- *
- * Copyright (c) 2010 - 2012 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.
- *
- */
-
-#ifndef __CTSVC_DB_PLUGIN_CONTACT_HELPER_H__
-#define __CTSVC_DB_PLUGIN_CONTACT_HELPER_H__
-
-#include "ctsvc_struct.h"
-#include "ctsvc_sqlite.h"
-
-int ctsvc_contact_add_image_file(int parent_id, int img_id,
- char *src_img, char *dest_name, int dest_size);
-int ctsvc_contact_update_image_file(int parent_id, int img_id,
- char *src_img, char *dest_name, int dest_size);
-int ctsvc_contact_delete_image_file_with_path(const unsigned char* image_path);
-
-void ctsvc_contact_make_display_name(ctsvc_contact_s *contact);
-int ctsvc_contact_make_search_name(ctsvc_contact_s *contact, char **search_name);
-int ctsvc_contact_get_name_language(const ctsvc_name_s *name);
-
-int ctsvc_db_contact_update_changed_time(int contact_id);
-int ctsvc_contact_update_display_name(int contact_id, contacts_display_name_source_type_e changed_record_type);
-
-int ctsvc_db_contact_delete(int contact_id);
-int ctsvc_db_contact_get( int id, contacts_record_h* out_record );
-
-int ctsvc_get_data_info_name(cts_stmt stmt, contacts_list_h name_list);
-int ctsvc_get_data_info_event(cts_stmt stmt, contacts_list_h list);
-int ctsvc_get_data_info_number(cts_stmt stmt, contacts_list_h number_list);
-int ctsvc_get_data_info_email(cts_stmt stmt, contacts_list_h list);
-int ctsvc_get_data_info_address(cts_stmt stmt, contacts_list_h list);
-int ctsvc_get_data_info_messenger(cts_stmt stmt, contacts_list_h list);
-int ctsvc_get_data_info_note(cts_stmt stmt, contacts_list_h list);
-int ctsvc_get_data_info_company(cts_stmt stmt, contacts_list_h list);
-int ctsvc_get_data_info_profile(cts_stmt stmt, contacts_list_h list);
-int ctsvc_get_data_info_relationship(cts_stmt stmt, contacts_list_h list);
-int ctsvc_get_data_info_image(cts_stmt stmt, contacts_list_h list);
-int ctsvc_get_data_info_url(cts_stmt stmt, contacts_list_h list);
-int ctsvc_get_data_info_nickname(cts_stmt stmt, contacts_list_h list);
-int ctsvc_get_data_info_extension(cts_stmt stmt, contacts_list_h list);
-
-bool ctsvc_contact_check_default_number(contacts_list_h number_list);
-bool ctsvc_contact_check_default_email(contacts_list_h email_list);
-bool ctsvc_contact_check_default_address(contacts_list_h address_list);
-bool ctsvc_contact_check_default_image(contacts_list_h image_list);
-bool ctsvc_contact_check_image_location(const char *path);
-
-int ctsvc_contact_update_data_name(contacts_list_h name_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_update_data_company(contacts_list_h company_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_update_data_note(contacts_list_h note_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_update_data_event(contacts_list_h event_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_update_data_messenger(contacts_list_h messenger_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_update_data_address(contacts_list_h address_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_update_data_url(contacts_list_h url_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_update_data_profile(contacts_list_h profile_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_update_data_relationship(contacts_list_h relationship_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_update_data_image(contacts_list_h image_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_update_data_nickname(contacts_list_h nickname_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_update_data_extension(contacts_list_h extension_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_update_data_number(contacts_list_h number_list, int contact_id, bool is_my_profile, bool *had_phonenumber);
-int ctsvc_contact_update_data_email(contacts_list_h email_list, int contact_id, bool is_my_profile, bool *had_email);
-
-int ctsvc_contact_insert_data_name(contacts_list_h name_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_insert_data_number(contacts_list_h number_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_insert_data_email(contacts_list_h email_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_insert_data_profile(contacts_list_h profile_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_insert_data_company(contacts_list_h company_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_insert_data_note(contacts_list_h note_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_insert_data_event(contacts_list_h event_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_insert_data_messenger(contacts_list_h messenger_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_insert_data_address(contacts_list_h address_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_insert_data_url(contacts_list_h url_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_insert_data_nickname(contacts_list_h nickname_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_insert_data_relationship(contacts_list_h relationship_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_insert_data_image(contacts_list_h image_list, int contact_id, bool is_my_profile);
-int ctsvc_contact_insert_data_extension(contacts_list_h extension_list, int contact_id, bool is_my_profile);
-
-#endif // __CTSVC_DB_PLUGIN_CONTACT_HELPER_H__
+++ /dev/null
-/*
- * Contacts Service
- *
- * Copyright (c) 2010 - 2012 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 "contacts.h"
-#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
-#include "ctsvc_list.h"
-#include "ctsvc_db_plugin_sdn.h"
-#include "ctsvc_db_init.h"
-#include "ctsvc_db_query.h"
-#include "ctsvc_record.h"
-#include "ctsvc_notification.h"
-#include "ctsvc_server_utils.h"
-
-//static int __ctsvc_db_sdn_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_sdn_get_record( int id, contacts_record_h* record );
-//static int __ctsvc_db_sdn_update_record( contacts_record_h record );
-//static int __ctsvc_db_sdn_delete_record( int id );
-static int __ctsvc_db_sdn_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_sdn_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_sdn_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_sdn_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_sdn_delete_records(int ids[], int count);
-
-ctsvc_db_plugin_info_s ctsvc_db_plugin_sdn = {
- .is_query_only = false,
- .insert_record = NULL,//__ctsvc_db_sdn_insert_record,
- .get_record = __ctsvc_db_sdn_get_record,
- .update_record = NULL,//__ctsvc_db_sdn_update_record,
- .delete_record = NULL,//__ctsvc_db_sdn_delete_record,
- .get_all_records = __ctsvc_db_sdn_get_all_records,
- .get_records_with_query = __ctsvc_db_sdn_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_sdn_insert_records,
- .update_records = NULL,//__ctsvc_db_sdn_update_records,
- .delete_records = NULL,//__ctsvc_db_sdn_delete_records
- .get_count = NULL,
- .get_count_with_query = NULL,
- .replace_record = NULL,
- .replace_records = NULL,
-};
-
-static int __ctsvc_db_sdn_value_set(cts_stmt stmt, contacts_record_h *record)
-{
- int i;
- int ret;
- char *temp;
- ctsvc_sdn_s *sdn;
-
- ret = contacts_record_create(_contacts_sdn._uri, record);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
- sdn = (ctsvc_sdn_s*)*record;
-
- i = 0;
- sdn->id = ctsvc_stmt_get_int(stmt, i++);
- temp = ctsvc_stmt_get_text(stmt, i++);
- sdn->name = SAFE_STRDUP(temp);
- temp = ctsvc_stmt_get_text(stmt, i++);
- sdn->number = SAFE_STRDUP(temp);
- sdn->sim_slot_no = ctsvc_stmt_get_int(stmt, i++);
-
- return CONTACTS_ERROR_NONE;
-}
-
-static int __ctsvc_db_sdn_get_record( int id, contacts_record_h* out_record )
-{
- RETVM_IF(!ctsvc_server_have_telephony_feature(), CONTACTS_ERROR_NOT_SUPPORTED, "Telephony feature disabled");
-
- int ret;
- cts_stmt stmt = NULL;
- char query[CTS_SQL_MAX_LEN] = {0};
- contacts_record_h record;
-
- RETV_IF(NULL == out_record, CONTACTS_ERROR_INVALID_PARAMETER);
- *out_record = NULL;
-
- snprintf(query, sizeof(query),
- "SELECT id, name, number, sim_slot_no FROM "CTS_TABLE_SDN" WHERE id = %d", id);
-
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
-
- ret = ctsvc_stmt_step(stmt);
- if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
- ctsvc_stmt_finalize(stmt);
- if (CONTACTS_ERROR_NONE == ret)
- return CONTACTS_ERROR_NO_DATA;
- else
- return ret;
- }
-
- ret = __ctsvc_db_sdn_value_set(stmt, &record);
-
- ctsvc_stmt_finalize(stmt);
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_db_sdn_value_set(ALL) Failed(%d)", ret);
- return ret;
- }
-
- *out_record = record;
-
- return CONTACTS_ERROR_NONE;
-}
-
-#if 0
-static int __ctsvc_db_sdn_insert_record( contacts_record_h record, int *id )
-{
- int ret;
- ctsvc_sdn_s *sdn = (ctsvc_sdn_s*)record;
-
- RETV_IF(NULL == record, CONTACTS_ERROR_INVALID_PARAMETER);
- RETV_IF(NULL == sdn->name, CONTACTS_ERROR_INVALID_PARAMETER);
- RETVM_IF(CTSVC_RECORD_SDN != sdn->base.r_type, CONTACTS_ERROR_INVALID_PARAMETER,
- "Invalid parameter : record is invalid type(%d)", sdn->base.r_type);
-
- cts_stmt stmt = NULL;
- char query[CTS_SQL_MAX_LEN] = {0};
-
- snprintf(query, sizeof(query),
- "INSERT INTO "CTS_TABLE_SDN"(name, number, sim_slot_no) VALUES(?, ?, ?)");
-
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
-
- ctsvc_stmt_bind_text(stmt, 1, sdn->name);
- ctsvc_stmt_bind_text(stmt, 2, sdn->number);
- ctsvc_stmt_bind_int(stmt, 3, sdn->sim_slot_no);
-
- ret = ctsvc_begin_trans();
- if( ret < CONTACTS_ERROR_NONE ) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_stmt_finalize(stmt);
- return ret;
- }
-
- ret = ctsvc_stmt_step(stmt);
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
- ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
- return ret;
- }
-
- //sdn->id = ctsvc_db_get_last_insert_id();
- if (id)
- *id = ctsvc_db_get_last_insert_id();
- ctsvc_stmt_finalize(stmt);
-
- ctsvc_set_sdn_noti();
- ret = ctsvc_end_trans(true);
- if(ret < CONTACTS_ERROR_NONE ) {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
- return ret;
- }
-
- return CONTACTS_ERROR_NONE;
-}
-
-static int __ctsvc_db_sdn_update_record( contacts_record_h record )
-{
- int sdn_id;
- int ret = CONTACTS_ERROR_NONE;
- char* set = NULL;
- GSList *bind_text = NULL;
- GSList *cursor = NULL;
- ctsvc_sdn_s *sdn = (ctsvc_sdn_s*)record;
- char query[CTS_SQL_MIN_LEN] = {0};
-
- RETV_IF(NULL == record, CONTACTS_ERROR_INVALID_PARAMETER);
- RETVM_IF(CTSVC_RECORD_SDN != sdn->base.r_type, CONTACTS_ERROR_INVALID_PARAMETER,
- "Invalid parameter : record is invalid type(%d)", sdn->base.r_type);
- RETVM_IF(!sdn->id, CONTACTS_ERROR_INVALID_PARAMETER, "sdn of contact has no ID.");
- RETV_IF(NULL == sdn->name, CONTACTS_ERROR_INVALID_PARAMETER);
- RETVM_IF(CTSVC_PROPERTY_FLAG_DIRTY != (sdn->base.property_flag & CTSVC_PROPERTY_FLAG_DIRTY), CONTACTS_ERROR_NONE, "No update");
-
- ret = ctsvc_begin_trans();
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_begin_trans() Failed(%d)", ret);
-
- snprintf(query, sizeof(query),
- "SELECT id FROM "CTS_TABLE_SDN" WHERE id = %d", sdn->id);
- ret = ctsvc_query_get_first_int_result(query, &sdn_id);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_query_get_first_int_result Fail(%d)", ret);
- ctsvc_end_trans(false);
- return ret;
- }
-
- do {
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_SDN, sdn->id))) break;
- ctsvc_set_sdn_noti();
- } while (0);
-
- CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
- CONTACTS_FREE(set);
- if (bind_text) {
- for (cursor=bind_text;cursor;cursor=cursor->next)
- CONTACTS_FREE(cursor->data);
- g_slist_free(bind_text);
- }
-
- ret = ctsvc_end_trans(true);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Failed(%d)", ret);
-
- return CONTACTS_ERROR_NONE;
-}
-
-static int __ctsvc_db_sdn_delete_record( int sdn_id )
-{
- int ret;
- int id;
- char query[CTS_SQL_MAX_LEN] = {0};
-
- ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE > ret, ret, "DB error : ctsvc_begin_trans() Failed(%d)", ret);
-
- snprintf(query, sizeof(query),
- "SELECT id FROM "CTS_TABLE_SDN" WHERE id = %d", sdn_id);
- ret = ctsvc_query_get_first_int_result(query, &id);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_query_get_first_int_result Fail(%d)", ret);
- ctsvc_end_trans(false);
- return ret;
- }
-
- snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_SDN" WHERE id = %d", sdn_id);
- ret = ctsvc_query_exec(query);
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
- return ret;
- }
-
- ret = ctsvc_db_change();
- if (ret <= 0) {
- ret = CONTACTS_ERROR_NO_DATA;
- ctsvc_end_trans(false);
- return ret;
- }
-
- ctsvc_set_sdn_noti();
- ret = ctsvc_end_trans(true);
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
- return ret;
- }
-
- return CONTACTS_ERROR_NONE;
-}
-#endif
-
-static int __ctsvc_db_sdn_get_all_records( int offset, int limit,
- contacts_list_h* out_list )
-{
- RETVM_IF(!ctsvc_server_have_telephony_feature(), CONTACTS_ERROR_NOT_SUPPORTED, "Telephony feature disabled");
-
- int ret;
- int len;
- cts_stmt stmt;
- char query[CTS_SQL_MAX_LEN] = {0};
- contacts_list_h list;
-
- len = snprintf(query, sizeof(query),
- "SELECT id, name, number, sim_slot_no FROM "CTS_TABLE_SDN);
-
- if (0 != limit) {
- len += snprintf(query+len, sizeof(query)-len, " LIMIT %d", limit);
- if (0 < offset)
- len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
- }
-
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
-
- contacts_list_create(&list);
- while ((ret = ctsvc_stmt_step(stmt))) {
- contacts_record_h record;
- if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
- ctsvc_stmt_finalize(stmt);
- contacts_list_destroy(list, true);
- return ret;
- }
- __ctsvc_db_sdn_value_set(stmt, &record);
-
- ctsvc_list_prepend(list, record);
- }
- ctsvc_stmt_finalize(stmt);
- ctsvc_list_reverse(list);
-
- *out_list = (contacts_list_h)list;
- return CONTACTS_ERROR_NONE;
-}
-
-static int __ctsvc_db_sdn_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list )
-{
- RETVM_IF(!ctsvc_server_have_telephony_feature(), CONTACTS_ERROR_NOT_SUPPORTED, "Telephony feature disabled");
-
- int ret;
- int i;
- int field_count;
- ctsvc_query_s *s_query;
- cts_stmt stmt;
- contacts_list_h list;
- ctsvc_sdn_s *sdn;
-
- RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
- s_query = (ctsvc_query_s *)query;
-
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
-
- contacts_list_create(&list);
- while ((ret = ctsvc_stmt_step(stmt))) {
- contacts_record_h record;
- if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
- ctsvc_stmt_finalize(stmt);
- contacts_list_destroy(list, true);
- return ret;
- }
-
- contacts_record_create(_contacts_sdn._uri, &record);
- sdn = (ctsvc_sdn_s*)record;
- if (0 == s_query->projection_count)
- field_count = s_query->property_count;
- else
- {
- field_count = s_query->projection_count;
-
- if( CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, s_query->projection, s_query->projection_count, s_query->property_count) )
- {
- ASSERT_NOT_REACHED("To set projection is failed.\n");
- }
- }
-
- for(i=0;i<field_count;i++) {
- char *temp;
- int property_id;
- if (0 == s_query->projection_count)
- property_id = s_query->properties[i].property_id;
- else
- property_id = s_query->projection[i];
-
- switch(property_id) {
- case CTSVC_PROPERTY_SDN_ID:
- sdn->id = ctsvc_stmt_get_int(stmt, i);
- break;
- case CTSVC_PROPERTY_SDN_NAME:
- temp = ctsvc_stmt_get_text(stmt, i);
- sdn->name = SAFE_STRDUP(temp);
- break;
- case CTSVC_PROPERTY_SDN_NUMBER:
- temp = ctsvc_stmt_get_text(stmt, i);
- sdn->number = SAFE_STRDUP(temp);
- break;
- case CTSVC_PROPERTY_SDN_SIM_SLOT_NO:
- sdn->sim_slot_no = ctsvc_stmt_get_int(stmt, i);
- break;
- default:
- break;
- }
- }
- ctsvc_list_prepend(list, record);
- }
- ctsvc_stmt_finalize(stmt);
- ctsvc_list_reverse(list);
-
- *out_list = (contacts_list_h)list;
-
- return CONTACTS_ERROR_NONE;
-}
-
-#if 0
-static int __ctsvc_db_sdn_insert_records(const contacts_list_h in_list, int **ids)
-{
- return CONTACTS_ERROR_NONE;
-}
-
-static int __ctsvc_db_sdn_update_records(const contacts_list_h in_list)
-{
- return CONTACTS_ERROR_NONE;
-}
-
-static int __ctsvc_db_sdn_delete_records(int ids[], int count)
-{
- return CONTACTS_ERROR_NONE;
-}
-#endif
+++ /dev/null
-/*
- * Contacts Service
- *
- * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Dohyung Jin <dh.jin@samsung.com>
- * Jongwon Lee <gogosing.lee@samsung.com>
- * Donghee Ye <donghee.ye@samsung.com>
- *
- * 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.
- *
- */
-
-#ifndef __TIZEN_SOCIAL_CTSVC_DB_QUERY_H__
-#define __TIZEN_SOCIAL_CTSVC_DB_QUERY_H__
-
-#include "contacts.h"
-#include "contacts_db_status.h"
-#include "ctsvc_struct.h"
-#include "ctsvc_sqlite.h"
-
-int ctsvc_db_insert_records(contacts_list_h list, int **ids, unsigned int *count);
-int ctsvc_db_update_records(contacts_list_h list);
-int ctsvc_db_delete_records(const char* view_uri, int *ids, int count);
-int ctsvc_db_replace_records(contacts_list_h list, int ids[], unsigned int count);
-
-int ctsvc_db_make_get_records_query_stmt(ctsvc_query_s *s_query, int offset, int limit, cts_stmt *stmt);
-int ctsvc_db_create_set_query(contacts_record_h record, char **set, GSList **bind_text);
-int ctsvc_db_update_record_with_set_query(const char *set, GSList *bind_text, const char *table, int id);
-
-void ctsvc_db_set_status(contacts_db_status_e status);
-
-#endif /* __TIZEN_SOCIAL_CTSVC_DB_QUERY_H__ */
-
+++ /dev/null
-/*
- * Contacts Service
- *
- * Copyright (c) 2010 - 2012 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 <unicode/ustring.h>
-#include <unicode/unorm.h>
-#include <unicode/ucol.h>
-#include <unicode/uset.h>
-#include <vconf.h>
-#include <vconf-keys.h>
-
-#include "ctsvc_internal.h"
-#include "ctsvc_normalize.h"
-#include "ctsvc_localize.h"
-#include "ctsvc_localize_utils.h"
-
-#include "ctsvc_localize_kor.h"
-#include "ctsvc_localize_jp.h"
-
-int ctsvc_get_sort_type_from_language(int language)
-{
- switch(language) {
- case CTSVC_LANG_CHINESE:
- return CTSVC_SORT_CJK;
- case CTSVC_LANG_JAPANESE:
- return CTSVC_SORT_JAPANESE;
- case CTSVC_LANG_KOREAN:
- return CTSVC_SORT_KOREAN;
- case CTSVC_LANG_ENGLISH:
- return CTSVC_SORT_WESTERN;
- case CTSVC_LANG_NUMBER:
- return CTSVC_SORT_NUMBER;
- case CTSVC_LANG_RUSSIAN:
- case CTSVC_LANG_BULGARIAN:
- case CTSVC_LANG_MACEDONIA:
- case CTSVC_LANG_KAZAKHSTAN:
- case CTSVC_LANG_SERBIAN:
- case CTSVC_LANG_UKRAINE:
- return CTSVC_SORT_CYRILLIC;
- case CTSVC_LANG_ARMENIAN:
- return CTSVC_SORT_ARMENIAN;
- case CTSVC_LANG_GREEK:
- return CTSVC_SORT_GREEK;
- case CTSVC_LANG_ARABIC:
- case CTSVC_LANG_PERSIAN:
- case CTSVC_LANG_URDU:
- return CTSVC_SORT_ARABIC;
- case CTSVC_LANG_HINDI:
- return CTSVC_SORT_DEVANAGARI;
- case CTSVC_LANG_GEORGIAN:
- return CTSVC_SORT_GEORGIAN;
- case CTSVC_LANG_TURKISH:
- return CTSVC_SORT_TURKISH;
- case CTSVC_LANG_THAI:
- return CTSVC_SORT_THAI;
- case CTSVC_LANG_BENGALI:
- return CTSVC_SORT_BENGALI;
- case CTSVC_LANG_PUNJABI:
- return CTSVC_SORT_PUNJABI;
- case CTSVC_LANG_MALAYALAM:
- return CTSVC_SORT_MALAYALAM;
- case CTSVC_LANG_TELUGU:
- return CTSVC_SORT_TELUGU;
- case CTSVC_LANG_TAMIL:
- return CTSVC_SORT_TAMIL;
- case CTSVC_LANG_ORIYA:
- return CTSVC_SORT_ORIYA;
- case CTSVC_LANG_SINHALA:
- return CTSVC_SORT_SINHALA;
- case CTSVC_LANG_GUJARATI:
- return CTSVC_SORT_GUJARATI;
- case CTSVC_LANG_KANNADA:
- return CTSVC_SORT_KANNADA;
- case CTSVC_LANG_LAO:
- return CTSVC_SORT_LAO;
- case CTSVC_LANG_HEBREW:
- return CTSVC_SORT_HEBREW;
- case CTSVC_LANG_BURMESE:
- return CTSVC_SORT_BURMESE;
- case CTSVC_LANG_KHMER:
- return CTSVC_SORT_KHMER;
- case CTSVC_LANG_OTHERS:
- return CTSVC_SORT_OTHERS;
- default:
- return CTSVC_SORT_WESTERN;
- }
-}
-
-int ctsvc_get_name_sort_type(const char *src)
-{
- UErrorCode status = 0;
- UChar tmp_result[10];
- int ret = CTSVC_SORT_OTHERS;
- int char_len = 0;
- int language_type;
- char char_src[10];
-
- char_len = ctsvc_check_utf8(src[0]);
- RETVM_IF(char_len <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "check_utf8 failed");
-
- memcpy(char_src, &src[0], char_len);
- char_src[char_len] = '\0';
-
- u_strFromUTF8(tmp_result, array_sizeof(tmp_result), NULL, char_src, -1, &status);
- RETVM_IF(U_FAILURE(status), CONTACTS_ERROR_SYSTEM,
- "u_strFromUTF8() Failed(%s)", u_errorName(status));
-
- language_type = ctsvc_check_language(tmp_result);
- ret = ctsvc_get_sort_type_from_language(language_type);
-
- return ret;
-}
-
-void ctsvc_extra_normalize(UChar *word, int32_t word_size)
-{
- int i;
- for (i=0;i<word_size;i++) {
- // FF00 ~ FF60, FFE0~FFE6 : fullwidth -> halfwidth
- if (CTSVC_COMPARE_BETWEEN((UChar)0xFF00, word[i], (UChar)0xFF60)) {
- int unicode_value1 = 0;
- int unicode_value2 = 0;
- unicode_value1 = 0x0;
- unicode_value2 = (0xFF & word[i]) + 0x20;
- word[i] = unicode_value1 << 8 | unicode_value2;
- }
- else if (ctsvc_is_hangul(word[i])) {
- ctsvc_hangul_compatibility2jamo(&word[i]);
- }
- }
-}
-
-const char *ctsvc_get_language_locale(int lang)
-{
- char *langset = ctsvc_get_langset();
-
- switch(lang)
- {
- case CTSVC_LANG_AZERBAIJAN: // az, Azerbaijan
- return "az";
- case CTSVC_LANG_ARABIC: // ar, Bahrain - Arabic
- return "ar";
- case CTSVC_LANG_BULGARIAN: // bg, Bulgaria - Bulgarian
- return "bg";
- case CTSVC_LANG_CATALAN: // ca, Spain - Catalan
- return "ca";
- case CTSVC_LANG_CZECH: // cs, Czech Republic - Czech
- return "cs";
- case CTSVC_LANG_DANISH: // da, Denmark - Danish
- return "da";
- case CTSVC_LANG_GERMAN: // de, Germany - German
- return "de";
- case CTSVC_LANG_GREEK: // el, Greece - Greek
- return "el";
- case CTSVC_LANG_ENGLISH: // en, en_PH, en_US
- return "en";
- case CTSVC_LANG_SPANISH: // es_ES, es_US, El Salvador - Spanish
- return "es";
- case CTSVC_LANG_ESTONIAN: // et, Estonia - Estonian
- return "et";
- case CTSVC_LANG_BASQUE: // eu, Spain - Basque
- return "eu";
- case CTSVC_LANG_FINNISH: // fi, Finland - Finnish
- return "fi";
- case CTSVC_LANG_FRENCH: // fr_CA, fr_FR
- return "fr";
- case CTSVC_LANG_IRISH: // ga, Ireland - Irish
- return "ga";
- case CTSVC_LANG_GALICIAN: // gl, Spain - Galician
- return "gl";
- case CTSVC_LANG_HINDI: // hi, India - Hindi, Marathi, Nepali
- if (!strncmp(langset, "hi", strlen("hi"))){
- return "hi";
- }
- else if (!strncmp(langset, "mr", strlen("mr"))) {
- return "mr";
- }
- else if (!strncmp(langset, "ne", strlen("ne"))) {
- return "ne";
- }
- return "hi";
- case CTSVC_LANG_CROATIAN: // hr, Bosnia and Herzegovina - Croatian
- return "hr";
- case CTSVC_LANG_HUNGARIAN: // hu, Hungary - Hungarian
- return "hu";
- case CTSVC_LANG_ARMENIAN: // hy, Armenia - Armenian
- return "hy";
- case CTSVC_LANG_ICELANDIC: // is, Iceland - Icelandic
- return "is";
- case CTSVC_LANG_ITALIAN: // it_IT, Italy - Italian
- return "it";
- case CTSVC_LANG_JAPANESE: // ja_JP, japan
- return "ja";
- case CTSVC_LANG_GEORGIAN: // ka, Georgia - Georgian
- return "ka";
- case CTSVC_LANG_KAZAKHSTAN: // kk, Kazakhstan
- return "kk";
- case CTSVC_LANG_KOREAN: // ko, ko_KR
- return "ko";
- case CTSVC_LANG_LITHUANIAN: // lt, Lithuania - Lithuanian
- return "lt";
- case CTSVC_LANG_LATVIAN: // lv, Latvia - Latvian
- return "lv";
- case CTSVC_LANG_MACEDONIA: // mk, Macedonia
- return "mk";
- case CTSVC_LANG_NORWAY: // nb, Norway
- return "nb";
- case CTSVC_LANG_DUTCH: // nl_Nl, Netherlands Dutch
- return "nl";
- case CTSVC_LANG_POLISH: // pl, Polish
- return "pl";
- case CTSVC_LANG_PORTUGUESE: // pt_BR, pt_PT, Portugal
- return "pt";
- case CTSVC_LANG_ROMANIA: // ro, Romania
- return "ro";
- case CTSVC_LANG_RUSSIAN: // ru_RU, Russia
- return "ru";
- case CTSVC_LANG_SLOVAK: // sk, Slovakia - Slovak
- return "sk";
- case CTSVC_LANG_SLOVENIAN: // sl, Slovenia - Slovenian
- return "sl";
- case CTSVC_LANG_SERBIAN: // sr, Serbia - Serbian
- return "sr";
- case CTSVC_LANG_SWEDISH: // sv, Finland - Swedish
- return "sv";
- case CTSVC_LANG_TURKISH: // tr_TR, Turkey - Turkish
- return "tr";
- case CTSVC_LANG_UKRAINE: // uk, Ukraine
- return "uk";
- case CTSVC_LANG_CHINESE: // zh_CN, zh_HK, zh_SG, zh_TW
- return "zh";
- case CTSVC_LANG_THAI: // th_TH, Thai
- return "th";
- case CTSVC_LANG_BENGALI: // as, bn
- if (!strncmp(langset, "as", strlen("as"))){
- return "as";
- }
- return "bn";
- case CTSVC_LANG_PUNJABI: // pa
- return "pa";
- case CTSVC_LANG_MALAYALAM:
- return "ml";
- case CTSVC_LANG_TELUGU:
- return "te";
- case CTSVC_LANG_TAMIL:
- return "ta";
- case CTSVC_LANG_ORIYA:
- return "or";
- case CTSVC_LANG_SINHALA:
- return "si";
- case CTSVC_LANG_GUJARATI:
- return "gu";
- case CTSVC_LANG_KANNADA:
- return "kn";
- case CTSVC_LANG_LAO:
- return "lo";
- case CTSVC_LANG_HEBREW:
- return "he";
- case CTSVC_LANG_VIETNAMESE://latin
- return "vi";
- case CTSVC_LANG_PERSIAN:
- return "fa";
- case CTSVC_LANG_UZBEK:
- return "uz";
- case CTSVC_LANG_URDU: //arabic
- return "ur";
- case CTSVC_LANG_ALBANIAN:
- return "sq";
- case CTSVC_LANG_BURMESE:
- return "my";
- case CTSVC_LANG_MALAY:
- return "ms";
- case CTSVC_LANG_KHMER:
- return "km";
- case CTSVC_LANG_INDONESIAN:
- return "id";
- case CTSVC_LANG_TAGALOG:
- return "tl";
- }
-
- return "";
-}
-
-int ctsvc_get_language_type(const char *system_lang)
-{
- // refer to the VCONFKEY_LANGSET
- int type;
-
- RETV_IF(NULL == system_lang, CTSVC_LANG_OTHERS);
-
- // az, Azerbaijan
- if (!strncmp(system_lang, "az", strlen("az")))
- type = CTSVC_LANG_AZERBAIJAN;
- // ar, Bahrain - Arabic
- else if (!strncmp(system_lang, "ar", strlen("ar")))
- type = CTSVC_LANG_ARABIC;
- // bg, Bulgaria - Bulgarian
- else if (!strncmp(system_lang, "bg", strlen("bg")))
- type = CTSVC_LANG_BULGARIAN;
- // ca, Spain - Catalan
- else if (!strncmp(system_lang, "ca", strlen("ca")))
- type = CTSVC_LANG_CATALAN;
- // cs, Czech Republic - Czech
- else if (!strncmp(system_lang, "cs", strlen("cs")))
- type = CTSVC_LANG_CZECH;
- // da, Denmark - Danish
- else if (!strncmp(system_lang, "da", strlen("da")))
- type = CTSVC_LANG_DANISH;
- // de, Germany - German
- else if (!strncmp(system_lang, "de", strlen("de")))
- type = CTSVC_LANG_GERMAN;
- // el, Greece - Greek
- else if (!strncmp(system_lang, "el", strlen("el")))
- type = CTSVC_LANG_GREEK;
- // en, en_PH, en_US
- else if (!strncmp(system_lang, "en", strlen("en")))
- type = CTSVC_LANG_ENGLISH;
- // es_ES, es_US, El Salvador - Spanish
- else if (!strncmp(system_lang, "es", strlen("es")))
- type = CTSVC_LANG_SPANISH;
- // et, Estonia - Estonian
- else if (!strncmp(system_lang, "et", strlen("et")))
- type = CTSVC_LANG_ESTONIAN;
- // eu, Spain - Basque
- else if (!strncmp(system_lang, "eu", strlen("eu")))
- type = CTSVC_LANG_BASQUE;
- // fi, Finland - Finnish
- else if (!strncmp(system_lang, "fi", strlen("fi")))
- type = CTSVC_LANG_FINNISH;
- // fr_CA, fr_FR
- else if (!strncmp(system_lang, "fr", strlen("fr")))
- type = CTSVC_LANG_FRENCH;
- // ga, Ireland - Irish
- else if (!strncmp(system_lang, "ga", strlen("ga")))
- type = CTSVC_LANG_IRISH;
- // gl, Spain - Galician
- else if (!strncmp(system_lang, "gl", strlen("gl")))
- type = CTSVC_LANG_GALICIAN;
- // hi, India - Hindi
- else if (!strncmp(system_lang, "hi", strlen("hi")))
- type = CTSVC_LANG_HINDI;
- // mr, India - marathi
- else if (!strncmp(system_lang, "mr", strlen("mr")))
- type = CTSVC_LANG_HINDI;
- // ne, India - nepal
- else if (!strncmp(system_lang, "ne", strlen("ne")))
- type = CTSVC_LANG_HINDI;
- // hr, Bosnia and Herzegovina - Croatian
- else if (!strncmp(system_lang, "hr", strlen("hr")))
- type = CTSVC_LANG_CROATIAN;
- // hu, Hungary - Hungarian
- else if (!strncmp(system_lang, "hu", strlen("hu")))
- type = CTSVC_LANG_HUNGARIAN;
- // hy, Armenia - Armenian
- else if (!strncmp(system_lang, "hy", strlen("hy")))
- type = CTSVC_LANG_ARMENIAN;
- // is, Iceland - Icelandic
- else if (!strncmp(system_lang, "is", strlen("is")))
- type = CTSVC_LANG_ICELANDIC;
- // it_IT, Italy - Italian
- else if (!strncmp(system_lang, "it", strlen("it")))
- type = CTSVC_LANG_ITALIAN;
- // ja_JP, japan
- else if (!strncmp(system_lang, "ja", strlen("ja")))
- type = CTSVC_LANG_JAPANESE;
- // ka, Georgia - Georgian
- else if (!strncmp(system_lang, "ka", strlen("ka")))
- type = CTSVC_LANG_GEORGIAN;
- // kk, Kazakhstan
- else if (!strncmp(system_lang, "kk", strlen("kk")))
- type = CTSVC_LANG_KAZAKHSTAN;
- // ko, ko_KR
- else if (!strncmp(system_lang, "ko", strlen("ko")))
- type = CTSVC_LANG_KOREAN;
- // lt, Lithuania - Lithuanian
- else if (!strncmp(system_lang, "lt", strlen("lt")))
- type = CTSVC_LANG_LITHUANIAN;
- // lv, Latvia - Latvian
- else if (!strncmp(system_lang, "lv", strlen("lv")))
- type = CTSVC_LANG_LATVIAN;
- // mk, Macedonia
- else if (!strncmp(system_lang, "mk", strlen("mk")))
- type = CTSVC_LANG_MACEDONIA;
- // nb, Norway
- else if (!strncmp(system_lang, "nb", strlen("nb")))
- type = CTSVC_LANG_NORWAY;
- // nl_Nl, Netherlands Dutch
- else if (!strncmp(system_lang, "nl", strlen("nl")))
- type = CTSVC_LANG_DUTCH;
- // pl, Polish
- else if (!strncmp(system_lang, "pl", strlen("pl")))
- type = CTSVC_LANG_POLISH;
- // pt_BR, pt_PT, Portugal
- else if (!strncmp(system_lang, "pt", strlen("pt")))
- type = CTSVC_LANG_PORTUGUESE;
- // ro, Romania
- else if (!strncmp(system_lang, "ro", strlen("ro")))
- type = CTSVC_LANG_ROMANIA;
- // ru_RU, Russia
- else if (!strncmp(system_lang, "ru", strlen("ru")))
- type = CTSVC_LANG_RUSSIAN;
- // sk, Slovakia - Slovak
- else if (!strncmp(system_lang, "sk", strlen("sk")))
- type = CTSVC_LANG_SLOVAK;
- // sl, Slovenia - Slovenian
- else if (!strncmp(system_lang, "sl", strlen("sl")))
- type = CTSVC_LANG_SLOVENIAN;
- // sr, Serbia - Serbian
- else if (!strncmp(system_lang, "sr", strlen("sr")))
- type = CTSVC_LANG_SERBIAN;
- // sv, Finland - Swedish
- else if (!strncmp(system_lang, "sv", strlen("sv")))
- type = CTSVC_LANG_SWEDISH;
- // tr_TR, Turkey - Turkish
- else if (!strncmp(system_lang, "tr", strlen("tr")))
- type = CTSVC_LANG_TURKISH;
- // uk, Ukraine
- else if (!strncmp(system_lang, "uk", strlen("uk")))
- type = CTSVC_LANG_UKRAINE;
- // zh_CN, zh_HK, zh_SG, zh_TW
- else if (!strncmp(system_lang, "zh", strlen("zh")))
- type = CTSVC_LANG_CHINESE;
- // th_TH
- else if (!strncmp(system_lang, "th", strlen("th")))
- type = CTSVC_LANG_THAI;
- else if (!strncmp(system_lang, "as", strlen("as")))
- type = CTSVC_LANG_BENGALI;
- else if (!strncmp(system_lang, "bn", strlen("bn")))
- type = CTSVC_LANG_BENGALI;
- else if (!strncmp(system_lang, "pa", strlen("pa")))
- type = CTSVC_LANG_PUNJABI;
- else if (!strncmp(system_lang, "ml", strlen("ml")))
- type = CTSVC_LANG_MALAYALAM;
- else if (!strncmp(system_lang, "te", strlen("te")))
- type = CTSVC_LANG_TELUGU;
- else if (!strncmp(system_lang, "ta", strlen("ta")))
- type = CTSVC_LANG_TAMIL;
- else if (!strncmp(system_lang, "or", strlen("or")))
- type = CTSVC_LANG_ORIYA;
- else if (!strncmp(system_lang, "si", strlen("si")))
- type = CTSVC_LANG_SINHALA;
- else if (!strncmp(system_lang, "gu", strlen("gu")))
- type = CTSVC_LANG_GUJARATI;
- else if (!strncmp(system_lang, "kn", strlen("kn")))
- type = CTSVC_LANG_KANNADA;
- else if (!strncmp(system_lang, "lo", strlen("lo")))
- type = CTSVC_LANG_LAO;
- else if (!strncmp(system_lang, "he", strlen("he")))
- type = CTSVC_LANG_HEBREW;
- else if (!strncmp(system_lang, "vi", strlen("vi")))
- type = CTSVC_LANG_VIETNAMESE;
- else if (!strncmp(system_lang, "fa", strlen("fa")))
- type = CTSVC_LANG_PERSIAN;
- else if (!strncmp(system_lang, "uz", strlen("uz")))
- type = CTSVC_LANG_UZBEK;
- else if (!strncmp(system_lang, "ur", strlen("ur")))
- type = CTSVC_LANG_URDU;
- else if (!strncmp(system_lang, "sq", strlen("sq")))
- type = CTSVC_LANG_ALBANIAN;
- else if (!strncmp(system_lang, "my", strlen("my")))
- type = CTSVC_LANG_BURMESE;
- else if (!strncmp(system_lang, "ms", strlen("ms")))
- type = CTSVC_LANG_MALAY;
- else if (!strncmp(system_lang, "km", strlen("km")))
- type = CTSVC_LANG_KHMER;
- else if (!strncmp(system_lang, "id", strlen("id")))
- type = CTSVC_LANG_INDONESIAN;
- else if (!strncmp(system_lang, "tl", strlen("tl")))
- type = CTSVC_LANG_TAGALOG;
- else
- type = CTSVC_LANG_OTHERS;
-
- return type;
-}
-
-static char *langset = NULL;
-
-char* ctsvc_get_langset()
-{
- return langset;
-}
-
-void ctsvc_set_langset(char *new_langset)
-{
- free(langset);
- langset = new_langset;
-}
-
+++ /dev/null
-/*
- * Contacts Service
- *
- * Copyright (c) 2010 - 2012 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 <unistd.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-#include "contacts.h"
-#include "contacts_db_status.h"
-#include "ctsvc_internal.h"
-#include "ctsvc_notify.h"
-#include "ctsvc_notification.h"
-
-static TLS bool contact_change = false;
-static TLS bool my_profile_change = false;
-static TLS bool phonelog_change = false;
-static TLS bool speed_change = false;
-static TLS bool addressbook_change = false;
-static TLS bool group_change = false;
-static TLS bool group_rel_change = false;
-static TLS bool person_change = false;
-static TLS bool activity_change = false;
-static TLS bool activity_photo_change = false;
-static TLS bool address_change = false;
-static TLS bool data_change = false;
-static TLS bool event_change = false;
-static TLS bool number_change = false;
-static TLS bool email_change = false;
-static TLS bool messenger_change = false;
-static TLS bool name_change = false;
-static TLS bool note_change = false;
-static TLS bool url_change = false;
-static TLS bool nickname_change = false;
-static TLS bool sdn_change = false;
-static TLS bool relationship_change = false;
-static TLS bool image_change = false;
-static TLS bool profile_change = false;
-static TLS bool company_change = false;
-
-void ctsvc_noti_publish_socket_initialize(void)
-{
- int fd = open(CTSVC_NOTI_IPC_READY, O_TRUNC | O_RDWR);
- if (0 <= fd)
- close(fd);
-}
-
-static inline void __ctsvc_noti_publish_contact_change(void)
-{
- int fd = open(CTSVC_NOTI_CONTACT_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- contact_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_my_profile_change(void)
-{
- int fd = open(CTSVC_NOTI_MY_PROFILE_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- my_profile_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_phonelog_change(void)
-{
- int fd = open(CTSVC_NOTI_PHONELOG_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- phonelog_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_speed_change(void)
-{
- int fd = open(CTSVC_NOTI_SPEEDDIAL_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- speed_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_addressbook_change(void)
-{
- int fd = open(CTSVC_NOTI_ADDRESSBOOK_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- addressbook_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_group_change(void)
-{
- int fd = open(CTSVC_NOTI_GROUP_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- group_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_group_rel_change(void)
-{
- int fd = open(CTSVC_NOTI_GROUP_RELATION_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- group_rel_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_person_change(void)
-{
- int fd = open(CTSVC_NOTI_PERSON_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- person_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_name_change(void)
-{
- int fd = open(CTSVC_NOTI_NAME_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- name_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_number_change(void)
-{
- int fd = open(CTSVC_NOTI_NUMBER_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- number_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_email_change(void)
-{
- int fd = open(CTSVC_NOTI_EMAIL_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- email_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_event_change(void)
-{
- int fd = open(CTSVC_NOTI_EVENT_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- event_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_url_change(void)
-{
- int fd = open(CTSVC_NOTI_URL_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- url_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_address_change(void)
-{
- int fd = open(CTSVC_NOTI_ADDRESS_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- address_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_note_change(void)
-{
- int fd = open(CTSVC_NOTI_NOTE_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- note_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_company_change(void)
-{
- int fd = open(CTSVC_NOTI_COMPANY_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- company_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_relationship_change(void)
-{
- int fd = open(CTSVC_NOTI_RELATIONSHIP_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- relationship_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_image_change(void)
-{
- int fd = open(CTSVC_NOTI_IMAGE_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- image_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_nickname_change(void)
-{
- int fd = open(CTSVC_NOTI_NICKNAME_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- nickname_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_messenger_change(void)
-{
- int fd = open(CTSVC_NOTI_MESSENGER_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- messenger_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_data_change(void)
-{
- int fd = open(CTSVC_NOTI_DATA_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- data_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_sdn_change(void)
-{
- int fd = open(CTSVC_NOTI_SDN_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- sdn_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_profile_change(void)
-{
- int fd = open(CTSVC_NOTI_PROFILE_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- profile_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_activity_change(void)
-{
- int fd = open(CTSVC_NOTI_ACTIVITY_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- activity_change = false;
- }
-}
-
-static inline void __ctsvc_noti_publish_activity_photo_change(void)
-{
- int fd = open(CTSVC_NOTI_ACTIVITY_PHOTO_CHANGED, O_TRUNC | O_RDWR);
- if (0 <= fd) {
- close(fd);
- activity_photo_change = false;
- }
-}
-
-void ctsvc_nofitication_cancel(void)
-{
- contact_change = false;
- my_profile_change = false;
- phonelog_change = false;
- speed_change = false;
- addressbook_change = false;
- group_change = false;
- group_rel_change = false;
- person_change = false;
- activity_change = false;
- activity_photo_change = false;
- address_change = false;
- data_change = false;
- event_change = false;
- number_change = false;
- email_change = false;
- messenger_change = false;
- name_change = false;
- note_change = false;
- url_change = false;
- nickname_change = false;
- sdn_change = false;
- relationship_change = false;
- image_change = false;
- profile_change = false;
- company_change = false;
-}
-
-void ctsvc_set_contact_noti(void)
-{
- contact_change = true;
-}
-
-void ctsvc_set_my_profile_noti(void)
-{
- my_profile_change = true;
-}
-
-void ctsvc_set_phonelog_noti(void)
-{
- phonelog_change = true;
-}
-
-void ctsvc_set_speed_noti(void)
-{
- speed_change = true;
-}
-
-void ctsvc_set_addressbook_noti(void)
-{
- addressbook_change = true;
-}
-
-void ctsvc_set_group_noti(void)
-{
- group_change = true;
-}
-
-void ctsvc_set_group_rel_noti(void)
-{
- group_rel_change = true;
-}
-
-void ctsvc_set_person_noti(void)
-{
- person_change = true;
-}
-
-void ctsvc_set_activity_noti(void)
-{
- activity_change = true;
-}
-
-void ctsvc_set_activity_photo_noti(void)
-{
- activity_photo_change = true;
-}
-
-void ctsvc_set_address_noti(void)
-{
- address_change = true;
-}
-
-void ctsvc_set_data_noti(void)
-{
- data_change = true;
-}
-
-void ctsvc_set_event_noti(void)
-{
- event_change = true;
-}
-
-void ctsvc_set_number_noti(void)
-{
- number_change = true;
-}
-
-void ctsvc_set_email_noti(void)
-{
- email_change = true;
-}
-
-void ctsvc_set_messenger_noti(void)
-{
- messenger_change = true;
-}
-
-void ctsvc_set_nickname_noti(void)
-{
- nickname_change = true;
-}
-
-void ctsvc_set_name_noti(void)
-{
- name_change = true;
-}
-
-void ctsvc_set_note_noti(void)
-{
- note_change = true;
-}
-
-void ctsvc_set_url_noti(void)
-{
- url_change = true;
-}
-
-void ctsvc_set_sdn_noti(void)
-{
- sdn_change = true;
-}
-
-void ctsvc_set_relationship_noti(void)
-{
- relationship_change = true;
-}
-
-void ctsvc_set_image_noti(void)
-{
- image_change = true;
-}
-
-void ctsvc_set_profile_noti(void)
-{
- profile_change = true;
-}
-
-void ctsvc_set_company_noti(void)
-{
- company_change = true;
-}
-
-void ctsvc_notification_send()
-{
- if (contact_change) __ctsvc_noti_publish_contact_change();
- if (my_profile_change) __ctsvc_noti_publish_my_profile_change();
- if (phonelog_change) __ctsvc_noti_publish_phonelog_change();
- if (speed_change) __ctsvc_noti_publish_speed_change();
- if (addressbook_change) __ctsvc_noti_publish_addressbook_change();
- if (group_change) __ctsvc_noti_publish_group_change();
- if (group_rel_change) __ctsvc_noti_publish_group_rel_change();
- if (person_change) __ctsvc_noti_publish_person_change();
- if (activity_change) __ctsvc_noti_publish_activity_change();
- if (activity_photo_change) __ctsvc_noti_publish_activity_photo_change();
- if (address_change) __ctsvc_noti_publish_address_change();
- if (data_change) __ctsvc_noti_publish_data_change();
- if (company_change) __ctsvc_noti_publish_company_change();
- if (event_change) __ctsvc_noti_publish_event_change();
- if (number_change) __ctsvc_noti_publish_number_change();
- if (email_change) __ctsvc_noti_publish_email_change();
- if (messenger_change) __ctsvc_noti_publish_messenger_change();
- if (name_change) __ctsvc_noti_publish_name_change();
- if (note_change) __ctsvc_noti_publish_note_change();
- if (url_change) __ctsvc_noti_publish_url_change();
- if (nickname_change) __ctsvc_noti_publish_nickname_change();
- if (sdn_change) __ctsvc_noti_publish_sdn_change();
- if (relationship_change) __ctsvc_noti_publish_relationship_change();
- if (image_change) __ctsvc_noti_publish_image_change();
- if (profile_change) __ctsvc_noti_publish_profile_change();
-}
-
-// Whenever deleting data table record, this function will be called
-// in order to set notification
-void ctsvc_db_data_delete_callback(sqlite3_context * context,
- int argc, sqlite3_value ** argv)
-{
- CTS_FN_CALL;
- int datatype;
-
- if (argc > 2) {
- sqlite3_result_null(context);
- return;
- }
-
- datatype = sqlite3_value_int(argv[1]);
-
- switch(datatype) {
- case CTSVC_DATA_NAME:
- ctsvc_set_name_noti();
- break;
- case CTSVC_DATA_POSTAL:
- ctsvc_set_address_noti();
- break;
- case CTSVC_DATA_MESSENGER:
- ctsvc_set_messenger_noti();
- break;
- case CTSVC_DATA_URL:
- ctsvc_set_url_noti();
- break;
- case CTSVC_DATA_EVENT:
- ctsvc_set_event_noti();
- break;
- case CTSVC_DATA_COMPANY:
- ctsvc_set_company_noti();
- break;
- case CTSVC_DATA_NICKNAME:
- ctsvc_set_nickname_noti();
- break;
- case CTSVC_DATA_NUMBER:
- ctsvc_set_number_noti();
- break;
- case CTSVC_DATA_EMAIL:
- ctsvc_set_email_noti();
- break;
- case CTSVC_DATA_PROFILE:
- ctsvc_set_profile_noti();
- break;
- case CTSVC_DATA_RELATIONSHIP:
- ctsvc_set_relationship_noti();
- break;
- case CTSVC_DATA_NOTE:
- ctsvc_set_note_noti();
- break;
- case CTSVC_DATA_IMAGE:
- ctsvc_set_image_noti();
- break;
- case CTSVC_DATA_EXTENSION:
- ctsvc_set_data_noti();
- break;
- default:
- break;
- }
- sqlite3_result_null(context);
- CTS_FN_END;
-}
-
-API int contacts_db_add_status_changed_cb(
- contacts_db_status_changed_cb cb, void* user_data)
-{
- CTS_ERR("Please use contacts-service2 instead of contacts-service3");
- return CONTACTS_ERROR_INTERNAL;
-}
-
-API int contacts_db_remove_status_changed_cb(
- contacts_db_status_changed_cb cb, void* user_data)
-{
- CTS_ERR("Please use contacts-service2 instead of contacts-service3");
- return CONTACTS_ERROR_INTERNAL;
-}
+++ /dev/null
-/*
- * Contacts Service
- *
- * Copyright (c) 2010 - 2012 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.
- *
- */
-
-#ifndef __TIZEN_SOCIAL_CTSVC_NOTIFICATION_H__
-#define __TIZEN_SOCIAL_CTSVC_NOTIFICATION_H__
-
-#include "ctsvc_sqlite.h"
-
-void ctsvc_set_contact_noti(void);
-void ctsvc_set_my_profile_noti(void);
-void ctsvc_set_phonelog_noti(void);
-void ctsvc_set_speed_noti(void);
-void ctsvc_set_addressbook_noti(void);
-void ctsvc_set_group_noti(void);
-void ctsvc_set_group_rel_noti(void);
-void ctsvc_set_person_noti(void);
-void ctsvc_set_data_noti(void);
-void ctsvc_set_activity_noti(void);
-void ctsvc_set_activity_photo_noti(void);
-void ctsvc_set_address_noti(void);
-void ctsvc_set_event_noti(void);
-void ctsvc_set_messenger_noti(void);
-void ctsvc_set_number_noti(void);
-void ctsvc_set_email_noti(void);
-void ctsvc_set_name_noti(void);
-void ctsvc_set_note_noti(void);
-void ctsvc_set_url_noti(void);
-void ctsvc_set_nickname_noti(void);
-void ctsvc_set_relationship_noti(void);
-void ctsvc_set_image_noti(void);
-void ctsvc_set_profile_noti(void);
-void ctsvc_set_sdn_noti(void);
-void ctsvc_set_company_noti(void);
-
-void ctsvc_notification_send();
-void ctsvc_nofitication_cancel(void);
-void ctsvc_noti_publish_socket_initialize(void);
-
-void ctsvc_db_data_delete_callback(sqlite3_context * context,
- int argc, sqlite3_value ** argv);
-
-#endif /* __TIZEN_SOCIAL_CTSVC_NOTIFICATION_H__ */
+++ /dev/null
-/*
- * Contacts Service
- *
- * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Dohyung Jin <dh.jin@samsung.com>
- * Jongwon Lee <gogosing.lee@samsung.com>
- * Donghee Ye <donghee.ye@samsung.com>
- *
- * 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 <errno.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <unistd.h>
-
-#ifdef _CONTACTS_NATIVE
-#include <security-server.h>
-#endif
-
-#include "contacts.h"
-#include "ctsvc_internal.h"
-#include "ctsvc_socket.h"
-#include "ctsvc_mutex.h"
-#include "ctsvc_inotify.h"
-#include "ctsvc_db_init.h"
-#include "ctsvc_setting.h"
-#include "ctsvc_db_access_control.h"
-#include "ctsvc_number_utils.h"
-
-static int _ctsvc_connection = 0;
-static __thread int thread_connection = 0;
-
-#ifdef _CONTACTS_NATIVE
-void __ctsvc_addressbook_deleted_cb(const char* view_uri, void* user_data)
-{
- // access control update
- ctsvc_reset_all_client_access_info();
-}
-#endif
-
-API int contacts_connect()
-{
- CTS_FN_CALL;
- int ret;
-
- ctsvc_mutex_lock(CTS_MUTEX_CONNECTION);
- if (0 == _ctsvc_connection) {
-#ifdef _CONTACTS_NATIVE
- ret = ctsvc_socket_init();
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_socket_init() Failed(%d)", ret);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return ret;
- }
-#endif
- ret = ctsvc_inotify_init();
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_inotify_init() Failed(%d)", ret);
-#ifdef _CONTACTS_NATIVE
- ctsvc_socket_final();
-#endif
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return ret;
- }
- ctsvc_db_plugin_init();
- ctsvc_view_uri_init();
- ctsvc_register_vconf();
-#ifdef _CONTACTS_NATIVE
- contacts_db_add_changed_cb(_contacts_address_book._uri, __ctsvc_addressbook_deleted_cb, NULL);
-#endif
- }
- else
- CTS_DBG("System : Contacts service has been already connected");
-
- _ctsvc_connection++;
-
- if (0 == thread_connection) {
- ret = ctsvc_db_init();
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_db_init() Failed(%d)", ret);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return ret;
- }
-#ifdef _CONTACTS_NATIVE
- // Access control : get cookie from security-server
- char *smack_label = NULL;
- size_t cookie_size = security_server_get_cookie_size();
-
- if (cookie_size <= 0) {
- CTS_ERR("security_server_get_cookie_size : cookie_size is %d", cookie_size);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return CONTACTS_ERROR_SYSTEM;
- }
-
- char cookie[cookie_size];
- cookie[0] = '\0';
- ret = security_server_request_cookie(cookie, cookie_size);
- if(ret < 0) {
- CTS_ERR("security_server_request_cookie fail (%d)", ret);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return CONTACTS_ERROR_SYSTEM;
- }
-
- smack_label = security_server_get_smacklabel_cookie(cookie);
- if (NULL == smack_label) {
- CTS_ERR("security_server_get_smacklabel_cookie fail");
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return CONTACTS_ERROR_SYSTEM;
- }
-
- // In case of server, set SMACK label in ctsvc_ipc_server_connect()
- ctsvc_set_client_access_info(smack_label, cookie);
- free(smack_label);
-#endif
- }
- thread_connection++;
-
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
-
- return CONTACTS_ERROR_NONE;
-}
-
-API int contacts_disconnect()
-{
- ctsvc_mutex_lock(CTS_MUTEX_CONNECTION);
-
- if (1 == thread_connection) {
- ctsvc_db_deinit();
-#ifdef _CONTACTS_NATIVE
- ctsvc_unset_client_access_info();
-#endif
- }
- else if (thread_connection <= 0) {
- CTS_DBG("System : please call contacts_connect_on_thread(), thread_connection count is (%d)", thread_connection);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
- thread_connection--;
-
- if (1 == _ctsvc_connection) {
-#ifdef _CONTACTS_NATIVE
- ctsvc_socket_final();
-#endif
- ctsvc_inotify_close();
- ctsvc_deregister_vconf();
- ctsvc_view_uri_deinit();
- ctsvc_db_plugin_deinit();
- ctsvc_deinit_tapi_handle_for_cc();
-#ifdef _CONTACTS_NATIVE
- contacts_db_remove_changed_cb(_contacts_address_book._uri, __ctsvc_addressbook_deleted_cb, NULL);
-#endif
- }
- else if (1 < _ctsvc_connection)
- CTS_DBG("System : connection count is %d", _ctsvc_connection);
- else {
- CTS_DBG("System : please call contacts_connect(), connection count is (%d)", _ctsvc_connection);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
- _ctsvc_connection--;
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
-
- return CONTACTS_ERROR_NONE;
-}
-
-int ctsvc_contacts_internal_disconnect()
-{
- ctsvc_mutex_lock(CTS_MUTEX_CONNECTION);
-
- if (1 == thread_connection) {
- ctsvc_db_deinit();
- thread_connection--;
-
- if (1 <= _ctsvc_connection) {
- _ctsvc_connection--;
- }
- }
-
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return CONTACTS_ERROR_NONE;
-}
-
-#ifdef _CONTACTS_NATIVE
-API int contacts_connect_with_flags(unsigned int flags)
-{
- CTS_FN_CALL;
- int ret = CONTACTS_ERROR_NONE;
-
- ret = contacts_connect();
- if (ret == CONTACTS_ERROR_NONE)
- return ret;
-
- if (flags & CONTACTS_CONNECT_FLAG_RETRY) {
- int i;
- int waiting_time = 500;
- for (i=0;i<9;i++) {
- usleep(waiting_time * 1000);
- CTS_DBG("retry cnt=%d, ret=%x, %d",(i+1), ret, waiting_time);
- ret = contacts_connect();
- if (ret == CONTACTS_ERROR_NONE)
- break;
- if (6 < i)
- waiting_time += 30000;
- else
- waiting_time *= 2;
- }
- }
- return ret;
-}
-
-API int contacts_connect_on_thread()
-{
- int ret;
-
- ctsvc_mutex_lock(CTS_MUTEX_CONNECTION);
-
- if (0 == thread_connection) {
-#ifdef _CONTACTS_NATIVE
- ret = ctsvc_socket_init();
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_socket_init() Failed(%d)", ret);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return ret;
- }
-#endif
- ret = ctsvc_inotify_init();
- if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_inotify_init() Failed(%d)", ret);
-#ifdef _CONTACTS_NATIVE
- ctsvc_socket_final();
-#endif
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return ret;
- }
- ctsvc_db_plugin_init();
- ctsvc_view_uri_init();
- ctsvc_register_vconf();
- contacts_db_add_changed_cb(_contacts_address_book._uri, __ctsvc_addressbook_deleted_cb, NULL);
- ret = ctsvc_db_init();
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_db_init() Failed(%d)", ret);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return ret;
- }
-
- // Access control : get cookie from security-server
- char *smack_label = NULL;
- size_t cookie_size = security_server_get_cookie_size();
-
- if (cookie_size <= 0) {
- CTS_ERR("security_server_get_cookie_size : cookie_size is %d", cookie_size);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return CONTACTS_ERROR_SYSTEM;
- }
-
- char cookie[cookie_size];
- cookie[0] = '\0';
- ret = security_server_request_cookie(cookie, cookie_size);
- if(ret < 0) {
- CTS_ERR("security_server_request_cookie fail (%d)", ret);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return CONTACTS_ERROR_SYSTEM;
- }
-
- smack_label = security_server_get_smacklabel_cookie(cookie);
- if (NULL == smack_label) {
- CTS_ERR("security_server_get_smacklabel_cookie fail");
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return CONTACTS_ERROR_SYSTEM;
- }
-
- // In case of server, set SMACK label in ctsvc_ipc_server_connect()
- ctsvc_set_client_access_info(smack_label, cookie);
- free(smack_label);
- }
- else
- {
- CTS_DBG("System : db connection on thread already exist");
- }
- thread_connection++;
-
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
-
- return CONTACTS_ERROR_NONE;
-}
-
-API int contacts_disconnect_on_thread()
-{
- int ret;
- ctsvc_mutex_lock(CTS_MUTEX_CONNECTION);
-
- if (1 == thread_connection) {
- ctsvc_db_deinit();
- ctsvc_unset_client_access_info();
-#ifdef _CONTACTS_NATIVE
- ctsvc_socket_final();
-#endif
- ctsvc_inotify_close();
- ctsvc_deregister_vconf();
- ctsvc_view_uri_deinit();
- ctsvc_db_plugin_deinit();
- ctsvc_deinit_tapi_handle_for_cc();
- contacts_db_remove_changed_cb(_contacts_address_book._uri, __ctsvc_addressbook_deleted_cb, NULL);
- }
- else if (thread_connection <= 0) {
- CTS_DBG("System : please call contacts_connect_on_thread(), connection count is (%d)", thread_connection);
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
- return CONTACTS_ERROR_INVALID_PARAMETER;
- }
- else
- {
- CTS_DBG("System : db connection on thread count is (%d)", thread_connection);
- }
-
- thread_connection--;
-
- ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
-
- return CONTACTS_ERROR_NONE;
-}
-#endif
-
+++ /dev/null
-/*
- * Contacts Service
- *
- * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Dohyung Jin <dh.jin@samsung.com>
- * Jongwon Lee <gogosing.lee@samsung.com>
- * Donghee Ye <donghee.ye@samsung.com>
- *
- * 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 <glib.h>
-#include <vconf.h>
-#include <vconf-keys.h>
-
-#include "contacts.h"
-#include "ctsvc_internal.h"
-#include "ctsvc_notify.h"
-#include "ctsvc_setting.h"
-#include "ctsvc_normalize.h"
-#include "ctsvc_localize.h"
-#include "ctsvc_db_access_control.h"
-
-#ifdef _CONTACTS_IPC_SERVER
-#include "ctsvc_server_change_subject.h"
-#endif
-
-#ifdef _CONTACTS_NATIVE
-static int __ctsvc_vconf_ref_count = 0;
-#endif
-
-static int primary_sort = -1;
-static int secondary_sort = -1;
-
-static int name_display_order = -1;
-static int name_sorting_order = -1;
-static int phonenumber_min_match_digit = -1;
-
-static const char *CTSVC_VCONF_DISPLAY_ORDER = VCONFKEY_CONTACTS_SVC_NAME_DISPLAY_ORDER;
-static const char *CTSVC_VCONF_SORTING_ORDER = VCONFKEY_CONTACTS_SVC_NAME_SORTING_ORDER;
-static const char *CTSVC_VCONF_PHONENUMBER_MIN_MATCH_DIGIT = VCONFKEY_CONTACTS_SVC_PHONENUMBER_MIN_MATCH_DIGIT;
-
-API int contacts_setting_get_name_display_order(contacts_name_display_order_e *order)
-{
- int ret;
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_READ), CONTACTS_ERROR_PERMISSION_DENIED,
- "Permission denied : contact read");
-
- if (name_display_order < 0) {
- ret = vconf_get_int(CTSVC_VCONF_DISPLAY_ORDER, &name_display_order);
- RETVM_IF(ret<0, CONTACTS_ERROR_SYSTEM, "System : vconf_get_int() Failed(%d)", ret);
- }
-
- *order = name_display_order;
-
- return CONTACTS_ERROR_NONE;
-}
-
-API int contacts_setting_set_name_display_order(contacts_name_display_order_e order)
-{
- int ret;
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
- "Permission denied : contact write");
- RETVM_IF(CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST != order && CONTACTS_NAME_DISPLAY_ORDER_LASTFIRST != order,
- CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : The parameter(order:%d) is Invalid", name_display_order);
-
- if (order == name_display_order)
- return CONTACTS_ERROR_NONE;
-
- ret = vconf_set_int(CTSVC_VCONF_DISPLAY_ORDER, order);
- RETVM_IF(ret<0, CONTACTS_ERROR_SYSTEM, "System : vconf_set_int(display order) Failed(%d)", ret);
-
- name_display_order = order;
-
- return CONTACTS_ERROR_NONE;
-}
-
-API int contacts_setting_get_name_sorting_order(contacts_name_sorting_order_e *order)
-{
- int ret;
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_READ), CONTACTS_ERROR_PERMISSION_DENIED,
- "Permission denied : contact read");
- if (name_sorting_order < 0)
- {
- ret = vconf_get_int(CTSVC_VCONF_SORTING_ORDER, &name_sorting_order);
- RETVM_IF(ret<0, CONTACTS_ERROR_SYSTEM, "System : vconf_get_int(sort order) Failed(%d)", ret);
- }
-
- *order = name_sorting_order;
-
- return CONTACTS_ERROR_NONE;
-}
-
-API int contacts_setting_set_name_sorting_order(contacts_name_sorting_order_e order)
-{
- int ret;
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
- "Permission denied : contact write");
- RETVM_IF(CONTACTS_NAME_SORTING_ORDER_FIRSTLAST != order && CONTACTS_NAME_SORTING_ORDER_LASTFIRST != order,
- CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : The parameter(order:%d) is Invalid", name_sorting_order);
-
- if (order == name_sorting_order)
- return CONTACTS_ERROR_NONE;
-
- ret = vconf_set_int(CTSVC_VCONF_SORTING_ORDER, order);
- RETVM_IF(ret<0, CONTACTS_ERROR_SYSTEM, "System : vconf_set_int(sort order) Failed(%d)", ret);
-
- name_sorting_order = order;
-
- return CONTACTS_ERROR_NONE;
-}
-
-static void ctsvc_vconf_display_order_cb(keynode_t *key, void *data)
-{
- name_display_order = vconf_keynode_get_int(key);
-
-#ifdef _CONTACTS_IPC_SERVER
- // publish display order changed
- ctsvc_change_subject_publish_setting(CTSVC_SETTING_DISPLAY_ORDER_CHANGED, name_display_order);
-#endif
-}
-
-static void ctsvc_vconf_sorting_order_cb(keynode_t *key, void *data)
-{
- name_sorting_order = vconf_keynode_get_int(key);
-
-#ifdef _CONTACTS_IPC_SERVER
- // publish sort order changed
- ctsvc_change_subject_publish_setting(CTSVC_SETTING_SORTING_ORDER_CHANGED, name_sorting_order);
-#endif
-}
-
-void ctsvc_set_sort_memory(int sort_type)
-{
- primary_sort = sort_type;
- secondary_sort = CTSVC_SORT_WESTERN;
-}
-
-static void ctsvc_vconf_sort_change_cb(keynode_t *key, void *data)
-{
- int sort = vconf_keynode_get_int(key);
- ctsvc_set_sort_memory(sort);
-}
-
-int ctsvc_register_vconf(void)
-{
- int ret;
-
-#ifdef _CONTACTS_NATIVE
- __ctsvc_vconf_ref_count++;
- if (__ctsvc_vconf_ref_count != 1)
- return;
-#endif
-
- // display order
- ret = vconf_get_int(CTSVC_VCONF_DISPLAY_ORDER, &name_display_order);
- if (ret < 0) {
- CTS_ERR("vconf_get_int() Failed(%d)", ret);
- name_display_order = CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST;
- }
- ret = vconf_notify_key_changed(CTSVC_VCONF_DISPLAY_ORDER,
- ctsvc_vconf_display_order_cb, NULL);
- RETVM_IF(ret<0, CONTACTS_ERROR_SYSTEM, "vconf_notify_key_changed(display order) Failed(%d)", ret);
-
- // sorting order
- ret = vconf_get_int(CTSVC_VCONF_SORTING_ORDER, &name_sorting_order);
- if (ret < 0) {
- CTS_ERR("vconf_get_int() Failed(%d)", ret);
- name_sorting_order = CONTACTS_NAME_SORTING_ORDER_FIRSTLAST;
- }
- ret = vconf_notify_key_changed(CTSVC_VCONF_SORTING_ORDER,
- ctsvc_vconf_sorting_order_cb, NULL);
- RETVM_IF(ret<0, CONTACTS_ERROR_SYSTEM, "vconf_notify_key_changed(sort order) Failed(%d)", ret);
-
- // phonenumber min match digit
- ret = vconf_get_int(CTSVC_VCONF_PHONENUMBER_MIN_MATCH_DIGIT, &phonenumber_min_match_digit);
- if (ret < 0) {
- CTS_ERR("vconf_get_int() Failed(%d)", ret);
- phonenumber_min_match_digit = 8;
- }
-
- ret = vconf_get_int(ctsvc_get_default_sort_vconfkey(), &primary_sort);
- WARN_IF(ret < 0, "vconf_get_int() Failed(%d)", ret);
- ctsvc_set_sort_memory(primary_sort);
-
- ret = vconf_notify_key_changed(ctsvc_get_default_sort_vconfkey(),
- ctsvc_vconf_sort_change_cb, NULL);
- RETVM_IF(ret<0, CONTACTS_ERROR_SYSTEM, "vconf_notify_key_changed(deafult lang) Failed(%d)", ret);
-
- return CONTACTS_ERROR_NONE;
-}
-
-void ctsvc_deregister_vconf(void)
-{
- int ret;
-
-#ifdef _CONTACTS_NATIVE
- __ctsvc_vconf_ref_count--;
- if (__ctsvc_vconf_ref_count != 0)
- return;
-#endif
-
- ret = vconf_ignore_key_changed(CTSVC_VCONF_DISPLAY_ORDER, ctsvc_vconf_display_order_cb);
- RETM_IF(ret<0,"vconf_ignore_key_changed(display order) Failed(%d)", ret);
- ret = vconf_ignore_key_changed(CTSVC_VCONF_SORTING_ORDER, ctsvc_vconf_sorting_order_cb);
- RETM_IF(ret<0,"vconf_ignore_key_changed(sort order) Failed(%d)", ret);
-
- ret = vconf_ignore_key_changed(ctsvc_get_default_sort_vconfkey(), ctsvc_vconf_sort_change_cb);
- RETM_IF(ret<0,"vconf_ignore_key_changed(default_lang) Failed(%d)", ret);
-}
-
-int ctsvc_get_phonenumber_min_match_digit(void)
-{
- return phonenumber_min_match_digit;
-}
-
-const char* ctsvc_get_default_sort_vconfkey(void)
-{
- return "file/private/contacts-service/default_lang";
-}
-
-int ctsvc_get_primary_sort(void)
-{
- if (primary_sort < 0) {
- int ret;
- ret = vconf_get_int(ctsvc_get_default_sort_vconfkey(), &primary_sort);
- WARN_IF(ret < 0, "vconf_get_int() Failed(%d)", ret);
- ctsvc_set_sort_memory(primary_sort);
- }
- return primary_sort;
-}
-
-int ctsvc_get_secondary_sort(void)
-{
- return secondary_sort;
-}
-
-#ifdef _CONTACTS_NATIVE
-API int contacts_setting_add_name_display_order_changed_cb(
- contacts_setting_name_display_order_changed_cb cb, void* user_data)
-{
- CTS_ERR("Please use contacts-service2 instead of contacts-service3");
- return CONTACTS_ERROR_INTERNAL;
-}
-
-API int contacts_setting_remove_name_display_order_changed_cb(
- contacts_setting_name_display_order_changed_cb cb, void* user_data)
-{
- CTS_ERR("Please use contacts-service2 instead of contacts-service3");
- return CONTACTS_ERROR_INTERNAL;
-
-}
-
-API int contacts_setting_add_name_sorting_order_changed_cb(
- contacts_setting_name_sorting_order_changed_cb cb, void* user_data)
-{
- CTS_ERR("Please use contacts-service2 instead of contacts-service3");
- return CONTACTS_ERROR_INTERNAL;
-}
-
-
-API int contacts_setting_remove_name_sorting_order_changed_cb(
- contacts_setting_name_sorting_order_changed_cb cb, void* user_data)
-{
- CTS_ERR("Please use contacts-service2 instead of contacts-service3");
- return CONTACTS_ERROR_INTERNAL;
-}
-
-#endif
+++ /dev/null
-/*
- * Contacts Service
- *
- * Copyright (c) 2010 - 2012 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 <ctype.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <dirent.h>
-#include <sys/stat.h>
-#include <sys/vfs.h>
-#include <image_util.h>
-#include <image_util_internal.h>
-#include <vconf.h>
-#include <vconf-keys.h>
-#include <unicode/ulocdata.h>
-#include <unicode/uset.h>
-#include <unicode/ustring.h>
-#include <libexif/exif-data.h>
-
-#include "contacts.h"
-#include "ctsvc_internal.h"
-#include "ctsvc_utils.h"
-#include "ctsvc_mutex.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_notification.h"
-#include "ctsvc_struct.h"
-#include "ctsvc_normalize.h"
-#include "ctsvc_localize.h"
-#include "ctsvc_localize_utils.h"
-#include "ctsvc_setting.h"
-
-#ifdef _CONTACTS_IPC_SERVER
-#include "ctsvc_server_change_subject.h"
-#endif
-
-static __thread int transaction_count = 0;
-static __thread int transaction_ver = 0;
-static __thread bool version_up = false;
-
-#define CTS_SECURITY_IMAGE_PERMISSION 0440
-#define CTS_IMAGE_ENCODE_QUALITY 50
-
-#define CTS_COMMIT_TRY_MAX 500000 // For 3second
-
-int ctsvc_begin_trans(void)
-{
- int ret = -1, progress;
-
-#ifndef _CONTACTS_IPC_SERVER
- ctsvc_mutex_lock(CTS_MUTEX_TRANSACTION);
-#endif
- if (transaction_count <= 0) {
- ret = ctsvc_query_exec("BEGIN IMMEDIATE TRANSACTION");
- progress = 100000;
- while (CONTACTS_ERROR_DB == ret && progress < CTS_COMMIT_TRY_MAX) {
- usleep(progress);
- ret = ctsvc_query_exec("BEGIN IMMEDIATE TRANSACTION");
- progress *= 2;
- }
- if(CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
-#ifndef _CONTACTS_IPC_SERVER
- ctsvc_mutex_unlock(CTS_MUTEX_TRANSACTION);
-#endif
- return ret;
- }
-
- transaction_count = 0;
-
- const char *query = "SELECT ver FROM "CTS_TABLE_VERSION;
- ret = ctsvc_query_get_first_int_result(query, &transaction_ver);
- version_up = false;
- }
- transaction_count++;
- INFO("transaction_count : %d.", transaction_count);
-#ifndef _CONTACTS_IPC_SERVER
- ctsvc_mutex_unlock(CTS_MUTEX_TRANSACTION);
-#endif
- return CONTACTS_ERROR_NONE;
-}
-
-int ctsvc_end_trans(bool is_success)
-{
- int ret = -1, progress;
- char query[CTS_SQL_MIN_LEN] = {0};
-
-#ifndef _CONTACTS_IPC_SERVER
- ctsvc_mutex_lock(CTS_MUTEX_TRANSACTION);
-#endif
-
- transaction_count--;
- INFO("%s, transaction_count : %d", is_success?"True": "False", transaction_count);
-
- if (0 != transaction_count) {
- CTS_DBG("contact transaction_count : %d.", transaction_count);
-#ifndef _CONTACTS_IPC_SERVER
- ctsvc_mutex_unlock(CTS_MUTEX_TRANSACTION);
-#endif
- return CONTACTS_ERROR_NONE;
- }
-
- if (false == is_success) {
- ctsvc_nofitication_cancel();
-#ifdef _CONTACTS_IPC_SERVER
- ctsvc_change_subject_clear_changed_info();
-#endif
- ret = ctsvc_query_exec("ROLLBACK TRANSACTION");
-
-#ifndef _CONTACTS_IPC_SERVER
- ctsvc_mutex_unlock(CTS_MUTEX_TRANSACTION);
-#endif
- return CONTACTS_ERROR_NONE;
- }
-
- if (version_up) {
- transaction_ver++;
- snprintf(query, sizeof(query), "UPDATE %s SET ver = %d",
- CTS_TABLE_VERSION, transaction_ver);
- ret = ctsvc_query_exec(query);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec(version up) Failed(%d)", ret);
- }
-
- INFO("start commit");
- progress = 100000;
- ret = ctsvc_query_exec("COMMIT TRANSACTION");
- while (CONTACTS_ERROR_DB == ret && progress<CTS_COMMIT_TRY_MAX) {
- usleep(progress);
- ret = ctsvc_query_exec("COMMIT TRANSACTION");
- progress *= 2;
- }
- INFO("%s", (CONTACTS_ERROR_NONE == ret)?"commit": "rollback");
-
- if (CONTACTS_ERROR_NONE != ret) {
- int tmp_ret;
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_nofitication_cancel();
-#ifdef _CONTACTS_IPC_SERVER
- ctsvc_change_subject_clear_changed_info();
-#endif
- tmp_ret = ctsvc_query_exec("ROLLBACK TRANSACTION");
- WARN_IF(CONTACTS_ERROR_NONE != tmp_ret, "ctsvc_query_exec(ROLLBACK) Failed(%d)", tmp_ret);
-#ifndef _CONTACTS_IPC_SERVER
- ctsvc_mutex_unlock(CTS_MUTEX_TRANSACTION);
-#endif
- return ret;
- }
-
- ctsvc_notification_send();
-#ifdef _CONTACTS_IPC_SERVER
- ctsvc_change_subject_publish_changed_info();
-#endif
-
-#ifndef _CONTACTS_IPC_SERVER
- ctsvc_mutex_unlock(CTS_MUTEX_TRANSACTION);
-#endif
-
- CTS_DBG("Transaction shut down! : (%d)\n", transaction_ver);
-
- return CONTACTS_ERROR_NONE;
-}
-
-const char* ctsvc_get_display_column(void)
-{
- contacts_name_display_order_e order;
-
- contacts_setting_get_name_display_order(&order);
- if (CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST == order)
- return "display_name";
- else
- return "reverse_display_name";
-}
-
-const char* ctsvc_get_sort_name_column(void)
-{
- contacts_name_sorting_order_e order;
-
- contacts_setting_get_name_sorting_order(&order);
- if (CONTACTS_NAME_SORTING_ORDER_FIRSTLAST == order)
- return "sort_name, display_name_language";
- else
- return "reverse_sort_name, reverse_display_name_language";
-}
-
-const char* ctsvc_get_sort_column(void)
-{
- contacts_name_sorting_order_e order;
-
- contacts_setting_get_name_sorting_order(&order);
- if (CONTACTS_NAME_SORTING_ORDER_FIRSTLAST == order)
- return "display_name_language, sortkey";
- else
- return "reverse_display_name_language, reverse_sortkey";
-}
-
-void ctsvc_utils_make_image_file_name(int parent_id, int id, char *src_img, char *dest, int dest_size)
-{
- char *ext;
- char *temp;
- char *lower_ext;
-
- ext = strrchr(src_img, '.');
- if (NULL == ext || strchr(ext, '/'))
- ext = "";
-
- lower_ext = strdup(ext);
- RETM_IF(NULL == lower_ext, "strdup() return NULL");
-
- temp = lower_ext;
- while (*temp) {
- *temp = tolower(*temp);
- temp++;
- }
-
- if (parent_id > 0)
- snprintf(dest, dest_size, "%d_%d%s", parent_id, id, lower_ext);
- else
- snprintf(dest, dest_size, "%d%s", id, ext);
- free(lower_ext);
-}
-
-static inline bool ctsvc_check_available_image_space(void){
- int ret;
- struct statfs buf;
- long long size;
- ret = statfs(CTSVC_IMG_FULL_LOCATION, &buf);
-
- RETVM_IF(ret!=0, false, "statfs Failed(%d)", ret);
-
- size = (long long)buf.f_bavail * (buf.f_bsize);
-
- if (size > 1024*1024) // if available space to copy a image is larger than 1M
- return true;
- return false;
-}
-
-static image_util_rotation_e __ctsvc_get_rotation_info(const char *path)
-{
- ExifData *ed = NULL;
- ExifEntry *entry;
- image_util_rotation_e rotation = IMAGE_UTIL_ROTATION_NONE;
- int orientation = 0;
-
- ed = exif_data_new_from_file(path);
- if (ed == NULL) {
- CTS_ERR("exif_data_new_from_file : ExifData is NULL");
- return IMAGE_UTIL_ROTATION_NONE;
- }
-
- entry = exif_data_get_entry(ed, EXIF_TAG_ORIENTATION);
- if (entry) {
- ExifByteOrder mByteOrder = exif_data_get_byte_order(ed);
- orientation = (int)exif_get_short(entry->data, mByteOrder);
- if (orientation < 0 || orientation > 8)
- orientation = 0;
- }
-
- if (ed)
- exif_data_unref(ed);
-
- switch(orientation) {
- case 1: // Top-left
- rotation = IMAGE_UTIL_ROTATION_NONE;
- break;
- case 2: // Top-right
- rotation = IMAGE_UTIL_ROTATION_FLIP_HORZ;
- break;
- case 3: // Bottom-right
- rotation = IMAGE_UTIL_ROTATION_180;
- break;
- case 4: // Bottom-left
- rotation = IMAGE_UTIL_ROTATION_FLIP_VERT;
- break;
- case 6: // Right-top
- rotation = IMAGE_UTIL_ROTATION_90;
- break;
- case 8: // Left-bottom
- rotation = IMAGE_UTIL_ROTATION_270;
- break;
- case 5: // Left-top
- case 7: // Right-bottom
- case 0:
- default:
- break;
- };
-
- return rotation;
-}
-
-static int image_size = 480;
-
-typedef struct {
- const char *src;
- const char *dest;
- int ret;
-}image_info;
-
-static bool __ctsvc_image_util_supported_jpeg_colorspace_cb(image_util_colorspace_e colorspace, void *user_data)
-{
- image_info *info = (image_info*)user_data;
- image_util_error_e ret;
- int width = 0, height = 0;
- unsigned int size_decode = 0;
- int resized_width, resized_height;
- unsigned char * img_target = 0;
- unsigned char * img_source = 0;
- int dest_fd;
- image_util_rotation_e rotation;
-
- // temporary code
- if (colorspace == IMAGE_UTIL_COLORSPACE_YV12 || colorspace == IMAGE_UTIL_COLORSPACE_I420) {
- info->ret = CONTACTS_ERROR_SYSTEM;
- return true;
- }
-
- rotation = __ctsvc_get_rotation_info(info->src);
-
- // load jpeg sample file
- CTS_DBG("colorspace %d src : %s, dest : %s", colorspace, info->src, info->dest);
- ret = image_util_decode_jpeg( info->src, colorspace, &img_source, &width, &height, &size_decode );
- if (ret!=IMAGE_UTIL_ERROR_NONE) {
- info->ret = CONTACTS_ERROR_SYSTEM;
- return true;
- }
-
-#if 0
- if (0>image_size) {
- int w,h;
- ecore_x_window_size_get(
- ecore_x_window_root_get(ecore_x_window_focus_get())
- , &w, &h);
-
- if (w>h)
- image_size = h;
- else
- image_size = w;
-
- }
-#endif
-
- if (width > image_size || height > image_size) {
- // image resize
- if (image_size<=0 || width <=0 || height <= 0) {
- free(img_source);
- CTS_ERR("image size error(%d)", image_size);
- info->ret = CONTACTS_ERROR_SYSTEM;
- return false;
- }
-
- if (width>height) {
- resized_width = image_size;
- resized_height = height*image_size/width;
- }
- else {
- resized_height = image_size;
- resized_width = width*image_size/height;
- }
-
- if (resized_height%8)
- resized_height += 8 - (resized_height%8);
- if (resized_width%8)
- resized_width += 8 - (resized_width%8);
-
- CTS_DBG("size(%d, %d) -> resize(%d,%d)", width, height, resized_width, resized_height);
-
- image_util_calculate_buffer_size(resized_width, resized_height, colorspace , &size_decode);
-
- img_target = malloc( size_decode );
-
- // do resize
- ret = image_util_resize( img_target, &resized_width, &resized_height,
- img_source, width, height, colorspace );
- if (ret!=IMAGE_UTIL_ERROR_NONE) {
- CTS_ERR("image_util_resize failed(%d)", ret);
- free( img_target );
- free( img_source );
- info->ret = CONTACTS_ERROR_SYSTEM;
- return false;
- }
- free( img_source );
- }
- else {
- resized_width = width;
- resized_height = height;
- img_target = img_source;
- }
-
- // image rotation
- if (IMAGE_UTIL_ROTATION_NONE != rotation) {
- int rotated_width, rotated_height;
- unsigned char *img_rotate = 0;
- img_rotate = malloc( size_decode );
- ret= image_util_rotate(img_rotate, &rotated_width, &rotated_height,
- rotation, img_target, resized_width, resized_height, colorspace);
- free(img_target);
- if (IMAGE_UTIL_ERROR_NONE != ret) {
- CTS_ERR("image_util_rotate failed(%d)", ret);
- info->ret = CONTACTS_ERROR_SYSTEM;
- free(img_rotate);
- return false;
- }
- resized_width = rotated_width;
- resized_height = rotated_height;
- img_target = img_rotate;
- }
-
- // image encode
- ret = image_util_encode_jpeg(img_target, resized_width, resized_height, colorspace, CTS_IMAGE_ENCODE_QUALITY, info->dest );
- free( img_target );
- if(ret != IMAGE_UTIL_ERROR_NONE) {
- CTS_ERR("image_util_encode_jpeg failed(%d)", ret);
- info->ret = CONTACTS_ERROR_SYSTEM;
- return false;
- }
-
- dest_fd = open(info->dest, O_RDONLY);
- if (dest_fd < 0) {
- CTS_ERR("System : Open Failed(%d)", errno);
- info->ret = CONTACTS_ERROR_SYSTEM;
- return false;
- }
-
- ret = fchown(dest_fd, getuid(), CTS_SECURITY_FILE_GROUP);
- if (0 != ret) {
- CTS_ERR("fchown Failed(%d)", errno);
- info->ret = CONTACTS_ERROR_SYSTEM;
- close(dest_fd);
- return false;
- }
-
- ret = fchmod(dest_fd, CTS_SECURITY_IMAGE_PERMISSION);
- if (0 != ret) {
- CTS_ERR("fchmod Failed(%d)", errno);
- info->ret = CONTACTS_ERROR_SYSTEM;
- close(dest_fd);
- return false;
- }
- close(dest_fd);
-
- info->ret = CONTACTS_ERROR_NONE;
- return false;
-}
-
-static int __ctsvc_resize_and_copy_image(const char *src, const char *dest)
-{
- int ret;
- image_info info = {.src = src, .dest = dest, ret = CONTACTS_ERROR_SYSTEM};
-
- ret = image_util_foreach_supported_jpeg_colorspace(__ctsvc_image_util_supported_jpeg_colorspace_cb, &info);
-
- if (ret != IMAGE_UTIL_ERROR_NONE)
- return CONTACTS_ERROR_SYSTEM;
-
- return info.ret;
-}
-
-#define CTSVC_COPY_SIZE_MAX 4096
-int ctsvc_utils_copy_image(const char *dir, const char *src, const char *file)
-{
- int ret;
- int size;
- int src_fd, dest_fd;
- char buf[CTSVC_COPY_SIZE_MAX] = {0};
-
- if (NULL == file || *file == '\0')
- return CONTACTS_ERROR_INVALID_PARAMETER;
-
- char dest[strlen(dir) + strlen(file) + 2];
- snprintf(dest, sizeof(dest), "%s/%s", dir, file);
-
- if (!ctsvc_check_available_image_space())
- return CONTACTS_ERROR_FILE_NO_SPACE;
-
- ret = __ctsvc_resize_and_copy_image(src, dest);
- if (CONTACTS_ERROR_NONE == ret) {
- return ret;
- }
- else
- CTS_ERR("__ctsvc_resize_and_copy_image Failed(%d)", ret);
-
- src_fd = open(src, O_RDONLY);
- RETVM_IF(src_fd < 0, CONTACTS_ERROR_SYSTEM, "System : Open(src:%s) Failed(%d)", src, errno);
- dest_fd = open(dest, O_WRONLY|O_CREAT|O_TRUNC, 0660);
- if (dest_fd < 0) {
- CTS_ERR("Open Failed(%d)", errno);
- close(src_fd);
- return CONTACTS_ERROR_SYSTEM;
- }
-
- while ((size = read(src_fd, buf, CTSVC_COPY_SIZE_MAX)) > 0) {
- ret = write(dest_fd, buf, size);
- if (ret <= 0) {
- if (EINTR == errno)
- continue;
- else {
- CTS_ERR("write() Failed(%d)", errno);
- if (ENOSPC == errno)
- ret = CONTACTS_ERROR_FILE_NO_SPACE; // No space
- else
- ret = CONTACTS_ERROR_SYSTEM; // IO error
- close(src_fd);
- close(dest_fd);
- unlink(dest);
- return ret;
- }
- }
- }
-
- ret = fchown(dest_fd, getuid(), CTS_SECURITY_FILE_GROUP);
- if (0 != ret) {
- CTS_ERR("fchown() Failed(%d)", ret);
- }
- ret = fchmod(dest_fd, CTS_SECURITY_IMAGE_PERMISSION);
- if (0 != ret) {
- CTS_ERR("fchmod() Failed(%d)", ret);
- }
- close(src_fd);
- close(dest_fd);
-
- return CONTACTS_ERROR_NONE;
-}
-
-int ctsvc_get_next_ver(void)
-{
- const char *query;
- int version;
- int ret;
-
- if (0 < transaction_count) {
- version_up = true;
- return transaction_ver + 1;
- }
-
- query = "SELECT ver FROM "CTS_TABLE_VERSION;
- ret = ctsvc_query_get_first_int_result(query, &version);
-
- // In this case, contacts-service already works abnormally.
- if (CONTACTS_ERROR_NONE != ret)
- CTS_ERR("ctsvc_query_get_first_int_result : get version error(%d)", ret);
-
- return (1 + version);
-}
-
-int ctsvc_get_current_version( int* out_current_version ){
- if (transaction_count <= 0) {
- int ret;
- int version = 0;
- const char *query = "SELECT ver FROM "CTS_TABLE_VERSION;
- ret = ctsvc_query_get_first_int_result(query, &version);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_get_first_int_result() Failed(%d)", ret);
- *out_current_version = version;
- }
- else
- *out_current_version = transaction_ver;
- return CONTACTS_ERROR_NONE;
-}
-
-int ctsvc_get_transaction_ver(void)
-{
- return transaction_ver;
-}
-
-int SAFE_SNPRINTF(char **buf, int *buf_size, int len, const char *src)
-{
- int remain;
- int temp_len;
-
- if (len < 0)
- return -1;
-
- remain = *buf_size - len;
- if (remain > strlen(src) + 1) {
- temp_len = snprintf((*buf)+len, remain, "%s", src);
- return temp_len;
- }
- else {
- char *temp;
- while(1) {
- temp = realloc(*buf, *buf_size*2);
- if (NULL == temp)
- return -1;
- *buf = temp;
- *buf_size = *buf_size * 2;
- remain = *buf_size - len;
- if (remain > strlen(src) + 1)
- break;
- }
- temp_len = snprintf((*buf)+len, remain, "%s", src);
- return temp_len;
- }
-}
-
[Unit]
Description=Start the Contacts service helper service
-After=tizen-runtime.target
-Requires=tizen-runtime.target
+After=tizen-runtime.target vsm-zone-svc.service
+Requires=tizen-runtime.target vsm-zone-svc.service
[Service]
+User=system
+Group=system
+SmackProcessLabel=contacts-service
Type=simple
-ExecStart=/usr/bin/contacts-service-ipcd
-Restart=always
-RestartSec=1
+Environment="CMD=timeout" "TIME=90"
+ExecStart=/usr/bin/contacts-service-ipcd $CMD $TIME
[Install]
WantedBy=multi-user.target
Description=Contacts Service socket
[Socket]
+SocketUser=system
+SocketGroup=system
ListenStream=/tmp/.contacts_svc_ipc
SmackLabelIPIn=contacts-service
SmackLabelIPOut=contacts-service
Name: contacts-service
Summary: Contacts Service
-Version: 0.13.11
+Version: 0.13.48
Release: 1
Group: TO_BE/FILLED_IN
License: Apache-2.0
BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(tapi)
BuildRequires: pkgconfig(glib-2.0)
-BuildRequires: pkgconfig(icu-i18n)
BuildRequires: pkgconfig(capi-base-common)
BuildRequires: pkgconfig(capi-media-image-util)
BuildRequires: pkgconfig(pims-ipc)
-BuildRequires: pkgconfig(capi-system-info)
-%if "%{?tizen_profile_name}" == "mobile"
BuildRequires: pkgconfig(accounts-svc)
-%endif
BuildRequires: pkgconfig(libexif)
BuildRequires: pkgconfig(libsmack)
BuildRequires: pkgconfig(security-server)
+BuildRequires: pkgconfig(vasum)
+BuildRequires: pkgconfig(capi-system-info)
+BuildRequires: pkgconfig(icu-uc)
Requires(post): /usr/bin/sqlite3, /bin/chmod, /bin/chown
-Requires(post): /usr/bin/vconftool
Requires(post): /sbin/ldconfig
-Requires(post): telephony-daemon
Requires(postun): /sbin/ldconfig
Requires: sys-assert
+%if "%{?tizen_profile_name}" == "tv" && 0%{?tizen_version_major} < 3
+ExcludeArch: %{arm} %ix86 x86_64
+%endif
+
%description
Contacts Service Library
Group: Development/Libraries
Requires: sys-assert
Requires: security-server
-Requires(post): telephony-daemon
Requires(post): libprivilege-control-conf
%description -n contacts-service2
MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} \
-%if "%{?tizen_profile_name}" == "mobile"
- -DCTS_MOBILE:BOOL=ON \
-%endif
- -DENABLE_SIM_FEATURE:BOOL=ON \
-DENABLE_LOG_FEATURE:BOOL=ON \
-DMAJORVER=${MAJORVER} \
-DFULLVER=%{version}
mkdir -p %{buildroot}%{_libdir}/systemd/system/multi-user.target.wants
install -m 0644 %SOURCE1 %{buildroot}%{_libdir}/systemd/system/contacts-service.service
-ln -s ../contacts-service.service %{buildroot}%{_libdir}/systemd/system/multi-user.target.wants/contacts-service.service
mkdir -p %{buildroot}%{_libdir}/systemd/system/sockets.target.wants
install -m 0644 %SOURCE2 %{buildroot}%{_libdir}/systemd/system/contacts-service.socket
%post -n contacts-service2
/sbin/ldconfig
-chown :5000 /opt/usr/data/contacts-svc
-chown :5000 /opt/usr/dbspace/.contacts-svc.db
-chown :5000 /opt/usr/dbspace/.contacts-svc.db-journal
-chown :5000 -R /opt/usr/data/contacts-svc/img
-chown :5000 /opt/usr/data/contacts-svc/.CONTACTS_SVC_*
+chown 200:5000 /opt/usr/data/contacts-svc
+chown 200:5000 /opt/usr/dbspace/.contacts-svc.db
+chown 200:5000 /opt/usr/dbspace/.contacts-svc.db-journal
+chown 200:5000 -R /opt/usr/data/contacts-svc/img
+chown 200:5000 /opt/usr/data/contacts-svc/.CONTACTS_SVC_*
+chown 200:200 %{_libdir}/systemd/system/contacts-service.socket
+
chmod 660 /opt/usr/dbspace/.contacts-svc.db
chmod 660 /opt/usr/dbspace/.contacts-svc.db-journal
chmod 775 /opt/usr/data/contacts-svc
-chmod 770 -R /opt/usr/data/contacts-svc/img/
+chmod 750 -R /opt/usr/data/contacts-svc/img/
+chmod 770 /opt/usr/data/contacts-svc/img/vcard/
chmod 660 /opt/usr/data/contacts-svc/.CONTACTS_SVC_*
-vconftool set -t int file/private/contacts-service/default_lang 0 -g 5000 -s contacts-service::vconf-private
-vconftool set -t int db/contacts-svc/name_sorting_order 0 -g 5000 -s contacts-service::vconf
-vconftool set -t int db/contacts-svc/name_display_order 0 -g 5000 -s contacts-service::vconf
-vconftool set -t int db/contacts-svc/phonenumber_min_match_digit 8 -g 5000 -s contacts-service::vconf
-
-
%postun -p /sbin/ldconfig
%files -n contacts-service2
%manifest contacts-service2.manifest
-%defattr(-,root,root,-)
+%defattr(-,system,system,-)
%{_libdir}/libcontacts-service2.so.*
%{_bindir}/contacts-service-ipcd*
/opt/usr/data/contacts-svc/.CONTACTS_SVC_*
/opt/usr/data/contacts-svc/img/*
%{_libdir}/systemd/system/contacts-service.service
-%{_libdir}/systemd/system/multi-user.target.wants/contacts-service.service
%{_libdir}/systemd/system/sockets.target.wants/contacts-service.socket
%{_libdir}/systemd/system/contacts-service.socket
%config(noreplace) /opt/usr/dbspace/.contacts-svc.db*
/usr/share/license/%{name}2
%files -n contacts-service2-devel
-%defattr(-,root,root,-)
+%defattr(-,system,system,-)
%{_libdir}/libcontacts-service2.so
%{_libdir}/pkgconfig/contacts-service2.pc
%{_includedir}/contacts-svc/contacts.h
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/server)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/native)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/server/db)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/server/utils)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/ipc)
LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
${CMAKE_SOURCE_DIR}/common/ipc/ctsvc_ipc_extension.c
${CMAKE_SOURCE_DIR}/common/ipc/ctsvc_ipc_profile.c
${CMAKE_SOURCE_DIR}/common/ipc/ctsvc_ipc_image.c
+ ${CMAKE_SOURCE_DIR}/common/ipc/ctsvc_ipc_sdn.c
+ ${CMAKE_SOURCE_DIR}/common/ipc/ctsvc_ipc_speeddial.c
${CMAKE_SOURCE_DIR}/common/ctsvc_filter.c
- ${CMAKE_SOURCE_DIR}/common/ctsvc_db_notification.c
${CMAKE_SOURCE_DIR}/common/ctsvc_inotify.c
${CMAKE_SOURCE_DIR}/common/ctsvc_list.c
${CMAKE_SOURCE_DIR}/common/ctsvc_localize_utils.c
${CMAKE_SOURCE_DIR}/common/ctsvc_socket.c
${CMAKE_SOURCE_DIR}/common/ctsvc_vcard.c
${CMAKE_SOURCE_DIR}/common/ctsvc_view.c
+ ${CMAKE_SOURCE_DIR}/common/ctsvc_handle.c
+ ${CMAKE_SOURCE_DIR}/common/ctsvc_zone.c
+ ${CMAKE_SOURCE_DIR}/common/ctsvc_record_speeddial.c
+ ${CMAKE_SOURCE_DIR}/common/ctsvc_record_sdn.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_activity.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_access_control.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_init.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_activity.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_activity_photo.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_activity_photo_helper.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_address_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_address.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_addressbook.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_addressbook_helper.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_company_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_company.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_contact_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_contact.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_my_profile.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_email_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_email.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_event_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_event.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_extension_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_extension.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_group.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_group_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_grouprelation.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_image_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_image.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_messenger_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_messenger.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_name_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_name.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_nickname_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_nickname.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_note_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_note.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_number_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_number.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_person_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_person.c
-
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_profile_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_profile.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_relationship_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_relationship.c
-
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_simple_contact.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_url_helper.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_url.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_query.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_group.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_person.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_service.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_sqlite.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_utils.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_number_utils.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_notification.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_setting.c
-
- ${CMAKE_SOURCE_DIR}/native/ctsvc_localize_jp.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_localize_kor.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_localize_ch.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_localize.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_normalize.c
+ db/ctsvc_db_access_control.c
+ db/ctsvc_db_init.c
+ db/ctsvc_db_plugin_activity.c
+ db/ctsvc_db_plugin_activity_photo_helper.c
+ db/ctsvc_db_plugin_activity_photo.c
+ db/ctsvc_db_plugin_address_helper.c
+ db/ctsvc_db_plugin_address.c
+ db/ctsvc_db_plugin_addressbook_helper.c
+ db/ctsvc_db_plugin_addressbook.c
+ db/ctsvc_db_plugin_company_helper.c
+ db/ctsvc_db_plugin_company.c
+ db/ctsvc_db_plugin_contact_helper.c
+ db/ctsvc_db_plugin_contact.c
+ db/ctsvc_db_plugin_my_profile.c
+ db/ctsvc_db_plugin_email_helper.c
+ db/ctsvc_db_plugin_email.c
+ db/ctsvc_db_plugin_event_helper.c
+ db/ctsvc_db_plugin_event.c
+ db/ctsvc_db_plugin_extension_helper.c
+ db/ctsvc_db_plugin_extension.c
+ db/ctsvc_db_plugin_group_helper.c
+ db/ctsvc_db_plugin_group.c
+ db/ctsvc_db_plugin_grouprelation.c
+ db/ctsvc_db_plugin_image_helper.c
+ db/ctsvc_db_plugin_image.c
+ db/ctsvc_db_plugin_messenger_helper.c
+ db/ctsvc_db_plugin_messenger.c
+ db/ctsvc_db_plugin_name_helper.c
+ db/ctsvc_db_plugin_name.c
+ db/ctsvc_db_plugin_nickname_helper.c
+ db/ctsvc_db_plugin_nickname.c
+ db/ctsvc_db_plugin_note_helper.c
+ db/ctsvc_db_plugin_note.c
+ db/ctsvc_db_plugin_number_helper.c
+ db/ctsvc_db_plugin_number.c
+ db/ctsvc_db_plugin_person_helper.c
+ db/ctsvc_db_plugin_person.c
+ db/ctsvc_db_plugin_profile_helper.c
+ db/ctsvc_db_plugin_profile.c
+ db/ctsvc_db_plugin_relationship_helper.c
+ db/ctsvc_db_plugin_relationship.c
+ db/ctsvc_db_plugin_simple_contact.c
+ db/ctsvc_db_plugin_url_helper.c
+ db/ctsvc_db_plugin_url.c
+ db/ctsvc_db_plugin_sdn.c
+ db/ctsvc_db_plugin_speeddial.c
+ db/ctsvc_db_query.c
+ db/ctsvc_db_sqlite.c
+ db/ctsvc_db_utils.c
+
+ ctsvc_localize_jp.c
+ ctsvc_localize_kor.c
+ ctsvc_localize_ch.c
+ ctsvc_localize.c
+ ctsvc_normalize.c
+ ctsvc_number_utils.c
+
+ ctsvc_notification.c
+ ctsvc_server_activity.c
+ ctsvc_server_group.c
+ ctsvc_server_person.c
+ ctsvc_server_service.c
+ ctsvc_server_setting.c
ctsvc_ipc_server.c
ctsvc_ipc_server2.c
ctsvc_schema_recovery.c
ctsvc_server_update.c
ctsvc_server_bg.c
+ ctsvc_server_zone.c
ctsvc_server.c
-)
-
-IF( ENABLE_SIM_FEATURE )
-SET(SRCS ${SRCS}
- ${CMAKE_SOURCE_DIR}/common/ipc/ctsvc_ipc_sdn.c
- ${CMAKE_SOURCE_DIR}/common/ctsvc_record_sdn.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_sdn.c
- ${CMAKE_SOURCE_DIR}/common/ipc/ctsvc_ipc_speeddial.c
- ${CMAKE_SOURCE_DIR}/common/ctsvc_record_speeddial.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_speeddial.c
ctsvc_server_sim.c
)
-ENDIF( ENABLE_SIM_FEATURE )
-IF( ENABLE_LOG_FEATURE )
+IF(ENABLE_LOG_FEATURE)
SET(SRCS ${SRCS}
${CMAKE_SOURCE_DIR}/common/ipc/ctsvc_ipc_phonelog.c
${CMAKE_SOURCE_DIR}/common/ctsvc_record_phonelog.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_db_plugin_phonelog.c
- ${CMAKE_SOURCE_DIR}/native/ctsvc_phonelog.c
+
+ db/ctsvc_db_plugin_phonelog.c
+ ctsvc_server_phonelog.c
)
-ENDIF( ENABLE_LOG_FEATURE )
+ENDIF(ENABLE_LOG_FEATURE)
INCLUDE(FindPkgConfig)
-IF (CTS_MOBILE)
- ADD_DEFINITIONS("-DCTS_MOBILE")
- pkg_check_modules(ctsvc_server_pkgs REQUIRED glib-2.0 pims-ipc gobject-2.0 tapi dlog capi-media-image-util libexif libsmack icu-i18n capi-system-info accounts-svc)
-ELSE (CTS_MOBILE)
- pkg_check_modules(ctsvc_server_pkgs REQUIRED glib-2.0 pims-ipc gobject-2.0 tapi dlog capi-media-image-util libexif libsmack icu-i18n capi-system-info)
-ENDIF (CTS_MOBILE)
+pkg_check_modules(ctsvc_server_pkgs REQUIRED
+ tapi
+ capi-media-image-util
+ accounts-svc
+ libexif
+ libsmack
+ capi-system-info
+)
FOREACH(flag ${ctsvc_server_pkgs_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
#include "contacts.h"
-#include "ctsvc_service.h"
+#include "ctsvc_handle.h"
+#include "ctsvc_server_service.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_ipc_marshal.h"
#include "ctsvc_internal.h"
#include "ctsvc_ipc_server.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_server_utils.h"
+#include "ctsvc_server_zone.h"
+#include "ctsvc_server_service.h"
void ctsvc_ipc_server_connect(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
{
char *cookie = NULL;
char *buf = NULL;
gsize buf_len;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
if (indata) {
- // Access control : get cookie from indata
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail");
+ goto ERROR_RETURN;
+ }
+
+ /* Access control : get cookie from indata */
ret = ctsvc_ipc_unmarshal_unsigned_int(indata, &cookie_size);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_marshal_int fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_string(indata, &buf);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_string fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_string Fail");
goto ERROR_RETURN;
}
cookie = (char*)g_base64_decode((const gchar*)buf, &buf_len);
smack_label = security_server_get_smacklabel_cookie(cookie);
if (NULL == smack_label) {
- CTS_ERR("security_server_get_smacklabel_cookie fail");
+ CTS_ERR("security_server_get_smacklabel_cookie Fail");
ret = CONTACTS_ERROR_SYSTEM;
goto ERROR_RETURN;
}
}
else {
- CTS_ERR("There is no indata fail");
+ CTS_ERR("There is no indata Fail");
ret = CONTACTS_ERROR_SYSTEM;
goto ERROR_RETURN;
}
- ret = contacts_connect();
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+ ret = ctsvc_connect(zone_name);
if (CONTACTS_ERROR_NONE == ret)
- ctsvc_set_client_access_info(smack_label, cookie);
+ ctsvc_set_client_access_info(zone_name, smack_label, cookie);
ERROR_RETURN:
if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata) {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto DATA_FREE;
}
}
CTS_ERR("outdata is NULL");
}
DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
free(smack_label);
free(cookie);
free(buf);
void ctsvc_ipc_server_disconnect(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
{
int ret = CONTACTS_ERROR_NONE;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
- ret = contacts_disconnect();
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ ret = CONTACTS_ERROR_IPC;
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- // related data will be freed in __ctsvc_client_disconnected_cb
-// if (ret == CONTACTS_ERROR_NONE)
-// ctsvc_unset_client_access_info();
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
- if (outdata)
- {
+ ret = ctsvc_disconnect(zone_name);
+ERROR_RETURN:
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
- return;
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
- return;
+DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ ctsvc_server_trim_memory();
+ ctsvc_server_start_timeout();
}
void ctsvc_ipc_server_check_permission(pims_ipc_h ipc, pims_ipc_data_h indata,
{
int ret = CONTACTS_ERROR_NONE;
int permission;
- bool result;
+ bool result = false;
+ char *zone_name = NULL;
if (NULL == indata) {
ret = CONTACTS_ERROR_INVALID_PARAMETER;
- CTS_ERR("check permission fail.");
+ CTS_ERR("check permission Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata, &permission);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
- result = ctsvc_have_permission(permission);
+ /* TODO: Fixme - contact handle */
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ result = ctsvc_have_permission(zone_name, permission);
ERROR_RETURN:
*outdata = pims_ipc_data_create(0);
- if (!*outdata) {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ ctsvc_server_start_timeout();
return;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail (return value)");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ ctsvc_server_start_timeout();
return;
}
if (ret == CONTACTS_ERROR_NONE) {
- if (pims_ipc_data_put(*outdata, (void*)&result, sizeof(bool)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_bool(result, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail (id)");
+ CTS_ERR("ctsvc_ipc_marshal_bool() Fail");
+ ctsvc_server_start_timeout();
return;
}
}
+ ctsvc_server_start_timeout();
}
void ctsvc_ipc_server_db_insert_record(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
int ret = CONTACTS_ERROR_NONE;
contacts_record_h record = NULL;
int id = 0;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
+
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ ret = CONTACTS_ERROR_IPC;
+ goto ERROR_RETURN;
+ }
- if (indata)
- {
ret = ctsvc_ipc_unmarshal_record(indata,&record);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_record fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
record = NULL;
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_server_db_insert_record fail");
+ else {
+ CTS_ERR("ctsvc_ipc_server_db_insert_record Fail");
goto ERROR_RETURN;
}
- ret = contacts_db_insert_record(record, &id);
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- if (outdata)
- {
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+ ret = ctsvc_db_insert_record(zone_name, record, &id);
+
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
ret = CONTACTS_ERROR_OUT_OF_MEMORY;
goto ERROR_RETURN;
}
- if (ctsvc_ipc_marshal_int(id,*outdata) != CONTACTS_ERROR_NONE)
- {
+ if (ctsvc_ipc_marshal_int(id,*outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
- CTS_ERR("ctsvc_ipc_marshal fail");
+ CTS_ERR("ctsvc_ipc_marshal Fail");
ret = CONTACTS_ERROR_OUT_OF_MEMORY;
goto ERROR_RETURN;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
goto DATA_FREE;
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
DATA_FREE:
- if (record)
- {
- contacts_record_destroy(record,true);
- }
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ contacts_record_destroy(record,true);
+ ctsvc_server_trim_memory();
+ ctsvc_server_start_timeout();
return;
}
char* view_uri = NULL;
int id = 0;
contacts_record_h record = NULL;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
- if (indata)
- {
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ ret = CONTACTS_ERROR_IPC;
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_string(indata,&view_uri);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_string fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_string Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata,&id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_server_db_insert_record fail");
+ else {
+ CTS_ERR("ctsvc_ipc_server_db_insert_record Fail");
+ goto ERROR_RETURN;
+ }
+
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
goto ERROR_RETURN;
}
- ret = contacts_db_get_record(view_uri,id,&record);
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_db_get_record(zone_name, view_uri,id,&record);
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
- if ( CONTACTS_ERROR_NO_DATA == ret )
- {
+ if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_DBG("no data");
}
- else if( CONTACTS_ERROR_NONE == ret )
- {
- if( ctsvc_ipc_marshal_record(record, *outdata) != CONTACTS_ERROR_NONE )
- {
+ else if (CONTACTS_ERROR_NONE == ret) {
+ if (ctsvc_ipc_marshal_record(record, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_record fail");
+ CTS_ERR("ctsvc_ipc_marshal_record Fail");
goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
DATA_FREE:
- if (record)
- {
- contacts_record_destroy(record,true);
- }
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ contacts_record_destroy(record,true);
CONTACTS_FREE(view_uri);
+ ctsvc_server_start_timeout();
return;
}
{
int ret = CONTACTS_ERROR_NONE;
contacts_record_h record = NULL;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
- if (indata)
- {
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ ret = CONTACTS_ERROR_IPC;
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_record(indata,&record);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_record fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_server_db_insert_record fail");
+ else {
+ CTS_ERR("ctsvc_ipc_server_db_insert_record Fail");
goto ERROR_RETURN;
}
- ret = contacts_db_update_record(record);
- if (outdata)
- {
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_db_update_record(zone_name, record);
+
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
ret = CONTACTS_ERROR_OUT_OF_MEMORY;
goto ERROR_RETURN;
}
goto DATA_FREE;
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
DATA_FREE:
- if (record)
- {
- contacts_record_destroy(record,true);
- }
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ contacts_record_destroy(record,true);
+ ctsvc_server_trim_memory();
+ ctsvc_server_start_timeout();
return;
}
int ret = CONTACTS_ERROR_NONE;
char* view_uri = NULL;
int id = 0;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
- if (indata)
- {
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ ret = CONTACTS_ERROR_IPC;
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_string(indata,&view_uri);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_record fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata,&id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_server_db_insert_record fail");
+ else {
+ CTS_ERR("ctsvc_ipc_server_db_insert_record Fail");
goto ERROR_RETURN;
}
- ret = contacts_db_delete_record(view_uri,id);
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- if (outdata)
- {
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_db_delete_record(zone_name, view_uri,id);
+
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
ret = CONTACTS_ERROR_OUT_OF_MEMORY;
goto ERROR_RETURN;
}
goto DATA_FREE;
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
DATA_FREE:
-
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
CONTACTS_FREE(view_uri);
+ ctsvc_server_start_timeout();
return;
}
int ret = CONTACTS_ERROR_NONE;
contacts_record_h record = NULL;
int id = 0;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ ret = CONTACTS_ERROR_IPC;
+ goto ERROR_RETURN;
+ }
+
ret = ctsvc_ipc_unmarshal_record(indata, &record);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_record fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
record = NULL;
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata, &id);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
else {
- CTS_ERR("ctsvc_ipc_server_db_replace_record fail");
+ CTS_ERR("ctsvc_ipc_server_db_replace_record Fail");
+ goto ERROR_RETURN;
+ }
+
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
goto ERROR_RETURN;
}
- ret = contacts_db_replace_record(record, id);
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_db_replace_record(zone_name, record, id);
if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata) {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0) {
+
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
ret = CONTACTS_ERROR_OUT_OF_MEMORY;
goto ERROR_RETURN;
}
ERROR_RETURN:
if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata) {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
}
DATA_FREE:
- if (record)
- contacts_record_destroy(record, true);
-
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ contacts_record_destroy(record, true);
+ ctsvc_server_start_timeout();
return;
}
int offset = 0;
int limit = 0;
contacts_list_h list = NULL;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
+
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ ret = CONTACTS_ERROR_IPC;
+ goto ERROR_RETURN;
+ }
- if (indata)
- {
ret = ctsvc_ipc_unmarshal_string(indata,&view_uri);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_record fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata,&offset);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata,&limit);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_server_db_insert_record fail");
+ else {
+ CTS_ERR("ctsvc_ipc_server_db_insert_record Fail");
goto ERROR_RETURN;
}
- ret = contacts_db_get_all_records(view_uri,offset,limit,&list);
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- if (outdata)
- {
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_db_get_all_records(zone_name, view_uri,offset,limit,&list);
+
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
- if ( CONTACTS_ERROR_NO_DATA == ret )
- {
+ if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_DBG("no data");
}
- else if( CONTACTS_ERROR_NONE == ret )
- {
+ else if (CONTACTS_ERROR_NONE == ret) {
ret = ctsvc_ipc_marshal_list(list,*outdata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
goto DATA_FREE;
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
DATA_FREE:
-
- if (list)
- {
- contacts_list_destroy(list,true);
- }
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ contacts_list_destroy(list,true);
CONTACTS_FREE(view_uri);
+ ctsvc_server_start_timeout();
return;
}
int offset = 0;
int limit = 0;
contacts_list_h list = NULL;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
+
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- if (indata)
- {
ret = ctsvc_ipc_unmarshal_query(indata,&query);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_record fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata,&offset);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata,&limit);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_server_db_insert_record fail");
+ else {
+ CTS_ERR("ctsvc_ipc_server_db_insert_record Fail");
+ goto ERROR_RETURN;
+ }
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
goto ERROR_RETURN;
}
- ret = contacts_db_get_records_with_query(query,offset,limit,&list);
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_db_get_records_with_query(zone_name, query, offset, limit, &list);
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
- if ( CONTACTS_ERROR_NO_DATA == ret )
- {
+ if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_DBG("no data");
}
- else if( CONTACTS_ERROR_NONE == ret )
- {
+ else if (CONTACTS_ERROR_NONE == ret) {
ret = ctsvc_ipc_marshal_list(list,*outdata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
goto DATA_FREE;
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
DATA_FREE:
-
- if (list)
- {
- contacts_list_destroy(list,true);
- }
- if (query)
- {
- contacts_query_destroy(query);
- }
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ contacts_list_destroy(list,true);
+ contacts_query_destroy(query);
+ ctsvc_server_start_timeout();
return;
}
int ret = CONTACTS_ERROR_NONE;
char* view_uri = NULL;
int count = 0;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
+
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- if (indata)
- {
ret = ctsvc_ipc_unmarshal_string(indata,&view_uri);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_record fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_server_db_insert_record fail");
+ else {
+ CTS_ERR("ctsvc_ipc_server_db_insert_record Fail");
goto ERROR_RETURN;
}
- ret = contacts_db_get_count(view_uri,&count);
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- if (outdata)
- {
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+
+ ret = ctsvc_db_get_count(zone_name, view_uri,&count);
+
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
- if ( CONTACTS_ERROR_NO_DATA == ret )
- {
+ if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_DBG("no data");
}
- else if( CONTACTS_ERROR_NONE == ret )
- {
+ else if (CONTACTS_ERROR_NONE == ret) {
ret = ctsvc_ipc_marshal_int(count,*outdata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
goto DATA_FREE;
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
CONTACTS_FREE(view_uri);
+ ctsvc_server_start_timeout();
return;
}
int ret = CONTACTS_ERROR_NONE;
contacts_query_h query = NULL;
int count = 0;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
+
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- if (indata)
- {
ret = ctsvc_ipc_unmarshal_query(indata,&query);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_record fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_server_db_insert_record fail");
+ else {
+ CTS_ERR("ctsvc_ipc_server_db_insert_record Fail");
goto ERROR_RETURN;
}
- ret = contacts_db_get_count_with_query(query,&count);
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- if (outdata)
- {
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+
+
+ ret = ctsvc_db_get_count_with_query(zone_name, query,&count);
+
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
- if ( CONTACTS_ERROR_NO_DATA == ret )
- {
+ if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_DBG("no data");
}
- else if( CONTACTS_ERROR_NONE == ret )
- {
+ else if (CONTACTS_ERROR_NONE == ret) {
ret = ctsvc_ipc_marshal_int(count,*outdata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
goto DATA_FREE;
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
DATA_FREE:
- if (query)
- {
- contacts_query_destroy(query);
- }
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ contacts_query_destroy(query);
+ ctsvc_server_start_timeout();
return;
}
{
int ret = CONTACTS_ERROR_NONE;
contacts_list_h list = NULL;
- unsigned int id_count = 0;
+ int id_count = 0;
int *ids = NULL;
int i=0;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
+
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- if (indata)
- {
ret = ctsvc_ipc_unmarshal_list(indata,&list);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_list fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_list Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_server_db_insert_record fail");
+ else {
+ CTS_ERR("ctsvc_ipc_server_db_insert_record Fail");
goto ERROR_RETURN;
}
- ret = ctsvc_db_insert_records(list, &ids, &id_count);
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- if (outdata)
- {
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+
+ ret = ctsvc_db_insert_records(zone_name, list, &ids, &id_count);
+
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
- if(ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ if (ret == CONTACTS_ERROR_NONE) {
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
ret = CONTACTS_ERROR_OUT_OF_MEMORY;
goto ERROR_RETURN;
}
- // marshal : id_count+property_id+[ids]*id_count
- // id_count
- if (pims_ipc_data_put(*outdata,(void*)&id_count,sizeof(int)) != 0)
- {
+ /* marshal : id_count+property_id+[ids]*id_count */
+ /* id_count */
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(id_count, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
ret = CONTACTS_ERROR_OUT_OF_MEMORY;
goto ERROR_RETURN;
}
- for(i=0;i<id_count;i++)
- {
- // marshal ids
- if (pims_ipc_data_put(*outdata,(void*)&ids[i],sizeof(int)) != 0)
- {
+ for (i=0;i<id_count;i++) {
+ /* marshal ids */
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ids[i], *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
ret = CONTACTS_ERROR_OUT_OF_MEMORY;
goto ERROR_RETURN;
}
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
goto DATA_FREE;
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
DATA_FREE:
- if (list)
- {
- contacts_list_destroy(list,true);
- }
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ contacts_list_destroy(list,true);
CONTACTS_FREE(ids);
+ ctsvc_server_start_timeout();
return;
}
{
int ret = CONTACTS_ERROR_NONE;
contacts_list_h list = NULL;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
+
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- if (indata)
- {
ret = ctsvc_ipc_unmarshal_list(indata,&list);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_list fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_list Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_server_db_insert_record fail");
+ else {
+ CTS_ERR("ctsvc_ipc_server_db_insert_record Fail");
+ goto ERROR_RETURN;
+ }
+
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
goto ERROR_RETURN;
}
- ret = contacts_db_update_records(list);
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+
+
+ ret = ctsvc_db_update_records(zone_name, list);
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
ret = CONTACTS_ERROR_OUT_OF_MEMORY;
goto ERROR_RETURN;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
goto DATA_FREE;
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
DATA_FREE:
- if (list)
- {
- contacts_list_destroy(list,true);
- }
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ contacts_list_destroy(list,true);
+ ctsvc_server_start_timeout();
return;
}
int *ids = NULL;
char *uri = NULL;
int i = 0;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
+
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- if (indata)
- {
ret = ctsvc_ipc_unmarshal_string(indata,&uri);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_string fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_string Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata,&count);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
- if (count <=0)
- {
+ if (count <=0) {
ret = CONTACTS_ERROR_INVALID_PARAMETER;
goto ERROR_RETURN;
}
ids = (int*)malloc(sizeof(int)*count);
- for(i=0;i<count;i++)
- {
+ for (i=0;i<count;i++) {
ret = ctsvc_ipc_unmarshal_int(indata,&ids[i]);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_server_db_insert_record fail");
+ else {
+ CTS_ERR("ctsvc_ipc_server_db_insert_record Fail");
goto ERROR_RETURN;
}
- ret = contacts_db_delete_records(uri, ids, count);
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
- if (outdata)
- {
+ ret = ctsvc_db_delete_records(zone_name, uri, ids, count);
+
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
- goto DATA_FREE;
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
ret = CONTACTS_ERROR_OUT_OF_MEMORY;
goto ERROR_RETURN;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
goto DATA_FREE;
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
CONTACTS_FREE(uri);
CONTACTS_FREE(ids);
+ ctsvc_server_start_timeout();
return;
}
int count = 0;
int *ids = NULL;
int i=0;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
ret = ctsvc_ipc_unmarshal_list(indata, &list);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_list fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_list Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata, &count);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
ids = (int*)malloc(sizeof(int)*count);
- for(i=0;i<count;i++) {
+ for (i=0;i<count;i++) {
ret = ctsvc_ipc_unmarshal_int(indata, &ids[i]);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
}
else {
- CTS_ERR("ctsvc_ipc_server_db_repalce_records fail");
+ CTS_ERR("ctsvc_ipc_server_db_repalce_records Fail");
goto ERROR_RETURN;
}
- ret = ctsvc_db_replace_records(list, ids, count);
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+
+ ret = ctsvc_db_replace_records(zone_name, list, ids, count);
if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata) {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
ret = CONTACTS_ERROR_OUT_OF_MEMORY;
goto ERROR_RETURN;
}
ERROR_RETURN:
if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata) {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
CTS_ERR("outdata is NULL");
}
DATA_FREE:
- if (list) {
- contacts_list_destroy(list,true);
- }
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ contacts_list_destroy(list,true);
CONTACTS_FREE(ids);
+ ctsvc_server_start_timeout();
return;
}
int contacts_db_version = 0;
contacts_list_h record_list = NULL;
int current_contacts_db_version = 0;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
+
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- if (indata)
- {
ret = ctsvc_ipc_unmarshal_string(indata,&view_uri);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_string fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_string Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata, &address_book_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata,&contacts_db_version);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_server_db_insert_record fail");
+ else {
+ CTS_ERR("ctsvc_ipc_server_db_insert_record Fail");
goto ERROR_RETURN;
}
- ret = contacts_db_get_changes_by_version(view_uri, address_book_id,contacts_db_version,&record_list,¤t_contacts_db_version);
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
- if (outdata)
- {
+ ret = ctsvc_db_get_changes_by_version(zone_name, view_uri, address_book_id,contacts_db_version,&record_list,¤t_contacts_db_version);
+
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
- if ( CONTACTS_ERROR_NO_DATA == ret )
- {
+ if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_DBG("no data");
}
- else if( CONTACTS_ERROR_NONE == ret )
- {
+ else if (CONTACTS_ERROR_NONE == ret) {
ret = ctsvc_ipc_marshal_list(record_list,*outdata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_marshal_list fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_list Fail");
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
ret = CONTACTS_ERROR_OUT_OF_MEMORY;
goto ERROR_RETURN;
}
ret = ctsvc_ipc_marshal_int(current_contacts_db_version,*outdata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_marshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
ret = CONTACTS_ERROR_OUT_OF_MEMORY;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
goto DATA_FREE;
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
DATA_FREE:
- if (record_list)
- {
- contacts_list_destroy(record_list,true);
- }
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ contacts_list_destroy(record_list,true);
CONTACTS_FREE(view_uri);
+ ctsvc_server_start_timeout();
return;
}
{
int ret = CONTACTS_ERROR_NONE;
int contacts_db_version = 0;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
+
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- ret = contacts_db_get_current_version(&contacts_db_version);
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
- if (outdata)
- {
+
+
+ ret = ctsvc_db_get_current_version(zone_name, &contacts_db_version);
+
+ERROR_RETURN:
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
- return;
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
- if ( CONTACTS_ERROR_NO_DATA == ret )
- {
+ if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_DBG("no data");
}
- else if( CONTACTS_ERROR_NONE == ret )
- {
+ else if (CONTACTS_ERROR_NONE == ret) {
ret = ctsvc_ipc_marshal_int(contacts_db_version,*outdata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_marshal_int fail");
- return;
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
+
+DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ ctsvc_server_start_timeout();
return;
}
int offset = 0;
int limit = 0;
contacts_list_h list = NULL;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
- if (indata)
- {
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_string(indata,&view_uri);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_record fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail(%d)", ret);
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_string(indata,&keyword);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_record fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail(%d)", ret);
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata,&offset);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail(%d)", ret);
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata,&limit);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail(%d)", ret);
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_server_db_insert_record fail");
+ else {
+ CTS_ERR("ctsvc_ipc_server_db_insert_record Fail");
goto ERROR_RETURN;
}
- ret = contacts_db_search_records(view_uri, keyword, offset,limit,&list);
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- if (outdata)
- {
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+
+ ret = ctsvc_db_search_records(zone_name, view_uri, keyword, offset,limit,&list);
+
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
- if ( CONTACTS_ERROR_NO_DATA == ret )
- {
+ if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_DBG("no data");
}
- else if( CONTACTS_ERROR_NONE == ret )
- {
+ else if (CONTACTS_ERROR_NONE == ret) {
ret = ctsvc_ipc_marshal_list(list,*outdata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
goto DATA_FREE;
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
DATA_FREE:
-
- if (list)
- {
- contacts_list_destroy(list,true);
- }
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ contacts_list_destroy(list,true);
CONTACTS_FREE(view_uri);
CONTACTS_FREE(keyword);
+ ctsvc_server_start_timeout();
return;
}
int limit = 0;
int range = 0;
contacts_list_h list = NULL;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_string(indata,&view_uri);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_record fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_string(indata,&keyword);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_record fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata,&offset);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata,&limit);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata,&range);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
else {
- CTS_ERR("ctsvc_ipc_server_db_insert_record fail");
+ CTS_ERR("ctsvc_ipc_server_db_insert_record() Fail");
+ goto ERROR_RETURN;
+ }
+
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
goto ERROR_RETURN;
}
- ret = contacts_db_search_records_with_range(view_uri, keyword, offset,limit,range, &list);
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+
+ ret = ctsvc_db_search_records_with_range(zone_name, view_uri, keyword, offset,limit,range, &list);
if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata) {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_DBG("no data");
}
- else if(CONTACTS_ERROR_NONE == ret) {
+ else if (CONTACTS_ERROR_NONE == ret) {
ret = ctsvc_ipc_marshal_list(list,*outdata);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto DATA_FREE;
}
}
ERROR_RETURN:
if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata) {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
}
DATA_FREE:
-
- if (list)
- contacts_list_destroy(list,true);
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ contacts_list_destroy(list,true);
free(view_uri);
free(keyword);
+ ctsvc_server_start_timeout();
return;
}
int offset = 0;
int limit = 0;
contacts_list_h list = NULL;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
- if (indata)
- {
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_query(indata,&query);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_record fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_string(indata,&keyword);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_record fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_record() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata,&offset);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata,&limit);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_server_db_insert_record fail");
+ else {
+ CTS_ERR("ctsvc_ipc_server_db_insert_record Fail");
goto ERROR_RETURN;
}
- ret = contacts_db_search_records_with_query(query, keyword, offset,limit,&list);
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- if (outdata)
- {
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+
+ ret = ctsvc_db_search_records_with_query(zone_name, query, keyword, offset,limit,&list);
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
- if ( CONTACTS_ERROR_NO_DATA == ret )
- {
+ if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_DBG("no data");
}
- else if( CONTACTS_ERROR_NONE == ret )
- {
- ret = ctsvc_ipc_marshal_list(list,*outdata);
+ else if (CONTACTS_ERROR_NONE == ret) {
+ ret = ctsvc_ipc_marshal_list(list, *outdata);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_marshal_list Fail");
goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
goto DATA_FREE;
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata,(void*)&ret,sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
DATA_FREE:
-
- if (list)
- {
- contacts_list_destroy(list,true);
- }
- if (query)
- {
- contacts_query_destroy(query);
- }
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ contacts_list_destroy(list,true);
+ contacts_query_destroy(query);
CONTACTS_FREE(keyword);
-
+ ctsvc_server_start_timeout();
return;
}
{
int ret = CONTACTS_ERROR_NONE;
contacts_db_status_e status;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
- RETM_IF(outdata == NULL, "outdata is NULL");
-
- *outdata = pims_ipc_data_create(0);
- if (!*outdata) {
- CTS_ERR("pims_ipc_data_create fail");
- return;
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
}
- ret = contacts_db_get_status(&status);
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0) {
- pims_ipc_data_destroy(*outdata);
- *outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail (return value)");
- return;
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
}
- if (pims_ipc_data_put(*outdata, (void*)&status, sizeof(int)) != 0) {
- pims_ipc_data_destroy(*outdata);
- *outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail (id)");
- return;
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
}
+
+ ret = ctsvc_db_get_status(zone_name, &status);
+
+ERROR_RETURN:
+ if (outdata) {
+ *outdata = pims_ipc_data_create(0);
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ goto DATA_FREE;
+ }
+
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
+ pims_ipc_data_destroy(*outdata);
+ *outdata = NULL;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
+ }
+
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(status, *outdata)) {
+ pims_ipc_data_destroy(*outdata);
+ *outdata = NULL;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
+ }
+ }
+ else {
+ CTS_ERR("outdata is NULL");
+ }
+DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ ctsvc_server_start_timeout();
return;
}
#include "contacts.h"
#ifdef ENABLE_LOG_FEATURE
#include "contacts_phone_log_internal.h"
-#endif //ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
-#include "ctsvc_service.h"
+#include "ctsvc_server_service.h"
#include "ctsvc_db_init.h"
+#include "ctsvc_server_activity.h"
+#include "ctsvc_server_person.h"
+#include "ctsvc_server_group.h"
+#include "ctsvc_server_phonelog.h"
#include "ctsvc_ipc_marshal.h"
#include "ctsvc_internal.h"
#include "ctsvc_ipc_server.h"
-#include "ctsvc_utils.h"
-
+#include "ctsvc_db_utils.h"
+#include "ctsvc_handle.h"
+#include "ctsvc_server_utils.h"
+#include "ctsvc_server_zone.h"
+#include "ctsvc_server_setting.h"
void ctsvc_ipc_activity_delete_by_contact_id(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
{
int ret = CONTACTS_ERROR_NONE;
int contact_id = 0;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
- if (indata)
- {
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_int(indata, &contact_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_server_db_insert_record fail");
+ else {
+ CTS_ERR("ctsvc_ipc_server_db_insert_record() Fail");
goto ERROR_RETURN;
}
- ret = contacts_activity_delete_by_contact_id(contact_id);
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_activity_delete_by_contact_id(zone_name, contact_id);
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
- return;
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
- {
+
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
-
+DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ ctsvc_server_start_timeout();
return;
}
{
int ret = CONTACTS_ERROR_NONE;
int account_id = 0;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
- if (indata)
- {
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_int(indata, &account_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_activity_delete_by_account_id fail");
+ else {
+ CTS_ERR("ctsvc_ipc_activity_delete_by_account_id() Fail");
+ goto ERROR_RETURN;
+ }
+
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
goto ERROR_RETURN;
}
- ret = contacts_activity_delete_by_account_id(account_id);
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_activity_delete_by_account_id(zone_name, account_id);
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
- return;
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
-
+DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ ctsvc_server_start_timeout();
return;
}
int ret = CONTACTS_ERROR_NONE;
int group_id = 0;
int contact_id = 0;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
- if (indata)
- {
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_int(indata, &group_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata, &contact_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_group_add_contact fail");
+ else {
+ CTS_ERR("ctsvc_ipc_group_add_contact() Fail");
goto ERROR_RETURN;
}
- ret = contacts_group_add_contact(group_id, contact_id);
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_group_add_contact(zone_name, group_id, contact_id);
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
- return;
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
-
+DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ ctsvc_server_start_timeout();
return;
}
int ret = CONTACTS_ERROR_NONE;
int group_id = 0;
int contact_id = 0;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
- if (indata)
- {
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_int(indata, &group_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata, &contact_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_group_remove_contact fail");
+ else {
+ CTS_ERR("ctsvc_ipc_group_remove_contact() Fail");
goto ERROR_RETURN;
}
- ret = contacts_group_remove_contact(group_id, contact_id);
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_group_remove_contact(zone_name, group_id, contact_id);
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
- return;
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
-
+DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ ctsvc_server_start_timeout();
return;
}
int group_id = 0;
int previous_group_id;
int next_group_id;
-
- if (indata)
- {
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_int(indata, &group_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata, &previous_group_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata, &next_group_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_group_link_group fail");
+ else {
+ CTS_ERR("ctsvc_ipc_group_link_group() Fail");
goto ERROR_RETURN;
}
- ret = contacts_group_set_group_order(group_id, previous_group_id, next_group_id );
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_group_set_group_order(zone_name, group_id, previous_group_id, next_group_id);
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
- return;
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
-
+DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ ctsvc_server_start_timeout();
return;
}
int ret = CONTACTS_ERROR_NONE;
int base_person_id = 0;
int person_id = 0;
-
- if (indata)
- {
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_int(indata, &base_person_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata, &person_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_person_link_person fail");
+ else {
+ CTS_ERR("ctsvc_ipc_person_link_person() Fail");
goto ERROR_RETURN;
}
- ret = contacts_person_link_person(base_person_id, person_id);
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_person_link_person(zone_name, base_person_id, person_id);
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
- return;
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
-
+DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ ctsvc_server_start_timeout();
return;
}
void ctsvc_ipc_person_unlink_contact(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
int ret = CONTACTS_ERROR_NONE;
int person_id = 0;
int contact_id = 0;
-
- if (indata)
- {
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_int(indata, &person_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata, &contact_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_person_link_person fail");
+ else {
+ CTS_ERR("ctsvc_ipc_person_link_person() Fail");
+ goto ERROR_RETURN;
+ }
+
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
goto ERROR_RETURN;
}
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
int unlinked_person_id;
- ret = contacts_person_unlink_contact(person_id, contact_id, &unlinked_person_id);
+ ret = ctsvc_person_unlink_contact(zone_name, person_id, contact_id, &unlinked_person_id);
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
- return;
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
}
- if (pims_ipc_data_put(*outdata, (void*)&unlinked_person_id, sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(unlinked_person_id, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
-
+DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ ctsvc_server_start_timeout();
return;
}
void ctsvc_ipc_person_reset_usage(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
int ret = CONTACTS_ERROR_NONE;
int person_id = 0;
contacts_usage_type_e type;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
- if (indata)
- {
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_int(indata, &person_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
int temp = 0;
ret = ctsvc_ipc_unmarshal_int(indata, &temp);
type = (int)temp;
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_person_link_person fail");
+ else {
+ CTS_ERR("ctsvc_ipc_person_link_person() Fail");
goto ERROR_RETURN;
}
- ret = contacts_person_reset_usage(person_id, type);
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+ ret = ctsvc_person_reset_usage(zone_name, person_id, type);
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
- return;
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
-
+DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ ctsvc_server_start_timeout();
return;
}
void ctsvc_ipc_person_set_favorite_order(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
int person_id = 0;
int previous_person_id;
int next_person_id;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
- if (indata)
- {
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_int(indata, &person_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata, &previous_person_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata, &next_person_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_person_link_person fail");
+ else {
+ CTS_ERR("ctsvc_ipc_person_link_person() Fail");
goto ERROR_RETURN;
}
- ret = contacts_person_set_favorite_order(person_id, previous_person_id, next_person_id );
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_person_set_favorite_order(zone_name, person_id, previous_person_id, next_person_id);
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
- return;
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
-
+DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ ctsvc_server_start_timeout();
return;
}
int person_id = 0;
int id;
contacts_person_property_e property;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
- if (indata)
- {
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_int(indata, &person_id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_unsigned_int(indata, &property);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_int(indata, &id);
- if (ret != CONTACTS_ERROR_NONE)
- {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
- else
- {
- CTS_ERR("ctsvc_ipc_person_set_default_property fail");
+ else {
+ CTS_ERR("ctsvc_ipc_person_set_default_property() Fail");
goto ERROR_RETURN;
}
- ret = contacts_person_set_default_property(property, person_id, id );
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_person_set_default_property(zone_name, property, person_id, id);
ERROR_RETURN:
- if (outdata)
- {
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
- return;
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
-
+DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ ctsvc_server_start_timeout();
return;
}
int person_id = 0;
int id;
contacts_person_property_e op;
-
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_int(indata, &person_id);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
ret = ctsvc_ipc_unmarshal_unsigned_int(indata, &op);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
else {
- CTS_ERR("ctsvc_ipc_person_get_default_property fail");
+ CTS_ERR("ctsvc_ipc_person_get_default_property() Fail");
+ goto ERROR_RETURN;
+ }
+
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
goto ERROR_RETURN;
}
- ret = contacts_person_get_default_property(op, person_id, &id );
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_person_get_default_property(zone_name, op, person_id, &id);
ERROR_RETURN:
if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata) {
- CTS_ERR("pims_ipc_data_create fail");
- return;
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail (return value)");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail (return value)");
+ goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&id, sizeof(int)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(id, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail (id)");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail (id)");
+ goto DATA_FREE;
}
}
else {
CTS_ERR("outdata is NULL");
}
-
+DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ ctsvc_server_start_timeout();
return;
}
#ifdef ENABLE_LOG_FEATURE
void ctsvc_ipc_phone_log_reset_statistics(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata)
{
- int ret = contacts_phone_log_reset_statistics();
+ char *zone_name = NULL;
+ int ret;
+ contacts_h contact = NULL;
+
+ if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ ret = ctsvc_phone_log_reset_statistics(zone_name);
- if (outdata)
- {
+ERROR_RETURN:
+ if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata)
- {
- CTS_ERR("pims_ipc_data_create fail");
- return;
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0)
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
- return;
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ goto DATA_FREE;
}
}
}
- else
- {
+ else {
CTS_ERR("outdata is NULL");
}
-
+DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
+ ctsvc_server_start_timeout();
return;
}
int extra_data1;
char *number = NULL;
contacts_phone_log_delete_e op;
+ char *zone_name = NULL;
+ contacts_h contact = NULL;
if (indata) {
+ ret = ctsvc_ipc_unmarshal_handle(indata, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_ipc_unmarshal_handle Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
ret = ctsvc_ipc_unmarshal_int(indata, (int*)&op);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
+ goto ERROR_RETURN;
+ }
+
+ ret = ctsvc_handle_get_zone_name(contact, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_handle_get_zone_name() Fail(%d)", ret);
goto ERROR_RETURN;
}
- switch(op){
+ if (NULL == zone_name) {
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+ }
+
+ switch(op) {
case CONTACTS_PHONE_LOG_DELETE_BY_ADDRESS:
ret = ctsvc_ipc_unmarshal_string(indata, &number);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_string fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_string() Fail");
goto ERROR_RETURN;
}
- ret = contacts_phone_log_delete(op, number);
+ ret = ctsvc_phone_log_delete(zone_name, op, number);
break;
case CONTACTS_PHONE_LOG_DELETE_BY_MESSAGE_EXTRA_DATA1:
case CONTACTS_PHONE_LOG_DELETE_BY_EMAIL_EXTRA_DATA1:
ret = ctsvc_ipc_unmarshal_int(indata, &extra_data1);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
- ret = contacts_phone_log_delete(op, extra_data1);
+ ret = ctsvc_phone_log_delete(zone_name, op, extra_data1);
break;
default:
CTS_ERR("Invalid parameter : the operation is not proper (op : %d)", op);
ERROR_RETURN:
if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata) {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
goto DATA_FREE;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
if (ret == CONTACTS_ERROR_NONE) {
- int transaction_ver = ctsvc_get_transaction_ver();
+ int transaction_ver = ctsvc_get_transaction_ver(zone_name);
if (ctsvc_ipc_marshal_int(transaction_ver, *outdata) != CONTACTS_ERROR_NONE) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("ctsvc_ipc_marshal_int fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
goto DATA_FREE;
}
}
}
DATA_FREE:
+ free(zone_name);
+ ctsvc_handle_destroy(contact);
free(number);
+ ctsvc_server_start_timeout();
return;
}
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
void ctsvc_ipc_setting_get_name_display_order(pims_ipc_h ipc, pims_ipc_data_h indata,
pims_ipc_data_h *outdata, void *userdata)
{
int ret = CONTACTS_ERROR_NONE;
contacts_name_display_order_e order;
+ char *zone_name = NULL;
- ret = contacts_setting_get_name_display_order(&order);
+ /* TODO: Fixme - contact handle */
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ ret = ctsvc_setting_get_name_display_order(zone_name, &order);
+ free(zone_name);
+ERROR_RETURN:
if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata) {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ ctsvc_server_start_timeout();
return;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail (return value)");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail (return value)");
+ ctsvc_server_start_timeout();
return;
}
- if (pims_ipc_data_put(*outdata, (void*)&order, sizeof(int)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(order, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail (id)");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail (id)");
+ ctsvc_server_start_timeout();
return;
}
}
CTS_ERR("outdata is NULL");
}
+ ctsvc_server_start_timeout();
return;
}
{
int ret = CONTACTS_ERROR_NONE;
contacts_name_sorting_order_e order;
+ char *zone_name = NULL;
+
+ /* TODO: Fixme - contact handle */
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
- ret = contacts_setting_get_name_sorting_order(&order);
+ ret = ctsvc_setting_get_name_sorting_order(zone_name, &order);
+ free(zone_name);
+ERROR_RETURN:
if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata) {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ ctsvc_server_start_timeout();
return;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail (return value)");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail (return value)");
+ ctsvc_server_start_timeout();
return;
}
- if (pims_ipc_data_put(*outdata, (void*)&order, sizeof(int)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(order, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail (id)");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail (id)");
return;
}
}
CTS_ERR("outdata is NULL");
}
+ ctsvc_server_start_timeout();
return;
}
{
int ret = CONTACTS_ERROR_NONE;
int order;
+ char *zone_name = NULL;
if (indata) {
ret = ctsvc_ipc_unmarshal_int(indata, &order);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
else {
- CTS_ERR("ctsvc_ipc_person_set_default_property fail");
+ CTS_ERR("ctsvc_ipc_person_set_default_property() Fail");
goto ERROR_RETURN;
}
- ret = contacts_setting_set_name_display_order((contacts_name_display_order_e)order);
+ /* TODO: Fixme - contact handle */
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
+ goto ERROR_RETURN;
+ }
+
+ ret = ctsvc_setting_set_name_display_order(zone_name, (contacts_name_display_order_e)order);
+ free(zone_name);
ERROR_RETURN:
if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata) {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ ctsvc_server_start_timeout();
return;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ ctsvc_server_start_timeout();
return;
}
}
CTS_ERR("outdata is NULL");
}
+ ctsvc_server_start_timeout();
return;
}
{
int ret = CONTACTS_ERROR_NONE;
int order;
+ char *zone_name = NULL;
if (indata) {
ret = ctsvc_ipc_unmarshal_int(indata, &order);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_ipc_unmarshal_int fail");
+ CTS_ERR("ctsvc_ipc_unmarshal_int() Fail");
goto ERROR_RETURN;
}
}
else {
- CTS_ERR("ctsvc_ipc_person_set_default_property fail");
+ CTS_ERR("ctsvc_ipc_person_set_default_property() Fail");
+ goto ERROR_RETURN;
+ }
+
+ /* TODO: Fixme - contact handle */
+ ret = ctsvc_server_zone_get_zone_name_by_pid((int)ipc, &zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_zone_get_zone_name_by_pid() Fail(%d)", ret);
goto ERROR_RETURN;
}
- ret = contacts_setting_set_name_sorting_order((contacts_name_sorting_order_e)order);
+ ret = ctsvc_setting_set_name_sorting_order(zone_name, (contacts_name_sorting_order_e)order);
+ free(zone_name);
ERROR_RETURN:
if (outdata) {
*outdata = pims_ipc_data_create(0);
- if (!*outdata) {
- CTS_ERR("pims_ipc_data_create fail");
+ if (NULL == *outdata) {
+ CTS_ERR("pims_ipc_data_create() Fail");
+ ctsvc_server_start_timeout();
return;
}
- if (pims_ipc_data_put(*outdata, (void*)&ret, sizeof(int)) != 0) {
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(ret, *outdata)) {
pims_ipc_data_destroy(*outdata);
*outdata = NULL;
- CTS_ERR("pims_ipc_data_put fail");
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
+ ctsvc_server_start_timeout();
return;
}
}
CTS_ERR("outdata is NULL");
}
+ ctsvc_server_start_timeout();
return;
}
#ifdef ENABLE_LOG_FEATURE
void ctsvc_ipc_phone_log_reset_statistics(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata);
void ctsvc_ipc_phone_log_delete(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata);
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
void ctsvc_ipc_setting_get_name_display_order(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata);
void ctsvc_ipc_setting_set_name_display_order(pims_ipc_h ipc, pims_ipc_data_h indata, pims_ipc_data_h *outdata, void *userdata);
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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 <unicode/ustring.h>
+#include <unicode/unorm.h>
+#include <unicode/ucol.h>
+#include <unicode/uset.h>
+
+#include "ctsvc_internal.h"
+#include "ctsvc_normalize.h"
+#include "ctsvc_localize.h"
+#include "ctsvc_localize_utils.h"
+
+#include "ctsvc_localize_kor.h"
+#include "ctsvc_localize_jp.h"
+
+int ctsvc_get_sort_type_from_language(int language)
+{
+ switch(language) {
+ case CTSVC_LANG_CHINESE:
+ return CTSVC_SORT_CJK;
+ case CTSVC_LANG_JAPANESE:
+ return CTSVC_SORT_JAPANESE;
+ case CTSVC_LANG_KOREAN:
+ return CTSVC_SORT_KOREAN;
+ case CTSVC_LANG_ENGLISH:
+ return CTSVC_SORT_WESTERN;
+ case CTSVC_LANG_NUMBER:
+ return CTSVC_SORT_NUMBER;
+ case CTSVC_LANG_RUSSIAN:
+ case CTSVC_LANG_BULGARIAN:
+ case CTSVC_LANG_MACEDONIA:
+ case CTSVC_LANG_KAZAKHSTAN:
+ case CTSVC_LANG_SERBIAN:
+ case CTSVC_LANG_UKRAINE:
+ return CTSVC_SORT_CYRILLIC;
+ case CTSVC_LANG_ARMENIAN:
+ return CTSVC_SORT_ARMENIAN;
+ case CTSVC_LANG_GREEK:
+ return CTSVC_SORT_GREEK;
+ case CTSVC_LANG_ARABIC:
+ case CTSVC_LANG_PERSIAN:
+ case CTSVC_LANG_URDU:
+ return CTSVC_SORT_ARABIC;
+ case CTSVC_LANG_HINDI:
+ return CTSVC_SORT_DEVANAGARI;
+ case CTSVC_LANG_GEORGIAN:
+ return CTSVC_SORT_GEORGIAN;
+ case CTSVC_LANG_TURKISH:
+ return CTSVC_SORT_TURKISH;
+ case CTSVC_LANG_THAI:
+ return CTSVC_SORT_THAI;
+ case CTSVC_LANG_BENGALI:
+ return CTSVC_SORT_BENGALI;
+ case CTSVC_LANG_PUNJABI:
+ return CTSVC_SORT_PUNJABI;
+ case CTSVC_LANG_MALAYALAM:
+ return CTSVC_SORT_MALAYALAM;
+ case CTSVC_LANG_TELUGU:
+ return CTSVC_SORT_TELUGU;
+ case CTSVC_LANG_TAMIL:
+ return CTSVC_SORT_TAMIL;
+ case CTSVC_LANG_ORIYA:
+ return CTSVC_SORT_ORIYA;
+ case CTSVC_LANG_SINHALA:
+ return CTSVC_SORT_SINHALA;
+ case CTSVC_LANG_GUJARATI:
+ return CTSVC_SORT_GUJARATI;
+ case CTSVC_LANG_KANNADA:
+ return CTSVC_SORT_KANNADA;
+ case CTSVC_LANG_LAO:
+ return CTSVC_SORT_LAO;
+ case CTSVC_LANG_HEBREW:
+ return CTSVC_SORT_HEBREW;
+ case CTSVC_LANG_BURMESE:
+ return CTSVC_SORT_BURMESE;
+ case CTSVC_LANG_KHMER:
+ return CTSVC_SORT_KHMER;
+ case CTSVC_LANG_OTHERS:
+ return CTSVC_SORT_OTHERS;
+ default:
+ return CTSVC_SORT_WESTERN;
+ }
+}
+
+int ctsvc_get_name_sort_type(const char *src)
+{
+ UErrorCode status = 0;
+ UChar tmp_result[10];
+ int ret = CTSVC_SORT_OTHERS;
+ int char_len = 0;
+ int language_type;
+ char char_src[10];
+
+ char_len = ctsvc_check_utf8(src[0]);
+ RETVM_IF(char_len <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "check_utf8 failed");
+
+ memcpy(char_src, &src[0], char_len);
+ char_src[char_len] = '\0';
+
+ u_strFromUTF8(tmp_result, array_sizeof(tmp_result), NULL, char_src, -1, &status);
+ RETVM_IF(U_FAILURE(status), CONTACTS_ERROR_SYSTEM,
+ "u_strFromUTF8() Fail(%s)", u_errorName(status));
+
+ language_type = ctsvc_check_language(tmp_result);
+ ret = ctsvc_get_sort_type_from_language(language_type);
+
+ return ret;
+}
+
+void ctsvc_extra_normalize(UChar *word, int32_t word_size)
+{
+ int i;
+ for (i=0;i<word_size;i++) {
+ /* FF00 ~ FF60, FFE0~FFE6 : fullwidth -> halfwidth */
+ if (CTSVC_COMPARE_BETWEEN((UChar)0xFF00, word[i], (UChar)0xFF60)) {
+ int unicode_value1 = 0;
+ int unicode_value2 = 0;
+ unicode_value1 = 0x0;
+ unicode_value2 = (0xFF & word[i]) + 0x20;
+ word[i] = unicode_value1 << 8 | unicode_value2;
+ }
+ else if (ctsvc_is_hangul(word[i])) {
+ ctsvc_hangul_compatibility2jamo(&word[i]);
+ }
+ }
+}
+
+const char *ctsvc_get_language_locale(int lang)
+{
+ char *langset = ctsvc_get_langset();
+
+ switch(lang) {
+ case CTSVC_LANG_AZERBAIJAN: /* az, Azerbaijan */
+ return "az";
+ case CTSVC_LANG_ARABIC: /* ar, Bahrain - Arabic */
+ return "ar";
+ case CTSVC_LANG_BULGARIAN: /* bg, Bulgaria - Bulgarian */
+ return "bg";
+ case CTSVC_LANG_CATALAN: /* ca, Spain - Catalan */
+ return "ca";
+ case CTSVC_LANG_CZECH: /* cs, Czech Republic - Czech */
+ return "cs";
+ case CTSVC_LANG_DANISH: /* da, Denmark - Danish */
+ return "da";
+ case CTSVC_LANG_GERMAN: /* de, Germany - German */
+ return "de";
+ case CTSVC_LANG_GREEK: /* el, Greece - Greek */
+ return "el";
+ case CTSVC_LANG_ENGLISH: /* en, en_PH, en_US */
+ return "en";
+ case CTSVC_LANG_SPANISH: /* es_ES, es_US, El Salvador - Spanish */
+ return "es";
+ case CTSVC_LANG_ESTONIAN: /* et, Estonia - Estonian */
+ return "et";
+ case CTSVC_LANG_BASQUE: /* eu, Spain - Basque */
+ return "eu";
+ case CTSVC_LANG_FINNISH: /* fi, Finland - Finnish */
+ return "fi";
+ case CTSVC_LANG_FRENCH: /* fr_CA, fr_FR */
+ return "fr";
+ case CTSVC_LANG_IRISH: /* ga, Ireland - Irish */
+ return "ga";
+ case CTSVC_LANG_GALICIAN: /* gl, Spain - Galician */
+ return "gl";
+ case CTSVC_LANG_HINDI: /* hi, India - Hindi, Marathi, Nepali */
+ if (STRING_EQUAL == strncmp(langset, "hi", strlen("hi"))) {
+ return "hi";
+ }
+ else if (STRING_EQUAL == strncmp(langset, "mr", strlen("mr"))) {
+ return "mr";
+ }
+ else if (STRING_EQUAL == strncmp(langset, "ne", strlen("ne"))) {
+ return "ne";
+ }
+ return "hi";
+ case CTSVC_LANG_CROATIAN: /* hr, Bosnia and Herzegovina - Croatian */
+ return "hr";
+ case CTSVC_LANG_HUNGARIAN: /* hu, Hungary - Hungarian */
+ return "hu";
+ case CTSVC_LANG_ARMENIAN: /* hy, Armenia - Armenian */
+ return "hy";
+ case CTSVC_LANG_ICELANDIC: /* is, Iceland - Icelandic */
+ return "is";
+ case CTSVC_LANG_ITALIAN: /* it_IT, Italy - Italian */
+ return "it";
+ case CTSVC_LANG_JAPANESE: /* ja_JP, japan */
+ return "ja";
+ case CTSVC_LANG_GEORGIAN: /* ka, Georgia - Georgian */
+ return "ka";
+ case CTSVC_LANG_KAZAKHSTAN: /* kk, Kazakhstan */
+ return "kk";
+ case CTSVC_LANG_KOREAN: /* ko, ko_KR */
+ return "ko";
+ case CTSVC_LANG_LITHUANIAN: /* lt, Lithuania - Lithuanian */
+ return "lt";
+ case CTSVC_LANG_LATVIAN: /* lv, Latvia - Latvian */
+ return "lv";
+ case CTSVC_LANG_MACEDONIA: /* mk, Macedonia */
+ return "mk";
+ case CTSVC_LANG_NORWAY: /* nb, Norway */
+ return "nb";
+ case CTSVC_LANG_DUTCH: /* nl_Nl, Netherlands Dutch */
+ return "nl";
+ case CTSVC_LANG_POLISH: /* pl, Polish */
+ return "pl";
+ case CTSVC_LANG_PORTUGUESE: /* pt_BR, pt_PT, Portugal */
+ return "pt";
+ case CTSVC_LANG_ROMANIA: /* ro, Romania */
+ return "ro";
+ case CTSVC_LANG_RUSSIAN: /* ru_RU, Russia */
+ return "ru";
+ case CTSVC_LANG_SLOVAK: /* sk, Slovakia - Slovak */
+ return "sk";
+ case CTSVC_LANG_SLOVENIAN: /* sl, Slovenia - Slovenian */
+ return "sl";
+ case CTSVC_LANG_SERBIAN: /* sr, Serbia - Serbian */
+ return "sr";
+ case CTSVC_LANG_SWEDISH: /* sv, Finland - Swedish */
+ return "sv";
+ case CTSVC_LANG_TURKISH: /* tr_TR, Turkey - Turkish */
+ return "tr";
+ case CTSVC_LANG_UKRAINE: /* uk, Ukraine */
+ return "uk";
+ case CTSVC_LANG_CHINESE: /* zh_CN, zh_HK, zh_SG, zh_TW */
+ return "zh";
+ case CTSVC_LANG_THAI: /* th_TH, Thai */
+ return "th";
+ case CTSVC_LANG_BENGALI: /* as, bn */
+ if (STRING_EQUAL == strncmp(langset, "as", strlen("as"))) {
+ return "as";
+ }
+ return "bn";
+ case CTSVC_LANG_PUNJABI: /* pa, India */
+ return "pa";
+ case CTSVC_LANG_MALAYALAM:
+ return "ml";
+ case CTSVC_LANG_TELUGU:
+ return "te";
+ case CTSVC_LANG_TAMIL:
+ return "ta";
+ case CTSVC_LANG_ORIYA:
+ return "or";
+ case CTSVC_LANG_SINHALA:
+ return "si";
+ case CTSVC_LANG_GUJARATI:
+ return "gu";
+ case CTSVC_LANG_KANNADA:
+ return "kn";
+ case CTSVC_LANG_LAO:
+ return "lo";
+ case CTSVC_LANG_HEBREW:
+ return "he";
+ case CTSVC_LANG_VIETNAMESE:
+ return "vi";
+ case CTSVC_LANG_PERSIAN:
+ return "fa";
+ case CTSVC_LANG_UZBEK:
+ return "uz";
+ case CTSVC_LANG_URDU:
+ return "ur";
+ case CTSVC_LANG_ALBANIAN:
+ return "sq";
+ case CTSVC_LANG_BURMESE:
+ return "my";
+ case CTSVC_LANG_MALAY:
+ return "ms";
+ case CTSVC_LANG_KHMER:
+ return "km";
+ case CTSVC_LANG_INDONESIAN:
+ return "id";
+ case CTSVC_LANG_TAGALOG:
+ return "tl";
+ }
+
+ return "";
+}
+
+int ctsvc_get_language_type(const char *system_lang)
+{
+ /* refer to the VCONFKEY_LANGSET */
+ int type;
+
+ RETV_IF(NULL == system_lang, CTSVC_LANG_OTHERS);
+
+ /* az, Azerbaijan */
+ if (STRING_EQUAL == strncmp(system_lang, "az", strlen("az")))
+ type = CTSVC_LANG_AZERBAIJAN;
+ /* ar, Bahrain - Arabic */
+ else if (STRING_EQUAL == strncmp(system_lang, "ar", strlen("ar")))
+ type = CTSVC_LANG_ARABIC;
+ /* bg, Bulgaria - Bulgarian */
+ else if (STRING_EQUAL == strncmp(system_lang, "bg", strlen("bg")))
+ type = CTSVC_LANG_BULGARIAN;
+ /* ca, Spain - Catalan */
+ else if (STRING_EQUAL == strncmp(system_lang, "ca", strlen("ca")))
+ type = CTSVC_LANG_CATALAN;
+ /* cs, Czech Republic - Czech */
+ else if (STRING_EQUAL == strncmp(system_lang, "cs", strlen("cs")))
+ type = CTSVC_LANG_CZECH;
+ /* da, Denmark - Danish */
+ else if (STRING_EQUAL == strncmp(system_lang, "da", strlen("da")))
+ type = CTSVC_LANG_DANISH;
+ /* de, Germany - German */
+ else if (STRING_EQUAL == strncmp(system_lang, "de", strlen("de")))
+ type = CTSVC_LANG_GERMAN;
+ /* el, Greece - Greek */
+ else if (STRING_EQUAL == strncmp(system_lang, "el", strlen("el")))
+ type = CTSVC_LANG_GREEK;
+ /* en, en_PH, en_US */
+ else if (STRING_EQUAL == strncmp(system_lang, "en", strlen("en")))
+ type = CTSVC_LANG_ENGLISH;
+ /* es_ES, es_US, El Salvador - Spanish */
+ else if (STRING_EQUAL == strncmp(system_lang, "es", strlen("es")))
+ type = CTSVC_LANG_SPANISH;
+ /* et, Estonia - Estonian */
+ else if (STRING_EQUAL == strncmp(system_lang, "et", strlen("et")))
+ type = CTSVC_LANG_ESTONIAN;
+ /* eu, Spain - Basque */
+ else if (STRING_EQUAL == strncmp(system_lang, "eu", strlen("eu")))
+ type = CTSVC_LANG_BASQUE;
+ /* fi, Finland - Finnish */
+ else if (STRING_EQUAL == strncmp(system_lang, "fi", strlen("fi")))
+ type = CTSVC_LANG_FINNISH;
+ /* fr_CA, fr_FR */
+ else if (STRING_EQUAL == strncmp(system_lang, "fr", strlen("fr")))
+ type = CTSVC_LANG_FRENCH;
+ /* ga, Ireland - Irish */
+ else if (STRING_EQUAL == strncmp(system_lang, "ga", strlen("ga")))
+ type = CTSVC_LANG_IRISH;
+ /* gl, Spain - Galician */
+ else if (STRING_EQUAL == strncmp(system_lang, "gl", strlen("gl")))
+ type = CTSVC_LANG_GALICIAN;
+ /* hi, India - Hindi */
+ else if (STRING_EQUAL == strncmp(system_lang, "hi", strlen("hi")))
+ type = CTSVC_LANG_HINDI;
+ /* mr, India - marathi */
+ else if (STRING_EQUAL == strncmp(system_lang, "mr", strlen("mr")))
+ type = CTSVC_LANG_HINDI;
+ /* ne, India - nepal */
+ else if (STRING_EQUAL == strncmp(system_lang, "ne", strlen("ne")))
+ type = CTSVC_LANG_HINDI;
+ /* hr, Bosnia and Herzegovina - Croatian */
+ else if (STRING_EQUAL == strncmp(system_lang, "hr", strlen("hr")))
+ type = CTSVC_LANG_CROATIAN;
+ /* hu, Hungary - Hungarian */
+ else if (STRING_EQUAL == strncmp(system_lang, "hu", strlen("hu")))
+ type = CTSVC_LANG_HUNGARIAN;
+ /* hy, Armenia - Armenian */
+ else if (STRING_EQUAL == strncmp(system_lang, "hy", strlen("hy")))
+ type = CTSVC_LANG_ARMENIAN;
+ /* is, Iceland - Icelandic */
+ else if (STRING_EQUAL == strncmp(system_lang, "is", strlen("is")))
+ type = CTSVC_LANG_ICELANDIC;
+ /* it_IT, Italy - Italian */
+ else if (STRING_EQUAL == strncmp(system_lang, "it", strlen("it")))
+ type = CTSVC_LANG_ITALIAN;
+ /* ja_JP, japan */
+ else if (STRING_EQUAL == strncmp(system_lang, "ja", strlen("ja")))
+ type = CTSVC_LANG_JAPANESE;
+ /* ka, Georgia - Georgian */
+ else if (STRING_EQUAL == strncmp(system_lang, "ka", strlen("ka")))
+ type = CTSVC_LANG_GEORGIAN;
+ /* kk, Kazakhstan */
+ else if (STRING_EQUAL == strncmp(system_lang, "kk", strlen("kk")))
+ type = CTSVC_LANG_KAZAKHSTAN;
+ /* ko, ko_KR */
+ else if (STRING_EQUAL == strncmp(system_lang, "ko", strlen("ko")))
+ type = CTSVC_LANG_KOREAN;
+ /* lt, Lithuania - Lithuanian */
+ else if (STRING_EQUAL == strncmp(system_lang, "lt", strlen("lt")))
+ type = CTSVC_LANG_LITHUANIAN;
+ /* lv, Latvia - Latvian */
+ else if (STRING_EQUAL == strncmp(system_lang, "lv", strlen("lv")))
+ type = CTSVC_LANG_LATVIAN;
+ /* mk, Macedonia */
+ else if (STRING_EQUAL == strncmp(system_lang, "mk", strlen("mk")))
+ type = CTSVC_LANG_MACEDONIA;
+ /* nb, Norway */
+ else if (STRING_EQUAL == strncmp(system_lang, "nb", strlen("nb")))
+ type = CTSVC_LANG_NORWAY;
+ /* nl_Nl, Netherlands Dutch */
+ else if (STRING_EQUAL == strncmp(system_lang, "nl", strlen("nl")))
+ type = CTSVC_LANG_DUTCH;
+ /* pl, Polish */
+ else if (STRING_EQUAL == strncmp(system_lang, "pl", strlen("pl")))
+ type = CTSVC_LANG_POLISH;
+ /* pt_BR, pt_PT, Portugal */
+ else if (STRING_EQUAL == strncmp(system_lang, "pt", strlen("pt")))
+ type = CTSVC_LANG_PORTUGUESE;
+ /* ro, Romania */
+ else if (STRING_EQUAL == strncmp(system_lang, "ro", strlen("ro")))
+ type = CTSVC_LANG_ROMANIA;
+ /* ru_RU, Russia */
+ else if (STRING_EQUAL == strncmp(system_lang, "ru", strlen("ru")))
+ type = CTSVC_LANG_RUSSIAN;
+ /* sk, Slovakia - Slovak */
+ else if (STRING_EQUAL == strncmp(system_lang, "sk", strlen("sk")))
+ type = CTSVC_LANG_SLOVAK;
+ /* sl, Slovenia - Slovenian */
+ else if (STRING_EQUAL == strncmp(system_lang, "sl", strlen("sl")))
+ type = CTSVC_LANG_SLOVENIAN;
+ /* sr, Serbia - Serbian */
+ else if (STRING_EQUAL == strncmp(system_lang, "sr", strlen("sr")))
+ type = CTSVC_LANG_SERBIAN;
+ /* sv, Finland - Swedish */
+ else if (STRING_EQUAL == strncmp(system_lang, "sv", strlen("sv")))
+ type = CTSVC_LANG_SWEDISH;
+ /* tr_TR, Turkey - Turkish */
+ else if (STRING_EQUAL == strncmp(system_lang, "tr", strlen("tr")))
+ type = CTSVC_LANG_TURKISH;
+ /* uk, Ukraine */
+ else if (STRING_EQUAL == strncmp(system_lang, "uk", strlen("uk")))
+ type = CTSVC_LANG_UKRAINE;
+ /* zh_CN, zh_HK, zh_SG, zh_TW */
+ else if (STRING_EQUAL == strncmp(system_lang, "zh", strlen("zh")))
+ type = CTSVC_LANG_CHINESE;
+ /* th_TH */
+ else if (STRING_EQUAL == strncmp(system_lang, "th", strlen("th")))
+ type = CTSVC_LANG_THAI;
+ else if (STRING_EQUAL == strncmp(system_lang, "as", strlen("as")))
+ type = CTSVC_LANG_BENGALI;
+ else if (STRING_EQUAL == strncmp(system_lang, "bn", strlen("bn")))
+ type = CTSVC_LANG_BENGALI;
+ else if (STRING_EQUAL == strncmp(system_lang, "pa", strlen("pa")))
+ type = CTSVC_LANG_PUNJABI;
+ else if (STRING_EQUAL == strncmp(system_lang, "ml", strlen("ml")))
+ type = CTSVC_LANG_MALAYALAM;
+ else if (STRING_EQUAL == strncmp(system_lang, "te", strlen("te")))
+ type = CTSVC_LANG_TELUGU;
+ else if (STRING_EQUAL == strncmp(system_lang, "ta", strlen("ta")))
+ type = CTSVC_LANG_TAMIL;
+ else if (STRING_EQUAL == strncmp(system_lang, "or", strlen("or")))
+ type = CTSVC_LANG_ORIYA;
+ else if (STRING_EQUAL == strncmp(system_lang, "si", strlen("si")))
+ type = CTSVC_LANG_SINHALA;
+ else if (STRING_EQUAL == strncmp(system_lang, "gu", strlen("gu")))
+ type = CTSVC_LANG_GUJARATI;
+ else if (STRING_EQUAL == strncmp(system_lang, "kn", strlen("kn")))
+ type = CTSVC_LANG_KANNADA;
+ else if (STRING_EQUAL == strncmp(system_lang, "lo", strlen("lo")))
+ type = CTSVC_LANG_LAO;
+ else if (STRING_EQUAL == strncmp(system_lang, "he", strlen("he")))
+ type = CTSVC_LANG_HEBREW;
+ else if (STRING_EQUAL == strncmp(system_lang, "vi", strlen("vi")))
+ type = CTSVC_LANG_VIETNAMESE;
+ else if (STRING_EQUAL == strncmp(system_lang, "fa", strlen("fa")))
+ type = CTSVC_LANG_PERSIAN;
+ else if (STRING_EQUAL == strncmp(system_lang, "uz", strlen("uz")))
+ type = CTSVC_LANG_UZBEK;
+ else if (STRING_EQUAL == strncmp(system_lang, "ur", strlen("ur")))
+ type = CTSVC_LANG_URDU;
+ else if (STRING_EQUAL == strncmp(system_lang, "sq", strlen("sq")))
+ type = CTSVC_LANG_ALBANIAN;
+ else if (STRING_EQUAL == strncmp(system_lang, "my", strlen("my")))
+ type = CTSVC_LANG_BURMESE;
+ else if (STRING_EQUAL == strncmp(system_lang, "ms", strlen("ms")))
+ type = CTSVC_LANG_MALAY;
+ else if (STRING_EQUAL == strncmp(system_lang, "km", strlen("km")))
+ type = CTSVC_LANG_KHMER;
+ else if (STRING_EQUAL == strncmp(system_lang, "id", strlen("id")))
+ type = CTSVC_LANG_INDONESIAN;
+ else if (STRING_EQUAL == strncmp(system_lang, "tl", strlen("tl")))
+ type = CTSVC_LANG_TAGALOG;
+ else
+ type = CTSVC_LANG_OTHERS;
+
+ return type;
+}
+
+static char *langset = NULL;
+
+char* ctsvc_get_langset()
+{
+ return SAFE_STR(langset);
+}
+
+void ctsvc_set_langset(char *new_langset)
+{
+ free(langset);
+ langset = new_langset;
+}
+
* limitations under the License.
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_LOCALIZE_H__
-#define __TIZEN_SOCIAL_CTSVC_LOCALIZE_H__
+#ifndef __CTSVC_LOCALIZE_H__
+#define __CTSVC_LOCALIZE_H__
#include <unicode/utypes.h>
#include "ctsvc_localize_kor.h"
enum SORTTYPE{
- CTSVC_SORT_OTHERS, // 0??
- CTSVC_SORT_NUMBER, // 1
- CTSVC_SORT_PRIMARY, // 2
- CTSVC_SORT_SECONDARY, // 3
- CTSVC_SORT_WESTERN, // 4
- CTSVC_SORT_KOREAN, // 5
- CTSVC_SORT_JAPANESE, // 6
- CTSVC_SORT_CJK, // 7
- CTSVC_SORT_CYRILLIC, // 8
- CTSVC_SORT_GREEK, // 9
- CTSVC_SORT_ARMENIAN, // 10
- CTSVC_SORT_ARABIC, // 11
- CTSVC_SORT_DEVANAGARI, // hindi
- CTSVC_SORT_GEORGIAN, // 13
- CTSVC_SORT_TURKISH, // 14
- CTSVC_SORT_THAI, // 15
- CTSVC_SORT_BENGALI, // 16
- CTSVC_SORT_PUNJABI, // 17
- CTSVC_SORT_MALAYALAM, // 18
- CTSVC_SORT_TELUGU, // 19
- CTSVC_SORT_TAMIL, // 20
- CTSVC_SORT_ORIYA, // 21
- CTSVC_SORT_SINHALA, // 22
- CTSVC_SORT_GUJARATI, // 23
- CTSVC_SORT_KANNADA, // 24
- CTSVC_SORT_LAO, // 25
- CTSVC_SORT_HEBREW, // 26
- CTSVC_SORT_BURMESE, // 27
- CTSVC_SORT_KHMER, // 28
+ CTSVC_SORT_OTHERS = 0,
+ CTSVC_SORT_NUMBER,
+ CTSVC_SORT_PRIMARY,
+ CTSVC_SORT_SECONDARY,
+ CTSVC_SORT_WESTERN,
+ CTSVC_SORT_KOREAN, /* 5 */
+ CTSVC_SORT_JAPANESE,
+ CTSVC_SORT_CJK,
+ CTSVC_SORT_CYRILLIC,
+ CTSVC_SORT_GREEK,
+ CTSVC_SORT_ARMENIAN, /* 10 */
+ CTSVC_SORT_ARABIC,
+ CTSVC_SORT_DEVANAGARI, /* hindi */
+ CTSVC_SORT_GEORGIAN,
+ CTSVC_SORT_TURKISH,
+ CTSVC_SORT_THAI, /* 15 */
+ CTSVC_SORT_BENGALI,
+ CTSVC_SORT_PUNJABI,
+ CTSVC_SORT_MALAYALAM,
+ CTSVC_SORT_TELUGU,
+ CTSVC_SORT_TAMIL, /* 20 */
+ CTSVC_SORT_ORIYA,
+ CTSVC_SORT_SINHALA,
+ CTSVC_SORT_GUJARATI,
+ CTSVC_SORT_KANNADA,
+ CTSVC_SORT_LAO, /* 25 */
+ CTSVC_SORT_HEBREW,
+ CTSVC_SORT_BURMESE,
+ CTSVC_SORT_KHMER,
};
char* ctsvc_get_langset();
const char *ctsvc_get_language_locale(int lang);
void ctsvc_extra_normalize(UChar *word, int32_t word_size);
-#endif // __TIZEN_SOCIAL_CTSVC_LOCALIZE_H__
+#endif /* __CTSVC_LOCALIZE_H__ */
\ No newline at end of file
int count=0;
offset = src - CHINESE_UNICODE_START;
- RETVM_IF(offset < 0 || offset >= CHINESE_COUNT , CONTACTS_ERROR_INVALID_PARAMETER, "src is invalid");
+ RETVM_IF(offset < 0 || CHINESE_COUNT <= offset, CONTACTS_ERROR_INVALID_PARAMETER, "src is invalid");
len = strlen(pinyin_spell_table[offset]);
- for(i=0, j=0; i<=len; i++) {
+ for (i=0, j=0; i<=len; i++) {
if (pinyin_spell_table[offset][i]== DUOYINZI_SEPERATOR
|| pinyin_spell_table[offset][i] == '\0') {
strncpy(spell[count], pinyin_spell_table[offset]+j, i-j);
return false;
}
-static inline bool
-__ctsvc_has_chinese(const UChar *src)
+static inline bool __ctsvc_has_chinese(const UChar *src)
{
- int i, len;
+ int i, len;
len = u_strlen(src);
- for (i = 0; i < len; i++)
- {
+ for (i = 0; i < len; i++) {
if (__ctsvc_is_chinese(&src[i]))
return true;
}
UChar temp[strlen(src)+1];
UErrorCode status = 0;
- RETVM_IF(src==NULL, false, "src is NULL");
- RETVM_IF(!*src, false, "*src is NULL");
+ RETVM_IF(NULL == src, false, "src is NULL");
+ RETVM_IF('\0' == *src, false, "*src is NULL");
u_strFromUTF8(temp, array_sizeof(temp), NULL, src, -1, &status);
- if (U_FAILURE(status)){
- CTS_ERR("u_strFromUTF8 Failed(%s)", u_errorName(status));
+ if (U_FAILURE(status)) {
+ CTS_ERR("u_strFromUTF8 Fail(%s)", u_errorName(status));
return false;
}
int ctsvc_convert_chinese_to_pinyin(const char *src, pinyin_name_s **name, int *size)
{
UChar temp_result[strlen(src)+1];
- int count = 0, len=0, total_count=0;
+ int count = 0, len=0, total_count=0;
int ret, i, j;
int multi_pinyin_count = 0;
UErrorCode status = 0;
*size = 0;
- RETVM_IF(src==NULL, CONTACTS_ERROR_SYSTEM, "src is NULL");
- RETVM_IF(!*src, CONTACTS_ERROR_SYSTEM, "*src is NULL");
+ RETVM_IF(NULL == src, CONTACTS_ERROR_SYSTEM, "src is NULL");
+ RETVM_IF('\0' == *src, CONTACTS_ERROR_SYSTEM, "*src is NULL");
u_strFromUTF8(temp_result, array_sizeof(temp_result), NULL, src, -1, &status);
- if (U_FAILURE(status)){
- CTS_ERR("u_strFromUTF8 Failed(%s)", u_errorName(status));
+ if (U_FAILURE(status)) {
+ CTS_ERR("u_strFromUTF8 Fail(%s)", u_errorName(status));
return CONTACTS_ERROR_SYSTEM;
}
for (count = 0; count < len; count++) {
if (__ctsvc_is_chinese(&temp_result[count])) {
ret = __ctsvc_get_pinyinspell(temp_result[count], spell[count]);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, CONTACTS_ERROR_SYSTEM, "__ctsvc_get_pinyinspell() Failed(%d)", ret);
- if (multi_pinyin_count >= CTSVC_CHINESE_MULTIPLE_PINYIN_MAX_LEN)
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, CONTACTS_ERROR_SYSTEM, "__ctsvc_get_pinyinspell() Fail(%d)", ret);
+ if (CTSVC_CHINESE_MULTIPLE_PINYIN_MAX_LEN <= multi_pinyin_count)
ret = 1;
pinyin_spell_count[count] = ret;
- if(total_count==0)
+ if (total_count==0)
total_count = ret;
else
total_count *= ret;
- if (ret > 1)
+ if (1 < ret)
multi_pinyin_count ++;
}
else {
temp[0] = temp_result[count];
temp[1] = 0x00;
u_strToUTF8(spell[count][0], 10, &temp_size, temp, -1, &status);
- RETVM_IF(U_FAILURE(status), CONTACTS_ERROR_SYSTEM, "u_strToUTF8() Failed(%s)", u_errorName(status));
+ RETVM_IF(U_FAILURE(status), CONTACTS_ERROR_SYSTEM, "u_strToUTF8() Fail(%s)", u_errorName(status));
spell[count][0][temp_size]='\0';
pinyin_spell_count[count] = 1;
}
int initial_len[total_count];
int pinyin_name_len = sizeof(char) * ((len + 2) * CHINESE_PINYIN_SPELL_MAX_LEN);
int pinyin_initial_len = sizeof(char) * (len * 5 + 1);
- for(i=0; i < count ; i++) {
- for(j=0;j<total_count;j++) {
+ for (i=0; i < count ; i++) {
+ for (j=0;j<total_count;j++) {
int index = (j/repeat) %pinyin_spell_count[i];
if (i==0) {
}
if (spell[i][index][0]) {
- if(temp_name[j].pinyin_name[0])
+ if (temp_name[j].pinyin_name[0])
name_len[j] += snprintf(temp_name[j].pinyin_name + name_len[j], pinyin_name_len - name_len[j], " ");
name_len[j] += snprintf(temp_name[j].pinyin_name + name_len[j], pinyin_name_len - name_len[j],
* limitations under the License.
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_LOCALIZE_CH_H__
-#define __TIZEN_SOCIAL_CTSVC_LOCALIZE_CH_H__
+#ifndef __CTSVC_LOCALIZE_CH_H__
+#define __CTSVC_LOCALIZE_CH_H__
#define CHINESE_PINYIN_SPELL_MAX_LEN 15
bool ctsvc_has_chinese(const char *src);
-#endif // __TIZEN_SOCIAL_CTSVC_LOCALIZE_CH_H__
+#endif /* __CTSVC_LOCALIZE_CH_H__ */
\ No newline at end of file
#include <unicode/unorm.h>
#include <unicode/ucol.h>
#include <unicode/uset.h>
-#include <vconf.h>
-#include <vconf-keys.h>
#include "ctsvc_internal.h"
#include "ctsvc_normalize.h"
#define CTSVC_JAPANESE_HIRAGANA_END 0x309F
-static const unsigned char japanese_halfwidth_katakana_to_hiragana[] = { // 0xff66 - 0xff9d
+static const unsigned char japanese_halfwidth_katakana_to_hiragana[] = { /* 0xff66 - 0xff9d */
0x92, 0x41, 0x43, 0x45, 0x47, 0x49, 0x83, 0x85, 0x87, 0x63,
0x00, 0x42, 0x44, 0x46, 0x48, 0x4A, 0x4B, 0x4D, 0x4F, 0x51,
0x53, 0x55, 0x57, 0x59, 0x5B, 0x5D, 0x5F, 0x61, 0x64, 0x66,
0x7B, 0x7E, 0x7F, 0x80, 0x81, 0x82, 0x84, 0x86, 0x88, 0x89,
0x8A, 0x8B, 0x8C, 0x8D, 0x8F, 0x93};
-static const unsigned char japanese_halfwidth_katakana_sonant_to_hiragana[] = { // 0xff76 - 0xff89
+static const unsigned char japanese_halfwidth_katakana_sonant_to_hiragana[] = { /* 0xff76 - 0xff89 */
0x4C, 0x4E, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5A, 0x5C, 0x5E,
0x60, 0x62, 0x65, 0x67, 0x69, 0x70, 0x73, 0x76, 0x79, 0x7C};
-static const unsigned char japanese_halfwidth_katakana_half_dullness_to_hiragana[] = { // 0xff8a - 0xff8e
+static const unsigned char japanese_halfwidth_katakana_half_dullness_to_hiragana[] = { /* 0xff8a - 0xff8e */
0x71, 0x74, 0x77, 0x7A, 0x7D};
static inline bool is_japanese(UChar src)
{
- if (CTSVC_COMPARE_BETWEEN(CTSVC_JAPANESE_KATAKANA_START, src, CTSVC_JAPANESE_KATAKANA_END )
- || CTSVC_COMPARE_BETWEEN(CTSVC_JAPANESE_KATAKANA_PHONETIC_EXTENSIONS_START, src, CTSVC_JAPANESE_KATAKANA_PHONETIC_EXTENSIONS_END )
- || CTSVC_COMPARE_BETWEEN(CTSVC_JAPANESE_HALFWIDTH_AND_FULLWIDTH_FORMS_START, src, CTSVC_JAPANESE_HALFWIDTH_AND_FULLWIDTH_FORMS_END )
- || CTSVC_COMPARE_BETWEEN(CTSVC_JAPANESE_HIRAGANA_START, src, CTSVC_JAPANESE_HIRAGANA_END ))
+ if (CTSVC_COMPARE_BETWEEN(CTSVC_JAPANESE_KATAKANA_START, src, CTSVC_JAPANESE_KATAKANA_END)
+ || CTSVC_COMPARE_BETWEEN(CTSVC_JAPANESE_KATAKANA_PHONETIC_EXTENSIONS_START, src, CTSVC_JAPANESE_KATAKANA_PHONETIC_EXTENSIONS_END)
+ || CTSVC_COMPARE_BETWEEN(CTSVC_JAPANESE_HALFWIDTH_AND_FULLWIDTH_FORMS_START, src, CTSVC_JAPANESE_HALFWIDTH_AND_FULLWIDTH_FORMS_END)
+ || CTSVC_COMPARE_BETWEEN(CTSVC_JAPANESE_HIRAGANA_START, src, CTSVC_JAPANESE_HIRAGANA_END))
return true;
else
return false;
len = u_strlen(src);
- for(i = 0; i < len; i++) {
+ for (i = 0; i < len; i++) {
int unicode_value1 = 0;
int unicode_value2 = 0;
if (CTSVC_COMPARE_BETWEEN(CTSVC_JAPANESE_KATAKANA_START, src[i], CTSVC_JAPANESE_KATAKANA_END)) {
unicode_value1 = 0x30;
- if ((unicode_value2 >= 0xa1 && unicode_value2 <= 0xef )
- || (unicode_value2 == 0xF2 || unicode_value2 == 0xF3) ) {
+ if ((0xa1 <= unicode_value2 && unicode_value2 <= 0xef)
+ || (unicode_value2 == 0xF2 || unicode_value2 == 0xF3)) {
unicode_value2 -= 0x60;
dest[j] = unicode_value1 << 8 | unicode_value2;
}
src[i], CTSVC_JAPANESE_HALFWIDTH_AND_FULLWIDTH_FORMS_END)) {
unicode_value1 = 0x30;
if (i+1 < len && (0xFF & (src[i+1])) == 0x9E
- && unicode_value2 >= 0x76 && unicode_value2 <= 0x89) {
+ && 0x76 <= unicode_value2 && unicode_value2 <= 0x89) {
unicode_value2 = japanese_halfwidth_katakana_sonant_to_hiragana[unicode_value2 - 0x76];
dest[j] = unicode_value1 << 8 | unicode_value2;
i++;
}
else if (i+1 < len && (0xFF & (src[i])) == 0x9F
- && unicode_value2 >= 0x8a && unicode_value2 <= 0x8e) {
+ && 0x8a <= unicode_value2 && unicode_value2 <= 0x8e) {
unicode_value2 = japanese_halfwidth_katakana_half_dullness_to_hiragana[unicode_value2 - 0x8a];
dest[j] = unicode_value1 << 8 | unicode_value2;
i++;
}
- else if (unicode_value2 >= 0x66 && unicode_value2 <= 0x9d) {
+ else if (0x66 <= unicode_value2 && unicode_value2 <= 0x9d) {
unicode_value2 = japanese_halfwidth_katakana_to_hiragana[unicode_value2 - 0x66];
dest[j] = unicode_value1 << 8 | unicode_value2;
}
int ctsvc_convert_japanese_to_hiragana(const char *src, char **dest)
{
- int ret = CONTACTS_ERROR_NONE;
UChar *tmp_result = NULL;
UChar *result = NULL;
UErrorCode status = 0;
u_strFromUTF8(NULL, 0, &size, src, strlen(src), &status);
if (U_FAILURE(status) && status != U_BUFFER_OVERFLOW_ERROR) {
- CTS_ERR("u_strFromUTF8 to get the dest length Failed(%s)", u_errorName(status));
+ CTS_ERR("u_strFromUTF8 to get the dest length Fail(%s)", u_errorName(status));
return CONTACTS_ERROR_SYSTEM;
}
status = U_ZERO_ERROR;
tmp_result = calloc(1, sizeof(UChar) * (size + 1));
if (NULL == tmp_result) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc Fail");
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
u_strFromUTF8(tmp_result, size + 1, NULL, src, -1, &status);
- if (U_FAILURE(status)){
- CTS_ERR("u_strFromUTF8 Failed(%s)", u_errorName(status));
+ if (U_FAILURE(status)) {
+ CTS_ERR("u_strFromUTF8() Fail(%s)", u_errorName(status));
free(tmp_result);
return CONTACTS_ERROR_SYSTEM;
}
result = calloc(1, sizeof(UChar) * (size + 1));
if (NULL == result) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(tmp_result);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
- ctsvc_convert_japanese_to_hiragana_unicode(tmp_result, result, size + 1 );
-
+ ctsvc_convert_japanese_to_hiragana_unicode(tmp_result, result, size + 1);
u_strToUTF8(NULL, 0, &size, result, -1, &status);
if (U_FAILURE(status) && status != U_BUFFER_OVERFLOW_ERROR) {
- CTS_ERR("u_strToUTF8 to get the dest length Failed(%s)", u_errorName(status));
- free(result);
+ CTS_ERR("u_strToUTF8() to get the dest length Fail(%s)", u_errorName(status));
free(tmp_result);
+ free(result);
return CONTACTS_ERROR_SYSTEM;
}
status = U_ZERO_ERROR;
*dest = calloc(1, sizeof(char)*(size+1));
if (NULL == *dest) {
- CTS_ERR("calloc() return NULL");
- free(result);
+ CTS_ERR("calloc() Fail");
free(tmp_result);
+ free(result);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
u_strToUTF8(*dest, size + 1, &size, result, -1, &status);
- if (U_FAILURE(status) ) {
- CTS_ERR("u_strToUTF8 Failed(%s)", u_errorName(status));
- free(result);
+ if (U_FAILURE(status)) {
+ CTS_ERR("u_strToUTF8() Fail(%s)", u_errorName(status));
free(tmp_result);
+ free(result);
free(*dest);
*dest = NULL;
return CONTACTS_ERROR_SYSTEM;
}
- return ret;
+ free(tmp_result);
+ free(result);
+ return CONTACTS_ERROR_NONE;
}
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_LOCALIZE_JAPAN_H__
-#define __TIZEN_SOCIAL_CTSVC_LOCALIZE_JAPAN_H__
+#ifndef __CTSVC_LOCALIZE_JAPAN_H__
+#define __CTSVC_LOCALIZE_JAPAN_H__
int ctsvc_convert_japanese_to_hiragana(const char *src, char **dest);
int ctsvc_convert_japanese_to_hiragana_unicode(UChar *src, UChar *dest, int dest_size);
-#endif //__TIZEN_SOCIAL_CTSVC_LOCALIZE_JAPAN_H__
\ No newline at end of file
+#endif /* __CTSVC_LOCALIZE_JAPAN_H__ */
\ No newline at end of file
#include <unicode/unorm.h>
#include <unicode/ucol.h>
#include <unicode/uset.h>
-#include <vconf.h>
-#include <vconf-keys.h>
#include "ctsvc_internal.h"
#include "ctsvc_normalize.h"
0x81, 0x84, 0x85, 0x86, 0x00};
static const unsigned char hangul_jamo_choseong[] = {
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x1A, 0x06, 0x07, // to choseong 0x1100~0x115F
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x1A, 0x06, 0x07, /* to choseong 0x1100~0x115F */
0x08, 0x21, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x14, 0x15, 0x1C, 0x1D, 0x1E, 0x20,
0x22, 0x23, 0x27, 0x29, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x00};
static const unsigned char hangul_jamo_jungseong[] = {
- 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, // to jungseong 0x1160~0x11A7
+ 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, /* to jungseong 0x1160~0x11A7 */
0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72,
0x73, 0x74, 0x75, 0x60, 0x84, 0x85, 0x88, 0x91, 0x92,
0x94, 0x9E, 0xA1, 0x00};
0x6F, 0x70, 0x82, 0x83, 0x00};
static const unsigned char hangul_jamo_jongseong[] = {
- 0xAA, 0xAC, 0xAD, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, // to jongseong 0x11A8~0x11FF
+ 0xAA, 0xAC, 0xAD, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, /* to jongseong 0x11A8~0x11FF */
0xC7, 0xC8, 0xCC, 0xCE, 0xD3, 0xD7, 0xD9, 0xDF, 0xF1, 0xF2, 0x00};
static inline bool is_chosung(UChar src)
unicode_value2 = (0xFF & (src));
if (unicode_value1 == 0x31
- && (unicode_value2 >= 0x30 && unicode_value2 <= 0x4e)) //compatiblility jame
+ && (0x30 <= unicode_value2 && unicode_value2 <= 0x4e)) /* compatiblility jame */
return true;
if (unicode_value1 == 0xA9
- && (unicode_value2 >= 0x60 && unicode_value2 <= 0x7C))//jamo Extended-A
+ && (0x60 <= unicode_value2 && unicode_value2 <= 0x7C)) /* jamo Extended-A */
return true;
if (unicode_value1 == 0x11
- && (unicode_value2 >= 0x00 && unicode_value2 <= 0x5E))//jamo
+ && (0x00 <= unicode_value2 && unicode_value2 <= 0x5E)) /* jamo */
return true;
return false;
if (CTSVC_COMPARE_BETWEEN(CTSVC_HAN_C_START, *src, CTSVC_HAN_C_END)) {
char *pos;
- if (NULL != (pos = strchr(hangul_compatibility_choseong, unicode_value2))) {
+ if ((pos = strchr(hangul_compatibility_choseong, unicode_value2))) {
unicode_value1 = 0x11;
unicode_value2 = hangul_jamo_choseong[pos - hangul_compatibility_choseong];
(*src) = unicode_value1 << 8 | unicode_value2;
}
- else if (NULL != (pos = strchr(hangul_compatibility_jungseong, unicode_value2))) {
+ else if ((pos = strchr(hangul_compatibility_jungseong, unicode_value2))) {
unicode_value1 = 0x11;
unicode_value2 = hangul_jamo_jungseong[pos - hangul_compatibility_jungseong];
(*src) = unicode_value1 << 8 | unicode_value2;
}
- else if (NULL != (pos = strchr(hangul_compatibility_jongseong, unicode_value2))) {
+ else if ((pos = strchr(hangul_compatibility_jongseong, unicode_value2))) {
unicode_value1 = 0x11;
unicode_value2 = hangul_jamo_jongseong[pos - hangul_compatibility_jongseong];
(*src) = unicode_value1 << 8 | unicode_value2;
u_strFromUTF8(tmp_result, array_sizeof(tmp_result), NULL, char_src, -1, &status);
RETVM_IF(U_FAILURE(status), CONTACTS_ERROR_SYSTEM,
- "u_strFromUTF8() Failed(%s)", u_errorName(status));
+ "u_strFromUTF8() Fail(%s)", u_errorName(status));
u_strToUpper(tmp_result, array_sizeof(tmp_result), tmp_result, -1, NULL, &status);
RETVM_IF(U_FAILURE(status), CONTACTS_ERROR_SYSTEM,
- "u_strToLower() Failed(%s)", u_errorName(status));
+ "u_strToLower() Fail(%s)", u_errorName(status));
size = unorm_normalize(tmp_result, -1, UNORM_NFD, 0,
(UChar *)result, array_sizeof(result), &status);
RETVM_IF(U_FAILURE(status), CONTACTS_ERROR_SYSTEM,
- "unorm_normalize(%s) Failed(%s)", src, u_errorName(status));
+ "unorm_normalize(%s) Fail(%s)", src, u_errorName(status));
ctsvc_extra_normalize(result, size);
u_strToUTF8(temp, dest_size, &size, result, -1, &status);
RETVM_IF(U_FAILURE(status), CONTACTS_ERROR_SYSTEM,
- "u_strToUTF8() Failed(%s)", u_errorName(status));
+ "u_strToUTF8() Fail(%s)", u_errorName(status));
chosung_len = ctsvc_check_utf8(temp[0]);
RETVM_IF(chosung_len <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "check_utf8 failed");
memcpy(&dest[j], temp, chosung_len);
u_strFromUTF8(tmp_result, array_sizeof(tmp_result), NULL, char_src, -1, &status);
RETVM_IF(U_FAILURE(status), CONTACTS_ERROR_SYSTEM,
- "u_strFromUTF8() Failed(%s)", u_errorName(status));
+ "u_strFromUTF8() Fail(%s)", u_errorName(status));
- if (is_chosung(tmp_result[0]))
- {
+ if (is_chosung(tmp_result[0])) {
ctsvc_hangul_compatibility2jamo(tmp_result);
u_strToUTF8(&dest[j], dest_size - j, &size, tmp_result, -1, &status);
RETVM_IF(U_FAILURE(status), CONTACTS_ERROR_SYSTEM,
- "u_strToUTF8() Failed(%s)", u_errorName(status));
+ "u_strToUTF8() Fail(%s)", u_errorName(status));
j += size;
dest[j] = '*';
j++;
else {
u_strToUpper(tmp_result, array_sizeof(tmp_result), tmp_result, -1, NULL, &status);
RETVM_IF(U_FAILURE(status), CONTACTS_ERROR_SYSTEM,
- "u_strToUpper() Failed(%s)", u_errorName(status));
+ "u_strToUpper() Fail(%s)", u_errorName(status));
size = unorm_normalize(tmp_result, -1, UNORM_NFD, 0,
(UChar *)result, array_sizeof(result), &status);
RETVM_IF(U_FAILURE(status), CONTACTS_ERROR_SYSTEM,
- "unorm_normalize(%s) Failed(%s)", src, u_errorName(status));
+ "unorm_normalize(%s) Fail(%s)", src, u_errorName(status));
ctsvc_extra_normalize(result, size);
u_strToUTF8(&dest[j], dest_size - j, &size, result, -1, &status);
RETVM_IF(U_FAILURE(status), CONTACTS_ERROR_SYSTEM,
- "u_strToUTF8() Failed(%s)", u_errorName(status));
+ "u_strToUTF8() Fail(%s)", u_errorName(status));
j += size;
}
count++;
int char_len = 0;
char_len = ctsvc_check_utf8(src[0]);
- if (char_len < 0) return false; // invalid value
+ if (char_len < 0) return false; /* invalid value */
if (char_len == 3) {
unsigned short tmp;
int char_len = 0;
char_len = ctsvc_check_utf8(src[0]);
- if (char_len <= 0) return false; // invalid value
+ if (char_len <= 0) return false; /* invalid value */
if (char_len == 3) {
switch(src[0]) {
- // Hangul Jamo : 0x1100 ~ 0x11FF
- // e1 84 80 ~ e1 87 bf
+ /*
+ * Hangul Jamo : 0x1100 ~ 0x11FF
+ * e1 84 80 ~ e1 87 bf
+ */
case 0xE1:
switch(src[1]) {
case 0x84 ... 0x87:
}
break;
- // Hangul Compatibility Jamo : 0x3130 ~ 0x318F
- // e3 84 b0 ~ e3 84 bf
- // e3 85 80 ~ e3 85 bf
- // e3 86 80 ~ e3 86 8f
+ /*
+ * Hangul Compatibility Jamo : 0x3130 ~ 0x318F
+ * e3 84 b0 ~ e3 84 bf
+ * e3 85 80 ~ e3 85 bf
+ * e3 86 80 ~ e3 86 8f
+ */
case 0xE3:
switch(src[1]) {
case 0x84:
}
break;
- // Hangul Jamo Extended A : 0xA960 ~ 0xA97F
- // ea a5 a0 ~ ea a5 bf
- // Hangul syllables : 0xAC00 ~ 0xD7AF
- // ea b0 80 ~ ea bf bf
+ /*
+ * Hangul Jamo Extended A : 0xA960 ~ 0xA97F
+ * ea a5 a0 ~ ea a5 bf
+ */
+ /*
+ * Hangul syllables : 0xAC00 ~ 0xD7AF
+ * ea b0 80 ~ ea bf bf
+ */
case 0xEA:
switch(src[1]) {
case 0xA5:
}
break;
- // Hangul syllables : 0xAC00 ~ 0xD7AF
- // eb 80 80 ~ eb bf bf
- // ec 80 80 ~ ec bf bf
+ /*
+ * Hangul syllables : 0xAC00 ~ 0xD7AF
+ * eb 80 80 ~ eb bf bf
+ * ec 80 80 ~ ec bf bf
+ */
case 0xEB ... 0xEC:
switch(src[1]) {
case 0x80 ... 0xBF:
}
break;
- // Hangul syllables : 0xAC00 ~ 0xD7AF
- // ed 80 80 ~ ed 9e af
- // Hangul Jamo Extended B : 0xD7B0 ~ 0xD7FF
- // ed 9e b0 ~ ed 9f bf
+ /*
+ * Hangul syllables : 0xAC00 ~ 0xD7AF
+ * ed 80 80 ~ ed 9e af
+ */
+ /*
+ * Hangul Jamo Extended B : 0xD7B0 ~ 0xD7FF
+ * ed 9e b0 ~ ed 9f bf
+ */
case 0xED:
switch(src[1]) {
case 0x80 ... 0x9F:
}
break;
- // Hangul halfwidth : 0xFFA0 ~ 0xFFDC
- // ef be a0 ~ ef bf 9c
+ /*
+ * Hangul halfwidth : 0xFFA0 ~ 0xFFDC
+ * ef be a0 ~ ef bf 9c
+ */
case 0xEF:
switch(src[1]) {
case 0xBE:
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_LOCALIZE_KOR_H__
-#define __TIZEN_SOCIAL_CTSVC_LOCALIZE_KOR_H__
+#ifndef __CTSVC_LOCALIZE_KOR_H__
+#define __CTSVC_LOCALIZE_KOR_H__
int ctsvc_get_chosung(const char *src, char *dest, int dest_size);
int ctsvc_get_korean_search_pattern(const char *src, char *dest, int dest_size);
bool ctsvc_is_hangul(UChar src);
void ctsvc_hangul_compatibility2jamo(UChar *src);
-#endif //__TIZEN_SOCIAL_CTSVC_LOCALIZE_KOR_H__
+#endif /* __CTSVC_LOCALIZE_KOR_H__ */
\ No newline at end of file
#include <unicode/unorm.h>
#include <unicode/ucol.h>
#include <unicode/uset.h>
-#include <vconf.h>
-#include <vconf-keys.h>
#include "contacts.h"
#include "ctsvc_internal.h"
}hiragana_group_letter;
static hiragana_group_letter hiragana_group[13] = {
- {0x3042, 0x41, 0x4a}, // ぁ あ ぃ い ぅ う ぇ え ぉ お
- {0x3042, 0x94, 0x94}, // ゔ
- {0x304b, 0x4b, 0x54}, // か が き ぎ く ぐ け げ こ ご
- {0x304b, 0x95, 0x96}, // ゕ ゖ
- {0x3055, 0x55, 0x5e}, // さ ざ し じ す ず せ ぜ そ ぞ
- {0x305f, 0x5f, 0x69}, // た だ ち ぢ っ つ づ て で と ど
- {0x306a, 0x6a, 0x6e}, // な に ぬ ね の
- {0x306f, 0x6f, 0x7d}, // は ば ぱ ひ び ぴ ふ ぶ ぷ へ べ ぺ ほ ぼ ぽ
- {0x307e, 0x7e, 0x82}, // ま み む め も
- {0x3084, 0x83, 0x88}, // ゃ や ゅ ゆ ょ よ
- {0x3089, 0x89, 0x8d}, // ら り る れ ろ
- {0x308f, 0x8e, 0x92}, // ゎ わ
- {0x3093, 0x93, 0x93}, // ゐ ゑ を
+ {0x3042, 0x41, 0x4a}, /* ぁ あ ぃ い ぅ う ぇ え ぉ お */
+ {0x3042, 0x94, 0x94}, /* ゔ */
+ {0x304b, 0x4b, 0x54}, /* か が き ぎ く ぐ け げ こ ご */
+ {0x304b, 0x95, 0x96}, /* ゕ ゖ */
+ {0x3055, 0x55, 0x5e}, /* さ ざ し じ す ず せ ぜ そ ぞ */
+ {0x305f, 0x5f, 0x69}, /* た だ ち ぢ っ つ づ て で と ど */
+ {0x306a, 0x6a, 0x6e}, /* な に ぬ ね の */
+ {0x306f, 0x6f, 0x7d}, /* は ば ぱ ひ び ぴ ふ ぶ ぷ へ べ ぺ ほ ぼ ぽ */
+ {0x307e, 0x7e, 0x82}, /* ま み む め も */
+ {0x3084, 0x83, 0x88}, /* ゃ や ゅ ゆ ょ よ*/
+ {0x3089, 0x89, 0x8d}, /* ら り る れ ろ */
+ {0x308f, 0x8e, 0x92}, /* ゎ わ */
+ {0x3093, 0x93, 0x93}, /* ゐ ゑ を */
};
static int __ctsvc_remove_special_char(const char *src, char *dest, int dest_size)
UCollator *collator;
char *region = strdup(ctsvc_get_langset());
- RETVM_IF(NULL == region, CONTACTS_ERROR_OUT_OF_MEMORY, "strdup() return NULL");
+ if (NULL == region) {
+ CTS_ERR("strdup() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
char *dot = strchr(region, '.');
if (dot)
*dot = '\0';
collator = ucol_open(region, &status);
- if (U_FAILURE(status)){
- CTS_ERR("ucol_open Failed(%s)", u_errorName(status));
+ if (U_FAILURE(status)) {
+ CTS_ERR("ucol_open Fail(%s)", u_errorName(status));
free(region);
return CONTACTS_ERROR_SYSTEM;
}
- // TODO: ucol_setAttribute is not called
- if (U_FAILURE(status)){
- CTS_ERR("ucol_setAttribute Failed(%s)", u_errorName(status));
+ /* TODO: ucol_setAttribute is not called */
+ if (U_FAILURE(status)) {
+ CTS_ERR("ucol_setAttribute Fail(%s)", u_errorName(status));
free(region);
ucol_close(collator);
return CONTACTS_ERROR_SYSTEM;
u_strFromUTF8(NULL, 0, &size, src, strlen(src), &status);
if (U_FAILURE(status) && status != U_BUFFER_OVERFLOW_ERROR) {
- CTS_ERR("u_strFromUTF8 to get the dest length Failed(%s)", u_errorName(status));
+ CTS_ERR("u_strFromUTF8 to get the dest length Fail(%s)", u_errorName(status));
free(region);
ucol_close(collator);
return CONTACTS_ERROR_SYSTEM;
status = U_ZERO_ERROR;
tmp_result = calloc(1, sizeof(UChar) * (size + 1));
u_strFromUTF8(tmp_result, size + 1, NULL, src, -1, &status);
- if (U_FAILURE(status)){
- CTS_ERR("u_strFromUTF8 Failed(%s)", u_errorName(status));
+ if (U_FAILURE(status)) {
+ CTS_ERR("u_strFromUTF8 Fail(%s)", u_errorName(status));
free(region);
free(tmp_result);
ucol_close(collator);
char temp[SAFE_STRLEN(src) + 1];
ret = __ctsvc_remove_special_char(src, temp, sizeof(temp));
- WARN_IF(ret < CONTACTS_ERROR_NONE, "__ctsvc_remove_special_char() Failed(%d)", ret);
+ WARN_IF(ret < CONTACTS_ERROR_NONE, "__ctsvc_remove_special_char() Fail(%d)", ret);
return __ctsvc_collation_str(temp, dest);
}
static int __ctsvc_normalize_str(const char *src, char **dest)
{
- int ret = CONTACTS_ERROR_NONE;
int32_t tmp_size = 100;
int32_t upper_size;
int32_t size = 100;
tmp_result = calloc(1, sizeof(UChar)*(tmp_size+1));
if (NULL == tmp_result) {
- CTS_ERR("calloc() return NULL");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- goto DATA_FREE;
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
- u_strFromUTF8(tmp_result, tmp_size + 1, &tmp_size, src, -1, &status);
+ u_strFromUTF8(tmp_result, tmp_size + 1, &tmp_size, src, -1, &status);
if (status == U_BUFFER_OVERFLOW_ERROR) {
status = U_ZERO_ERROR;
free(tmp_result);
tmp_result = calloc(1, sizeof(UChar) * (tmp_size + 1));
if (NULL == tmp_result) {
- CTS_ERR("calloc() return NULL");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- goto DATA_FREE;
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
+
u_strFromUTF8(tmp_result, tmp_size + 1, NULL, src, -1, &status);
if (U_FAILURE(status)) {
- CTS_ERR("u_strFromUTF8()Failed(%s)", u_errorName(status));
- ret = CONTACTS_ERROR_SYSTEM;
- goto DATA_FREE;
+ CTS_ERR("u_strFromUTF8()Fail(%s)", u_errorName(status));
+ free(tmp_result);
+ return CONTACTS_ERROR_SYSTEM;
}
}
else if (U_FAILURE(status)) {
- CTS_ERR("u_strFromUTF8() Failed(%s)", u_errorName(status));
- ret = CONTACTS_ERROR_SYSTEM;
- goto DATA_FREE;
+ CTS_ERR("u_strFromUTF8() Fail(%s)", u_errorName(status));
+ free(tmp_result);
+ return CONTACTS_ERROR_SYSTEM;
}
tmp_upper = calloc(1, sizeof(UChar)*(tmp_size+1));
if (NULL == tmp_upper) {
- CTS_ERR("calloc() return NULL");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- goto DATA_FREE;
+ CTS_ERR("calloc() Fail");
+ free(tmp_result);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
upper_size = u_strToUpper(tmp_upper, tmp_size+1, tmp_result, -1, NULL, &status);
free(tmp_upper);
tmp_upper = calloc(1, sizeof(UChar) * (upper_size + 1));
if (NULL == tmp_upper) {
- CTS_ERR("calloc() return NULL");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- goto DATA_FREE;
+ CTS_ERR("calloc() Fail");
+ free(tmp_result);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
u_strFromUTF8(tmp_upper, upper_size + 1, NULL, src, -1, &status);
if (U_FAILURE(status)) {
- CTS_ERR("u_strFromUTF8()Failed(%s)", u_errorName(status));
- ret = CONTACTS_ERROR_SYSTEM;
- goto DATA_FREE;
+ CTS_ERR("u_strFromUTF8()Fail(%s)", u_errorName(status));
+ free(tmp_result);
+ free(tmp_upper);
+ return CONTACTS_ERROR_SYSTEM;
}
}
else if (U_FAILURE(status)) {
- CTS_ERR("u_strToUpper() Failed(%s)", u_errorName(status));
- ret = CONTACTS_ERROR_SYSTEM;
- goto DATA_FREE;
+ CTS_ERR("u_strToUpper() Fail(%s)", u_errorName(status));
+ free(tmp_result);
+ free(tmp_upper);
+ return CONTACTS_ERROR_SYSTEM;
}
result = calloc(1, sizeof(UChar)*(size+1));
if (NULL == result) {
- CTS_ERR("calloc() return NULL");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- goto DATA_FREE;
+ CTS_ERR("calloc() Fail");
+ free(tmp_result);
+ free(tmp_upper);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
- size = unorm_normalize(tmp_upper, -1, UNORM_NFD, 0,
- result, size+1, &status);
+ size = unorm_normalize(tmp_upper, -1, UNORM_NFD, 0, result, size+1, &status);
if (status == U_BUFFER_OVERFLOW_ERROR) {
status = U_ZERO_ERROR;
free(result);
result = calloc(1, sizeof(UChar)*(size + 1));
if (NULL == result) {
- CTS_ERR("calloc() return NULL");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- goto DATA_FREE;
+ CTS_ERR("calloc() Fail");
+ free(tmp_result);
+ free(tmp_upper);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
unorm_normalize(tmp_upper, -1, UNORM_NFD, 0, result, size+1, &status);
if (U_FAILURE(status)) {
- CTS_ERR("unorm_normalize() Failed(%s)", u_errorName(status));
- ret = CONTACTS_ERROR_SYSTEM;
- goto DATA_FREE;
+ CTS_ERR("unorm_normalize() Fail(%s)", u_errorName(status));
+ free(tmp_result);
+ free(tmp_upper);
+ free(result);
+ return CONTACTS_ERROR_SYSTEM;
}
}
else if (U_FAILURE(status)) {
- CTS_ERR("unorm_normalize() Failed(%s)", u_errorName(status));
- ret = CONTACTS_ERROR_SYSTEM;
- goto DATA_FREE;
+ CTS_ERR("unorm_normalize() Fail(%s)", u_errorName(status));
+ free(tmp_result);
+ free(tmp_upper);
+ free(result);
+ return CONTACTS_ERROR_SYSTEM;
}
- ret = ctsvc_check_language(result);
+ ctsvc_check_language(result);
ctsvc_extra_normalize(result, size);
- // remove diacritical : U+3000 ~ U+034F
+ /* remove diacritical : U+3000 ~ U+034F */
int i, j;
UChar *temp_result = NULL;
temp_result = calloc(1, sizeof(UChar)*(size+1));
if (NULL == temp_result) {
- CTS_ERR("calloc() return NULL");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- goto DATA_FREE;
+ CTS_ERR("calloc() Fail");
+ free(tmp_result);
+ free(tmp_upper);
+ free(result);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
+
bool replaced = false;
- for(i=0,j=0; i<size;i++) {
+ for (i=0,j=0; i<size;i++) {
if (CTSVC_COMPARE_BETWEEN((UChar)CTSVC_COMBINING_DIACRITICAL_MARKS_START,
result[i], (UChar)CTSVC_COMBINING_DIACRITICAL_MARKS_END)) {
replaced = true;
status = U_ZERO_ERROR;
*dest = calloc(1, sizeof(char) * (size+1));
if (NULL == *dest) {
- CTS_ERR("calloc() return NULL");
- ret = CONTACTS_ERROR_OUT_OF_MEMORY;
- goto DATA_FREE;
+ CTS_ERR("calloc() Fail");
+ free(tmp_result);
+ free(tmp_upper);
+ free(result);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
u_strToUTF8(*dest, size+1, NULL, result, -1, &status);
if (U_FAILURE(status)) {
- CTS_ERR("u_strToUTF8() Failed(%s)", u_errorName(status));
- ret = CONTACTS_ERROR_SYSTEM;
+ CTS_ERR("u_strToUTF8() Fail(%s)", u_errorName(status));
free(*dest);
*dest = NULL;
- goto DATA_FREE;
+ free(tmp_result);
+ free(tmp_upper);
+ free(result);
+ return CONTACTS_ERROR_SYSTEM;
}
-
-DATA_FREE:
free(tmp_result);
free(tmp_upper);
free(result);
- return ret;
+ return CONTACTS_ERROR_NONE;
}
static int __ctsvc_convert_halfwidth_ascii_and_symbol(const char *src, UChar *dest, int dest_size, int* str_size)
u_strFromUTF8(dest, dest_size, &size, src, strlen(src), &status);
if (U_FAILURE(status)) {
- CTS_ERR("u_strFromUTF8() Failed(%s)", u_errorName(status));
+ CTS_ERR("u_strFromUTF8() Fail(%s)", u_errorName(status));
return CONTACTS_ERROR_SYSTEM;
}
*str_size = size;
- // full width -> half width
- for ( i=0; i < size; i++ ) {
- // FF00 ~ FF60: Fullwidth ASCII variants
+ /* full width -> half width */
+ for (i=0;i<size;i++) {
+ /* FF00 ~ FF60: Fullwidth ASCII variants */
if (CTSVC_COMPARE_BETWEEN((UChar)0xFF00, dest[i], (UChar)0xFF60)) {
int unicode_value1 = 0;
int unicode_value2 = 0;
unicode_value2 = (0xFF & dest[i]) + 0x20;
dest[i] = unicode_value1 << 8 | unicode_value2;
}
- // FFE0~FFE6: Fullwidth symbol variants
+ /* FFE0~FFE6: Fullwidth symbol variants */
else if (CTSVC_COMPARE_BETWEEN((UChar)0xFFE0, dest[i], (UChar)0xFFE6)) {
- if( dest[i] == (UChar)0xFFE0 )
- {
+ if (dest[i] == (UChar)0xFFE0) {
dest[i] = (UChar)0x00A2;
}
- else if( dest[i] == (UChar)0xFFE1 )
- {
+ else if (dest[i] == (UChar)0xFFE1) {
dest[i] = (UChar)0x00A3;
}
- else if( dest[i] == (UChar)0xFFE2 )
- {
+ else if (dest[i] == (UChar)0xFFE2) {
dest[i] = (UChar)0x00AC;
}
- else if( dest[i] == (UChar)0xFFE3 )
- {
+ else if (dest[i] == (UChar)0xFFE3) {
dest[i] = (UChar)0x00AF;
}
- else if( dest[i] == (UChar)0xFFE4 )
- {
+ else if (dest[i] == (UChar)0xFFE4) {
dest[i] = (UChar)0x00A6;
}
- else if( dest[i] == (UChar)0xFFE5 )
- {
+ else if (dest[i] == (UChar)0xFFE5) {
dest[i] = (UChar)0x00A5;
}
- else if( dest[i] == (UChar)0xFFE6 )
- {
+ else if (dest[i] == (UChar)0xFFE6) {
dest[i] = (UChar)0x20A9;
}
- else
- {
+ else {
}
}
UChar unicodes[LARGE_BUFFER_SIZE+1];
int ustr_size = 0;
- if( __ctsvc_convert_halfwidth_ascii_and_symbol(src, unicodes, LARGE_BUFFER_SIZE, &ustr_size) != CONTACTS_ERROR_NONE )
- {
- CTS_ERR("convert to halfwidth failed! %s ", src);
-
+ if (CONTACTS_ERROR_NONE != __ctsvc_convert_halfwidth_ascii_and_symbol(src, unicodes, LARGE_BUFFER_SIZE, &ustr_size)) {
+ CTS_ERR("__ctsvc_convert_halfwidth_ascii_and_symbol() Fail");
return CONTACTS_ERROR_SYSTEM;
}
UErrorCode status = 0;
- // pre-flighting
+ /* pre-flighting */
int size = 0;
u_strToUTF8(NULL, 0, &size, unicodes, -1, &status);
status = U_ZERO_ERROR;
u_strToUTF8(*dest, size+1, dest_size, unicodes, ustr_size, &status);
if (U_FAILURE(status)) {
- CTS_ERR("u_strToUTF8() Failed(%s)", u_errorName(status));
+ CTS_ERR("u_strToUTF8() Fail(%s)", u_errorName(status));
free(*dest);
*dest = NULL;
char temp[strlen(src) + 1];
ret = __ctsvc_remove_special_char(src, temp, strlen(src) + 1);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "__ctsvc_remove_special_char() Failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "__ctsvc_remove_special_char() Fail(%d)", ret);
ret = __ctsvc_normalize_str(temp, dest);
return ret;
dest_len = strlen(dest) + 1;
u_strFromUTF8(tmp_result, array_sizeof(tmp_result), NULL, dest, -1, &status);
- RETM_IF(U_FAILURE(status), "u_strFromUTF8() Failed(%s)", u_errorName(status));
+ RETM_IF(U_FAILURE(status), "u_strFromUTF8() Fail(%s)", u_errorName(status));
unicode_value = (0xFF & (tmp_result[0]));
- for(i=0; i < 13; i++) {
+ for (i=0; i < 13; i++) {
if (hiragana_group[i].start <= unicode_value
&& unicode_value <= hiragana_group[i].end)
result[0] = hiragana_group[i].letter;
}
u_strToUTF8(dest, dest_len, &size, result, -1, &status);
- RETM_IF(U_FAILURE(status), "u_strToUTF8() Failed(%s)", u_errorName(status));
+ RETM_IF(U_FAILURE(status), "u_strToUTF8() Fail(%s)", u_errorName(status));
}
static bool __ctsvc_check_range_out_index(const char src[])
{
- if(src[0] == 0xe2 && src[1] == 0x80 && src[2] == 0xa6){
+ if (src[0] == 0xe2 && src[1] == 0x80 && src[2] == 0xa6) {
return true;
}
return false;
char first_str[10] = {0};
int length = 0;
- if(first_str[0] == '\0' || __ctsvc_check_range_out_index(first_str)){
+ if (first_str[0] == '\0' || __ctsvc_check_range_out_index(first_str)) {
length = ctsvc_check_utf8(src[0]);
- RETVM_IF(length <= 0, CONTACTS_ERROR_INTERNAL, "check_utf8 is failed");
+ RETVM_IF(length <= 0, CONTACTS_ERROR_INTERNAL, "check_utf8() Fail");
memset(first_str,0x00, sizeof(first_str));
strncpy(first_str, src, length);
- if (length != strlen(first_str)){
+ if (length != strlen(first_str)) {
CTS_ERR("length : %d, first_str : %s, strlne : %d", length, first_str, strlen(first_str));
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
ret = __ctsvc_normalize_str(first_str, dest);
- RETVM_IF(dest == NULL, ret, "__ctsvc_normalize_str is failed");
+ RETVM_IF(dest == NULL, ret, "__ctsvc_normalize_str() Fail");
if ((*dest)[0] != '\0') {
length = ctsvc_check_utf8((*dest)[0]);
* limitations under the License.
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_NORMALIZE_H__
-#define __TIZEN_SOCIAL_CTSVC_NORMALIZE_H__
+#ifndef __CTSVC_NORMALIZE_H__
+#define __CTSVC_NORMALIZE_H__
int ctsvc_normalize_str(const char *src, char **dest);
int ctsvc_collation_str(char *src, char **dest);
int ctsvc_normalize_index(const char *src, char **dest);
int ctsvc_get_halfwidth_string(const char *src, char** dest, int* dest_size);
-#endif /* __TIZEN_SOCIAL_CTSVC_NORMALIZE_H__ */
+#endif /* __CTSVC_NORMALIZE_H__ */
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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 <unistd.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#include "contacts.h"
+#include "contacts_db_status.h"
+#include "ctsvc_internal.h"
+#include "ctsvc_zone.h"
+#include "ctsvc_notify.h"
+#include "ctsvc_notification.h"
+
+struct ctsvc_change_s {
+ bool contact_change;
+ bool my_profile_change;
+ bool phonelog_change;
+ bool speed_change;
+ bool addressbook_change;
+ bool group_change;
+ bool group_rel_change;
+ bool person_change;
+ bool activity_change;
+ bool activity_photo_change;
+ bool address_change;
+ bool data_change;
+ bool event_change;
+ bool number_change;
+ bool email_change;
+ bool messenger_change;
+ bool name_change;
+ bool note_change;
+ bool url_change;
+ bool nickname_change;
+ bool sdn_change;
+ bool relationship_change;
+ bool image_change;
+ bool profile_change;
+ bool company_change;
+};
+static TLS GHashTable *ctsvc_change_table = NULL;
+
+static struct ctsvc_change_s* _ctsvc_get_change_info(const char *zone_name)
+{
+ struct ctsvc_change_s *change = NULL;
+ if (NULL == ctsvc_change_table)
+ ctsvc_change_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
+ else
+ change = g_hash_table_lookup(ctsvc_change_table, zone_name);
+
+ if (NULL == change) {
+ change = calloc(1, sizeof(struct ctsvc_change_s));
+ if (NULL == change) {
+ CTS_ERR("calloc() Fail");
+ return NULL;
+ }
+ g_hash_table_insert(ctsvc_change_table, strdup(zone_name), change);
+ }
+
+ return change;
+}
+
+void ctsvc_noti_publish_socket_initialize(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_IPC_READY);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd)
+ close(fd);
+}
+
+static inline void __ctsvc_noti_publish_contact_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_CONTACT_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->contact_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_my_profile_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_MY_PROFILE_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->my_profile_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_phonelog_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_PHONELOG_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->phonelog_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_speed_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_SPEEDDIAL_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->speed_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_addressbook_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_ADDRESSBOOK_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->addressbook_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_group_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_GROUP_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->group_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_group_rel_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_GROUP_RELATION_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->group_rel_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_person_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_PERSON_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->person_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_name_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_NAME_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->name_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_number_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_NUMBER_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->number_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_email_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_EMAIL_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->email_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_event_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_EVENT_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->event_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_url_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_URL_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->url_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_address_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_ADDRESS_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->address_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_note_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_NOTE_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->note_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_company_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_COMPANY_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->company_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_relationship_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_RELATIONSHIP_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->relationship_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_image_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_IMAGE_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->image_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_nickname_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_NICKNAME_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->nickname_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_messenger_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_MESSENGER_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->messenger_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_data_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_DATA_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->data_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_sdn_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_SDN_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->sdn_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_profile_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_PROFILE_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->profile_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_activity_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_ACTIVITY_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->activity_change = false;
+ }
+}
+
+static inline void __ctsvc_noti_publish_activity_photo_change(const char *zone_name)
+{
+ char noti_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, noti_path, sizeof(noti_path));
+ snprintf(noti_path+len, sizeof(noti_path)-len, "%s", CTSVC_NOTI_ACTIVITY_PHOTO_CHANGED);
+
+ int fd = open(noti_path, O_TRUNC | O_RDWR);
+ if (0 <= fd) {
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ close(fd);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->activity_photo_change = false;
+ }
+}
+
+void ctsvc_nofitication_cancel(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->contact_change = false;
+ change->my_profile_change = false;
+ change->phonelog_change = false;
+ change->speed_change = false;
+ change->addressbook_change = false;
+ change->group_change = false;
+ change->group_rel_change = false;
+ change->person_change = false;
+ change->activity_change = false;
+ change->activity_photo_change = false;
+ change->address_change = false;
+ change->data_change = false;
+ change->event_change = false;
+ change->number_change = false;
+ change->email_change = false;
+ change->messenger_change = false;
+ change->name_change = false;
+ change->note_change = false;
+ change->url_change = false;
+ change->nickname_change = false;
+ change->sdn_change = false;
+ change->relationship_change = false;
+ change->image_change = false;
+ change->profile_change = false;
+ change->company_change = false;
+}
+
+
+void ctsvc_set_contact_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->contact_change = true;
+}
+
+void ctsvc_set_my_profile_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->my_profile_change = true;
+}
+
+void ctsvc_set_phonelog_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->phonelog_change = true;
+}
+
+void ctsvc_set_speed_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->speed_change = true;
+}
+
+void ctsvc_set_addressbook_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->addressbook_change = true;
+}
+
+void ctsvc_set_group_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->group_change = true;
+}
+
+void ctsvc_set_group_rel_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->group_rel_change = true;
+}
+
+void ctsvc_set_person_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->person_change = true;
+}
+
+void ctsvc_set_activity_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->activity_change = true;
+}
+
+void ctsvc_set_activity_photo_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->activity_photo_change = true;
+}
+
+void ctsvc_set_address_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->address_change = true;
+}
+
+void ctsvc_set_data_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->data_change = true;
+}
+
+void ctsvc_set_event_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->event_change = true;
+}
+
+void ctsvc_set_number_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->number_change = true;
+}
+
+void ctsvc_set_email_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->email_change = true;
+}
+
+void ctsvc_set_messenger_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->messenger_change = true;
+}
+
+void ctsvc_set_nickname_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->nickname_change = true;
+}
+
+void ctsvc_set_name_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->name_change = true;
+}
+
+void ctsvc_set_note_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->note_change = true;
+}
+
+void ctsvc_set_url_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->url_change = true;
+}
+
+void ctsvc_set_sdn_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->sdn_change = true;
+}
+
+void ctsvc_set_relationship_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->relationship_change = true;
+}
+
+void ctsvc_set_image_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->image_change = true;
+}
+
+void ctsvc_set_profile_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->profile_change = true;
+}
+
+void ctsvc_set_company_noti(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ change->company_change = true;
+}
+
+void ctsvc_notification_send(const char *zone_name)
+{
+ struct ctsvc_change_s *change = _ctsvc_get_change_info(zone_name);
+ if (NULL == change) {
+ CTS_ERR("_ctsvc_get_change_info() Fail");
+ return;
+ }
+ if (change->contact_change) __ctsvc_noti_publish_contact_change(zone_name);
+ if (change->my_profile_change) __ctsvc_noti_publish_my_profile_change(zone_name);
+ if (change->phonelog_change) __ctsvc_noti_publish_phonelog_change(zone_name);
+ if (change->speed_change) __ctsvc_noti_publish_speed_change(zone_name);
+ if (change->addressbook_change) __ctsvc_noti_publish_addressbook_change(zone_name);
+ if (change->group_change) __ctsvc_noti_publish_group_change(zone_name);
+ if (change->group_rel_change) __ctsvc_noti_publish_group_rel_change(zone_name);
+ if (change->person_change) __ctsvc_noti_publish_person_change(zone_name);
+ if (change->activity_change) __ctsvc_noti_publish_activity_change(zone_name);
+ if (change->activity_photo_change) __ctsvc_noti_publish_activity_photo_change(zone_name);
+ if (change->address_change) __ctsvc_noti_publish_address_change(zone_name);
+ if (change->data_change) __ctsvc_noti_publish_data_change(zone_name);
+ if (change->company_change) __ctsvc_noti_publish_company_change(zone_name);
+ if (change->event_change) __ctsvc_noti_publish_event_change(zone_name);
+ if (change->number_change) __ctsvc_noti_publish_number_change(zone_name);
+ if (change->email_change) __ctsvc_noti_publish_email_change(zone_name);
+ if (change->messenger_change) __ctsvc_noti_publish_messenger_change(zone_name);
+ if (change->name_change) __ctsvc_noti_publish_name_change(zone_name);
+ if (change->note_change) __ctsvc_noti_publish_note_change(zone_name);
+ if (change->url_change) __ctsvc_noti_publish_url_change(zone_name);
+ if (change->nickname_change) __ctsvc_noti_publish_nickname_change(zone_name);
+ if (change->sdn_change) __ctsvc_noti_publish_sdn_change(zone_name);
+ if (change->relationship_change) __ctsvc_noti_publish_relationship_change(zone_name);
+ if (change->image_change) __ctsvc_noti_publish_image_change(zone_name);
+ if (change->profile_change) __ctsvc_noti_publish_profile_change(zone_name);
+}
+
+/*
+ * Whenever deleting data table record, this function will be called
+ * in order to set notification
+ */
+void ctsvc_db_data_delete_callback(sqlite3_context * context,
+ int argc, sqlite3_value ** argv)
+{
+ CTS_FN_CALL;
+ int datatype;
+
+ if (2 < argc) {
+ sqlite3_result_null(context);
+ return;
+ }
+
+ char *zone_name = sqlite3_user_data(context);
+
+ datatype = sqlite3_value_int(argv[1]);
+
+ switch(datatype) {
+ case CTSVC_DATA_NAME:
+ ctsvc_set_name_noti(zone_name);
+ break;
+ case CTSVC_DATA_POSTAL:
+ ctsvc_set_address_noti(zone_name);
+ break;
+ case CTSVC_DATA_MESSENGER:
+ ctsvc_set_messenger_noti(zone_name);
+ break;
+ case CTSVC_DATA_URL:
+ ctsvc_set_url_noti(zone_name);
+ break;
+ case CTSVC_DATA_EVENT:
+ ctsvc_set_event_noti(zone_name);
+ break;
+ case CTSVC_DATA_COMPANY:
+ ctsvc_set_company_noti(zone_name);
+ break;
+ case CTSVC_DATA_NICKNAME:
+ ctsvc_set_nickname_noti(zone_name);
+ break;
+ case CTSVC_DATA_NUMBER:
+ ctsvc_set_number_noti(zone_name);
+ break;
+ case CTSVC_DATA_EMAIL:
+ ctsvc_set_email_noti(zone_name);
+ break;
+ case CTSVC_DATA_PROFILE:
+ ctsvc_set_profile_noti(zone_name);
+ break;
+ case CTSVC_DATA_RELATIONSHIP:
+ ctsvc_set_relationship_noti(zone_name);
+ break;
+ case CTSVC_DATA_NOTE:
+ ctsvc_set_note_noti(zone_name);
+ break;
+ case CTSVC_DATA_IMAGE:
+ ctsvc_set_image_noti(zone_name);
+ break;
+ case CTSVC_DATA_EXTENSION:
+ ctsvc_set_data_noti(zone_name);
+ break;
+ default:
+ break;
+ }
+ sqlite3_result_null(context);
+ CTS_FN_END;
+}
+
+API int contacts_db_add_status_changed_cb(
+ contacts_db_status_changed_cb cb, void* user_data)
+{
+ CTS_ERR("Please use contacts-service2 instead of contacts-service3");
+ return CONTACTS_ERROR_INTERNAL;
+}
+
+API int contacts_db_remove_status_changed_cb(
+ contacts_db_status_changed_cb cb, void* user_data)
+{
+ CTS_ERR("Please use contacts-service2 instead of contacts-service3");
+ return CONTACTS_ERROR_INTERNAL;
+}
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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.
+ *
+ */
+
+#ifndef __CTSVC_NOTIFICATION_H__
+#define __CTSVC_NOTIFICATION_H__
+
+#include "ctsvc_db_sqlite.h"
+
+void ctsvc_set_contact_noti(const char *zone_name);
+void ctsvc_set_my_profile_noti(const char *zone_name);
+void ctsvc_set_phonelog_noti(const char *zone_name);
+void ctsvc_set_speed_noti(const char *zone_name);
+void ctsvc_set_addressbook_noti(const char *zone_name);
+void ctsvc_set_group_noti(const char *zone_name);
+void ctsvc_set_group_rel_noti(const char *zone_name);
+void ctsvc_set_person_noti(const char *zone_name);
+void ctsvc_set_data_noti(const char *zone_name);
+void ctsvc_set_activity_noti(const char *zone_name);
+void ctsvc_set_activity_photo_noti(const char *zone_name);
+void ctsvc_set_address_noti(const char *zone_name);
+void ctsvc_set_event_noti(const char *zone_name);
+void ctsvc_set_messenger_noti(const char *zone_name);
+void ctsvc_set_number_noti(const char *zone_name);
+void ctsvc_set_email_noti(const char *zone_name);
+void ctsvc_set_name_noti(const char *zone_name);
+void ctsvc_set_note_noti(const char *zone_name);
+void ctsvc_set_url_noti(const char *zone_name);
+void ctsvc_set_nickname_noti(const char *zone_name);
+void ctsvc_set_relationship_noti(const char *zone_name);
+void ctsvc_set_image_noti(const char *zone_name);
+void ctsvc_set_profile_noti(const char *zone_name);
+void ctsvc_set_sdn_noti(const char *zone_name);
+void ctsvc_set_company_noti(const char *zone_name);
+
+void ctsvc_notification_send(const char *zone_name);
+void ctsvc_nofitication_cancel(const char *zone_name);
+void ctsvc_noti_publish_socket_initialize(const char *zone_name);
+
+void ctsvc_db_data_delete_callback(sqlite3_context * context,
+ int argc, sqlite3_value ** argv);
+
+#endif /* __CTSVC_NOTIFICATION_H__ */
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_setting.h"
+#include "ctsvc_server_setting.h"
#include "ctsvc_normalize.h"
#include "ctsvc_localize_utils.h"
#include "ctsvc_number_utils.h"
TapiHandle *handle = NULL;
static bool cc_loaded = false;
- if (cc_loaded && !reload)
+ if (cc_loaded && false == reload)
return cc;
cc_loaded = true;
return NULL;
}
- if (temp && strlen(temp) > 3)
+ if (temp && 3 < strlen(temp))
temp[3] = '\0';
mcc = atoi(temp);
- for (i=0;i<sizeof(__mcc_cc_list)/sizeof(ctsvc_mcc_cc_map);i++)
- if(__mcc_cc_list[i].mcc == mcc)
+ for (i=0;i<sizeof(__mcc_cc_list)/sizeof(ctsvc_mcc_cc_map);i++) {
+ if (__mcc_cc_list[i].mcc == mcc) {
cc = __mcc_cc_list[i].cc;
+ break;
+ }
+ }
return cc;
}
case 7:
break;
case 2:
- if (ret >= len) return 0;
+ if (len <= ret) return 0;
switch (src[ret++]-'0') {
case 0:
case 7:
}
break;
case 3:
- if (ret >= len) return 0;
+ if (len <= ret) return 0;
switch (src[ret++]-'0') {
case 0:
case 1:
}
break;
case 4:
- if (ret >= len) return 0;
+ if (len <= ret) return 0;
switch (src[ret++]-'0') {
case 0:
case 1:
}
break;
case 5:
- if (ret >= len) return 0;
+ if (len <= ret) return 0;
switch (src[ret++]-'0') {
case 1:
case 2:
}
break;
case 6:
- if (ret >= len) return 0;
+ if (len <= ret) return 0;
switch (src[ret++]-'0') {
case 0:
case 1:
}
break;
case 8:
- if (ret >= len) return 0;
+ if (len <= ret) return 0;
switch (src[ret++]-'0') {
case 1:
case 2:
}
break;
case 9:
- if (ret >= len) return 0;
+ if (len <= ret) return 0;
switch (src[ret++]-'0') {
case 0:
case 1:
return ret;
}
-// Number Matching Rule
-// refer to the http://www.itu.int/dms_pub/itu-t/opb/sp/T-SP-E.164C-2011-PDF-E.pdf
+/*
+ * Number Matching Rule
+ * refer to the http://www.itu.int/dms_pub/itu-t/opb/sp/T-SP-E.164C-2011-PDF-E.pdf
+ */
enum {
- CTSVC_PLUS_ONLY, // +
- CTSVC_PLUS_IP_ONLY, // +IP (International prefix)
- CTSVC_PLUS_CC_ONLY, // +CC (Country code)
- CTSVC_PLUS_IP_CC, // +IP CC
- CTSVC_IP_ONLY, // IP
- CTSVC_CC_ONLY, // CC
- CTSVC_IP_CC, // IP CC
+ CTSVC_PLUS_ONLY, /* + */
+ CTSVC_PLUS_IP_ONLY, /* +IP (International prefix) */
+ CTSVC_PLUS_CC_ONLY, /* +CC (Country code) */
+ CTSVC_PLUS_IP_CC, /* +IP CC */
+ CTSVC_IP_ONLY, /* IP */
+ CTSVC_CC_ONLY, /* CC */
+ CTSVC_IP_CC, /* IP CC */
CTSVC_NONE,
};
int match_len;
*index = 0;
- // Check IP
+ /* Check IP */
start_index = 0;
match_len = 0;
case '+':
start_index++;
have_plus = true;
- if (start_index >= len) {
+ if (len <= start_index) {
*index = start_index;
- return CTSVC_PLUS_ONLY; //'+'
+ return CTSVC_PLUS_ONLY; /* '+' */
}
default:
{
- // IP can be
- // 0 (Turks and Caicos Islands, Samoa)
- // 00, 011, 0011, 010, 000
- // 001/007 (Cambodia), 001/008 (Indonesia, Singapore), 001/002 (Korea), 002(Taiwan)
- // 810 (Belarus, Kazakhstan, Russian, Tajikistan, Turkmenistan)
- // 009/007/005(Colombia), 009(Nigeria)
- // 119 (Cuba)
- // 00/012/013/014 (Israel)
+ /*
+ * IP can be
+ * 0 (Turks and Caicos Islands, Samoa)
+ * 00, 011, 0011, 010, 000
+ * 001/007 (Cambodia), 001/008 (Indonesia, Singapore)
+ * 001/002 (Korea), 002(Taiwan)
+ * 810 (Belarus, Kazakhstan, Russian, Tajikistan, Turkmenistan)
+ * 009/007/005(Colombia), 009(Nigeria)
+ * 119 (Cuba)
+ * 00/012/013/014 (Israel)
+ */
switch(number[start_index]) {
- case '0': // '+0'
+ case '0': /* '+0' */
{
start_index++;
- if (start_index >= len) {
+ if (len <= start_index) {
*index = start_index;
- return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); // '+0'
+ return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); /* '+0' */
}
switch(number[start_index]) {
- case '0': // '+00'
+ case '0': /* '+00' */
{
start_index++;
- if (start_index >= len) {
+ if (len <= start_index) {
*index = start_index;
- return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); // '+00'
+ return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); /* '+00' */
}
switch(number[start_index]) {
- case '0': // '+000'
- case '2': // '+002'
- case '5': // '+005'
- case '7': // '+007'
- case '8': // '+008'
- case '9': // '+009'
- // or '+00 CC'
+ case '0': /* '+000' */
+ case '2': /* '+002' */
+ case '5': /* '+005' */
+ case '7': /* '+007' */
+ case '8': /* '+008' */
+ case '9': /* '+009' */
+ /* or '+00 CC' */
start_index++;
- if (start_index >= len) {
+ if (len <= start_index) {
*index = start_index;
- return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); // '+00Y'
+ return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); /* '+00Y' */
}
have_cc = __ctsvc_phone_number_has_country_code(&number[start_index], len-start_index);
- if (have_cc > 0) {
+ if (0 < have_cc) {
*index = start_index;
- return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_IP_CC); // '+00Y CC'
+ return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_IP_CC); /* '+00Y CC' */
}
else {
have_cc = __ctsvc_phone_number_has_country_code(&number[start_index-1], len-start_index+1);
- if (have_cc > 0) {
+ if (0 < have_cc) {
*index = start_index-1;
- return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_IP_CC); // '+00 CC'
+ return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_IP_CC); /* '+00 CC' */
}
}
*index = start_index;
- return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); // '+00Y XXX'
- case '1': // '+001'
+ return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); /* '+00Y XXX' */
+ case '1': /* '+001' */
start_index++;
- if (start_index >= len) {
+ if (len <= start_index) {
*index = start_index;
- return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); // '+001'
+ return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); /* '+001' */
}
if (number[start_index] == '1') {
start_index++;
- if (start_index >= len) {
+ if (len <= start_index) {
*index = start_index;
- return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); // '+0011'
+ return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); /* '+0011' */
}
have_cc = __ctsvc_phone_number_has_country_code(&number[start_index], len-start_index);
- if (have_cc > 0) {
+ if (0 < have_cc) {
*index = start_index;
- return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_IP_CC); // '+0011 CC'
+ return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_IP_CC); /* '+0011 CC' */
}
start_index--;
}
have_cc = __ctsvc_phone_number_has_country_code(&number[start_index], len-start_index);
*index = start_index;
- if (have_cc > 0)
- return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_IP_CC); // '+001 CC'
+ if (0 < have_cc)
+ return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_IP_CC); /* '+001 CC' */
else
- return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); // '+001 XXX'
- default: // '+00 3', '+00 4', '+00 6'
+ return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); /* '+001 XXX' */
+ default: /* '+00 3', '+00 4', '+00 6' */
*index = start_index;
have_cc = __ctsvc_phone_number_has_country_code(&number[start_index], len-start_index);
- if (have_cc > 0)
- return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_IP_CC); // '+00 CC'
+ if (0 < have_cc)
+ return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_IP_CC); /* '+00 CC' */
else
- return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); // '+00 XXX'
- } // end of fourth switch
+ return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); /* '+00 XXX' */
+ } /* end of fourth switch */
}
break;
- case '1': // '+01'
+ case '1': /* '+01' */
{
start_index++;
- if (start_index >= len) {
- *index = start_index-1; // '+0 1'
- return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_IP_CC);
+ if (len <= start_index) {
+ *index = start_index-1; /* '+0 1' */
+ return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_NONE);
}
switch(number[start_index]) {
- case '0': // '+010'
- case '1': // '+011'
- case '2': // '+012'
- case '3': // '+013'
- case '4': // '+014'
+ case '0': /* '+010' */
+ case '1': /* '+011' */
+ case '2': /* '+012' */
+ case '3': /* '+013' */
+ case '4': /* '+014' */
{
start_index++;
- if (start_index >= len) {
+ if (len <= start_index) {
*index = start_index;
- return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); // '+01Y'
+ return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); /* '+01Y' */
}
have_cc = __ctsvc_phone_number_has_country_code(&number[start_index], len-start_index);
*index = start_index;
- if (have_cc > 0)
- return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_IP_CC); // '+01Y CC'
+ if (0 < have_cc)
+ return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_IP_CC); /* '+01Y CC' */
else
- return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); // '+01Y XXX'
+ return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); /* '+01Y XXX' */
}
break;
default:
- *index = start_index-1; // '+0 1'
- return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_IP_CC);
+ *index = start_index-1; /* '+0 1' */
+ return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_NONE);
}
}
break;
- default: // '+0 CC'
+ default: /* '+0 CC' */
{
have_cc = __ctsvc_phone_number_has_country_code(&number[start_index], len-start_index);
*index = start_index;
- if (have_cc > 0)
- return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_IP_CC); // '+0 CC'
+ if (0 < have_cc)
+ return (have_plus?CTSVC_PLUS_IP_CC:CTSVC_IP_CC); /* '+0 CC' */
else
- return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); // '+0 XXX'
+ return (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY); /* '+0 XXX' */
}
break;
- } // end of third switch
+ } /* end of third switch */
}
- break; // end of '+0'
- case '1': // '+1'
+ break; /* end of '+0' */
+ case '1': /* '+1' */
start_index++;
- if (start_index+2 <= len && strncmp(&number[start_index], "19", 2) == 0) { // '+119'
+ if (start_index+2 <= len && STRING_EQUAL == strncmp(&number[start_index], "19", 2)) { /* '+119' */
match_len = start_index + 2;
ret = (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY);
}
else {
match_len = start_index-1;
- ret = (have_plus?CTSVC_PLUS_ONLY:CTSVC_NONE); // '+ CC'
+ ret = (have_plus?CTSVC_PLUS_ONLY:CTSVC_NONE); /* '+ CC' */
}
break;
- case '8': // '+8'
+ case '8': /* '+8' */
start_index++;
- if (start_index+2 <= len && strncmp(&number[start_index], "10", 2) == 0) { // '+810'
+ if (start_index+2 <= len && STRING_EQUAL == strncmp(&number[start_index], "10", 2)) { /* '+810' */
match_len = start_index + 2;
ret = (have_plus?CTSVC_PLUS_IP_ONLY:CTSVC_IP_ONLY);
}
else {
match_len = start_index-1;
- ret = (have_plus?CTSVC_PLUS_ONLY:CTSVC_NONE); // '+ CC'
+ ret = (have_plus?CTSVC_PLUS_ONLY:CTSVC_NONE); /* '+ CC' */
}
break;
default:
match_len = start_index;
- ret = (have_plus?CTSVC_PLUS_ONLY:CTSVC_NONE); // '+ CC'
+ ret = (have_plus?CTSVC_PLUS_ONLY:CTSVC_NONE); /* '+ CC' */
break;
- } // end of second switch
+ } /* end of second switch */
}
- break; // '+' default
- } // end of first switch
+ break; /* '+' default */
+ } /* end of first switch */
*index = match_len;
- // Check CC
+ /* Check CC */
if (match_len < len) {
have_cc = __ctsvc_phone_number_has_country_code(&number[match_len], len-match_len);
- if (have_cc > 0) {
+ if (0 < have_cc) {
switch (ret) {
case CTSVC_NONE:
return CTSVC_CC_ONLY;
cc = ctsvc_get_network_cc(false);
n = __ctsvc_number_has_ip_and_cc(src, d_pos-ctsvc_get_phonenumber_min_match_digit(), &index);
- if (src[0] == '0' // remove first '0'
- || (cc && cc[0] == '7' && src[0] == '8')) // Russian
+ if (src[0] == '0' /* remove first '0' */
+ || (cc && cc[0] == '7' && src[0] == '8')) /* Russian */
first_zero = 1;
- // 001 82 10 1234 5678 -> +82 10 1234 5678
- // +001 82 10 1234 5678 -> +82 10 1234 5678
- // 82 10 1234 5678 -> +82 10 1234 5678
- // add '+'
- // do not append + if the number without cc is too short
- // cc 010-1234-5678 ==> +cc 010-1234-5678, cc3456 => cc3456
+ /*
+ * 001 82 10 1234 5678 -> +82 10 1234 5678
+ * +001 82 10 1234 5678 -> +82 10 1234 5678
+ * 82 10 1234 5678 -> +82 10 1234 5678
+ * add '+'
+ * do not append + if the number without cc is too short
+ * cc 010-1234-5678 ==> +cc 010-1234-5678, cc3456 => cc3456
+ */
if (CTSVC_IP_CC == n || CTSVC_CC_ONLY == n) {
- if (dest_size > d_pos + 1) {
+ if (d_pos + 1 < dest_size) {
dest[0] = '+';
memcpy(dest+1, src, d_pos+1);
d_pos++;
}
else if (CTSVC_PLUS_ONLY == n || CTSVC_PLUS_CC_ONLY == n
|| CTSVC_PLUS_IP_ONLY == n || CTSVC_PLUS_IP_CC == n) {
- if (dest_size > d_pos) {
- // Just copy
+ if (d_pos < dest_size) {
+ /* Just copy */
memcpy(dest, src, d_pos+1);
dest[d_pos] = 0;
return d_pos;
}
}
- // append country code
- else { // CTSVC_NONE, // invalid case : CTSVC_IP_ONLY
- if (cc && d_pos >= ctsvc_get_phonenumber_min_match_digit()) {
- // add '+cc'
- // do not append cc if the number is too short
- // 010-1234-5678 ==> +cc 10-1234-5678, 1234 ==> 1234
- // 8 XXX-XXX-XX-XX ===> +7 XXX-XXX-XX-XX
- if (dest_size > d_pos + strlen(cc) + 1) {
+ /* append country code */
+ else { /* CTSVC_NONE, invalid case : CTSVC_IP_ONLY */
+ if (cc && ctsvc_get_phonenumber_min_match_digit() <= d_pos) {
+ /*
+ * add '+cc'
+ * do not append cc if the number is too short
+ * 010-1234-5678 ==> +cc 10-1234-5678, 1234 ==> 1234
+ * 8 XXX-XXX-XX-XX ===> +7 XXX-XXX-XX-XX
+ */
+ if (d_pos + strlen(cc) + 1 < dest_size) {
dest[0] = '+';
memcpy(dest+1, cc, strlen(cc));
memcpy(dest+1+strlen(cc), src+first_zero, d_pos+1-first_zero);
return d_pos;
}
-// vaild character : digit, +, *, #, , ;, alphabet(depends on replace_alphabet parameter)
-// Remove invalid string from number
+/*
+ * vaild character : digit, +, *, #,, ;, alphabet(depends on replace_alphabet parameter)
+ * Remove invalid string from number
+ */
int ctsvc_clean_number(const char *src, char *dest, int dest_size, bool replace_alphabet)
{
int s_pos;
pos = 0;
while (src[s_pos] != 0) {
int char_len;
- if (pos > dest_size-2) break;
+ if (dest_size - 2 < pos) break;
char_len = ctsvc_check_utf8(src[s_pos]);
if (char_len <= 0) {
}
if (char_len == 3) {
- // fullwidth -> halfwidth
+ /* fullwidth -> halfwidth */
if (src[s_pos] == 0xef) {
if (src[s_pos+1] == 0xbc) {
- if (0x90 <= src[s_pos+2] && src[s_pos+2] <= 0x99) // ef bc 90 : '0' ~ ef bc 99 : '9'
+ if (0x90 <= src[s_pos+2] && src[s_pos+2] <= 0x99) /* ef bc 90 : '0' ~ ef bc 99 : '9' */
temp[pos++] = src[s_pos+2] - 0x60;
- else if (0xa1 <= src[s_pos+2] && src[s_pos+2] <= 0xba) // ef bc a1 : 'A' ~ ef bc ba : 'Z'
+ else if (0xa1 <= src[s_pos+2] && src[s_pos+2] <= 0xba) /* ef bc a1 : 'A' ~ ef bc ba : 'Z' */
temp[pos++] = src[s_pos+2] - 0x60;
- else if (0x8b == src[s_pos+2]) // ef bc 8b : '+'
+ else if (0x8b == src[s_pos+2]) /* ef bc 8b : '+' */
temp[pos++] = '+';
- else if (0x8a == src[s_pos+2]) // ef bc 8a : '*'
+ else if (0x8a == src[s_pos+2]) /* ef bc 8a : '*' */
temp[pos++] = '*';
- else if (0x83 == src[s_pos+2]) // ef bc 83 : '#'
+ else if (0x83 == src[s_pos+2]) /* ef bc 83 : '#' */
temp[pos++] = '#';
- else if (0x8c == src[s_pos+2]) // ef bc 8c : ','
+ else if (0x8c == src[s_pos+2]) /* ef bc 8c : ',' */
temp[pos++] = ',';
- else if (0x9b == src[s_pos+2]) // ef bc 9b : ';'
+ else if (0x9b == src[s_pos+2]) /* ef bc 9b : ';' */
temp[pos++] = ';';
}
else if (src[s_pos+1] == 0xbd
- && (0x81 <= src[s_pos+2] && src[s_pos+2] <= 0x9a)) // ef bd 81 : 'a' ~ ef bd 9a : 'z'
+ && (0x81 <= src[s_pos+2] && src[s_pos+2] <= 0x9a)) /* ef bd 81 : 'a' ~ ef bd 9a : 'z' */
temp[pos++] = src[s_pos+2] - 0x40;
}
else {
}
}
else if (char_len == 1) {
- if (0x41 <= src[s_pos] && src[s_pos] <= 0x5a) // 'A' ~ 'Z'
+ if (0x41 <= src[s_pos] && src[s_pos] <= 0x5a) /* 'A' ~ 'Z' */
temp[pos++] = src[s_pos];
- else if (0x61 <= src[s_pos] && src[s_pos] <= 0x7a) // 'a' ~ 'z'
+ else if (0x61 <= src[s_pos] && src[s_pos] <= 0x7a) /* 'a' ~ 'z' */
temp[pos++] = src[s_pos] - 0x20;
else
temp[pos++] = src[s_pos];
pos = 0;
d_pos = 0;
- while(temp[pos] != 0) {
+ while (temp[pos] != 0) {
if ('0' <= temp[pos] && temp[pos] <= '9')
dest[d_pos++] = temp[pos];
else if (temp[pos] == '+' || temp[pos] == '#'
len = strlen(temp_number);
if (0 < len) {
- while(0 <= (len-d_pos-1) && temp_number[len-d_pos-1]
+ while (0 <= (len-d_pos-1) && temp_number[len-d_pos-1]
&& d_pos < min_match) {
if (dest_size-d_pos == 0) {
CTS_ERR("Destination string buffer is not enough(%s)", src);
dest[d_pos] = 0;
len = strlen(dest);
- for(i=0; i<len/2;i++) {
+ for (i=0; i<len/2;i++) {
char c;
c = dest[i];
dest[i] = dest[len-i-1];
ret = __ctsvc_minmatch_number(src, dest, dest_size, min_match);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("__ctsvc_minmatch_number() failed(%d)", ret);
+ CTS_ERR("__ctsvc_minmatch_number() Fail(%d)", ret);
return ret;
}
int i;
int len = strlen(keyword);
- // TODO: we should add predicate including '+'
- // TODO: finally, we try to check the number with regular expression.
- for(i=0; i<len; i++) {
- if ((keyword[i] < '0' || keyword[i] > '9') && keyword[i] != '+') {
+ /* TODO: we should add predicate including '+' */
+ /* TODO: finally, we try to check the number with regular expression. */
+ for (i=0; i<len; i++) {
+ if ((keyword[i] < '0' || '9' < keyword[i]) && keyword[i] != '+') {
CTS_ERR("keyword[%d]: %c is not number)", i, keyword[i]);
return false;
}
if (keyword[i] == 0xef) {
if (keyword[i+1] == 0xbc) {
- if (0x90 <= keyword[i+2] && keyword[i+2] <= 0x99) // ef bc 90 : '0' ~ ef bc 99 : '9'
+ if (0x90 <= keyword[i+2] && keyword[i+2] <= 0x99) /* ef bc 90 : '0' ~ ef bc 99 : '9' */
continue;
- else if (0x8b == keyword[i+2]) // ef bc 8b : '+'
+ else if (0x8b == keyword[i+2]) /* ef bc 8b : '+' */
continue;
else
return false;
bool ctsvc_is_phonenumber(const char* src)
{
- return ( __ctsvc_is_phonenumber_halfwidth(src) || __ctsvc_is_phonenumber_fullwidth(src) );
+ return (__ctsvc_is_phonenumber_halfwidth(src) || __ctsvc_is_phonenumber_fullwidth(src));
}
-// numbers are cleaned number or normalized number
+/* numbers are cleaned number or normalized number */
static bool __ctsvc_number_compare(const char *number1, const char *number2)
{
int len1;
len1 = strlen(number1);
len2 = strlen(number2);
- // compare number in reverse order
- for (matched = 0; len1 > 0 && len2 > 0;) {
+ /* compare number in reverse order */
+ for (matched = 0; 0 < len1 && 0 < len2;) {
if (number1[len1-1] != number2[len2-1])
break;
len1--;
matched++;
}
- // full match
+ /* full match */
if (len1 == 0 && len2 == 0)
return true;
- // one is substring of the other string
- if (matched >= minmatch_len && (len1 == 0 || len2 == 0))
+ /* one is substring of the other string */
+ if (minmatch_len <= matched && (len1 == 0 || len2 == 0))
return true;
- // one is +IPCC or +CC, the other is start wth NTP (National trunk prefix)
- if (matched >= minmatch_len) {
+ /* one is +IPCC or +CC, the other is start wth NTP (National trunk prefix) */
+ if (minmatch_len <= matched) {
int index1 = 0;
int index2 = 0;
int cc_index = 0;
- ///////////////////////////////////////////////////
- // International Prefix (IP) is related to current location where to call
- // Country Code (CC) is related to the SIM card who to call
- // If you try to call in United State using Korea SIM card,
- // the number will be 011 82 X XXXXXXXX.
- // So, when comparing number, just check IP validation and CC and natinal number matching.
+ /*
+ * International Prefix (IP) is related to current location where to call
+ * Country Code (CC) is related to the SIM card who to call
+ * If you try to call in United State using Korea SIM card,
+ * the number will be 011 82 X XXXXXXXX.
+ * So, when comparing number, just check IP validation and CC and natinal number matching.
+ */
int n1 = __ctsvc_number_has_ip_and_cc(number1, len1, &index1);
int n2 = __ctsvc_number_has_ip_and_cc(number2, len2, &index2);
- ///////////////////////////////////////////////////
- // + (IP) CC XXXXXXXX, 0XXXXXXXX
- // + (810) 7 XXX XXX XX XX, 8XXX XXX XX XX (Russian)
+ /*
+ * + (IP) CC XXXXXXXX, 0XXXXXXXX
+ * + (810) 7 XXX XXX XX XX, 8XXX XXX XX XX (Russian)
+ */
if ((CTSVC_PLUS_IP_CC == n1 || CTSVC_PLUS_CC_ONLY == n1 ||
CTSVC_IP_CC == n1 || CTSVC_CC_ONLY == n1)
&& (number2[0] == '0' || (cc && cc[0] == '7' && number2[0] == '8')))
CTSVC_IP_CC == n2 || CTSVC_CC_ONLY == n2)
&& (number1[0] == '0' || (cc && cc[0] == '7' && number1[0] == '8')))
return true;
- //////////////////////////////////////////////////
- // + IP CC XXXXXXXX, + CC XXXXXXXX (ex. +001 82 11 1234 5678 , +82 10 1234 5678)
+ /*
+ * + IP CC XXXXXXXX, + CC XXXXXXXX (ex. +001 82 11 1234 5678, +82 10 1234 5678)
+ */
else if ((CTSVC_PLUS_IP_CC == n1 || CTSVC_IP_CC == n1)
&& (CTSVC_PLUS_CC_ONLY == n2 || CTSVC_CC_ONLY == n2)) {
int p = (CTSVC_PLUS_CC_ONLY == n2)?1:0;
cc_index = __ctsvc_phone_number_has_country_code(&number2[p], len2-p);
- if (cc_index > 0 && strncmp(&number1[index1], &number2[p], cc_index) == 0)
+ if (0 < cc_index && STRING_EQUAL == strncmp(&number1[index1], &number2[p], cc_index))
return true;
}
else if ((CTSVC_PLUS_IP_CC == n2 || CTSVC_IP_CC == n2)
&& (CTSVC_PLUS_CC_ONLY == n1 || CTSVC_CC_ONLY == n1)) {
int p = (CTSVC_PLUS_CC_ONLY == n1)?1:0;
cc_index = __ctsvc_phone_number_has_country_code(&number1[p], len1-p);
- if (cc_index > 0 && strncmp(&number2[index2], &number1[p], cc_index) == 0)
+ if (0 < cc_index && STRING_EQUAL == strncmp(&number2[index2], &number1[p], cc_index))
return true;
}
- ///////////////////////////////////////////////////
- // + CC XXXXXXXX, + IP CC XXXXXXXX (ex. +001 82 10 1234 5678 , +82 10 1234 5678)
+ /*
+ * + CC XXXXXXXX, + IP CC XXXXXXXX (ex. +001 82 10 1234 5678, +82 10 1234 5678)
+ */
else if ((CTSVC_PLUS_IP_ONLY == n1 || CTSVC_IP_ONLY == n1)
&& CTSVC_PLUS_ONLY == n2) {
return true;
return false;
}
-// When querying _NUMBER_COMPARE_, this function will be called.
+/* When querying _NUMBER_COMPARE_, this function will be called. */
void ctsvc_db_phone_number_equal_callback(sqlite3_context * context,
int argc, sqlite3_value ** argv)
{
* limitations under the License.
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_NUMBER_UTILS_H__
-#define __TIZEN_SOCIAL_CTSVC_NUMBER_UTILS_H__
+#ifndef __CTSVC_NUMBER_UTILS_H__
+#define __CTSVC_NUMBER_UTILS_H__
#include <sqlite3.h>
void* ctsvc_init_tapi_handle_for_cc(void);
void ctsvc_deinit_tapi_handle_for_cc(void);
-#endif /* __TIZEN_SOCIAL_CTSVC_NUMBER_UTILS_H__ */
+#endif /* __CTSVC_NUMBER_UTILS_H__ */
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
-#include <db-util.h>
#include <sqlite3.h>
#include "contacts.h"
#include "ctsvc_internal.h"
#include "ctsvc_server_sqlite.h"
#include "schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_schema_recovery.h"
-#include "ctsvc_schema.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_zone.h"
+#include "ctsvc_server_zone.h"
-// Additional Error
+/* Additional Error */
enum {
CTSVC_ERR_NO_DB_FILE = -10000,
CTSVC_ERR_NO_TABLE,
};
-static inline int __ctsvc_server_check_db_file(void)
+static inline int __ctsvc_server_check_db_file(const char *zone_name)
{
- int fd = open(CTSVC_DB_PATH, O_RDONLY);
+ int len = 0;
+
+ char db_path[CTSVC_PATH_MAX_LEN] = {0};
+ len = ctsvc_zone_get_root_path(zone_name, db_path, sizeof(db_path));
+ snprintf(db_path+len, sizeof(db_path)-len, "%s", CTSVC_DB_PATH);
+
+ int fd = open(db_path, O_RDONLY);
RETVM_IF(-1 == fd, CTSVC_ERR_NO_DB_FILE, "DB file is not exist");
close(fd);
return CONTACTS_ERROR_NONE;
}
-static inline int __ctsvc_server_remake_db_file()
+static inline int __ctsvc_server_remake_db_file(const char *zone_name)
{
int ret, fd;
char *errmsg;
sqlite3 *db;
- ret = ctsvc_server_db_open(&db);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_server_db_open() Failed(%d)", ret);
+ int len = 0;
+ char db_path[CTSVC_PATH_MAX_LEN] = {0};
+ len = ctsvc_zone_get_root_path(zone_name, db_path, sizeof(db_path));
+ snprintf(db_path+len, sizeof(db_path)-len, "%s", CTSVC_DB_PATH);
+
+ len = 0;
+ char journal_path[CTSVC_PATH_MAX_LEN] = {0};
+ len = ctsvc_zone_get_root_path(zone_name, journal_path, sizeof(journal_path));
+ snprintf(db_path+len, sizeof(db_path)-len, "%s", CTSVC_DB_JOURNAL_PATH);
+
+ ret = ctsvc_server_db_open(zone_name, &db);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_server_db_open() Fail(%d)", ret);
ret = sqlite3_exec(db, schema_query, NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("remake contacts DB file is Failed : %s", errmsg);
+ CTS_ERR("remake contacts DB file Failed : %s", errmsg);
sqlite3_free(errmsg);
}
- ctsvc_server_db_close();
+ ctsvc_server_db_close(zone_name);
- fd = open(CTSVC_DB_PATH, O_CREAT | O_RDWR, 0660);
+ fd = open(db_path, O_CREAT | O_RDWR, 0660);
RETVM_IF(-1 == fd, CONTACTS_ERROR_SYSTEM, "open Failed");
ret = fchown(fd, getuid(), CTS_SECURITY_FILE_GROUP);
if (0 != ret)
- CTS_ERR("fchown(%s) Failed(%d)", CTSVC_DB_PATH, ret);
+ CTS_ERR("fchown(%s) Fail(%d)", db_path, ret);
ret = fchmod(fd, CTS_SECURITY_DEFAULT_PERMISSION);
if (0 != ret)
- CTS_ERR("fchown(%s) Failed(%d)", CTSVC_DB_PATH, ret);
+ CTS_ERR("fchown(%s) Fail(%d)", db_path, ret);
close(fd);
- fd = open(CTSVC_DB_JOURNAL_PATH, O_CREAT | O_RDWR, 0660);
+ fd = open(journal_path, O_CREAT | O_RDWR, 0660);
RETVM_IF(-1 == fd, CONTACTS_ERROR_SYSTEM, "open Failed");
ret = fchown(fd, getuid(), CTS_SECURITY_FILE_GROUP);
if (0 != ret)
- CTS_ERR("fchown(%s) Failed(%d)", CTSVC_DB_JOURNAL_PATH, ret);
+ CTS_ERR("fchown(%s) Fail(%d)", journal_path, ret);
ret = fchmod(fd, CTS_SECURITY_DEFAULT_PERMISSION);
if (0 != ret)
- CTS_ERR("fchown(%s) Failed(%d)", CTSVC_DB_JOURNAL_PATH, ret);
+ CTS_ERR("fchown(%s) Fail(%d)", journal_path, ret);
close(fd);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_server_check_table()
+static int __ctsvc_server_check_table(const char *zone_name)
{
int ret;
sqlite3 *db;
char query[CTS_SQL_MAX_LEN] = {0};
cts_stmt stmt = NULL;
- ret = ctsvc_server_db_open(&db);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_server_db_open() Failed(%d)", ret);
+ ret = ctsvc_server_db_open(zone_name, &db);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_server_db_open() Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT name FROM sqlite_master WHERE type='table' AND name='%s'",
CTS_TABLE_CONTACTS);
ret = sqlite3_prepare_v2(db, query, strlen(query), &stmt, NULL);
if (SQLITE_OK != ret) {
- CTS_ERR("DB error : sqlite3_prepare_v2(%s) Failed(%s)", query, sqlite3_errmsg(db));
- ctsvc_server_db_close();
+ CTS_ERR("DB error : sqlite3_prepare_v2(%s) Fail(%s)", query, sqlite3_errmsg(db));
+ ctsvc_server_db_close(zone_name);
return CONTACTS_ERROR_DB;
}
if (SQLITE_ROW != ret) {
CTS_ERR("contacts table does not exist in contacts DB file : %s", sqlite3_errmsg(db));
sqlite3_finalize(stmt);
- ctsvc_server_db_close();
+ ctsvc_server_db_close(zone_name);
return CTSVC_ERR_NO_TABLE;
}
sqlite3_finalize(stmt);
- ctsvc_server_db_close();
+ ctsvc_server_db_close(zone_name);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_server_check_schema(void)
+int ctsvc_server_check_schema(const char *zone_name)
{
- if (CTSVC_ERR_NO_DB_FILE == __ctsvc_server_check_db_file())
- __ctsvc_server_remake_db_file();
- else if (CTSVC_ERR_NO_TABLE == __ctsvc_server_check_table())
- __ctsvc_server_remake_db_file();
+ if (CTSVC_ERR_NO_DB_FILE == __ctsvc_server_check_db_file(zone_name))
+ __ctsvc_server_remake_db_file(zone_name);
+ else if (CTSVC_ERR_NO_TABLE == __ctsvc_server_check_table(zone_name))
+ __ctsvc_server_remake_db_file(zone_name);
return CONTACTS_ERROR_NONE;
}
#ifndef __CTSVC_SERVER_SCHEMA_RECOVERY_H__
#define __CTSVC_SERVER_SCHEMA_RECOVERY_H__
-int ctsvc_server_check_schema();
+int ctsvc_server_check_schema(const char *zone_name);
-#endif // __CTSVC_SERVER_SCHEMA_RECOVERY_H__
+#endif /* __CTSVC_SERVER_SCHEMA_RECOVERY_H__ */
#include <string.h>
#include <pims-ipc.h>
#include <pims-ipc-svc.h>
-#include <unistd.h> //getuid
-#include <grp.h> //setgroups
+#include <unistd.h>
+#include <grp.h>
+#include <glib.h>
#include <glib/gstdio.h>
#include "ctsvc_internal.h"
#include "ctsvc_db_init.h"
-#include "ctsvc_schema.h"
+#include "ctsvc_db_schema.h"
#include "ctsvc_schema_recovery.h"
#include "ctsvc_server_socket.h"
#include "ctsvc_server_utils.h"
#include "ctsvc_server_bg.h"
#include "ctsvc_server_update.h"
+#include "ctsvc_server_zone.h"
#include "ctsvc_db_access_control.h"
-#include "ctsvc_notification.h"
#include "ctsvc_ipc_define.h"
#include "ctsvc_ipc_server.h"
#include "ctsvc_ipc_server2.h"
-static gboolean _ctsvc_idler_for_socket_init(gpointer user_data)
+#define CTSVC_TIMEOUT_IDLER 1
+#define CTSVC_TIMEOUT_FOR_DEFAULT 0
+
+static int ctsvc_list_count = 0;
+static char **ctsvc_zone_name_list = NULL;
+static int ctsvc_timeout_sec = CTSVC_TIMEOUT_FOR_DEFAULT;
+static GMainLoop *main_loop = NULL;
+
+static gboolean _ctsvc_idler_for_zone(gpointer user_data)
{
CTS_FN_CALL;
+ int ret = 0;
if (g_access(CTSVC_IPC_SOCKET_PATH, F_OK) || g_access(CTSVC_IPC_SOCKET_PATH_FOR_CHANGE_SUBSCRIPTION, F_OK)) {
CTS_ERR("No file exists");
return TRUE;
}
- ctsvc_noti_publish_socket_initialize();
+
+ ret = ctsvc_server_zone_initialize();
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_zone_initialize() Fail(%d)", ret);
+
+ ret = ctsvc_server_zone_declare_link();
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, TRUE, "ctsvc_server_zone_declare_link() Fail(%d)", ret);
+
+ ctsvc_server_zone_get_activated_zone_name_list(&ctsvc_zone_name_list, &ctsvc_list_count);
+ int i;
+ for (i=0;i<ctsvc_list_count;i++) {
+ ctsvc_server_zone_initialize_zone(ctsvc_zone_name_list[i]);
+ }
+
return FALSE;
}
-
static int __server_main(void)
{
- int ret;
+ int i;
pims_ipc_svc_init(CTSVC_IPC_SOCKET_PATH, CTS_SECURITY_FILE_GROUP, 0777);
do {
- // register handle functions
- // These functions will be called when requesting from client module depends on module name and function name (pims_ipc_call, ctsvc_ipc_call)
- // pims_ipc_svc_register(MODULE_NAME, FUNCTION_NAME ...);
+ /*
+ * register handle functions
+ * These functions will be called when requesting from client module depends on module name and function name (pims_ipc_call, ctsvc_ipc_call)
+ * pims_ipc_svc_register(MODULE_NAME, FUNCTION_NAME ...);
+ */
if (pims_ipc_svc_register(CTSVC_IPC_MODULE, CTSVC_IPC_SERVER_CONNECT, ctsvc_ipc_server_connect, NULL) != 0) break;
if (pims_ipc_svc_register(CTSVC_IPC_MODULE, CTSVC_IPC_SERVER_DISCONNECT, ctsvc_ipc_server_disconnect, NULL) != 0) break;
if (pims_ipc_svc_register(CTSVC_IPC_MODULE, CTSVC_IPC_SERVER_CHECK_PERMISSION, ctsvc_ipc_server_check_permission, NULL) != 0) break;
#ifdef ENABLE_LOG_FEATURE
if (pims_ipc_svc_register(CTSVC_IPC_PHONELOG_MODULE, CTSVC_IPC_SERVER_PHONELOG_RESET_STATISTICS, ctsvc_ipc_phone_log_reset_statistics, NULL) != 0) break;
if (pims_ipc_svc_register(CTSVC_IPC_PHONELOG_MODULE, CTSVC_IPC_SERVER_PHONELOG_DELETE, ctsvc_ipc_phone_log_delete, NULL) != 0) break;
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
if (pims_ipc_svc_register(CTSVC_IPC_SETTING_MODULE, CTSVC_IPC_SERVER_SETTING_GET_NAME_DISPLAY_ORDER, ctsvc_ipc_setting_get_name_display_order, NULL) != 0) break;
if (pims_ipc_svc_register(CTSVC_IPC_SETTING_MODULE, CTSVC_IPC_SERVER_SETTING_SET_NAME_DISPLAY_ORDER, ctsvc_ipc_setting_set_name_display_order, NULL) != 0) break;
pims_ipc_svc_init_for_publish(CTSVC_IPC_SOCKET_PATH_FOR_CHANGE_SUBSCRIPTION, CTS_SECURITY_FILE_GROUP, 0660);
- g_idle_add(_ctsvc_idler_for_socket_init, NULL);
-
- ret = contacts_connect();
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("contacts_connect fail(%d)", ret);
- break;
- }
- ctsvc_set_client_access_info("contacts-service", NULL);
+ g_timeout_add_seconds(CTSVC_TIMEOUT_IDLER, _ctsvc_idler_for_zone, NULL);
- ctsvc_server_bg_add_cb();
- ctsvc_server_bg_delete_start();
-
- ret = ctsvc_server_init_configuration();
- CTS_DBG("%d", ret);
-
- GMainLoop* main_loop;
main_loop = g_main_loop_new(NULL, FALSE);
pims_ipc_svc_run_main_loop(main_loop);
- ctsvc_server_final_configuration();
-
- ctsvc_server_bg_remove_cb();
-
- ctsvc_unset_client_access_info();
+ for (i=0;i<ctsvc_list_count;i++) {
+ ctsvc_server_zone_finalize_zone(ctsvc_zone_name_list[i]);
+ free(ctsvc_zone_name_list[i]);
+ }
+ free(ctsvc_zone_name_list);
- ret = contacts_disconnect();
- if (CONTACTS_ERROR_NONE != ret)
- CTS_DBG("%d", ret);
+ ctsvc_server_final_configuration();
pims_ipc_svc_deinit_for_publish();
return 0;
- } while(0);
+ } while (0);
CTS_ERR("pims_ipc_svc_register error");
return -1;
}
+void ctsvc_server_quit(void)
+{
+ g_main_loop_quit(main_loop);
+ main_loop = NULL;
+}
+
+int ctsvc_server_get_timeout_sec(void)
+{
+ CTS_DBG("ctsvc_timeout_sec:%d", ctsvc_timeout_sec);
+ return ctsvc_timeout_sec;
+}
+
int main(int argc, char *argv[])
{
CTS_FN_CALL;
INFO("Start contacts-service");
int ret;
- if (getuid() == 0) { // root
+ if (getuid() == 0) { /* root */
gid_t glist[] = {CTS_SECURITY_FILE_GROUP};
- ret = setgroups(1, glist); // client and server should have same Groups
+ ret = setgroups(1, glist); /* client and server should have same Groups */
WARN_IF(ret <0, "setgroups Fail(%d)", ret);
}
- ctsvc_server_load_feature_list();
- ctsvc_server_check_schema();
- if (2 <= argc && !strcmp(argv[1], "schema"))
- return CONTACTS_ERROR_NONE;
-
- // update DB for compatability
- ctsvc_server_db_update();
+ if (2 <= argc && STRING_EQUAL == strcmp(argv[1], "timeout"))
+ ctsvc_timeout_sec = atoi(argv[2]);
+ ctsvc_server_load_feature_list();
ret = ctsvc_server_socket_init();
CTS_DBG("%d", ret);
-/*\r
- * Contacts Service\r
- *\r
- * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- *\r
- */\r
-\r
-#ifndef __TIZEN_SOCIAL_CTSVC_ACTIVITY_H__\r
-#define __TIZEN_SOCIAL_CTSVC_ACTIVITY_H__\r
-\r
-#endif // __TIZEN_SOCIAL_CTSVC_PERSON_H__\r
-\r
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2015 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.
+ *
+ */
+
+#ifndef __CTSVC_SERVER_H__
+#define __CTSVC_SERVER_H__
+
+void ctsvc_server_quit(void);
+int ctsvc_server_get_timeout_sec(void);
+
+#endif /* __CTSVC_SERVER_H__ */
+
+
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_plugin_contact_helper.h"
#include "ctsvc_notification.h"
#include "ctsvc_db_access_control.h"
-API int contacts_activity_delete_by_contact_id(int contact_id)
+int ctsvc_activity_delete_by_contact_id(const char *zone_name, int contact_id)
{
char query[CTS_SQL_MAX_LEN] = {0};
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
"Permission denied : contact write (contact activity)");
RETV_IF(contact_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER);
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_ACTIVITIES" WHERE contact_id = %d", contact_id);
- int ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ int ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_activity_noti();
- ctsvc_set_person_noti();
+ ctsvc_set_activity_noti(zone_name);
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(zone_name, true);
return ret;
}
-API int contacts_activity_delete_by_account_id(int account_id)
+int ctsvc_activity_delete_by_account_id(const char *zone_name, int account_id)
{
char query[CTS_SQL_MAX_LEN] = {0};
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
"Permission denied : contact write (contact activity)");
RETV_IF(account_id < 0, CONTACTS_ERROR_INVALID_PARAMETER);
"WHERE A.account_id = %d)",
CTS_TABLE_ACTIVITIES, CTS_TABLE_CONTACTS, CTS_TABLE_ADDRESSBOOKS, account_id);
- int ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ int ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_activity_noti();
- ctsvc_set_person_noti();
+ ctsvc_set_activity_noti(zone_name);
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(zone_name, true);
return ret;
}
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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.
+ *
+ */
+
+#ifndef __CTSVC_SERVER_ACTIVITY_H__
+#define __CTSVC_SERVER_ACTIVITY_H__
+
+int ctsvc_activity_delete_by_contact_id(const char *zone_name, int contact_id);
+int ctsvc_activity_delete_by_account_id(const char *zone_name, int account_id);
+
+
+#endif /* __CTSVC_SERVER_ACTIVITY_H__ */
+
#include <glib.h>
#include <stdlib.h>
-#include <unistd.h> //sleep
+#include <unistd.h>
-#ifdef CTS_MOBILE
#include <account.h>
-#endif // CTS_MOBILE
+#include <vasum.h>
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_inotify.h"
+#include "ctsvc_handle.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_server_service.h"
#include "ctsvc_server_bg.h"
#include "ctsvc_server_utils.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_plugin_addressbook_helper.h"
+#include "ctsvc_server_zone.h"
#include "ctsvc_db_access_control.h"
#define CTSVC_SERVER_BG_DELETE_COUNT 50
#define CTSVC_SERVER_BG_DELETE_STEP_TIME 1
#define CTSVC_SERVER_BG_DELETE_THREAD "ctsvc_server_bg_delete"
-#define CTSVC_SERVER_BG_BASE_CPU_USAGE 10 // Delete contacts when cpu usage is under the value
+#define CTSVC_SERVER_BG_BASE_CPU_USAGE 10 /* Delete contacts when cpu usage is under the value */
typedef enum
{
- STEP_1, // get contact_ids
- STEP_2, // delete data
- STEP_3, // delete activity
- STEP_4, // delete search_index, contact(image by trigger)
+ STEP_1, /* get contact_ids */
+ STEP_2, /* delete data */
+ STEP_3, /* delete activity */
+ STEP_4, /* delete search_index, contact(image by trigger) */
} __ctsvc_delete_step_e;
typedef struct {
+ const char *zone_name;
GSList *contact_ids;
int current_contact_id;
__ctsvc_delete_step_e step;
GCond __ctsvc_server_bg_delete_cond;
GMutex __ctsvc_server_bg_delete_mutex;
-#ifdef CTS_MOBILE
-account_subscribe_h account = NULL;
-#endif // CTS_MOBILE
+struct ctsvc_bg_data_s {
+ account_subscribe_h account;
+ contacts_h contact;
+ char *zone_name;
+};
+static GHashTable *ctsvc_bg_data_table = NULL;
static int __ctsvc_server_bg_contact_delete_step1(__ctsvc_delete_data_s* data)
{
GSList *cursor;
if (data->contact_ids == NULL) {
- // get event_list
+ /* get event_list */
snprintf(query, sizeof(query), "SELECT contact_id FROM "CTS_TABLE_CONTACTS" WHERE deleted = 1");
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(data->zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
- while(1 == (ret = ctsvc_stmt_step(stmt))) {
+ while (1 == (ret = ctsvc_stmt_step(stmt))) {
int id = 0;
id = ctsvc_stmt_get_int(stmt, 0);
data->contact_ids = g_slist_append(data->contact_ids, GINT_TO_POINTER(id));
}
}
-// remove data
+/* remove data */
static int __ctsvc_server_bg_contact_delete_step2(__ctsvc_delete_data_s* data)
{
CTS_FN_CALL;
int count = 0;
GSList *cursor;
- // get event_list
+ /* get event_list */
snprintf(query, sizeof(query),
- "SELECT id FROM "CTS_TABLE_DATA" WHERE contact_id = %d LIMIT %d",
+ "SELECT id FROM "CTS_TABLE_DATA" WHERE contact_id = %d AND is_my_profile = 0 LIMIT %d",
data->current_contact_id, CTSVC_SERVER_BG_DELETE_COUNT);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(data->zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
- while(1 == (ret = ctsvc_stmt_step(stmt))) {
+ while (1 == (ret = ctsvc_stmt_step(stmt))) {
int id = 0;
id = ctsvc_stmt_get_int(stmt, 0);
list = g_slist_append(list, GINT_TO_POINTER(id));
if (count <= 0)
return CONTACTS_ERROR_NO_DATA;
- ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE != ret, CONTACTS_ERROR_DB, "DB failed" );
+ ret = ctsvc_begin_trans(data->zone_name);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, CONTACTS_ERROR_DB, "DB failed");
cursor = g_slist_nth(list, 0);
- while(cursor) {
+ while (cursor) {
int id = GPOINTER_TO_INT(cursor->data);
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_DATA" WHERE id = %d", id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(data->zone_name, query);
if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("DB failed");
- ctsvc_end_trans(false);
+ ctsvc_end_trans(data->zone_name, false);
g_slist_free(list);
return ret;
}
cursor = g_slist_next(cursor);
}
g_slist_free(list);
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(data->zone_name, true);
return ret;
}
-// remove activities
+/* remove activities */
static int __ctsvc_server_bg_contact_delete_step3(__ctsvc_delete_data_s* data)
{
CTS_FN_CALL;
int count = 0;
GSList *cursor;
- // get event_list
+ /* get event_list */
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_ACTIVITIES" WHERE contact_id = %d LIMIT %d",
data->current_contact_id, CTSVC_SERVER_BG_DELETE_COUNT);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(data->zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
- while(1 == (ret = ctsvc_stmt_step(stmt))) {
+ while (1 == (ret = ctsvc_stmt_step(stmt))) {
int id = 0;
id = ctsvc_stmt_get_int(stmt, 0);
list = g_slist_append(list, GINT_TO_POINTER(id));
if (count <= 0)
return CONTACTS_ERROR_NO_DATA;
- ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE != ret, CONTACTS_ERROR_DB, "DB failed" );
+ ret = ctsvc_begin_trans(data->zone_name);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, CONTACTS_ERROR_DB, "DB failed");
cursor = g_slist_nth(list, 0);
- while(cursor) {
+ while (cursor) {
int id = GPOINTER_TO_INT(cursor->data);
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_ACTIVITIES" WHERE id = %d", id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(data->zone_name, query);
if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("DB failed");
- ctsvc_end_trans(false);
+ ctsvc_end_trans(data->zone_name, false);
g_slist_free(list);
return ret;
}
cursor = g_slist_next(cursor);
}
g_slist_free(list);
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(data->zone_name, true);
return ret;
}
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
- ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE != ret, CONTACTS_ERROR_DB, "DB failed" );
+ ret = ctsvc_begin_trans(data->zone_name);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, CONTACTS_ERROR_DB, "DB failed");
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_SEARCH_INDEX" WHERE contact_id = %d",
data->current_contact_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(data->zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("DB failed");
- ctsvc_end_trans(false);
+ ctsvc_end_trans(data->zone_name, false);
return ret;
}
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_CONTACTS" WHERE contact_id = %d",
data->current_contact_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(data->zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("DB failed");
- ctsvc_end_trans(false);
+ ctsvc_end_trans(data->zone_name, false);
return ret;
}
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(data->zone_name, true);
return ret;
}
static bool __ctsvc_server_bg_contact_delete_step(int ret, __ctsvc_delete_data_s* data)
{
if (ret != CONTACTS_ERROR_NONE && ret != CONTACTS_ERROR_NO_DATA) {
- if(data->contact_ids)
+ if (data->contact_ids)
g_slist_free(data->contact_ids);
CTS_ERR("fail (%d)",ret);
return false;
switch (data->step) {
case STEP_1:
if (ret == CONTACTS_ERROR_NO_DATA) {
- if(data->contact_ids)
+ if (data->contact_ids)
g_slist_free(data->contact_ids);
CTS_ERR("step_1 no_data");
return false;
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
- if(data == NULL) {
+ if (data == NULL) {
CTS_ERR("data is NULL");
return false;
}
switch (data->step) {
case STEP_1:
- // get deleted contact id list
+ /* get deleted contact id list */
ret = __ctsvc_server_bg_contact_delete_step1(data);
break;
case STEP_2:
- // delete data of current contact id (MAX CTSVC_SERVER_BG_DELETE_COUNT)
+ /* delete data of current contact id (MAX CTSVC_SERVER_BG_DELETE_COUNT) */
ret = __ctsvc_server_bg_contact_delete_step2(data);
break;
case STEP_3:
- // delete activity of current contact id (MAX CTSVC_SERVER_BG_DELETE_COUNT each time)
+ /* delete activity of current contact id (MAX CTSVC_SERVER_BG_DELETE_COUNT each time) */
ret = __ctsvc_server_bg_contact_delete_step3(data);
break;
case STEP_4:
- // delete search index of current contact id
+ /* delete search index of current contact id */
ret = __ctsvc_server_bg_contact_delete_step4(data);
break;
default:
CTS_ERR("invalid step");
- if(data->contact_ids)
+ if (data->contact_ids)
g_slist_free(data->contact_ids);
return false;
}
}
result = calloc(1, sizeof(process_stat));
- RETVM_IF(NULL == result, NULL, "calloc() return NULL");
-
- for(i=0; i < 10;i++) {
+ if (NULL == result)
+ {
+ CTS_ERR("calloc() Fail");
+ return NULL;
+ }
+ for (i=0; i < 10;i++) {
if (i < 3)
result->cpu_work_time += cpu_time[i];
result->cpu_total_time += cpu_time[i];
cpu_usage = ((double)work_time_diff/(double)total_time_diff) * 100;
CTS_INFO("cpu usage : %.2lf (%ld/%ld)", cpu_usage, work_time_diff, total_time_diff);
- if (cpu_usage > CTSVC_SERVER_BG_BASE_CPU_USAGE)
+ if (CTSVC_SERVER_BG_BASE_CPU_USAGE < cpu_usage)
return true;
return false;
}
CTS_FN_CALL;
int ret;
__ctsvc_delete_data_s *callback_data = NULL;
+ char *zone_name = user_data;
- while(1) {
+ while (1) {
callback_data = calloc(1,sizeof(__ctsvc_delete_data_s));
if (callback_data == NULL) {
CTS_ERR("calloc fail");
continue;
}
callback_data->step = STEP_1;
+ callback_data->zone_name = zone_name;
- ret = contacts_connect();
+ ret = ctsvc_connect(callback_data->zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("contacts_connect() fail(%d)", ret);
+ CTS_ERR("contacts_connect() Fail(%d)", ret);
free(callback_data);
continue;
}
- ctsvc_set_client_access_info("contacts-service", NULL);
+ ctsvc_set_client_access_info(callback_data->zone_name, "contacts-service", NULL);
+
+ ctsvc_server_stop_timeout();
+ while (1) {
- while(1) {
-// sleep(CTSVC_SERVER_BG_DELETE_STEP_TIME); // sleep 1 sec.
- if (__ctsvc_cpu_is_busy()) { // sleep 1 sec in function
+ if (__ctsvc_cpu_is_busy()) { /* sleep 1 sec in function */
CTS_ERR("Now CPU is busy.. waiting");
- sleep(CTSVC_SERVER_BG_DELETE_STEP_TIME*59); // sleep 60 sec(1 min) totally
+ sleep(CTSVC_SERVER_BG_DELETE_STEP_TIME*59); /* sleep 60 sec(1 min) totally */
continue;
}
if (__ctsvc_server_db_delete_run(callback_data) == false) {
}
}
- ctsvc_unset_client_access_info();
+ ctsvc_unset_client_access_info(zone_name);
- ret = contacts_disconnect();
+ ret = ctsvc_disconnect(zone_name);
if (CONTACTS_ERROR_NONE != ret)
CTS_ERR("contacts_disconnect Fail(%d)", ret);
+ ctsvc_server_start_timeout();
g_mutex_lock(&__ctsvc_server_bg_delete_mutex);
CTS_DBG("wait");
g_cond_wait(&__ctsvc_server_bg_delete_cond, &__ctsvc_server_bg_delete_mutex);
g_mutex_unlock(&__ctsvc_server_bg_delete_mutex);
}
-
+ free(zone_name);
+ ctsvc_server_start_timeout();
return NULL;
}
-void ctsvc_server_bg_delete_start()
+void ctsvc_server_bg_delete_start(const char *zone_name)
{
CTS_FN_CALL;
g_mutex_init(&__ctsvc_server_bg_delete_mutex);
g_cond_init(&__ctsvc_server_bg_delete_cond);
__ctsvc_server_bg_delete_thread = g_thread_new(CTSVC_SERVER_BG_DELETE_THREAD,
- __ctsvc_server_bg_delete, NULL);
+ __ctsvc_server_bg_delete, strdup(zone_name));
}
- // don't use mutex.
+ /* don't use mutex. */
g_cond_signal(&__ctsvc_server_bg_delete_cond);
}
static void __ctsvc_server_addressbook_deleted_cb(const char *view_uri, void *data)
{
- // access control update
+ struct ctsvc_bg_data_s *bg_data = data;
+
+ /* access control update */
ctsvc_reset_all_client_access_info();
- ctsvc_server_bg_delete_start();
+ ctsvc_server_bg_delete_start(bg_data->zone_name);
}
static void __ctsvc_server_contact_deleted_cb(const char *view_uri, void *data)
{
- ctsvc_server_bg_delete_start();
+ struct ctsvc_bg_data_s *bg_data = data;
+ ctsvc_server_bg_delete_start(bg_data->zone_name);
}
-#ifdef CTS_MOBILE
static bool __ctsvc_server_account_delete_cb(const char* event_type, int account_id, void* user_data)
{
CTS_FN_CALL;
+ struct ctsvc_bg_data_s *bg_data = user_data;
CTS_INFO("event_type : %s, account_id : %d", event_type, account_id);
- if (strcmp(event_type, ACCOUNT_NOTI_NAME_DELETE) == 0)
- ctsvc_addressbook_delete(account_id);
+
+ if (STRING_EQUAL == strcmp(event_type, ACCOUNT_NOTI_NAME_DELETE)) {
+ ctsvc_server_stop_timeout();
+ ctsvc_addressbook_delete(bg_data->zone_name, account_id);
+ }
+ ctsvc_server_start_timeout();
return true;
}
-#endif // CTS_MOBILE
-void ctsvc_server_bg_add_cb()
+static void ctsvc_server_bg_data_free(gpointer p)
+{
+ struct ctsvc_bg_data_s *bg_data = p;
+ ctsvc_handle_destroy(bg_data->contact);
+ free(bg_data->zone_name);
+ free(bg_data);
+}
+
+void ctsvc_server_bg_add_cb(const char *zone_name)
{
int ret;
- ret = contacts_db_add_changed_cb(_contacts_address_book._uri, __ctsvc_server_addressbook_deleted_cb, NULL);
- CTS_DBG("call contacts_db_add_changed_cb (_contacts_address_book) : return (%d)", ret);
- ret = contacts_db_add_changed_cb(_contacts_contact._uri, __ctsvc_server_contact_deleted_cb, NULL);
- CTS_DBG("call contacts_db_add_changed_cb (_contacts_contact): return (%d)", ret);
+ account_subscribe_h account = NULL;
+
+ struct ctsvc_bg_data_s *bg_data = calloc(1, sizeof(struct ctsvc_bg_data_s));
+ if (NULL == bg_data)
+ {
+ CTS_ERR("calloc() Fail");
+ return;
+ }
+ bg_data->zone_name = g_strdup(zone_name);
+
+ if (NULL == ctsvc_bg_data_table)
+ ctsvc_bg_data_table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, ctsvc_server_bg_data_free);
+ g_hash_table_replace(ctsvc_bg_data_table, g_strdup(zone_name), bg_data);
+
+ vsm_zone_h zone = ctsvc_server_zone_lookup_by_zone_name(zone_name);
+ vsm_zone_h zone_old = ctsvc_server_zone_join(zone);
+
+ contacts_h contact = NULL;
+ ctsvc_handle_create(&contact);
+ ctsvc_handle_set_zone_name(contact, zone_name);
+ bg_data->contact = contact;
+
+ ret = ctsvc_inotify_subscribe(bg_data->contact, _contacts_address_book._uri, __ctsvc_server_addressbook_deleted_cb, bg_data);
+ CTS_DBG("call ctsvc_inotify_subscribe (_contacts_address_book) : return (%d)", ret);
+
+ ret = ctsvc_inotify_subscribe(bg_data->contact, _contacts_contact._uri, __ctsvc_server_contact_deleted_cb, bg_data);
+ CTS_DBG("call ctsvc_inotify_subscribe (_contacts_contact): return (%d)", ret);
-#ifdef CTS_MOBILE
ret = account_subscribe_create(&account);
+ bg_data->account = account;
+
if (ACCOUNT_ERROR_NONE == ret) {
- ret = account_subscribe_notification(account, __ctsvc_server_account_delete_cb, NULL);
+ ret = account_subscribe_notification(account, __ctsvc_server_account_delete_cb, bg_data);
if (ACCOUNT_ERROR_NONE != ret) {
CTS_ERR("account_subscribe_notification Failed (%d)", ret);
}
}
else
CTS_ERR("account_subscribe_create Failed (%d)", ret);
-#endif // CTS_MOBILE
+
+ ctsvc_server_zone_join(zone_old);
}
-void ctsvc_server_bg_remove_cb()
+void ctsvc_server_bg_remove_cb(const char *zone_name)
{
int ret;
- ret = contacts_db_remove_changed_cb(_contacts_address_book._uri, __ctsvc_server_addressbook_deleted_cb, NULL);
- CTS_ERR("call contacts_db_remove_changed_cb (_contacts_address_book): return (%d)", ret);
- ret = contacts_db_remove_changed_cb(_contacts_contact._uri, __ctsvc_server_contact_deleted_cb, NULL);
- CTS_ERR("call contacts_db_remove_changed_cb (_contacts_contact) : return (%d)", ret);
-
-#ifdef CTS_MOBILE
- if (account) {
- account_unsubscribe_notification(account); // unsubscirbe & destroy
- account = NULL;
- }
-#endif // CTS_MOBILE
+
+ struct ctsvc_bg_data_s *bg_data = NULL;
+ bg_data = g_hash_table_lookup(ctsvc_bg_data_table, zone_name);
+
+ vsm_zone_h zone = ctsvc_server_zone_lookup_by_zone_name(zone_name);
+ vsm_zone_h zone_old = ctsvc_server_zone_join(zone);
+
+ ret = ctsvc_inotify_unsubscribe(bg_data->contact, _contacts_address_book._uri, __ctsvc_server_addressbook_deleted_cb, bg_data);
+ CTS_ERR("call ctsvc_inotify_unsubscribe (_contacts_address_book): return (%d)", ret);
+ ret = ctsvc_inotify_unsubscribe(bg_data->contact, _contacts_contact._uri, __ctsvc_server_contact_deleted_cb, bg_data);
+ CTS_ERR("call ctsvc_inotify_unsubscribe (_contacts_contact) : return (%d)", ret);
+
+ account_unsubscribe_notification(bg_data->account); /* unsubscirbe & destroy */
+
+ ctsvc_server_zone_join(zone_old);
+
+ g_hash_table_remove(ctsvc_bg_data_table, zone_name);
}
-/*\r
- * Contact Service\r
- *\r
- * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- *\r
- */\r
-\r
-#ifndef __CTSVC_SERVER_BG_H__\r
-#define __CTSVC_SERVER_BG_H__\r
-\r
-void ctsvc_server_bg_delete_start();\r
-void ctsvc_server_bg_add_cb();\r
-void ctsvc_server_bg_remove_cb();\r
-\r
-#endif /* __CTSVC_SERVER_BG_H__ */\r
+/*
+ * Contact Service
+ *
+ * Copyright (c) 2000 - 2012 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.
+ *
+ */
+
+#ifndef __CTSVC_SERVER_BG_H__
+#define __CTSVC_SERVER_BG_H__
+
+void ctsvc_server_bg_delete_start(const char *zone_name);\r
+void ctsvc_server_bg_add_cb(const char *zone_name);\r
+void ctsvc_server_bg_remove_cb(const char *zone_name);\r
+
+#endif /* __CTSVC_SERVER_BG_H__ */
#include "contacts.h"
#include "ctsvc_internal.h"
#include "ctsvc_ipc_define.h"
+#include "ctsvc_ipc_marshal.h"
#include "ctsvc_server_change_subject.h"
#define CTSVC_SUBSCRIBE_MAX_LEN 1024
+struct ctsvc_changed_info {
+ char *info;
+ unsigned int buf_size;
+};
+
#ifdef ENABLE_LOG_FEATURE
-static __thread char *__phone_log_chanaged_info = NULL;
-static __thread unsigned int __phone_log_buf_size = 0;
-#endif // ENABLE_LOG_FEATURE
+static __thread GHashTable *ctsvc_phone_log_changed_info_table = NULL;
+#endif /* ENABLE_LOG_FEATURE */
-static __thread char *__person_changed_info = NULL;
-static __thread unsigned int __person_buf_size = 0;
+static __thread GHashTable *ctsvc_person_changed_info_table = NULL;
-static gboolean __ctsvc_publish_changes_with_data(const char *view_uri, char *data)
+static gboolean __ctsvc_publish_changes_with_data(const char *zone_name, const char *view_uri, GHashTable *changed_info_table)
{
pims_ipc_data_h indata = NULL;
- if( NULL == data )
+ struct ctsvc_changed_info *changed_info = NULL;
+
+ if (NULL == changed_info_table)
+ return true;
+
+ changed_info = g_hash_table_lookup(changed_info_table, zone_name);
+ if (NULL == changed_info || NULL == changed_info->info)
return true;
indata = pims_ipc_data_create(0);
- if (!indata) {
- CTS_ERR("pims_ipc_data_create error\n");
+ if (NULL == indata) {
+ CTS_ERR("pims_ipc_data_create() return NULL");
return false;
}
- if (pims_ipc_data_put(indata, data, strlen(data) + 1) != 0) {
- CTS_ERR("pims_ipc_data_put error\n");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_string(changed_info->info, indata)) {
+ CTS_ERR("ctsvc_ipc_marshal_string() Fail");
pims_ipc_data_destroy(indata);
return false;
}
- if (pims_ipc_svc_publish(CTSVC_IPC_SUBSCRIBE_MODULE, (char*)view_uri, indata) != 0) {
+ if (pims_ipc_svc_publish_for_zone(zone_name, CTSVC_IPC_SUBSCRIBE_MODULE, (char*)view_uri, indata) != 0) {
CTS_ERR("pims_ipc_svc_publish error (%s)\n", view_uri);
return false;
}
return true;
}
-void ctsvc_change_subject_publish_changed_info()
+void ctsvc_change_subject_publish_changed_info(const char *zone_name)
{
- __ctsvc_publish_changes_with_data(_contacts_person._uri, __person_changed_info);
+ __ctsvc_publish_changes_with_data(zone_name, _contacts_person._uri, ctsvc_person_changed_info_table);
#ifdef ENABLE_LOG_FEATURE
- __ctsvc_publish_changes_with_data(_contacts_phone_log._uri, __phone_log_chanaged_info);
-#endif // ENABLE_LOG_FEATURE
- ctsvc_change_subject_clear_changed_info();
+ __ctsvc_publish_changes_with_data(zone_name, _contacts_phone_log._uri, ctsvc_phone_log_changed_info_table);
+#endif /* ENABLE_LOG_FEATURE */
+
+ ctsvc_change_subject_clear_changed_info(zone_name);
+}
+
+static void __ctsvc_clear_changed_info(struct ctsvc_changed_info *changed_info)
+{
+ if (NULL == changed_info)
+ return;
+ free(changed_info->info);
+ changed_info->info = NULL;
+ changed_info->buf_size = 0;
}
-void ctsvc_change_subject_clear_changed_info()
+void ctsvc_change_subject_clear_changed_info(const char *zone_name)
{
+ if (ctsvc_person_changed_info_table) {
+ struct ctsvc_changed_info *person_changed_info = NULL;
+ person_changed_info = g_hash_table_lookup(ctsvc_person_changed_info_table, zone_name);
+ __ctsvc_clear_changed_info(person_changed_info);
+ }
+
#ifdef ENABLE_LOG_FEATURE
- free(__phone_log_chanaged_info);
- __phone_log_chanaged_info = NULL;
- __phone_log_buf_size = 0;
-#endif // ENABLE_LOG_FEATURE
-
- free(__person_changed_info);
- __person_changed_info = NULL;
- __person_buf_size = 0;
+ if (ctsvc_phone_log_changed_info_table) {
+ struct ctsvc_changed_info *phone_log_changed_info = NULL;
+ phone_log_changed_info = g_hash_table_lookup(ctsvc_phone_log_changed_info_table, zone_name);
+ __ctsvc_clear_changed_info(phone_log_changed_info);
+ }
+#endif /* ENABLE_LOG_FEATURE */
+
+
}
#ifdef ENABLE_LOG_FEATURE
-void ctsvc_change_subject_add_changed_phone_log_id(contacts_changed_e type, int id)
+void ctsvc_change_subject_add_changed_phone_log_id(const char *zone_name, contacts_changed_e type, int id)
{
CTS_FN_CALL;
- int len = 0;
+ int cur_len = 0;
int info_len = 0;
- char changed_info[30] = {0};
+ char info[CTSVC_SUBSCRIBE_MAX_LEN] = {0};
+
+ struct ctsvc_changed_info *changed_info = NULL;
+ if (NULL == ctsvc_phone_log_changed_info_table)
+ ctsvc_phone_log_changed_info_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
+ else
+ changed_info = g_hash_table_lookup(ctsvc_phone_log_changed_info_table, zone_name);
+
+ if (NULL == changed_info) {
+ changed_info = calloc(1, sizeof(struct ctsvc_changed_info));
+ if (NULL == changed_info)
+ {
+ CTS_ERR("calloc() Fail");
+ return;
+ }
+ g_hash_table_replace(ctsvc_phone_log_changed_info_table, g_strdup(zone_name), changed_info);
+ }
- if (!__phone_log_chanaged_info) {
- __phone_log_chanaged_info = (char*)calloc(CTSVC_SUBSCRIBE_MAX_LEN, sizeof(char));
- __phone_log_buf_size = CTSVC_SUBSCRIBE_MAX_LEN;
- __phone_log_chanaged_info[0] = '\0';
+ if (NULL == changed_info->info) {
+ changed_info->info = (char*)calloc(CTSVC_SUBSCRIBE_MAX_LEN, sizeof(char));
+ if (NULL == changed_info->info)
+ {
+ CTS_ERR("calloc() Fail");
+ return;
+ }
+ changed_info->buf_size = CTSVC_SUBSCRIBE_MAX_LEN;
+ changed_info->info[0] = '\0';
}
- len = snprintf(changed_info, sizeof(changed_info), "%d:%d,", type, id);
- info_len = strlen(__phone_log_chanaged_info);
- CTS_DBG("%s(len : %d), %s (crrent_len : %d), max_len : %d",
- changed_info, len, __phone_log_chanaged_info, info_len, __phone_log_buf_size);
- if (info_len + len > __phone_log_buf_size) {
- __phone_log_chanaged_info = realloc(__phone_log_chanaged_info, __phone_log_buf_size * 2);
- __phone_log_buf_size *= 2;
+ info_len = snprintf(info, sizeof(info), "%d:%d,", type, id);
+ cur_len = strlen(changed_info->info);
+ CTS_DBG("%s(info_len : %d), %s(crrent_len : %d), max_len : %u",
+ info, info_len, changed_info->info, cur_len, changed_info->buf_size);
+
+ if (changed_info->buf_size <= (cur_len + info_len)) {
+ changed_info->buf_size *= 2;
+ changed_info->info = realloc(changed_info->info, changed_info->buf_size);
}
- snprintf(__phone_log_chanaged_info + info_len, __phone_log_buf_size - info_len, "%s", changed_info);
- CTS_DBG("%s", __phone_log_chanaged_info);
+ snprintf(changed_info->info + cur_len, changed_info->buf_size - cur_len, "%s", info);
+ CTS_DBG("%s", changed_info->info);
}
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
-void ctsvc_change_subject_add_changed_person_id(contacts_changed_e type, int id)
+void ctsvc_change_subject_add_changed_person_id(const char *zone_name, contacts_changed_e type, int id)
{
CTS_FN_CALL;
- int len = 0;
+ int cur_len = 0;
int info_len = 0;
- char changed_info[30] = {0};
+ char info[CTSVC_SUBSCRIBE_MAX_LEN] = {0};
+
+ struct ctsvc_changed_info *changed_info = NULL;
+ if (NULL == ctsvc_person_changed_info_table)
+ ctsvc_person_changed_info_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
+ else
+ changed_info = g_hash_table_lookup(ctsvc_person_changed_info_table, zone_name);
+
+ if (NULL == changed_info) {
+ changed_info = calloc(1, sizeof(struct ctsvc_changed_info));
+ if (NULL == changed_info)
+ {
+ CTS_ERR("calloc() Fail");
+ return;
+ }
+ g_hash_table_replace(ctsvc_person_changed_info_table, g_strdup(zone_name), changed_info);
+ }
- if (!__person_changed_info) {
- __person_changed_info = (char*)calloc(CTSVC_SUBSCRIBE_MAX_LEN, sizeof(char));
- __person_buf_size = CTSVC_SUBSCRIBE_MAX_LEN;
- __person_changed_info[0] = '\0';
+ if (NULL == changed_info->info) {
+ changed_info->info = (char*)calloc(CTSVC_SUBSCRIBE_MAX_LEN, sizeof(char));
+ if (NULL == changed_info->info)
+ {
+ CTS_ERR("calloc() Fail");
+ return;
+ }
+ changed_info->buf_size= CTSVC_SUBSCRIBE_MAX_LEN;
+ changed_info->info[0] = '\0';
}
- len = snprintf(changed_info, sizeof(changed_info), "%d:%d,", type, id);
- info_len = strlen(__person_changed_info);
- if (info_len + len > __person_buf_size) {
- __person_changed_info = realloc(__person_changed_info, __person_buf_size * 2);
- __person_buf_size *= 2;
+ info_len = snprintf(info, sizeof(info), "%d:%d,", type, id);
+ cur_len = strlen(changed_info->info);
+ CTS_DBG("%s(info_len : %d), %s(crrent_len : %d), max_len : %u",
+ info, info_len, changed_info->info, cur_len, changed_info->buf_size);
+
+ if (changed_info->buf_size <= (cur_len + info_len)) {
+ changed_info->buf_size *= 2;
+ changed_info->info = realloc(changed_info->info, changed_info->buf_size);
}
- snprintf(__person_changed_info + info_len, __person_buf_size - info_len, "%s", changed_info);
+ snprintf(changed_info->info + cur_len, changed_info->buf_size - cur_len, "%s", info);
}
-void ctsvc_change_subject_publish_setting(const char *setting_id, int value)
+void ctsvc_change_subject_publish_setting(const char *zone_name, const char *setting_id, int value)
{
pims_ipc_data_h indata = NULL;
indata = pims_ipc_data_create(0);
- RETM_IF(NULL == indata, "pims_ipc_data_create error");
+ RETM_IF(NULL == indata, "pims_ipc_data_create() Fail");
- if (pims_ipc_data_put(indata, (void*)&value, sizeof(int)) != 0) {
- CTS_ERR("pims_ipc_data_put error");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(value, indata)) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
pims_ipc_data_destroy(indata);
return;
}
- if (pims_ipc_svc_publish(CTSVC_IPC_SUBSCRIBE_MODULE, (char*)setting_id, indata) != 0)
+ if (pims_ipc_svc_publish_for_zone(zone_name, CTSVC_IPC_SUBSCRIBE_MODULE, (char*)setting_id, indata) != 0)
CTS_ERR("pims_ipc_svc_publish error (%s)", setting_id);
pims_ipc_data_destroy(indata);
}
-void ctsvc_change_subject_publish_status(contacts_db_status_e status)
+void ctsvc_change_subject_publish_status(const char *zone_name, contacts_db_status_e status)
{
pims_ipc_data_h indata = NULL;
indata = pims_ipc_data_create(0);
- RETM_IF(NULL == indata, "pims_ipc_data_create error");
+ RETM_IF(NULL == indata, "pims_ipc_data_create() Fail");
- if (pims_ipc_data_put(indata, (void*)&status, sizeof(int)) != 0) {
- CTS_ERR("pims_ipc_data_put error");
+ if (CONTACTS_ERROR_NONE != ctsvc_ipc_marshal_int(status, indata)) {
+ CTS_ERR("ctsvc_ipc_marshal_int() Fail");
pims_ipc_data_destroy(indata);
return;
}
- if (pims_ipc_svc_publish(CTSVC_IPC_SUBSCRIBE_MODULE, CTSVC_IPC_SERVER_DB_STATUS_CHANGED, indata) != 0)
+ if (pims_ipc_svc_publish_for_zone(zone_name, CTSVC_IPC_SUBSCRIBE_MODULE, CTSVC_IPC_SERVER_DB_STATUS_CHANGED, indata) != 0)
CTS_ERR("pims_ipc_svc_publish error(service status)");
pims_ipc_data_destroy(indata);
#include "contacts_db_status.h"
#include "contacts_types.h"
-// Publish change info using PIMS-IPC PUB/SUB socket
-// It is only available in client-server architecture
+/*
+ * Publish change info using PIMS-IPC PUB/SUB socket
+ * It is only available in client-server architecture
+ */
-void ctsvc_change_subject_publish_changed_info();
-void ctsvc_change_subject_clear_changed_info();
+void ctsvc_change_subject_publish_changed_info(const char *zone_name);
+void ctsvc_change_subject_clear_changed_info(const char *zone_name);
#ifdef ENABLE_LOG_FEATURE
-void ctsvc_change_subject_add_changed_phone_log_id(contacts_changed_e type, int id);
-#endif // ENABLE_LOG_FEATURE
-void ctsvc_change_subject_add_changed_person_id(contacts_changed_e type, int id);
+void ctsvc_change_subject_add_changed_phone_log_id(const char *zone_name, contacts_changed_e type, int id);
+#endif /* ENABLE_LOG_FEATURE */
+void ctsvc_change_subject_add_changed_person_id(const char *zone_name, contacts_changed_e type, int id);
-void ctsvc_change_subject_publish_setting(const char *setting_id, int value);
-void ctsvc_change_subject_publish_status(contacts_db_status_e status);
+void ctsvc_change_subject_publish_setting(const char *zone_name, const char *setting_id, int value);
+void ctsvc_change_subject_publish_status(const char *zone_name, contacts_db_status_e status);
-#endif // __CTSVC_SERVER_CHANGE_SUBJECT_H__
\ No newline at end of file
+#endif /* __CTSVC_SERVER_CHANGE_SUBJECT_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_plugin_contact_helper.h"
-#include "ctsvc_group.h"
+#include "ctsvc_server_group.h"
#include "ctsvc_notification.h"
#include "ctsvc_db_access_control.h"
-int ctsvc_group_add_contact_in_transaction(int group_id, int contact_id)
+int ctsvc_group_add_contact_in_transaction(const char *zone_name, int group_id, int contact_id)
{
int ret;
int version;
"SELECT COUNT(*) FROM %s WHERE group_id = %d AND contact_id=%d AND deleted = 0",
CTS_TABLE_GROUP_RELATIONS, group_id, contact_id);
- ret = ctsvc_query_get_first_int_result(query, &exist);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &exist);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_DBG("ctsvc_query_get_first_int_result fail(%d)");
+ CTS_DBG("ctsvc_query_get_first_int_result Fail(%d)");
return ret;
}
- if (1 == exist) {
+ if (1 == exist) {
CTS_DBG("group relation already exist (group_id:%d, contac_id:%d)", group_id, contact_id);
return CONTACTS_ERROR_NONE;
}
- version = ctsvc_get_next_ver();
+ version = ctsvc_get_next_ver(zone_name);
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM %s WHERE group_id = %d",
CTS_TABLE_GROUPS, group_id);
- ret = ctsvc_query_get_first_int_result(query, &grp_acc);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &grp_acc);
RETVM_IF(CONTACTS_ERROR_NO_DATA == ret, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid Parameter: group_id(%d) is Invalid", group_id);
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM %s WHERE contact_id = %d AND deleted = 0",
CTS_TABLE_CONTACTS, contact_id);
- ret = ctsvc_query_get_first_int_result(query, &contact_acc);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &contact_acc);
RETVM_IF(CONTACTS_ERROR_NO_DATA == ret, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid Parameter: contact_id(%d) is Invalid", contact_id);
- RETVM_IF( contact_acc != grp_acc, CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(contact_acc != grp_acc, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid Parameter: group_acc(%d) is differ from contact_acc(%d) Invalid", grp_acc, contact_acc);
snprintf(query, sizeof(query), "INSERT OR REPLACE INTO %s VALUES(%d, %d, %d, 0)",
CTS_TABLE_GROUP_RELATIONS, group_id, contact_id, version);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_stmt_step() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_stmt_step() Fail(%d)", ret);
- rel_changed = ctsvc_db_change();
+ rel_changed = ctsvc_db_change(zone_name);
ctsvc_stmt_finalize(stmt);
if (0 < rel_changed) {
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_GROUPS" SET member_changed_ver=%d WHERE group_id=%d",
version, group_id);
- ret = ctsvc_query_exec(query);
- RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_set_group_rel_noti();
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_set_group_rel_noti(zone_name);
return rel_changed;
}
return ret;
}
-API int contacts_group_add_contact(int group_id, int contact_id)
+int ctsvc_group_add_contact(const char *zone_name, int group_id, int contact_id)
{
int ret;
int addressbook_id;
char query[CTS_SQL_MAX_LEN] = {0};
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
"Permission denied : contact write (group)");
- RETVM_IF( group_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid Parameter: group_id should be greater than 0");
- RETVM_IF( contact_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid Parameter: contact_id should be greater than 0");
+ RETVM_IF(group_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid Parameter: group_id should be greater than 0");
+ RETVM_IF(contact_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid Parameter: contact_id should be greater than 0");
/* BEGIN_TRANSACTION */
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "contacts_svc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "contacts_svc_begin_trans() Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT addressbook_id from "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : contact_id (%d) is not exist", contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to get this group record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
/* DOING JOB */
do {
- int changed = ctsvc_group_add_contact_in_transaction(group_id, contact_id);
+ int changed = ctsvc_group_add_contact_in_transaction(zone_name, group_id, contact_id);
if (changed < CONTACTS_ERROR_NONE) {
- CTS_ERR("DB error : ctsvc_group_add_contact_in_transaction() Failed(%d)", changed);
+ CTS_ERR("DB error : ctsvc_group_add_contact_in_transaction() Fail(%d)", changed);
ret = changed;
break;
}
- ret = ctsvc_db_contact_update_changed_time(contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
ret = CONTACTS_ERROR_DB;
break;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if(ret < CONTACTS_ERROR_NONE )
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
/* ROLLBACK TRANSACTION */
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
-int ctsvc_group_remove_contact_in_transaction(int group_id, int contact_id)
+int ctsvc_group_remove_contact_in_transaction(const char *zone_name, int group_id, int contact_id)
{
int ret;
int version;
cts_stmt stmt = NULL;
char query[CTS_SQL_MIN_LEN] = {0};
- version = ctsvc_get_next_ver();
+ version = ctsvc_get_next_ver(zone_name);
snprintf(query, sizeof(query),
"UPDATE %s SET deleted=1, ver = %d WHERE group_id = %d AND contact_id = %d",
CTS_TABLE_GROUP_RELATIONS, version, group_id, contact_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "DB Error: ctsvc_stmt_step() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "DB Error: ctsvc_stmt_step() Fail(%d)", ret);
- int rel_changed = ctsvc_db_change();
+ int rel_changed = ctsvc_db_change(zone_name);
ctsvc_stmt_finalize(stmt);
if (0 <= rel_changed) {
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_GROUPS" SET member_changed_ver=%d WHERE group_id=%d",
version, group_id);
- ret = ctsvc_query_exec(query);
- RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_set_group_rel_noti();
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_set_group_rel_noti(zone_name);
return rel_changed;
}
return CONTACTS_ERROR_NONE;
}
-API int contacts_group_remove_contact(int group_id, int contact_id)
+int ctsvc_group_remove_contact(const char *zone_name, int group_id, int contact_id)
{
int ret;
int addressbook_id;
char query[CTS_SQL_MAX_LEN] = {0};
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
"Permission denied : contact write (group)");
- RETVM_IF( group_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid Parameter: group_id should be greater than 0");
- RETVM_IF( contact_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid Parameter: contact_id should be greater than 0");
+ RETVM_IF(group_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid Parameter: group_id should be greater than 0");
+ RETVM_IF(contact_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid Parameter: contact_id should be greater than 0");
/* BEGIN_TRANSACTION */
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "contacts_svc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "contacts_svc_begin_trans() Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT addressbook_id from "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : contact_id (%d) is not exist", contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to get this group record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
/* DOING JOB */
do {
- int changed = ctsvc_group_remove_contact_in_transaction(group_id, contact_id);
+ int changed = ctsvc_group_remove_contact_in_transaction(zone_name, group_id, contact_id);
if (changed < CONTACTS_ERROR_NONE) {
- CTS_ERR("DB error : ctsvc_group_remove_contact_in_transaction() Failed(%d)", changed);
+ CTS_ERR("DB error : ctsvc_group_remove_contact_in_transaction() Fail(%d)", changed);
ret = changed;
break;
}
- ret = ctsvc_db_contact_update_changed_time(contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
ret = CONTACTS_ERROR_DB;
break;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if(ret < CONTACTS_ERROR_NONE )
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
/* ROLLBACK TRANSACTION */
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
-API int contacts_group_set_group_order(int group_id, int previous_group_id, int next_group_id)
+int ctsvc_group_set_group_order(const char *zone_name, int group_id, int previous_group_id, int next_group_id)
{
int ret;
double previous_prio = 0.0;
cts_stmt stmt;
char query[CTS_SQL_MAX_LEN] = {0};
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
"Permission denied : contact write (group)");
snprintf(query, sizeof(query),
"SELECT addressbook_id from "CTS_TABLE_GROUPS" WHERE group_id = %d", group_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : group_id (%d) is not exist", group_id);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to get this group record : addresbook_id(%d)", addressbook_id);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
snprintf(query, sizeof(query), "SELECT group_prio, addressbook_id FROM "CTS_TABLE_GROUPS" WHERE group_id = ?");
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ctsvc_stmt_bind_int(stmt, 1, previous_group_id);
ret = ctsvc_stmt_step(stmt);
RETVM_IF(0.0 == previous_prio && 0.0 == next_prio, CONTACTS_ERROR_INVALID_PARAMETER,
"The indexes for previous and next are invalid.");
- RETVM_IF(previous_group_id && previous_addressbook_id != addressbook_id , CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(previous_group_id && previous_addressbook_id != addressbook_id, CONTACTS_ERROR_INVALID_PARAMETER,
"previous group(%d) and group(%d) are not the same addressbook(%d, %d) groups",
previous_group_id, group_id, previous_addressbook_id, addressbook_id);
- RETVM_IF(next_group_id && next_addressbook_id != addressbook_id , CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(next_group_id && next_addressbook_id != addressbook_id, CONTACTS_ERROR_INVALID_PARAMETER,
"next group(%d) and group(%d) are not the same addressbook(%d, %d) groups",
next_group_id, group_id, next_addressbook_id, addressbook_id);
else
prio = (previous_prio + next_prio) / 2;
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
snprintf(query, sizeof(query),
"UPDATE %s SET group_prio = %f WHERE group_id = %d",
CTS_TABLE_GROUPS, prio, group_id);
- ret = ctsvc_query_exec(query);
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ ret = ctsvc_query_exec(zone_name, query);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_group_noti();
+ ctsvc_set_group_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
*
*/
-#ifndef __CTSVC_GROUP_H__
-#define __CTSVC_GROUP_H__
+#ifndef __CTSVC_SERVER_GROUP_H__
+#define __CTSVC_SERVER_GROUP_H__
+
+int ctsvc_group_add_contact_in_transaction(const char *zone_name, int group_id, int contact_id);
+
+int ctsvc_group_remove_contact_in_transaction(const char *zone_name, int group_id, int contact_id);
+int ctsvc_group_add_contact(const char *zone_name, int group_id, int contact_id);
+int ctsvc_group_remove_contact(const char *zone_name, int group_id, int contact_id);
+int ctsvc_group_set_group_order(const char *zone_name, int group_id, int previous_group_id, int next_group_id);
-int ctsvc_group_add_contact_in_transaction(int group_id, int contact_id);
-int ctsvc_group_remove_contact_in_transaction(int group_id, int contact_id);
/*
int ctsvc_group_add_contacts_in_person(int group_id, int person_id);
int ctsvc_group_remove_contacts_in_person(int group_id, int person_id);
*/
-#endif // __CTSVC_GROUP_H__
+#endif /* __CTSVC_SERVER_GROUP_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_init.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_notification.h"
#include "ctsvc_db_plugin_person_helper.h"
#include "ctsvc_db_plugin_contact_helper.h"
#include "ctsvc_db_access_control.h"
#ifdef ENABLE_LOG_FEATURE
-#include "ctsvc_phonelog.h"
-#endif // ENABLE_LOG_FEATURE
+#include "ctsvc_server_phonelog.h"
+#endif /* ENABLE_LOG_FEATURE */
#ifdef _CONTACTS_IPC_SERVER
#include "ctsvc_server_change_subject.h"
CTSVC_GET_PERSON_DEFAULT_IMAGE_VALUE,
};
-static inline int __ctsvc_get_person_default_number_value(int id, contacts_record_h *record)
+static inline int __ctsvc_get_person_default_number_value(const char *zone_name, int id, contacts_record_h *record)
{
int ret;
cts_stmt stmt;
"WHERE contacts.person_id = %d",
CTS_TABLE_CONTACTS, CTS_TABLE_DATA, CTSVC_DATA_NUMBER, id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
return ret;
}
-static inline int __ctsvc_get_person_default_email_value(int id, contacts_record_h *record)
+static inline int __ctsvc_get_person_default_email_value(const char *zone_name, int id, contacts_record_h *record)
{
int ret;
cts_stmt stmt;
"WHERE contacts.person_id = %d",
CTS_TABLE_CONTACTS, CTS_TABLE_DATA, CTSVC_DATA_EMAIL, id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
return ret;
}
-static inline int __ctsvc_get_person_default_image_value(int id, contacts_record_h *record)
+static inline int __ctsvc_get_person_default_image_value(const char *zone_name, int id, contacts_record_h *record)
{
int ret;
cts_stmt stmt;
"WHERE contacts.person_id = %d",
CTSVC_DATA_IMAGE, id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
return ret;
}
-static int __ctsvc_get_person_value(int op_code,
+static int __ctsvc_get_person_value(const char *zone_name, int op_code,
int person_id, contacts_record_h *record)
{
int ret;
RETV_IF(NULL == record, CONTACTS_ERROR_INVALID_PARAMETER);
- switch (op_code)
- {
+ switch (op_code) {
case CTSVC_GET_PERSON_DEFAULT_NUMBER_VALUE:
- ret = __ctsvc_get_person_default_number_value(person_id, record);
- RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "__ctsvc_get_person_default_number_value() Failed(%d)", ret);
+ ret = __ctsvc_get_person_default_number_value(zone_name, person_id, record);
+ RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "__ctsvc_get_person_default_number_value() Fail(%d)", ret);
break;
case CTSVC_GET_PERSON_DEFAULT_EMAIL_VALUE:
- ret = __ctsvc_get_person_default_email_value(person_id, record);
- RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "__ctsvc_get_person_default_email_value() Failed(%d)", ret);
+ ret = __ctsvc_get_person_default_email_value(zone_name, person_id, record);
+ RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "__ctsvc_get_person_default_email_value() Fail(%d)", ret);
break;
case CTSVC_GET_PERSON_DEFAULT_IMAGE_VALUE:
- ret = __ctsvc_get_person_default_image_value(person_id, record);
- RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "__ctsvc_get_person_default_image_value() Failed(%d)", ret);
+ ret = __ctsvc_get_person_default_image_value(zone_name, person_id, record);
+ RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "__ctsvc_get_person_default_image_value() Fail(%d)", ret);
break;
default:
CTS_ERR("Invalid parameter : The op_code(%d) is not supported", op_code);
return ret;
}
-static inline int __ctsvc_put_person_default_name(int person_id, int contact_id)
+static inline int __ctsvc_put_person_default_name(const char *zone_name, int person_id, int contact_id)
{
int ret;
int id;
"SELECT person_id FROM %s WHERE contact_id=%d AND deleted = 0",
CTS_TABLE_CONTACTS, contact_id);
- ret = ctsvc_query_get_first_int_result(query, &id);
- RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_query_get_first_int_result() Failed(%d)", ret);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
+ RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_query_get_first_int_result() Fail(%d)", ret);
if (id == person_id) {
- ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE > ret, ret, "DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
snprintf(query, sizeof(query),
"UPDATE %s SET name_contact_id=%d WHERE person_id=%d",
CTS_TABLE_PERSONS, contact_id, person_id);
- ret = ctsvc_query_exec(query);
- if( CONTACTS_ERROR_NONE != ret )
- {
- CTS_ERR( "ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ ret = ctsvc_query_exec(zone_name, query);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- else
- {
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ else {
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return ret;
}
-static inline int __ctsvc_put_person_default_image(int person_id, int id)
+static inline int __ctsvc_put_person_default_image(const char *zone_name, int person_id, int id)
{
int ret;
int is_default;
char *image_path;
char query[CTS_SQL_MAX_LEN] = {0};
- ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE > ret, ret, "DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT D.is_default, D.contact_id, D.data3 "
"ON D.contact_id = C.contact_id AND C.deleted = 0 "
"WHERE D.datatype=%d AND D.is_my_profile = 0 AND C.person_id=%d AND D.id=%d",
CTSVC_DATA_IMAGE, person_id, id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("ctsvc_query_prepare failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_prepare Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
image_path = SAFE_STRDUP(ctsvc_stmt_get_text(stmt, 2));
ctsvc_stmt_finalize(stmt);
- // unset is_primary_default of all data of the person
+ /* unset is_primary_default of all data of the person */
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_DATA" SET is_primary_default=0 WHERE datatype=%d AND is_my_profile = 0 "
"AND contact_id IN (SELECT contact_id FROM "CTS_TABLE_CONTACTS" "
"WHERE person_id=%d AND deleted = 0) ",
CTSVC_DATA_IMAGE, person_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("DB error : ctsvc_query_exec() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_exec() Fail(%d)", ret);
free(image_path);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- // unset is_default of all data of person if the data is not default
- if (!is_default) {
+ /* unset is_default of all data of person if the data is not default */
+ if (false == is_default) {
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_DATA" SET is_default=0 WHERE datatype=%d AND is_my_profile = 0 "
"AND contact_id = (SELECT contact_id FROM "CTS_TABLE_DATA" WHERE id=%d) ",
CTSVC_DATA_IMAGE, id);
- ret = ctsvc_query_exec(query);
- if(CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("DB error : ctsvc_query_exec() Fail(%d)", ret);
free(image_path);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
}
- // set is_default, is _primary_default
+ /* set is_default, is _primary_default */
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_DATA" SET is_primary_default=1, is_default=1 WHERE id=%d ", id);
- ret = ctsvc_query_exec(query);
- if( CONTACTS_ERROR_NONE != ret ) {
- CTS_ERR( "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
free(image_path);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- // update person's image_thumbnail_path
+ /* update person's image_thumbnail_path */
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_PERSONS" SET image_thumbnail_path=? WHERE person_id=%d ", person_id);
- ret = ctsvc_query_prepare(query, &stmt);
- if( NULL == stmt ) {
- CTS_ERR( "ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ if (NULL == stmt) {
+ CTS_ERR("ctsvc_query_prepare() Fail(%d)", ret);
free(image_path);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ctsvc_stmt_bind_text(stmt, 1, image_path);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
free(image_path);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ctsvc_stmt_finalize(stmt);
- // update contact's image_thumbnail_path
+ /* update contact's image_thumbnail_path */
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_CONTACTS" SET image_thumbnail_path=? WHERE contact_id=%d ", contact_id);
- ret = ctsvc_query_prepare(query, &stmt);
- if( NULL == stmt ) {
- CTS_ERR( "ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ if (NULL == stmt) {
+ CTS_ERR("ctsvc_query_prepare() Fail(%d)", ret);
free(image_path);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ctsvc_stmt_bind_text(stmt, 1, image_path);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
free(image_path);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ctsvc_stmt_finalize(stmt);
free(image_path);
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(zone_name, true);
return ret;
}
-static inline int __ctsvc_put_person_default_data(int person_id, int id, int datatype)
+static inline int __ctsvc_put_person_default_data(const char *zone_name, int person_id, int id, int datatype)
{
int ret;
int is_default = 0;
"WHERE D.datatype=%d AND C.person_id=%d AND D.id=%d",
CTS_TABLE_DATA, CTS_TABLE_CONTACTS, datatype, person_id, id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
ctsvc_stmt_finalize(stmt);
- ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE > ret, ret, "DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
- // unset is_primary_default of all data of the person
+ /* unset is_primary_default of all data of the person */
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_DATA" SET is_primary_default=0 WHERE datatype=%d AND is_my_profile = 0 "
"AND contact_id IN (SELECT contact_id FROM "CTS_TABLE_CONTACTS" "
"WHERE person_id=%d AND deleted = 0) ",
datatype, person_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("DB error : ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- // unset is_default of all data of person if the data is not default
- if (!is_default) {
+ /* unset is_default of all data of person if the data is not default */
+ if (false == is_default) {
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_DATA" SET is_default=0 WHERE datatype=%d AND is_my_profile = 0 "
"AND contact_id = (SELECT contact_id FROM "CTS_TABLE_DATA" WHERE id=%d) ",
datatype, id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
}
- // set is_default, is _primary_default
+ /* set is_default, is _primary_default */
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_DATA" SET is_primary_default=1, is_default=1 WHERE id=%d ", id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR( "ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
source_type = CONTACTS_DISPLAY_NAME_SOURCE_TYPE_EMAIL;
if (CONTACTS_DISPLAY_NAME_SOURCE_TYPE_INVALID != source_type)
- ctsvc_contact_update_display_name(contact_id, source_type);
+ ctsvc_contact_update_display_name(zone_name, contact_id, source_type);
snprintf(query, sizeof(query),
"SELECT name_contact_id FROM "CTS_TABLE_PERSONS" WHERE person_id = %d", person_id);
- ret = ctsvc_query_get_first_int_result(query, &name_contact_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &name_contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR( "ctsvc_query_get_first_int_result() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_get_first_int_result() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
int org_source_type = CONTACTS_DISPLAY_NAME_SOURCE_TYPE_INVALID;
snprintf(query, sizeof(query),
"SELECT display_name_source FROM "CTS_TABLE_CONTACTS" WHERE contact_id = %d", name_contact_id);
- ret = ctsvc_query_get_first_int_result(query, &org_source_type);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &org_source_type);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR( "ctsvc_query_get_first_int_result() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_get_first_int_result() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
snprintf(query, sizeof(query),
"UPDATE %s SET name_contact_id=%d WHERE person_id=%d",
CTS_TABLE_PERSONS, contact_id, person_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR( "ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
}
}
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
{
#ifdef _CONTACTS_IPC_SERVER
int person_id;
+ char *zone_name = NULL;
if (argc < 1) {
sqlite3_result_null(context);
return;
}
+ zone_name = sqlite3_user_data(context);
+
person_id = sqlite3_value_int(argv[0]);
- ctsvc_change_subject_add_changed_person_id(CONTACTS_CHANGE_DELETED, person_id);
+ ctsvc_change_subject_add_changed_person_id(zone_name, CONTACTS_CHANGE_DELETED, person_id);
#ifdef ENABLE_LOG_FEATURE
- // update phonelog
- // CASE : do not know the proper new person_id
- ctsvc_db_phone_log_update_person_id(NULL, person_id, -1, false);
-#endif // ENABLE_LOG_FEATURE
+ /*
+ * update phonelog
+ * CASE : do not know the proper new person_id
+ */
+ ctsvc_db_phone_log_update_person_id(zone_name, NULL, person_id, -1, false);
+#endif /* ENABLE_LOG_FEATURE */
sqlite3_result_null(context);
return;
#endif
return src+pos;
}
-int ctsvc_person_aggregate(int person_id)
+int ctsvc_person_aggregate(const char *zone_name, int person_id)
{
int ret, len = 0;
int version;
ctsvc_person_s *person;
bool person_is_favorite = false;
- // person aggregation : person link/unlink, contact insert (auto link), contact delete, garbage collection (addressbook delete)
- // It should be get all contacts of person regardless of permission
- // Get person info directly instead of contacts_db_get_record( _contacts_person._uri, person_id, (contacts_record_h*)&person);
+ /*
+ * person aggregation : person link/unlink, contact insert (auto link),
+ * contact delete, garbage collection (addressbook delete)
+ * It should be get all contacts of person regardless of permission
+ * Get person info directly instead of contacts_db_get_record(_contacts_person._uri, person_id, (contacts_record_h*)&person);
+ */
snprintf(query, sizeof(query),
"SELECT person_id, "
"name_contact_id, "
"message_alert "
"FROM "CTS_TABLE_PERSONS" "
"WHERE persons.person_id = %d", person_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
if (1 != ctsvc_stmt_step(stmt)) {
CTS_ERR("ctsvc_stmt_step() Failed\n");
person->message_alert = SAFE_STRDUP(temp);
ctsvc_stmt_finalize(stmt);
- // check image_thumbnail_path
+ /* check image_thumbnail_path */
if (person->image_thumbnail_path) {
temp = __ctsvc_get_image_filename(person->image_thumbnail_path);
snprintf(query, sizeof(query),
"WHERE C.person_id=%d AND C.contact_id=D.contact_id AND C.deleted = 0 "
"AND D.datatype=%d AND D.is_primary_default = 1 AND D.data3='%s'",
person->person_id, CTSVC_DATA_IMAGE, temp);
- ret = ctsvc_query_get_first_int_result(query, &id);
- if(ret == CONTACTS_ERROR_NONE) {
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
+ if (ret == CONTACTS_ERROR_NONE) {
image_thumbnail_path = SAFE_STRDUP(temp);
}
}
image_thumbnail_path = NULL;
}
- // check name_contact_id
+ /* check name_contact_id */
snprintf(query, sizeof(query),
"SELECT contact_id FROM %s "
"WHERE person_id=%d AND contact_id=%d AND deleted = 0",
CTS_TABLE_CONTACTS, person->person_id, person->name_contact_id);
- ret = ctsvc_query_get_first_int_result(query, &id);
- if(ret == CONTACTS_ERROR_NONE) {
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
+ if (ret == CONTACTS_ERROR_NONE) {
name_contact_id = person->name_contact_id;
person_name_contact_id = person->name_contact_id;
}
person_name_contact_id = 0;
}
- // get status of person
+ /* get status of person */
snprintf(query, sizeof(query),
"SELECT a.status FROM %s c, %s a "
"ON c.contact_id = a.contact_id AND c.deleted = 0 "
"WHERE c.person_id=%d "
"ORDER BY timestamp DESC LIMIT 1",
CTS_TABLE_CONTACTS, CTS_TABLE_ACTIVITIES, person->person_id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
free(image_thumbnail_path);
contacts_record_destroy((contacts_record_h)person, true);
return ret;
}
ctsvc_stmt_finalize(stmt);
- // check ringtone_path
+ /* check ringtone_path */
if (person->ringtone_path) {
snprintf(query, sizeof(query),
"SELECT C.contact_id FROM "CTS_TABLE_CONTACTS" C "
"WHERE C.person_id=%d AND C.deleted = 0 "
"AND C.ringtone_path = '%s'",
person->person_id, person->ringtone_path);
- ret = ctsvc_query_get_first_int_result(query, &id);
- if(ret == CONTACTS_ERROR_NONE) {
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
+ if (ret == CONTACTS_ERROR_NONE) {
ringtone_path = SAFE_STRDUP(person->ringtone_path);
}
}
ringtone_path = NULL;
}
- // check vibration
+ /* check vibration */
if (person->vibration) {
snprintf(query, sizeof(query),
"SELECT C.contact_idFROM "CTS_TABLE_CONTACTS" C "
"WHERE C.person_id=%d AND C.deleted = 0 "
"AND C.vibration = '%s'",
person->person_id, person->vibration);
- ret = ctsvc_query_get_first_int_result(query, &id);
- if(ret == CONTACTS_ERROR_NONE) {
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
+ if (ret == CONTACTS_ERROR_NONE) {
vibration = SAFE_STRDUP(person->vibration);
}
}
vibration = NULL;
}
- // check vibration
+ /* check vibration */
if (person->message_alert) {
snprintf(query, sizeof(query),
"SELECT C.contact_id FROM "CTS_TABLE_CONTACTS" C "
"WHERE C.person_id=%d AND C.deleted = 0 "
"AND C.message_alert = '%s'",
person->person_id, person->message_alert);
- ret = ctsvc_query_get_first_int_result(query, &id);
- if(ret == CONTACTS_ERROR_NONE) {
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
+ if (ret == CONTACTS_ERROR_NONE) {
message_alert = SAFE_STRDUP(person->message_alert);
}
}
"WHERE person_id = %d AND contacts.deleted = 0 "
"ORDER BY contact_id",
CTS_TABLE_CONTACTS, person_id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
free(image_thumbnail_path);
free(ringtone_path);
free(vibration);
link_count++;
- if (contact_display_name_source_type > display_name_source_type) {
+ if (display_name_source_type < contact_display_name_source_type) {
display_name_source_type = contact_display_name_source_type;
name_contact_id = contact_id;
}
addressbook_ids = realloc(addressbook_ids, addressbooks_len);
}
- len += snprintf(addressbook_ids + len, addressbooks_len -len, "%d%s", addressbook_id, ADDRESSBOOK_ID_DELIM );
+ len += snprintf(addressbook_ids + len, addressbooks_len -len, "%d%s", addressbook_id, ADDRESSBOOK_ID_DELIM);
- if (!image_thumbnail_path && contact_image_thumbnail_path && *contact_image_thumbnail_path) {
+ if (NULL == image_thumbnail_path && contact_image_thumbnail_path && *contact_image_thumbnail_path) {
temp = __ctsvc_get_image_filename(contact_image_thumbnail_path);
image_thumbnail_path = SAFE_STRDUP(temp);
- // update data table : is_primary_default
+ /* update data table : is_primary_default */
}
free(contact_image_thumbnail_path);
temp_str = contact_ringtone_path;
- if (!ringtone_path && temp_str && strlen(temp_str))
+ if (NULL == ringtone_path && temp_str && strlen(temp_str))
ringtone_path = SAFE_STRDUP(temp_str);
free(contact_ringtone_path);
temp_str = contact_vibration;
- if (!vibration && temp_str && strlen(temp_str))
+ if (NULL == vibration && temp_str && strlen(temp_str))
vibration = SAFE_STRDUP(temp_str);
free(contact_vibration);
temp_str = contact_message_alert;
- if (!message_alert && temp_str && strlen(temp_str))
+ if (NULL == message_alert && temp_str && strlen(temp_str))
message_alert = SAFE_STRDUP(temp_str);
free(contact_message_alert);
person_is_favorite = true;
}
ctsvc_stmt_finalize(stmt);
- version = ctsvc_get_next_ver();
+ version = ctsvc_get_next_ver(zone_name);
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_PERSONS" SET dirty=0, name_contact_id = %d, changed_ver = %d, "
name_contact_id, version, person_id,
person_id, link_count, person_id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
free(addressbook_ids);
free(image_thumbnail_path);
free(ringtone_path);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
free(addressbook_ids);
free(image_thumbnail_path);
free(message_alert);
free(status);
- if (!person_is_favorite) {
+ if (false == person_is_favorite) {
snprintf(query, sizeof(query),
"DELETE FROM "CTS_TABLE_FAVORITES" WHERE person_id = %d", person_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
#ifdef _CONTACTS_IPC_SERVER
- ctsvc_change_subject_add_changed_person_id(CONTACTS_CHANGE_UPDATED, person_id);
+ ctsvc_change_subject_add_changed_person_id(zone_name, CONTACTS_CHANGE_UPDATED, person_id);
#endif
return CONTACTS_ERROR_NONE;
}
-static bool __ctsvc_get_person_favorite_info(int person_id, double *priority)
+static bool __ctsvc_get_person_favorite_info(const char *zone_name, int person_id, double *priority)
{
int ret;
cts_stmt stmt;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query),
"SELECT favorite_prio FROM "CTS_TABLE_FAVORITES" WHERE person_id = %d", person_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 == ret) {
return false;
}
-API int contacts_person_link_person(int base_person_id, int person_id)
+int ctsvc_person_link_person(const char *zone_name, int base_person_id, int person_id)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
bool is_favorite = false;
double favorite_prio = 0.0;
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
"Permission denied : contact write (person)");
RETVM_IF(base_person_id == person_id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : base_person_id(%d), person_id(%d)", base_person_id, person_id);
- ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE > ret, ret, "DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
- ret = __ctsvc_get_person_value(CTSVC_GET_PERSON_DEFAULT_NUMBER_VALUE, base_person_id, &record);
- if (CONTACTS_ERROR_NONE != ret ) {
- ret = __ctsvc_get_person_value(CTSVC_GET_PERSON_DEFAULT_NUMBER_VALUE, person_id, &record);
+ ret = __ctsvc_get_person_value(zone_name, CTSVC_GET_PERSON_DEFAULT_NUMBER_VALUE, base_person_id, &record);
+ if (CONTACTS_ERROR_NONE != ret) {
+ ret = __ctsvc_get_person_value(zone_name, CTSVC_GET_PERSON_DEFAULT_NUMBER_VALUE, person_id, &record);
if (CONTACTS_ERROR_NONE == ret) {
contacts_record_get_int(record, CTSVC_PROPERTY_NUMBER_ID, &default_number_id);
contacts_record_destroy(record, true);
contacts_record_destroy(record, true);
}
- ret = __ctsvc_get_person_value(CTSVC_GET_PERSON_DEFAULT_EMAIL_VALUE, base_person_id, &record);
- if (CONTACTS_ERROR_NONE != ret ) {
- ret = __ctsvc_get_person_value(CTSVC_GET_PERSON_DEFAULT_EMAIL_VALUE, person_id, &record);
- if (CONTACTS_ERROR_NONE == ret ) {
+ ret = __ctsvc_get_person_value(zone_name, CTSVC_GET_PERSON_DEFAULT_EMAIL_VALUE, base_person_id, &record);
+ if (CONTACTS_ERROR_NONE != ret) {
+ ret = __ctsvc_get_person_value(zone_name, CTSVC_GET_PERSON_DEFAULT_EMAIL_VALUE, person_id, &record);
+ if (CONTACTS_ERROR_NONE == ret) {
contacts_record_get_int(record, CTSVC_PROPERTY_EMAIL_ID, &default_email_id);
contacts_record_destroy(record, true);
}
contacts_record_destroy(record, true);
}
- ret = __ctsvc_get_person_value(CTSVC_GET_PERSON_DEFAULT_IMAGE_VALUE, base_person_id, &record);
- if (CONTACTS_ERROR_NONE != ret ) {
- ret = __ctsvc_get_person_value(CTSVC_GET_PERSON_DEFAULT_IMAGE_VALUE, person_id, &record);
- if (CONTACTS_ERROR_NONE == ret ) {
+ ret = __ctsvc_get_person_value(zone_name, CTSVC_GET_PERSON_DEFAULT_IMAGE_VALUE, base_person_id, &record);
+ if (CONTACTS_ERROR_NONE != ret) {
+ ret = __ctsvc_get_person_value(zone_name, CTSVC_GET_PERSON_DEFAULT_IMAGE_VALUE, person_id, &record);
+ if (CONTACTS_ERROR_NONE == ret) {
contacts_record_get_int(record, CTSVC_PROPERTY_IMAGE_ID, &default_image_id);
contacts_record_destroy(record, true);
}
contacts_record_destroy(record, true);
}
- base_is_favorite = __ctsvc_get_person_favorite_info(base_person_id, &favorite_prio);
- if (!base_is_favorite)
- is_favorite = __ctsvc_get_person_favorite_info(person_id, &favorite_prio);
+ base_is_favorite = __ctsvc_get_person_favorite_info(zone_name, base_person_id, &favorite_prio);
+ if (false == base_is_favorite)
+ is_favorite = __ctsvc_get_person_favorite_info(zone_name, person_id, &favorite_prio);
snprintf(query, sizeof(query),
"UPDATE %s SET person_id = %d WHERE person_id = %d AND deleted = 0",
CTS_TABLE_CONTACTS, base_person_id, person_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_person_aggregate(base_person_id);
+ ctsvc_person_aggregate(zone_name, base_person_id);
if (default_number_id)
- __ctsvc_put_person_default_data(base_person_id, default_number_id, CTSVC_DATA_NUMBER);
+ __ctsvc_put_person_default_data(zone_name, base_person_id, default_number_id, CTSVC_DATA_NUMBER);
if (default_email_id)
- __ctsvc_put_person_default_data(base_person_id, default_email_id, CTSVC_DATA_EMAIL);
+ __ctsvc_put_person_default_data(zone_name, base_person_id, default_email_id, CTSVC_DATA_EMAIL);
if (default_image_id)
- __ctsvc_put_person_default_image(base_person_id, default_image_id);
+ __ctsvc_put_person_default_image(zone_name, base_person_id, default_image_id);
#ifdef ENABLE_LOG_FEATURE
- // update phonelog
- // Updating phonelog person_id before deleting person
- // Because, when deleting, ctsvc_db_person_delete_callback will be called
- // the logic takes more time to find proper person_id (base_person_id)
- ctsvc_db_phone_log_update_person_id(NULL, person_id, base_person_id, true);
-#endif // ENABLE_LOG_FEATURE
+ /*
+ * update phonelog
+ * Updating phonelog person_id before deleting person
+ * Because, when deleting, ctsvc_db_person_delete_callback will be called
+ * the logic takes more time to find proper person_id (base_person_id)
+ */
+ ctsvc_db_phone_log_update_person_id(zone_name, NULL, person_id, base_person_id, true);
+#endif /* ENABLE_LOG_FEATURE */
snprintf(query, sizeof(query), "DELETE FROM %s WHERE person_id = %d",
CTS_TABLE_PERSONS, person_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
-//#ifdef _CONTACTS_IPC_SERVER
-// It will be added in ctsvc_db_person_delete_callback
-// ctsvc_change_subject_add_changed_person_id(CONTACTS_CHANGE_DELETED, person_id);
-//#endif
+/*
+ *#ifdef _CONTACTS_IPC_SERVER
+ * It will be added in ctsvc_db_person_delete_callback
+ * ctsvc_change_subject_add_changed_person_id(CONTACTS_CHANGE_DELETED, person_id);
+ *#endif
+ */
if (is_favorite) {
snprintf(query, sizeof(query),
"INSERT INTO "CTS_TABLE_FAVORITES" values(%d, %f)", base_person_id, favorite_prio);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
}
- ctsvc_set_person_noti();
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ctsvc_set_person_noti(zone_name);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_update_primary_default_data(int person_id)
+static int __ctsvc_update_primary_default_data(const char *zone_name, int person_id)
{
int ret;
contacts_record_h record = NULL;
char query[CTS_SQL_MIN_LEN] = {0};
cts_stmt stmt;
- ret = __ctsvc_get_person_value(CTSVC_GET_PERSON_DEFAULT_NUMBER_VALUE, person_id, &record);
- if (CONTACTS_ERROR_NONE != ret ) {
+ ret = __ctsvc_get_person_value(zone_name, CTSVC_GET_PERSON_DEFAULT_NUMBER_VALUE, person_id, &record);
+ if (CONTACTS_ERROR_NONE != ret) {
snprintf(query, sizeof(query),
"SELECT contact_id "
"FROM %s "
"WHERE person_id = %d AND deleted = 0 "
"ORDER BY contact_id",
CTS_TABLE_CONTACTS, person_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
while (1 == ctsvc_stmt_step(stmt)) {
int contact_id = ctsvc_stmt_get_int(stmt, 0);
"WHERE contact_id = %d AND datatype = %d AND is_default = 1 AND is_my_profile = 0",
CTS_TABLE_DATA, contact_id, CTSVC_DATA_NUMBER);
- ret = ctsvc_query_prepare(query, &stmt_number);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt_number);
if (NULL == stmt_number) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
- if( 1 == ctsvc_stmt_step(stmt_number) ) {
+ if (1 == ctsvc_stmt_step(stmt_number)) {
int default_number_id = ctsvc_stmt_get_int(stmt_number, 0);
- __ctsvc_put_person_default_data(person_id, default_number_id, CTSVC_DATA_NUMBER);
+ __ctsvc_put_person_default_data(zone_name, person_id, default_number_id, CTSVC_DATA_NUMBER);
ctsvc_stmt_finalize(stmt_number);
break;
}
contacts_record_destroy(record, true);
}
- ret = __ctsvc_get_person_value(CTSVC_GET_PERSON_DEFAULT_EMAIL_VALUE, person_id, &record);
- if (CONTACTS_ERROR_NONE != ret ) {
+ ret = __ctsvc_get_person_value(zone_name, CTSVC_GET_PERSON_DEFAULT_EMAIL_VALUE, person_id, &record);
+ if (CONTACTS_ERROR_NONE != ret) {
snprintf(query, sizeof(query),
"SELECT contact_id "
"FROM %s "
"WHERE person_id = %d AND deleted = 0 "
"ORDER BY contact_id",
CTS_TABLE_CONTACTS, person_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
while (1 == ctsvc_stmt_step(stmt)) {
int contact_id = ctsvc_stmt_get_int(stmt, 0);
"WHERE contact_id = %d AND datatype = %d AND is_default = 1 AND is_my_profile = 0",
CTS_TABLE_DATA, contact_id, CTSVC_DATA_EMAIL);
- ret = ctsvc_query_prepare(query, &stmt_email);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt_email);
if (NULL == stmt_email) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
- if( 1 == ctsvc_stmt_step(stmt_email)) {
+ if (1 == ctsvc_stmt_step(stmt_email)) {
int default_email_id = ctsvc_stmt_get_int(stmt_email, 0);
- __ctsvc_put_person_default_data(person_id, default_email_id, CTSVC_DATA_EMAIL);
+ __ctsvc_put_person_default_data(zone_name, person_id, default_email_id, CTSVC_DATA_EMAIL);
ctsvc_stmt_finalize(stmt_email);
break;
}
contacts_record_destroy(record, true);
}
- ret = __ctsvc_get_person_value(CTSVC_GET_PERSON_DEFAULT_IMAGE_VALUE, person_id, &record);
- if (CONTACTS_ERROR_NONE != ret ) {
+ ret = __ctsvc_get_person_value(zone_name, CTSVC_GET_PERSON_DEFAULT_IMAGE_VALUE, person_id, &record);
+ if (CONTACTS_ERROR_NONE != ret) {
snprintf(query, sizeof(query),
"SELECT contact_id "
"FROM %s "
"WHERE person_id = %d AND deleted = 0 "
"ORDER BY contact_id",
CTS_TABLE_CONTACTS, person_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
- while ( 1 == ctsvc_stmt_step(stmt)) {
+ while (1 == ctsvc_stmt_step(stmt)) {
int contact_id = ctsvc_stmt_get_int(stmt, 0);
cts_stmt stmt_image;
"WHERE contact_id = %d AND datatype = %d AND is_default = 1 AND is_my_profile = 0",
CTS_TABLE_DATA, contact_id, CTSVC_DATA_IMAGE);
- ret = ctsvc_query_prepare(query, &stmt_image);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt_image);
if (NULL == stmt_image) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
- if( 1 == ctsvc_stmt_step(stmt_image)) {
+ if (1 == ctsvc_stmt_step(stmt_image)) {
int default_image_id = ctsvc_stmt_get_int(stmt_image, 0);
- __ctsvc_put_person_default_image(person_id, default_image_id);
+ __ctsvc_put_person_default_image(zone_name, person_id, default_image_id);
ctsvc_stmt_finalize(stmt_image);
break;
}
return CONTACTS_ERROR_NONE;
}
-API int contacts_person_unlink_contact(int person_id, int contact_id, int* out_person_id )
+int ctsvc_person_unlink_contact(const char *zone_name, int person_id, int contact_id, int* out_person_id)
{
int ret;
int id;
bool is_favorite = false;
double priority = 0.0;
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
"Permission denied : contact write (person)");
- RETVM_IF(person_id <= 0 || contact_id <= 0 , CONTACTS_ERROR_INVALID_PARAMETER,
+ RETVM_IF(person_id <= 0 || contact_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : person_id(%d), person_id(%d)", person_id, person_id);
if (out_person_id)
*out_person_id = 0;
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans() Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT link_count FROM "CTS_TABLE_PERSONS" WHERE person_id=%d", person_id);
- ret = ctsvc_query_get_first_int_result(query, &link_count);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &link_count);
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
if (link_count == 1) {
CTS_ERR("This person(%d) has one contact(%d)", person_id, contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- ret = ctsvc_db_contact_get(contact_id, (contacts_record_h*)&record);
+ ret = ctsvc_db_contact_get(zone_name, contact_id, (contacts_record_h*)&record);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_db_contact_get() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_db_contact_get() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- // create new person
- id = ctsvc_db_insert_person(record);
- if (CONTACTS_ERROR_NONE > id) {
- CTS_ERR("ctsvc_db_insert_person() Failed(%d)", id);
- ctsvc_end_trans(false);
+ /* create new person */
+ id = ctsvc_db_insert_person(zone_name, record);
+ if (id < CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_db_insert_person() Fail(%d)", id);
+ ctsvc_end_trans(zone_name, false);
contacts_record_destroy(record, true);
return id;
}
- // insert statistic info for new person
+ /* insert statistic info for new person */
snprintf(query, sizeof(query),
"INSERT INTO %s (person_id, usage_type, times_used) "
"SELECT %d, usage_type, times_used FROM %s WHERE person_id = %d",
- CTS_TABLE_CONTACT_STAT, id, CTS_TABLE_CONTACT_STAT, person_id );
- ret = ctsvc_query_exec(query);
+ CTS_TABLE_CONTACT_STAT, id, CTS_TABLE_CONTACT_STAT, person_id);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
contacts_record_destroy(record, true);
return ret;
}
- is_favorite = __ctsvc_get_person_favorite_info(person_id, &priority);
+ is_favorite = __ctsvc_get_person_favorite_info(zone_name, person_id, &priority);
- // update person_id of unlinked contact
+ /* update person_id of unlinked contact */
snprintf(query, sizeof(query),
"UPDATE %s SET person_id = %d WHERE contact_id = %d",
CTS_TABLE_CONTACTS, id, contact_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
contacts_record_destroy(record, true);
return ret;
}
- // update bsae person info
- ret = ctsvc_person_aggregate(person_id);
+ /* update bsae person info */
+ ret = ctsvc_person_aggregate(zone_name, person_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_person_aggregate(%d) Failed(%d)", person_id, ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_person_aggregate(%d) Fail(%d)", person_id, ret);
+ ctsvc_end_trans(zone_name, false);
contacts_record_destroy(record, true);
return ret;
}
if (is_favorite && ((ctsvc_contact_s*)record)->is_favorite) {
snprintf(query, sizeof(query),
"INSERT OR REPLACE INTO "CTS_TABLE_FAVORITES" values(%d, %f)", id, priority);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
contacts_record_destroy(record, true);
return ret;
}
}
contacts_record_destroy(record, true);
- __ctsvc_update_primary_default_data(person_id);
+ __ctsvc_update_primary_default_data(zone_name, person_id);
#ifdef ENABLE_LOG_FEATURE
- // update phonelog
- ctsvc_db_phone_log_update_person_id(NULL, person_id, id, false);
-#endif // ENABLE_LOG_FEATURE
+ /* update phonelog */
+ ctsvc_db_phone_log_update_person_id(zone_name, NULL, person_id, id, false);
+#endif /* ENABLE_LOG_FEATURE */
if (out_person_id)
*out_person_id = id;
- ctsvc_set_person_noti();
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ctsvc_set_person_noti(zone_name);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-int ctsvc_person_do_garbage_collection(void)
+int ctsvc_person_do_garbage_collection(const char *zone_name)
{
int ret;
cts_stmt stmt = NULL;
snprintf(query, sizeof(query), "SELECT person_id FROM "CTS_TABLE_PERSONS" WHERE dirty=1");
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
- while ( 1 /*CTS_TRUE*/ == ctsvc_stmt_step(stmt)) {
+ while (1 /*CTS_TRUE*/ == ctsvc_stmt_step(stmt)) {
int person_id;
person_id = ctsvc_stmt_get_int(stmt, 0);
- ctsvc_person_aggregate(person_id);
+ ctsvc_person_aggregate(zone_name, person_id);
#ifdef ENABLE_LOG_FEATURE
- // update phonelog
- ctsvc_db_phone_log_update_person_id(NULL, person_id, -1, false);
-#endif // ENABLE_LOG_FEATURE
+ /* update phonelog */
+ ctsvc_db_phone_log_update_person_id(zone_name, NULL, person_id, -1, false);
+#endif /* ENABLE_LOG_FEATURE */
}
ctsvc_stmt_finalize(stmt);
return CONTACTS_ERROR_NONE;
}
-API int contacts_person_reset_usage(int person_id, contacts_usage_type_e type)
+int ctsvc_person_reset_usage(const char *zone_name, int person_id, contacts_usage_type_e type)
{
int ret ;
char query[CTS_SQL_MAX_LEN] = {0};
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
"Permission denied : contact write (person)");
RETVM_IF(person_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,"contact_id should be greater than 0");
"UPDATE %s SET times_used = 0 WHERE person_id = %d AND usage_type = %d",
CTS_TABLE_CONTACT_STAT, person_id, type);
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-API int contacts_person_set_favorite_order(int person_id, int front_person_id, int back_person_id)
+int ctsvc_person_set_favorite_order(const char *zone_name, int person_id, int front_person_id, int back_person_id)
{
int ret;
double front_prio = 0.0;
cts_stmt stmt;
char query[CTS_SQL_MAX_LEN] = {0};
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
"Permission denied : contact write");
snprintf(query, sizeof(query), "SELECT favorite_prio FROM "CTS_TABLE_FAVORITES" WHERE person_id = ?");
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ctsvc_stmt_bind_int(stmt, 1, front_person_id);
ret = ctsvc_stmt_step(stmt);
else
prio = (front_prio + back_prio) / 2;
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
snprintf(query, sizeof(query),
"UPDATE %s SET favorite_prio = %f WHERE person_id = %d",
CTS_TABLE_FAVORITES, prio, person_id);
- ret = ctsvc_query_exec(query);
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ ret = ctsvc_query_exec(zone_name, query);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-API int contacts_person_set_default_property(contacts_person_property_e property, int person_id,
+int ctsvc_person_set_default_property(const char *zone_name, contacts_person_property_e property, int person_id,
int id)
{
int ret;
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
"Permission denied : contact write (person)");
- ret = ctsvc_begin_trans();
- RETVM_IF(ret < CONTACTS_ERROR_NONE, CONTACTS_ERROR_DB, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, CONTACTS_ERROR_DB, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
switch(property) {
case CONTACTS_PERSON_PROPERTY_NAME_CONTACT:
- ret = __ctsvc_put_person_default_name(person_id, id); // contact id
+ ret = __ctsvc_put_person_default_name(zone_name, person_id, id); /* contact id */
break;
case CONTACTS_PERSON_PROPERTY_NUMBER:
- ret = __ctsvc_put_person_default_data(person_id, id, CTSVC_DATA_NUMBER); // number id
+ ret = __ctsvc_put_person_default_data(zone_name, person_id, id, CTSVC_DATA_NUMBER); /* number id */
break;
case CONTACTS_PERSON_PROPERTY_EMAIL:
- ret = __ctsvc_put_person_default_data(person_id, id, CTSVC_DATA_EMAIL); // email id
+ ret = __ctsvc_put_person_default_data(zone_name, person_id, id, CTSVC_DATA_EMAIL); /* email id */
break;
case CONTACTS_PERSON_PROPERTY_IMAGE:
- ret = __ctsvc_put_person_default_image(person_id, id); // image id
+ ret = __ctsvc_put_person_default_image(zone_name, person_id, id); /* image id */
break;
default:
ret = CONTACTS_ERROR_INVALID_PARAMETER;
break;
}
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("contacts_person_set_default_property() Failed(%d) : person property (%d)", ret, property);
- ctsvc_end_trans(false);
+ CTS_ERR("contacts_person_set_default_property() Fail(%d) : person property (%d)", ret, property);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
#ifdef _CONTACTS_IPC_SERVER
- ctsvc_change_subject_add_changed_person_id(CONTACTS_CHANGE_UPDATED, person_id);
+ ctsvc_change_subject_add_changed_person_id(zone_name, CONTACTS_CHANGE_UPDATED, person_id);
#endif
- ctsvc_set_person_noti();
- ret = ctsvc_end_trans(true);
+ ctsvc_set_person_noti(zone_name);
+ ret = ctsvc_end_trans(zone_name, true);
return ret;
}
-API int contacts_person_get_default_property(contacts_person_property_e property, int person_id,
+
+int ctsvc_person_get_default_property(const char *zone_name, contacts_person_property_e property, int person_id,
int *id)
{
int ret = CONTACTS_ERROR_NONE;
RETVM_IF(person_id <= 0 || id == NULL, CONTACTS_ERROR_INVALID_PARAMETER,"id should be greater than 0");
*id = 0;
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_READ), CONTACTS_ERROR_PERMISSION_DENIED,
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_READ), CONTACTS_ERROR_PERMISSION_DENIED,
"Permission denied : contact read (contact)");
switch(property) {
if (*query) {
int result = 0;
- ret = ctsvc_query_get_first_int_result(query, &result);
- RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_query_get_first_int_result failed(%d)", ret);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &result);
+ RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_query_get_first_int_result Fail(%d)", ret);
*id = result;
}
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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.
+ *
+ */
+
+#ifndef __CTSVC_SERVER_PERSON_H__
+#define __CTSVC_SERVER_PERSON_H__
+
+#include "ctsvc_db_sqlite.h"
+
+int ctsvc_person_do_garbage_collection(const char *zone_name);
+int ctsvc_person_aggregate(const char *zone_name, int person_id);
+void ctsvc_db_person_delete_callback(sqlite3_context * context, int argc, sqlite3_value ** argv);
+int ctsvc_person_link_person(const char *zone_name, int base_person_id, int person_id);
+int ctsvc_person_unlink_contact(const char *zone_name, int person_id, int contact_id, int* out_person_id);
+int ctsvc_person_reset_usage(const char *zone_name, int person_id, contacts_usage_type_e type);
+int ctsvc_person_set_favorite_order(const char *zone_name, int person_id, int front_person_id, int back_person_id);
+int ctsvc_person_set_default_property(const char *zone_name, contacts_person_property_e property, int person_id, int id);
+int ctsvc_person_get_default_property(const char *zone_name, contacts_person_property_e property, int person_id, int *id);
+
+#endif /* __CTSVC_SERVER_PERSON_H__ */
\ No newline at end of file
#include "contacts_phone_log_internal.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_notification.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_number_utils.h"
#include "ctsvc_localize_utils.h"
-#include "ctsvc_setting.h"
+#include "ctsvc_server_setting.h"
+#include "ctsvc_server_phonelog.h"
#ifdef _CONTACTS_IPC_SERVER
#include "ctsvc_server_change_subject.h"
-#ifdef ENABLE_SIM_FEATURE
#include "ctsvc_server_sim.h"
-#endif // ENABLE_SIM_FEATURE
-#endif
+#endif /* _CONTACTS_IPC_SERVER */
-API int contacts_phone_log_reset_statistics()
+int ctsvc_phone_log_reset_statistics(const char *zone_name)
{
char query[CTS_SQL_MIN_LEN] = {0};
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_PHONELOG_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_PHONELOG_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
"Permission denied : contact write (phonelog)");
snprintf(query, sizeof(query),"DELETE FROM "CTS_TABLE_PHONELOG_STAT);
- return ctsvc_query_exec(query);
+ return ctsvc_query_exec(zone_name, query);
}
-API int contacts_phone_log_delete(contacts_phone_log_delete_e op, ...)
+int ctsvc_phone_log_delete(const char *zone_name, contacts_phone_log_delete_e op, ...)
{
int ret;
int extra_data1;
char *number = NULL;
va_list args;
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_PHONELOG_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_PHONELOG_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
"Permission denied : contact write (phonelog)");
switch(op) {
case CONTACTS_PHONE_LOG_DELETE_BY_ADDRESS:
CTS_ERR("Invalid parameter : the operation is not proper (op : %d)", op);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_phonelog_noti();
- ret = ctsvc_end_trans(true);
+ ctsvc_set_phonelog_noti(zone_name);
+ ret = ctsvc_end_trans(zone_name, true);
return ret;
}
{
#ifdef _CONTACTS_IPC_SERVER
int phone_log_id;
+ char *zone_name = NULL;
if (argc < 1) {
sqlite3_result_null(context);
return;
}
+ zone_name = sqlite3_user_data(context);
+
phone_log_id = sqlite3_value_int(argv[0]);
- ctsvc_change_subject_add_changed_phone_log_id(CONTACTS_CHANGE_DELETED, phone_log_id);
+ ctsvc_change_subject_add_changed_phone_log_id(zone_name, CONTACTS_CHANGE_DELETED, phone_log_id);
sqlite3_result_null(context);
return;
#endif
}
-static int __ctsvc_db_phone_log_find_person_id(char *number, char *normal_num, char *minmatch, int person_id, int *find_number_type)
+static int __ctsvc_db_phone_log_find_person_id(const char *zone_name, char *number, char *normal_num, char *minmatch, int person_id, int *find_number_type)
{
int ret;
int find_person_id = -1;
*find_number_type = -1;
if (normal_num) {
- snprintf(query, sizeof(query),
+ ret = snprintf(query, sizeof(query),
"SELECT person_id, data1 FROM "CTS_TABLE_CONTACTS", "CTS_TABLE_DATA" "
"ON "CTS_TABLE_CONTACTS".contact_id = "CTS_TABLE_DATA".contact_id "
"AND datatype = %d AND is_my_profile = 0 AND deleted = 0 "
}
if (*query) {
- // several person can have same number
+ /* several person can have same number */
cts_stmt stmt = NULL;
int id;
int number_type = -1;
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (stmt == NULL) {
- CTS_ERR("ctsvc_query_prepare fail(%d)", ret);
+ CTS_ERR("ctsvc_query_prepare Fail(%d)", ret);
if (bind_text) {
for (cursor=bind_text;cursor;cursor=cursor->next)
free(cursor->data);
while ((ret = ctsvc_stmt_step(stmt))) {
id = ctsvc_stmt_get_int(stmt, 0);
number_type = ctsvc_stmt_get_int(stmt, 1);
- if (find_person_id <= 0 && id > 0) {
- find_person_id = id; // find first match person_id
+ if (find_person_id <= 0 && 0 < id) {
+ find_person_id = id; /* find first match person_id */
*find_number_type = number_type;
if (person_id <= 0)
break;
return find_person_id;
}
-int ctsvc_db_phone_log_update_person_id(const char *number, int old_person_id, int candidate_person_id, bool person_link)
+int ctsvc_db_phone_log_update_person_id(const char *zone_name, const char *number, int old_person_id, int candidate_person_id, bool person_link)
{
CTS_FN_CALL;
int ret;
if (number && *number) {
char clean_num[strlen(number)+1];
- len += snprintf(query+len, sizeof(query)-len, "AND ((number = ? ) ");
+ len += snprintf(query+len, sizeof(query)-len, "AND ((number = ?) ");
bind_text = g_slist_append(bind_text, strdup(number));
ret = ctsvc_clean_number(number, clean_num, sizeof(clean_num), true);
len += snprintf(query+len, sizeof(query)-len, ") ");
}
- if (old_person_id > 0)
+ if (0 < old_person_id)
len += snprintf(query+len, sizeof(query)-len, "AND person_id = %d ", old_person_id);
else
len += snprintf(query+len, sizeof(query)-len, "AND person_id IS NULL ");
- ret = ctsvc_query_prepare(query, &get_log);
+ ret = ctsvc_query_prepare(zone_name, query, &get_log);
if (get_log == NULL) {
- CTS_ERR("ctsvc_query_prepare fail(%d)", ret);
+ CTS_ERR("ctsvc_query_prepare Fail(%d)", ret);
if (bind_text) {
for (cursor=bind_text;cursor;cursor=cursor->next)
free(cursor->data);
}
snprintf(query, sizeof(query), "UPDATE "CTS_TABLE_PHONELOGS" SET person_id=?, number_type = ? WHERE id = ?");
- ret = ctsvc_query_prepare(query, &update_log);
+ ret = ctsvc_query_prepare(zone_name, query, &update_log);
if (update_log == NULL) {
- CTS_ERR("ctsvc_query_prepare fail(%d)", ret);
+ CTS_ERR("ctsvc_query_prepare Fail(%d)", ret);
ctsvc_stmt_finalize(get_log);
if (bind_text) {
normal_address = ctsvc_stmt_get_text(get_log, 2);
minmatch_address = ctsvc_stmt_get_text(get_log, 3);
- //CASE : number is inserted (contact insert/update) => update person_id of phone logs from NULL
- if (number && old_person_id <= 0 && candidate_person_id > 0) {
- __ctsvc_db_phone_log_find_person_id(address, normal_address, minmatch_address, candidate_person_id, &number_type);
+ /* CASE : number is inserted (contact insert/update) => update person_id of phone logs from NULL */
+ if (number && old_person_id <= 0 && 0 < candidate_person_id) {
+ __ctsvc_db_phone_log_find_person_id(zone_name, address, normal_address, minmatch_address, candidate_person_id, &number_type);
new_person_id = candidate_person_id;
}
- //CASE : phonelog insert without person_id
+ /* CASE : phonelog insert without person_id */
else if (number && old_person_id <= 0) {
- // address == number
- new_person_id = __ctsvc_db_phone_log_find_person_id(address, normal_address, minmatch_address, -1, &number_type);
+ /* address == number */
+ new_person_id = __ctsvc_db_phone_log_find_person_id(zone_name, address, normal_address, minmatch_address, -1, &number_type);
if (new_person_id <= 0) continue;
}
- // CASE : number update/delete (contact update/delete) => find new_person_id by address
- // CASE : phonelog insert with person_id
- else if (number && old_person_id > 0) {
- // address == number
- // although new_person_id and old_person_id are same, update phonelog for setting number_type
- new_person_id = __ctsvc_db_phone_log_find_person_id(address, normal_address, minmatch_address, old_person_id, &number_type);
+ /* CASE : number update/delete (contact update/delete) => find new_person_id by address */
+ /* CASE : phonelog insert with person_id */
+ else if (number && 0 < old_person_id) {
+ /* address == number */
+ /* although new_person_id and old_person_id are same, update phonelog for setting number_type */
+ new_person_id = __ctsvc_db_phone_log_find_person_id(zone_name, address, normal_address, minmatch_address, old_person_id, &number_type);
}
- // CASE : person link => deleted person_id -> new person_id (base_person_id)
- else if (NULL == number && old_person_id > 0 && candidate_person_id > 0 && person_link) {
+ /* CASE : person link => deleted person_id -> new person_id (base_person_id) */
+ else if (NULL == number && 0 < old_person_id && 0 < candidate_person_id && person_link) {
new_person_id = candidate_person_id;
}
- // CASE : person unlink => check person_id of the address,
- // if person_id is not old_person_id then change person_id to new_person_id
- else if (NULL == number && old_person_id > 0 && candidate_person_id > 0) {
- temp_id = __ctsvc_db_phone_log_find_person_id(address, normal_address, minmatch_address, candidate_person_id, &number_type);
- if (temp_id > 0 && temp_id == old_person_id)
+ /* CASE : person unlink => check person_id of the address, */
+ /* if person_id is not old_person_id then change person_id to new_person_id */
+ else if (NULL == number && 0 < old_person_id && 0 < candidate_person_id) {
+ temp_id = __ctsvc_db_phone_log_find_person_id(zone_name, address, normal_address, minmatch_address, candidate_person_id, &number_type);
+ if (0 < temp_id && temp_id == old_person_id)
continue;
- else if (temp_id > 0 && temp_id != old_person_id)
+ else if (0 < temp_id && temp_id != old_person_id)
new_person_id = temp_id;
}
- // CASE : person delete => find new_person_id by address
- else if (NULL == number && old_person_id > 0) {
- new_person_id = __ctsvc_db_phone_log_find_person_id(address, normal_address, minmatch_address, candidate_person_id, &number_type);
+ /* CASE : person delete => find new_person_id by address */
+ else if (NULL == number && 0 < old_person_id) {
+ new_person_id = __ctsvc_db_phone_log_find_person_id(zone_name, address, normal_address, minmatch_address, candidate_person_id, &number_type);
}
- // Already check this case as above : RETVM_IF(old_person_id <= 0 && NULL == number, ...
-// else
-// continue;
+ /* Already check this case as above : RETVM_IF(old_person_id <= 0 && NULL == number, ... */
+ /*
+ * else
+ * continue;
+ */
- if (new_person_id > 0)
+ if (0 < new_person_id)
ctsvc_stmt_bind_int(update_log, 1, new_person_id);
- if (number_type >= 0)
+ if (0 <= number_type)
ctsvc_stmt_bind_int(update_log, 2, number_type);
ctsvc_stmt_bind_int(update_log, 3, phonelog_id);
ctsvc_stmt_step(update_log);
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_PHONELOG_H__
-#define __TIZEN_SOCIAL_CTSVC_PHONELOG_H__
+#ifndef __CTSVC_SERVER_PHONELOG_H__
+#define __CTSVC_SERVER_PHONELOG_H__
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
+#include "contacts_phone_log_internal.h"
+
+int ctsvc_phone_log_reset_statistics(const char *zone_name);
+int ctsvc_phone_log_delete(const char *zone_name, contacts_phone_log_delete_e op, ...);
void ctsvc_db_phone_log_delete_callback(sqlite3_context * context,
int argc, sqlite3_value ** argv);
-int ctsvc_db_phone_log_update_person_id(const char *number, int old_person_id, int candidate_person_id, bool person_link);
+int ctsvc_db_phone_log_update_person_id(const char *zone_name, const char *number, int old_person_id, int candidate_person_id, bool person_link);
-#endif // __TIZEN_SOCIAL_CTSVC_PHONELOG_H__
\ No newline at end of file
+#endif /* __CTSVC_SERVER_PHONELOG_H__ */
\ No newline at end of file
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Dohyung Jin <dh.jin@samsung.com>
+ * Jongwon Lee <gogosing.lee@samsung.com>
+ * Donghee Ye <donghee.ye@samsung.com>
+ *
+ * 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 <errno.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <unistd.h>
+
+#include "contacts.h"
+#include "ctsvc_internal.h"
+#include "ctsvc_socket.h"
+#include "ctsvc_mutex.h"
+#include "ctsvc_inotify.h"
+#include "ctsvc_db_init.h"
+#include "ctsvc_server_setting.h"
+#include "ctsvc_db_access_control.h"
+#include "ctsvc_number_utils.h"
+
+static GHashTable *ctsvc_con_table = NULL;
+static __thread GHashTable *ctsvc_thread_con_table = NULL;
+
+int ctsvc_connect(const char *zone_name)
+{
+ CTS_FN_CALL;
+ int ret;
+
+ int ctsvc_connection = 0;
+ int thread_connection = 0;
+
+ if (NULL == ctsvc_con_table)
+ ctsvc_con_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
+ else
+ ctsvc_connection = GPOINTER_TO_INT(g_hash_table_lookup(ctsvc_con_table, zone_name));
+
+ if (NULL == ctsvc_thread_con_table)
+ ctsvc_thread_con_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
+ else
+ thread_connection = GPOINTER_TO_INT(g_hash_table_lookup(ctsvc_thread_con_table, zone_name));
+
+ ctsvc_mutex_lock(CTS_MUTEX_CONNECTION);
+ if (0 == ctsvc_connection) {
+ ret = ctsvc_inotify_init();
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_inotify_init() Fail(%d)", ret);
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ return ret;
+ }
+ ctsvc_db_plugin_init();
+ ctsvc_view_uri_init();
+ ctsvc_register_vconf(zone_name);
+ }
+ else
+ CTS_DBG("System : Contacts service has been already connected");
+
+ ctsvc_connection++;
+ g_hash_table_replace(ctsvc_con_table, g_strdup(zone_name), GINT_TO_POINTER(ctsvc_connection));
+
+ if (0 == thread_connection) {
+ ret = ctsvc_db_init(zone_name);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_db_init() Fail(%d)", ret);
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ return ret;
+ }
+ }
+ thread_connection++;
+ g_hash_table_replace(ctsvc_thread_con_table, g_strdup(zone_name), GINT_TO_POINTER(thread_connection));
+
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_disconnect(const char *zone_name)
+{
+ ctsvc_mutex_lock(CTS_MUTEX_CONNECTION);
+
+ RETVM_IF(NULL == ctsvc_con_table, CONTACTS_ERROR_DB, "ctsvc_con_table is NULL");
+ RETVM_IF(NULL == ctsvc_thread_con_table, CONTACTS_ERROR_DB, "ctsvc_thread_con_table is NULL");
+
+ int ctsvc_connection = 0;
+ int thread_connection = 0;
+ ctsvc_connection = GPOINTER_TO_INT(g_hash_table_lookup(ctsvc_con_table, zone_name));
+ thread_connection = GPOINTER_TO_INT(g_hash_table_lookup(ctsvc_thread_con_table, zone_name));
+
+ if (1 == thread_connection) {
+ ctsvc_db_deinit(zone_name);
+ }
+ else if (thread_connection <= 0) {
+ CTS_DBG("System : please call contacts_connect_on_thread(), thread_connection count is (%d)", thread_connection);
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ return CONTACTS_ERROR_INVALID_PARAMETER;
+ }
+ thread_connection--;
+ g_hash_table_replace(ctsvc_thread_con_table, g_strdup(zone_name), GINT_TO_POINTER(thread_connection));
+
+ if (1 == ctsvc_connection) {
+ ctsvc_inotify_close();
+ ctsvc_deregister_vconf(zone_name);
+ ctsvc_view_uri_deinit();
+ ctsvc_db_plugin_deinit();
+ ctsvc_deinit_tapi_handle_for_cc();
+ }
+ else if (1 < ctsvc_connection)
+ CTS_DBG("System : connection count is %d", ctsvc_connection);
+ else {
+ CTS_DBG("System : please call contacts_connect(), connection count is (%d)", ctsvc_connection);
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ return CONTACTS_ERROR_INVALID_PARAMETER;
+ }
+ ctsvc_connection--;
+ g_hash_table_replace(ctsvc_con_table, g_strdup(zone_name), GINT_TO_POINTER(ctsvc_connection));
+
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_contacts_internal_disconnect(const char *zone_name)
+{
+ ctsvc_mutex_lock(CTS_MUTEX_CONNECTION);
+
+ RETVM_IF(NULL == ctsvc_con_table, CONTACTS_ERROR_DB, "ctsvc_con_table is NULL");
+ RETVM_IF(NULL == ctsvc_thread_con_table, CONTACTS_ERROR_DB, "ctsvc_thread_con_table is NULL");
+
+ int ctsvc_connection = 0;
+ int thread_connection = 0;
+ ctsvc_connection = GPOINTER_TO_INT(g_hash_table_lookup(ctsvc_con_table, zone_name));
+ thread_connection = GPOINTER_TO_INT(g_hash_table_lookup(ctsvc_thread_con_table, zone_name));
+
+ if (1 == thread_connection) {
+ ctsvc_db_deinit(zone_name);
+ thread_connection--;
+ g_hash_table_replace(ctsvc_thread_con_table, g_strdup(zone_name), GINT_TO_POINTER(thread_connection));
+
+ if (1 <= ctsvc_connection) {
+ ctsvc_connection--;
+ g_hash_table_replace(ctsvc_con_table, g_strdup(zone_name), GINT_TO_POINTER(ctsvc_connection));
+ }
+ }
+
+ ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
+ return CONTACTS_ERROR_NONE;
+}
+
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_SERVICE_H__
-#define __TIZEN_SOCIAL_CTSVC_SERVICE_H__
+#ifndef __CTSVC_SERVER_SERVICE_H__
+#define __CTSVC_SERVER_SERVICE_H__
-int ctsvc_contacts_internal_disconnect();
+int ctsvc_connect(const char *zone_name);
+int ctsvc_disconnect(const char *zone_name);
+int ctsvc_contacts_internal_disconnect(const char *zone_name);
-#endif /* __TIZEN_SOCIAL_CTSVC_SERVICE_H__ */
+#endif /* __CTSVC_SERVER_SERVICE_H__ */
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Dohyung Jin <dh.jin@samsung.com>
+ * Jongwon Lee <gogosing.lee@samsung.com>
+ * Donghee Ye <donghee.ye@samsung.com>
+ *
+ * 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 <glib.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <vasum.h>
+
+#include "contacts.h"
+#include "ctsvc_internal.h"
+#include "ctsvc_notify.h"
+#include "ctsvc_server_setting.h"
+#include "ctsvc_normalize.h"
+#include "ctsvc_localize.h"
+#include "ctsvc_server_zone.h"
+#include "ctsvc_db_access_control.h"
+
+#ifdef _CONTACTS_IPC_SERVER
+#include "ctsvc_server_change_subject.h"
+#endif
+
+static int primary_sort = -1;
+static int secondary_sort = -1;
+
+static int phonenumber_min_match_digit = -1;
+
+static const char *CTSVC_VCONF_DISPLAY_ORDER = VCONFKEY_CONTACTS_SVC_NAME_DISPLAY_ORDER;
+static const char *CTSVC_VCONF_SORTING_ORDER = VCONFKEY_CONTACTS_SVC_NAME_SORTING_ORDER;
+static const char *CTSVC_VCONF_PHONENUMBER_MIN_MATCH_DIGIT = VCONFKEY_CONTACTS_SVC_PHONENUMBER_MIN_MATCH_DIGIT;
+
+static GHashTable *ctsvc_vconf_data_table = NULL;
+
+int ctsvc_setting_get_name_display_order(const char *zone_name, contacts_name_display_order_e *order)
+{
+ int ret;
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_READ), CONTACTS_ERROR_PERMISSION_DENIED,
+ "Permission denied : contact read");
+
+ vsm_zone_h zone = ctsvc_server_zone_lookup_by_zone_name(zone_name);
+ vsm_zone_h zone_old = ctsvc_server_zone_join(zone);
+
+ int name_display_order;
+ ret = vconf_get_int(CTSVC_VCONF_DISPLAY_ORDER, &name_display_order);
+ ctsvc_server_zone_join(zone_old);
+
+ RETVM_IF(ret < 0, CONTACTS_ERROR_SYSTEM, "System : vconf_get_int() Fail(%d)", ret);
+ *order = name_display_order;
+
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_setting_set_name_display_order(const char *zone_name, contacts_name_display_order_e order)
+{
+ int ret;
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
+ "Permission denied : contact write");
+ RETVM_IF(CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST != order && CONTACTS_NAME_DISPLAY_ORDER_LASTFIRST != order,
+ CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : The parameter(order:%d) is Invalid", order);
+
+ vsm_zone_h zone = ctsvc_server_zone_lookup_by_zone_name(zone_name);
+ vsm_zone_h zone_old = ctsvc_server_zone_join(zone);
+
+ ret = vconf_set_int(CTSVC_VCONF_DISPLAY_ORDER, order);
+ ctsvc_server_zone_join(zone_old);
+ RETVM_IF(ret < 0, CONTACTS_ERROR_SYSTEM, "System : vconf_set_int() Fail(%d)", ret);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_setting_get_name_sorting_order(const char *zone_name, contacts_name_sorting_order_e *order)
+{
+ int ret;
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_READ), CONTACTS_ERROR_PERMISSION_DENIED,
+ "Permission denied : contact read");
+
+ int name_sorting_order;
+
+ vsm_zone_h zone = ctsvc_server_zone_lookup_by_zone_name(zone_name);
+ vsm_zone_h zone_old = ctsvc_server_zone_join(zone);
+
+ ret = vconf_get_int(CTSVC_VCONF_SORTING_ORDER, &name_sorting_order);
+ ctsvc_server_zone_join(zone_old);
+ RETVM_IF(ret < 0, CONTACTS_ERROR_SYSTEM, "System : vconf_get_int(sort order) Fail(%d)", ret);
+
+ *order = name_sorting_order;
+
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_setting_set_name_sorting_order(const char *zone_name, contacts_name_sorting_order_e order)
+{
+ int ret;
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_WRITE), CONTACTS_ERROR_PERMISSION_DENIED,
+ "Permission denied : contact write");
+ RETVM_IF(CONTACTS_NAME_SORTING_ORDER_FIRSTLAST != order && CONTACTS_NAME_SORTING_ORDER_LASTFIRST != order,
+ CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : The parameter(order:%d) is Invalid", order);
+
+ vsm_zone_h zone = ctsvc_server_zone_lookup_by_zone_name(zone_name);
+ vsm_zone_h zone_old = ctsvc_server_zone_join(zone);
+
+ ret = vconf_set_int(CTSVC_VCONF_SORTING_ORDER, order);
+ ctsvc_server_zone_join(zone_old);
+ RETVM_IF(ret < 0, CONTACTS_ERROR_SYSTEM, "System : vconf_set_int(sort order) Fail(%d)", ret);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+static void ctsvc_vconf_display_order_cb(keynode_t *key, void *data)
+{
+ int ret;
+ int name_display_order;
+ char *zone_name = data;
+
+ vsm_zone_h zone = ctsvc_server_zone_lookup_by_zone_name(zone_name);
+ vsm_zone_h zone_old = ctsvc_server_zone_join(zone);
+
+ ret = vconf_get_int(CTSVC_VCONF_DISPLAY_ORDER, &name_display_order);
+ ctsvc_server_zone_join(zone_old);
+ RETM_IF(ret < 0, "System : vconf_get_int() Fail(%d)", ret);
+
+#ifdef _CONTACTS_IPC_SERVER
+ /* publish display order changed */
+ ctsvc_change_subject_publish_setting(zone_name, CTSVC_SETTING_DISPLAY_ORDER_CHANGED, name_display_order);
+#endif
+}
+
+static void ctsvc_vconf_sorting_order_cb(keynode_t *key, void *data)
+{
+ int ret;
+ char *zone_name = data;
+ int name_sorting_order;
+
+ vsm_zone_h zone = ctsvc_server_zone_lookup_by_zone_name(zone_name);
+ vsm_zone_h zone_old = ctsvc_server_zone_join(zone);
+
+ ret = vconf_get_int(CTSVC_VCONF_SORTING_ORDER, &name_sorting_order);
+ ctsvc_server_zone_join(zone_old);
+ RETM_IF(ret < 0, "System : vconf_get_int() Fail(%d)", ret);
+
+#ifdef _CONTACTS_IPC_SERVER
+ /* publish sort order changed */
+ ctsvc_change_subject_publish_setting(zone_name, CTSVC_SETTING_SORTING_ORDER_CHANGED, name_sorting_order);
+#endif
+}
+
+void ctsvc_set_sort_memory(int sort_type)
+{
+ primary_sort = sort_type;
+ secondary_sort = CTSVC_SORT_WESTERN;
+}
+
+static void ctsvc_vconf_sort_change_cb(keynode_t *key, void *data)
+{
+ int sort = vconf_keynode_get_int(key);
+ ctsvc_set_sort_memory(sort);
+}
+
+int ctsvc_register_vconf(const char *zone_name)
+{
+ int ret;
+
+ char *zone_name_copy = g_strdup(zone_name);
+ if (NULL == ctsvc_vconf_data_table)
+ ctsvc_vconf_data_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, free);
+ g_hash_table_replace(ctsvc_vconf_data_table, g_strdup(zone_name), zone_name_copy);
+
+ vsm_zone_h zone = ctsvc_server_zone_lookup_by_zone_name(zone_name);
+ vsm_zone_h zone_old = ctsvc_server_zone_join(zone);
+
+ ret = vconf_notify_key_changed(CTSVC_VCONF_DISPLAY_ORDER,
+ ctsvc_vconf_display_order_cb, zone_name_copy);
+ if (ret < 0) {
+ CTS_ERR("vconf_notify_key_changed(display order) Fail(%d)", ret);
+ ctsvc_server_zone_join(zone_old);
+ return CONTACTS_ERROR_SYSTEM;
+ }
+
+ ret = vconf_notify_key_changed(CTSVC_VCONF_SORTING_ORDER,
+ ctsvc_vconf_sorting_order_cb, zone_name_copy);
+ if (ret < 0) {
+ CTS_ERR("vconf_notify_key_changed(sort order) Fail(%d)", ret);
+ ctsvc_server_zone_join(zone_old);
+ return CONTACTS_ERROR_SYSTEM;
+ }
+
+ /* phonenumber min match digit */
+ ret = vconf_get_int(CTSVC_VCONF_PHONENUMBER_MIN_MATCH_DIGIT, &phonenumber_min_match_digit);
+ if (ret < 0 || phonenumber_min_match_digit <= 0) {
+ CTS_ERR("vconf_get_int() Fail(%d)", ret);
+ phonenumber_min_match_digit = 8;
+ }
+
+ ret = vconf_get_int(ctsvc_get_default_sort_vconfkey(), &primary_sort);
+ if (ret < 0) {
+ CTS_ERR("vconf_get_int(sort order) Fail(%d)", ret);
+ ctsvc_server_zone_join(zone_old);
+ return CONTACTS_ERROR_SYSTEM;
+ }
+ ctsvc_server_zone_join(zone_old);
+
+ ctsvc_set_sort_memory(primary_sort);
+ ret = vconf_notify_key_changed(ctsvc_get_default_sort_vconfkey(),
+ ctsvc_vconf_sort_change_cb, NULL);
+ RETVM_IF(ret<0, CONTACTS_ERROR_SYSTEM, "vconf_notify_key_changed(deafult lang) Fail(%d)", ret);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+void ctsvc_deregister_vconf(const char *zone_name)
+{
+ int ret;
+
+ if (ctsvc_vconf_data_table)
+ g_hash_table_remove(ctsvc_vconf_data_table, zone_name);
+
+ vsm_zone_h zone = ctsvc_server_zone_lookup_by_zone_name(zone_name);
+ vsm_zone_h zone_old = ctsvc_server_zone_join(zone);
+
+ ret = vconf_ignore_key_changed(CTSVC_VCONF_DISPLAY_ORDER, ctsvc_vconf_display_order_cb);
+ if (ret < 0) {
+ CTS_ERR("vconf_ignore_key_changed(display order) Fail(%d)", ret);
+ ctsvc_server_zone_join(zone_old);
+ return;
+ }
+
+ ret = vconf_ignore_key_changed(CTSVC_VCONF_SORTING_ORDER, ctsvc_vconf_sorting_order_cb);
+ if (ret < 0) {
+ CTS_ERR("vconf_ignore_key_changed(sort order) Fail(%d)", ret);
+ ctsvc_server_zone_join(zone_old);
+ return;
+ }
+ ctsvc_server_zone_join(zone_old);
+
+ ret = vconf_ignore_key_changed(ctsvc_get_default_sort_vconfkey(), ctsvc_vconf_sort_change_cb);
+ RETM_IF(ret<0,"vconf_ignore_key_changed(default_lang) Fail(%d)", ret);
+}
+
+int ctsvc_get_phonenumber_min_match_digit(void)
+{
+ return phonenumber_min_match_digit;
+}
+
+void ctsvc_set_phonenumber_min_match_digit(int min)
+{
+ phonenumber_min_match_digit = min;
+}
+
+
+const char* ctsvc_get_default_sort_vconfkey(void)
+{
+ return "file/private/contacts-service/default_lang";
+}
+
+int ctsvc_get_primary_sort(void)
+{
+ if (primary_sort < 0) {
+ int ret;
+ ret = vconf_get_int(ctsvc_get_default_sort_vconfkey(), &primary_sort);
+ WARN_IF(ret < 0, "vconf_get_int() Fail(%d)", ret);
+ ctsvc_set_sort_memory(primary_sort);
+ }
+ return primary_sort;
+}
+
+int ctsvc_get_secondary_sort(void)
+{
+ return secondary_sort;
+}
+
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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.
+ *
+ */
+
+#ifndef __CTSVC_SERVER_SETTING_H__
+#define __CTSVC_SERVER_SETTING_H__
+
+int ctsvc_setting_get_name_display_order(const char *zone_name, contacts_name_display_order_e *order);
+int ctsvc_setting_set_name_display_order(const char *zone_name, contacts_name_display_order_e order);
+int ctsvc_setting_get_name_sorting_order(const char *zone_name, contacts_name_sorting_order_e *order);
+int ctsvc_setting_set_name_sorting_order(const char *zone_name, contacts_name_sorting_order_e order);
+
+int ctsvc_register_vconf(const char *zone_name);
+void ctsvc_deregister_vconf(const char *zone_name);
+
+int ctsvc_get_phonenumber_min_match_digit(void);
+void ctsvc_set_phonenumber_min_match_digit(int min);
+int ctsvc_get_primary_sort(void);
+int ctsvc_get_secondary_sort(void);
+const char *ctsvc_get_default_sort_vconfkey(void);
+void ctsvc_set_sort_memory(int sort_type);
+
+
+#endif /* __CTSVC_SERVER_SETTING_H__ */
+
#include "ctsvc_internal.h"
#include "ctsvc_struct.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_server_socket.h"
#include "ctsvc_server_sqlite.h"
#include "ctsvc_server_utils.h"
#include "ctsvc_server_sim.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_server_zone.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_list.h"
#include "ctsvc_db_access_control.h"
+#include "ctsvc_zone.h"
+#include "ctsvc_db_query.h"
-//#define CTSVC_SIM_FIELD_FULL_SUPPORT// support ANR,EMAIL2,3,NICK NAME
+/* #define CTSVC_SIM_FIELD_FULL_SUPPORT// support ANR,EMAIL2,3,NICK NAME */
#define DEFAULT_ADDRESS_BOOK_ID 0
#define CTSVC_TAPI_SIM_PB_MAX 0xFFFF
}sim_file_s;
typedef struct {
- // SIM slot number
+ /* SIM slot number */
int sim_slot_no;
- // SIM info table id
- // it is used when inserting/seaching phonelog
+ /*
+ * SIM info table id
+ * it is used when inserting/seaching phonelog
+ */
int sim_info_id;
- // SIM slot id
+ /* SIM slot id */
char *cp_name;
- // Tapi handle to control each SIM slot
+ /* Tapi handle to control each SIM slot */
TapiHandle *handle;
- // SIM type
+ /* SIM type */
TelSimPbType_t sim_type;
- // Each sim file info (max index, max text length, used count)
+ /* Each sim file info (max index, max text length, used count) */
sim_file_s file_record[TAPI_PB_MAX_FILE_CNT];
- //To bulk insert SIM contact, Free after insert them
+ /* To bulk insert SIM contact, Free after insert them */
GSList *import_contacts;
- // Set true after read SIM meta info
- // in case of private : set true after reading all SIM contact and save to DB
+ /*
+ * Set true after read SIM meta info
+ * in case of private : set true after reading all SIM contact and save to DB
+ */
bool initialized;
- // unique info of SIM : iccid
- // It should be save to phone log table
- // in order to find which SIM is used to the call/message log
+ /*
+ * unique info of SIM : iccid
+ * It should be save to phone log table
+ * in order to find which SIM is used to the call/message log
+ */
char* sim_unique_id;
} ctsvc_sim_info_s;
static TapiHandle* __ctsvc_server_sim_get_tapi_handle(ctsvc_sim_info_s *info)
{
- if (info->handle == NULL) {
+ if (NULL == info->handle) {
int bReady = 0;
- // TODO: it should be changed API
vconf_get_bool(VCONFKEY_TELEPHONY_READY, &bReady);
- if (!bReady) {
+ if (0 == bReady) {
CTS_ERR("telephony is not ready ");
return NULL;
}
static inline void* __ctsvc_server_sim_get_return_data(void)
{
- RETVM_IF(greturn_data == NULL, NULL, "greturn_data is NULL");
+ RETVM_IF(NULL == greturn_data, NULL, "greturn_data is NULL");
return greturn_data;
}
-void ctsvc_server_sim_record_destroy(sim_contact_s *record)
+static void __ctsvc_server_sim_record_destroy(sim_contact_s *record)
{
- RETM_IF(record == NULL, "record is NULL");
+ RET_IF(NULL == record);
free(record->name);
free(record->number);
static sim_contact_s * __ctsvc_server_sim_record_clone(TelSimPbRecord_t *sim_record)
{
sim_contact_s *record = calloc(1,sizeof(sim_contact_s));
- RETVM_IF(NULL == record, NULL, "calloc() return NULL");
+ if (NULL == record) {
+ CTS_ERR("calloc() Fail");
+ return NULL;
+ }
record->sim_index = sim_record->index;
record->name = SAFE_STRDUP((char*)sim_record->name);
{
int ret;
- RETVM_IF(number == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "invalid number");
+ RETVM_IF(NULL == number, CONTACTS_ERROR_INVALID_PARAMETER, "invalid number");
ret = contacts_record_create(_contacts_number._uri, record);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create() Failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create() Fail(%d)", ret);
ret = contacts_record_set_str(*record, _contacts_number.number, number);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_set_str() Failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_set_str() Fail(%d)", ret);
ret = contacts_record_set_int(*record, _contacts_number.type, CONTACTS_NUMBER_TYPE_OTHER);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_set_int() Failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_set_int() Fail(%d)", ret);
return ret;
}
{
int ret;
- RETVM_IF(email == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "invalid email");
+ RETVM_IF(NULL == email, CONTACTS_ERROR_INVALID_PARAMETER, "invalid email");
ret = contacts_record_create(_contacts_email._uri, record);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create() Failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_create() Fail(%d)", ret);
ret = contacts_record_set_str(*record, _contacts_email.email, email);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_set_str() Failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_set_str() Fail(%d)", ret);
ret = contacts_record_set_int(*record, _contacts_email.type,CONTACTS_EMAIL_TYPE_OTHER);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_set_int() Failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_record_set_int() Fail(%d)", ret);
return ret;
}
contacts_record_h number = NULL;
contacts_record_h email = NULL;
- RETVM_IF(contact == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : contact is NULL");
+ RETV_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER);
*contact = NULL;
- RETVM_IF(record == NULL, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : record is NULL");
+ RETV_IF(NULL == record, CONTACTS_ERROR_INVALID_PARAMETER);
RETVM_IF(record->sim_index <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "The index(%d) is invalid", record->sim_index);
CTS_DBG("insert record->sim_index %d", record->sim_index);
ret = contacts_record_create(_contacts_contact._uri, contact);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
snprintf(sim_id, sizeof(sim_id), "%d", record->sim_index);
contacts_record_set_str(*contact, _contacts_contact.uid, sim_id);
contacts_record_add_child_record(*contact, _contacts_contact.nickname, nick);
}
}
-#endif //CTSVC_SIM_FIELD_FULL_SUPPORT
+#endif /* CTSVC_SIM_FIELD_FULL_SUPPORT */
ret = __ctsvc_server_sim_record_add_num(&number, (char *)record->number);
if (CONTACTS_ERROR_NONE == ret)
ret = __ctsvc_server_sim_record_add_num(&number, (char *)record->anr3);
if (CONTACTS_ERROR_NONE == ret)
contacts_record_add_child_record(*contact, _contacts_contact.number, number);
-#endif //CTSVC_SIM_FIELD_FULL_SUPPORT
+#endif /* CTSVC_SIM_FIELD_FULL_SUPPORT */
ret = __ctsvc_server_sim_record_add_email(&email, (char *)record->email1);
if (CONTACTS_ERROR_NONE == ret)
ret = __ctsvc_server_sim_record_add_email(&email, (char *)record->email4);
if (CONTACTS_ERROR_NONE == ret)
contacts_record_add_child_record(*contact, _contacts_contact.email, email);
-#endif //CTSVC_SIM_FIELD_FULL_SUPPORT
+#endif /* CTSVC_SIM_FIELD_FULL_SUPPORT */
contacts_record_set_int(*contact, _contacts_contact.address_book_id, addressbook_id);
static ctsvc_sim_info_s* __ctsvc_server_sim_get_handle_by_tapi_handle(TapiHandle *handle)
{
GSList *cursor = NULL;
- for(cursor=__ctsvc_sim_info;cursor;cursor=cursor->next) {
+ for (cursor=__ctsvc_sim_info;cursor;cursor=cursor->next) {
ctsvc_sim_info_s *info = cursor->data;
if (info->handle == handle)
return info;
if (slot_no < 0)
return NULL;
- for(cursor=__ctsvc_sim_info;cursor;cursor=cursor->next) {
+ for (cursor=__ctsvc_sim_info;cursor;cursor=cursor->next) {
ctsvc_sim_info_s *info = cursor->data;
if (info->sim_slot_no == slot_no) {
if (NULL == __ctsvc_server_sim_get_tapi_handle(info))
if (slot_no < 0)
return -1;
- for(cursor=__ctsvc_sim_info;cursor;cursor=cursor->next) {
+ for (cursor=__ctsvc_sim_info;cursor;cursor=cursor->next) {
ctsvc_sim_info_s *info = cursor->data;
if (info->sim_slot_no == slot_no) {
if (NULL == __ctsvc_server_sim_get_tapi_handle(info))
int ctsvc_server_sim_get_sim_slot_no_by_info_id(int sim_info_id)
{
GSList *cursor = NULL;
- for(cursor=__ctsvc_sim_info;cursor;cursor=cursor->next) {
+ for (cursor=__ctsvc_sim_info;cursor;cursor=cursor->next) {
ctsvc_sim_info_s *info = cursor->data;
if (info->sim_info_id == sim_info_id) {
if (NULL == __ctsvc_server_sim_get_tapi_handle(info))
return -1;
}
+static void __ctsvc_server_sim_destroy_records(gpointer data)
+{
+ sim_contact_s *record = data;
+ __ctsvc_server_sim_record_destroy(record);
+}
+
+static void __ctsvc_server_sim_destroy_import_contacts(ctsvc_sim_info_s *info)
+{
+ RET_IF(NULL == info);
+ RET_IF(NULL == info->import_contacts);
+
+ g_slist_free_full(info->import_contacts, __ctsvc_server_sim_destroy_records);
+ info->import_contacts = NULL;
+}
+
static int __ctsvc_server_sim_insert_records_to_db(ctsvc_sim_info_s *info)
{
CTS_FN_CALL;
int i;
int ret = 0;
+ int count = 0;
sim_contact_s *record = NULL;
contacts_record_h contact = NULL;
contacts_list_h list = NULL;
GSList *cursor = NULL;
+ const char *zone_name = ctsvc_server_zone_get_default_zone();
+
+ /* insert contacts to DB */
+ ret = contacts_list_create(&list);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("contacts_list_create() Fail(%d)", ret);
+ return CONTACTS_ERROR_INTERNAL;
+ }
- // insert contacts to DB
for (cursor = info->import_contacts, i=0;cursor;i++) {
- if (list == NULL)
- contacts_list_create(&list);
- ret = __ctsvc_server_sim_ctsvc_record_clone(cursor->data, DEFAULT_ADDRESS_BOOK_ID, &contact);
- contacts_list_add(list, contact);
- if (i == 50) {
- ret = contacts_db_insert_records(list, NULL, NULL);
- WARN_IF(ret < CONTACTS_ERROR_NONE, "contacts_db_insert_records() Failed(%d)", ret);
+ record = cursor->data;
+ ret = __ctsvc_server_sim_ctsvc_record_clone(record, DEFAULT_ADDRESS_BOOK_ID, &contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("__ctsvc_server_sim_ctsvc_record_clone() Fail(%d)", ret);
+ contacts_list_destroy(list, true);
+ return CONTACTS_ERROR_INTERNAL;
+ }
+ ret = contacts_list_add(list, contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("contacts_list_add() Fail(%d)", ret);
contacts_list_destroy(list, true);
- list = NULL;
- i = 0;
+ return CONTACTS_ERROR_INTERNAL;
}
cursor = cursor->next;
- info->import_contacts = g_slist_remove(info->import_contacts, record);
- ctsvc_server_sim_record_destroy(record);
}
- g_slist_free(info->import_contacts);
- info->import_contacts = NULL;
- if (list) {
- ret = contacts_db_insert_records(list, NULL, NULL);
- WARN_IF(ret < CONTACTS_ERROR_NONE, "contacts_db_insert_records() Failed(%d)", ret);
- contacts_list_destroy(list, true);
+ contacts_list_get_count(list, &count);
+ CTS_DBG("records count:%d", count);
+ if (0 < count) {
+ ret = ctsvc_db_insert_records(zone_name, list, NULL, NULL);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_db_insert_records() Fail(%d)", ret);
+ contacts_list_destroy(list, true);
+ return ret;
+ }
}
+ contacts_list_destroy(list, true);
return CONTACTS_ERROR_NONE;
}
if (NULL == sim_info) {
CTS_ERR("sim_info is NULL, result = %d", access_rt);
- ret = CONTACTS_ERROR_SYSTEM;
- goto ERROR_RETURN;
+ ret = ctsvc_server_socket_return(__ctsvc_server_sim_get_return_data(), CONTACTS_ERROR_SYSTEM, 0, NULL);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_socket_return() Fail(%d)", ret);
+ __ctsvc_server_sim_set_return_data(NULL);
+ return;
}
info = __ctsvc_server_sim_get_handle_by_tapi_handle(handle);
- if (info == NULL) {
- CTS_ERR("__ctsvc_server_sim_get_handle_by_tapi_handle fail");
- ret = CONTACTS_ERROR_SYSTEM;
- goto ERROR_RETURN;
+ if (NULL == info) {
+ CTS_ERR("__ctsvc_server_sim_get_handle_by_tapi_handle() Fail");
+ ret = ctsvc_server_socket_return(__ctsvc_server_sim_get_return_data(), CONTACTS_ERROR_INTERNAL, 0, NULL);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_socket_return() Fail(%d)", ret);
+ __ctsvc_server_sim_set_return_data(NULL);
+ return;
}
- if (access_rt == TAPI_SIM_PB_INVALID_INDEX) {
+ if (TAPI_SIM_PB_INVALID_INDEX == access_rt) {
int start_index = 0;
- if (user_data != NULL)
+ if (user_data)
start_index = (int)user_data;
CTS_DBG("TAPI_SIM_PB_INVALID_INDEX : start_index = %d",start_index);
start_index++;
- if (start_index > info->file_record[TAPI_PB_3G_NAME].index_max) {
+ if (info->file_record[TAPI_PB_3G_NAME].index_max < start_index) {
CTS_ERR("start_index is invalid start_index = %d, total = %d", start_index,
- info->file_record[TAPI_PB_3G_NAME].index_max);
- ret = CONTACTS_ERROR_SYSTEM;
- goto ERROR_RETURN;
+ info->file_record[TAPI_PB_3G_NAME].index_max);
+ ret = ctsvc_server_socket_return(__ctsvc_server_sim_get_return_data(), CONTACTS_ERROR_INTERNAL, 0, NULL);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_socket_return() Fail(%d)", ret);
+ __ctsvc_server_sim_destroy_import_contacts(info);
+ __ctsvc_server_sim_set_return_data(NULL);
+ return;
}
ret = tel_read_sim_pb_record(handle, info->sim_type, start_index,
- __ctsvc_server_sim_import_contact_cb, (void*)start_index);
- if (ret != TAPI_API_SUCCESS) {
- CTS_ERR("SIM phonebook access Failed(%d) start_indext(%d)", access_rt,start_index);
- ret = CONTACTS_ERROR_SYSTEM;
- goto ERROR_RETURN;
+ __ctsvc_server_sim_import_contact_cb, (void*)start_index);
+ if (TAPI_API_SUCCESS != ret) {
+ CTS_ERR("SIM phonebook access Fail(%d) start_indext(%d)", access_rt,start_index);
+ ret = ctsvc_server_socket_return(__ctsvc_server_sim_get_return_data(), CONTACTS_ERROR_SYSTEM, 0, NULL);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_socket_return() Fail(%d)", ret);
+ __ctsvc_server_sim_destroy_import_contacts(info);
+ __ctsvc_server_sim_set_return_data(NULL);
+ return;
}
+ return;
}
if (TAPI_SIM_PB_SUCCESS != access_rt) {
- CTS_ERR("SIM phonebook access Failed(%d)", access_rt);
- ret = CONTACTS_ERROR_SYSTEM;
- goto ERROR_RETURN;
+ CTS_ERR("SIM phonebook access Fail(%d)", access_rt);
+ ret = ctsvc_server_socket_return(__ctsvc_server_sim_get_return_data(), CONTACTS_ERROR_SYSTEM, 0, NULL);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_socket_return() Fail(%d)", ret);
+ __ctsvc_server_sim_destroy_import_contacts(info);
+ __ctsvc_server_sim_set_return_data(NULL);
+ return;
}
switch (sim_info->phonebook_type) {
case TAPI_SIM_PB_SDN:
default:
CTS_ERR("Unknown storage type(%d)", sim_info->phonebook_type);
- ret = CONTACTS_ERROR_SYSTEM;
- goto ERROR_RETURN;
+ ret = ctsvc_server_socket_return(__ctsvc_server_sim_get_return_data(), CONTACTS_ERROR_SYSTEM, 0, NULL);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_socket_return() Fail(%d)", ret);
+ __ctsvc_server_sim_destroy_import_contacts(info);
+ __ctsvc_server_sim_set_return_data(NULL);
+ return;
}
if (sim_info->next_index && CTSVC_TAPI_SIM_PB_MAX != sim_info->next_index) {
CTS_DBG("NextIndex = %d", sim_info->next_index);
ret = tel_read_sim_pb_record(__ctsvc_server_sim_get_tapi_handle(info), sim_info->phonebook_type,
sim_info->next_index, __ctsvc_server_sim_import_contact_cb, NULL);
+
if (TAPI_API_SUCCESS != ret) {
- CTS_ERR("tel_read_sim_pb_record() Failed(%d)", ret);
- ret = CONTACTS_ERROR_SYSTEM;
- goto ERROR_RETURN;
- }
- }
- else {
- // insert imported contact to DB
- __ctsvc_server_sim_insert_records_to_db(info);
- if (__ctsvc_server_sim_get_return_data()) {
- ret = ctsvc_server_socket_return(__ctsvc_server_sim_get_return_data(), CONTACTS_ERROR_NONE, 0, NULL);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_socket_return() Failed(%d)", ret);
+ CTS_ERR("tel_read_sim_pb_record() Fail(%d)", ret);
+ ret = ctsvc_server_socket_return(__ctsvc_server_sim_get_return_data(), CONTACTS_ERROR_SYSTEM, 0, NULL);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_socket_return() Fail(%d)", ret);
+ __ctsvc_server_sim_destroy_import_contacts(info);
__ctsvc_server_sim_set_return_data(NULL);
+ return;
}
}
- return;
-
-ERROR_RETURN:
- if (__ctsvc_server_sim_get_return_data()) {
+ else {
+ /* insert imported contact to DB */
+ ret = __ctsvc_server_sim_insert_records_to_db(info);
ret = ctsvc_server_socket_return(__ctsvc_server_sim_get_return_data(), ret, 0, NULL);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_socket_return() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_socket_return() Fail(%d)", ret);
+ __ctsvc_server_sim_destroy_import_contacts(info);
__ctsvc_server_sim_set_return_data(NULL);
}
- return;
}
int ctsvc_server_sim_import_contact(void* data, int sim_slot_no)
ctsvc_sim_info_s *info;
info = __ctsvc_server_sim_get_handle_by_sim_slot_no(sim_slot_no);
- RETVM_IF(NULL == info, CONTACTS_ERROR_SYSTEM, "sim init is not completed");
- RETVM_IF(false == info->initialized, CONTACTS_ERROR_SYSTEM, "sim init is not completed");
- RETVM_IF(NULL != __ctsvc_server_sim_get_return_data(), CONTACTS_ERROR_INTERNAL,
+ RETV_IF(NULL == info, CONTACTS_ERROR_SYSTEM);
+ RETV_IF(false == info->initialized, CONTACTS_ERROR_SYSTEM);
+ RETVM_IF(__ctsvc_server_sim_get_return_data(), CONTACTS_ERROR_INTERNAL,
"Server is already processing with sim");
__ctsvc_server_sim_set_return_data(data);
- if (info->file_record[TAPI_PB_3G_NAME].used_count == 0) {
+ if (0 == info->file_record[TAPI_PB_3G_NAME].used_count) {
ret = ctsvc_server_socket_return(__ctsvc_server_sim_get_return_data(), CONTACTS_ERROR_NO_DATA, 0, NULL);
- WARN_IF(CONTACTS_ERROR_SYSTEM != ret, "helper_socket_return() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "helper_socket_return() Fail(%d)", ret);
__ctsvc_server_sim_set_return_data(NULL);
return ret;
}
ret = tel_read_sim_pb_record(__ctsvc_server_sim_get_tapi_handle(info), info->sim_type, 1,
__ctsvc_server_sim_import_contact_cb, NULL);
- if (ret != TAPI_API_SUCCESS) {
+ if (TAPI_API_SUCCESS != ret) {
CTS_ERR("tel_read_sim_pb_record = %d",ret);
__ctsvc_server_sim_set_return_data(NULL);
return CONTACTS_ERROR_SYSTEM;
{
CTS_FN_CALL;
int ret=0;
- TelSimPbAccessResult_t sec_rt = result;
+ TelSimPbAccessResult_t access_rt = result;
TelSimPbRecord_t *sim_info = data;
ctsvc_sim_info_s *info = (ctsvc_sim_info_s*)user_data;
- RETM_IF(sim_info == NULL, "sim_info is NULL");
+ RET_IF(NULL == sim_info);
- if (TAPI_SIM_PB_SUCCESS != sec_rt) {
+ if (TAPI_SIM_PB_SUCCESS != access_rt) {
if (TAPI_SIM_PB_SDN == sim_info->phonebook_type &&
- TAPI_SIM_PB_INVALID_INDEX == sec_rt) {
+ TAPI_SIM_PB_INVALID_INDEX == access_rt) {
CTS_DBG("Index = %d", sim_info->index);
ret = tel_read_sim_pb_record(handle, sim_info->phonebook_type, sim_info->index+1,
__ctsvc_server_sim_sdn_read_cb, info);
- RETM_IF(ret != TAPI_API_SUCCESS, "tel_read_sim_pb_record() Failed(%d)", ret);
+ RETM_IF(TAPI_API_SUCCESS != ret, "tel_read_sim_pb_record() Fail(%d)", ret);
}
- CTS_ERR("SIM phonebook access Failed(%d)", sec_rt);
- goto ERROR_RETURN;
+ CTS_ERR("SIM phonebook access Fail(%d)", access_rt);
+ ctsvc_server_trim_memory();
+ return;
}
switch (sim_info->phonebook_type) {
case TAPI_SIM_PB_SDN:
- ret = ctsvc_server_insert_sdn_contact((char *)sim_info->name, (char *)sim_info->number, info->sim_slot_no);
- WARN_IF(ret != CONTACTS_ERROR_NONE, "ctsvc_server_insert_sdn_contact() Failed(%d)", ret);
+ ret = ctsvc_server_insert_sdn_contact(ctsvc_server_zone_get_default_zone(), (char *)sim_info->name, (char *)sim_info->number, info->sim_slot_no);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_insert_sdn_contact() Fail(%d)", ret);
break;
case TAPI_SIM_PB_ADN:
case TAPI_SIM_PB_3GSIM:
case TAPI_SIM_PB_FDN:
default:
CTS_ERR("Not SDN type(%d)", sim_info->phonebook_type);
- goto ERROR_RETURN;
+ ctsvc_server_trim_memory();
+ return;
}
if (sim_info->next_index && CTSVC_TAPI_SIM_PB_MAX != sim_info->next_index) {
ret = tel_read_sim_pb_record(handle, sim_info->phonebook_type,sim_info->next_index,
__ctsvc_server_sim_sdn_read_cb, info);
if (TAPI_API_SUCCESS != ret) {
- CTS_ERR("tel_read_sim_pb_record() Failed(%d)", ret);
- goto ERROR_RETURN;
+ CTS_ERR("tel_read_sim_pb_record() Fail(%d)", ret);
+ ctsvc_server_trim_memory();
+ return;
}
}
else {
ctsvc_server_trim_memory();
}
- return;
-
-ERROR_RETURN:
- ctsvc_server_trim_memory();
-
- return;
}
-static void __ctsvc_server_sim_sdn_meta_info_cb(TapiHandle *handle, int result, void *data, void *user_data)
+static void __ctsvc_server_sim_sdn_count_cb(TapiHandle *handle, int result, void *data, void *user_data)
{
CTS_FN_CALL;
int ret = 0;
- TelSimPbAccessResult_t sec_rt = result;
- TelSimPbEntryInfo_t *pe = data;
+ TelSimPbAccessResult_t access_rt = result;
+ TelSimPbStorageInfo_t *ps = data;
ctsvc_sim_info_s *info = (ctsvc_sim_info_s*)user_data;
- RETM_IF(TAPI_SIM_PB_SUCCESS != sec_rt, "TelSimPbAccessResult_t fail(%d)",sec_rt);
- RETM_IF(pe == NULL, "pe is NULL result =%d",sec_rt);
+ RETM_IF(TAPI_SIM_PB_SUCCESS != access_rt, "TelSimPbAccessResult:%d", access_rt);
+ RETM_IF(NULL == ps, "ps is NULL. TelSimPbAccessResult:%d", access_rt);
- if (pe->PbUsedCount > 0) {
+ if (0 < ps->UsedRecordCount) {
ret = tel_read_sim_pb_record(info->handle, TAPI_SIM_PB_SDN, 1, __ctsvc_server_sim_sdn_read_cb, info);
if (TAPI_API_SUCCESS != ret) {
- CTS_ERR("tel_read_sim_pb_record() Failed(%d)", ret);
- goto ERROR_RETURN;
+ CTS_ERR("tel_read_sim_pb_record() Fail(%d)", ret);
+ ctsvc_server_trim_memory();
+ return;
}
}
- else
- CTS_ERR("pe->PbUsedCount : 0 no sdn!!!!", ret);
-
-ERROR_RETURN:
+ else {
+ CTS_ERR("ps->UsedRecordCount:0. No SDN!!!!");
+ }
ctsvc_server_trim_memory();
- return;
}
static int __ctsvc_server_sim_sdn_read(ctsvc_sim_info_s* info)
int card_changed = 0;
TelSimCardStatus_t sim_status;
- RETVM_IF(NULL != __ctsvc_server_sim_get_return_data(), CONTACTS_ERROR_INTERNAL,
+ RETVM_IF(__ctsvc_server_sim_get_return_data(), CONTACTS_ERROR_INTERNAL,
"Server is already processing with sim");
ret = tel_get_sim_init_info(info->handle, &sim_status, &card_changed);
- if(TAPI_API_SUCCESS != ret) {
- CTS_ERR("tel_get_sim_init_info() Failed(%d)", ret);
+ if (TAPI_API_SUCCESS != ret) {
+ CTS_ERR("tel_get_sim_init_info() Fail(%d)", ret);
CTS_DBG("sim_status = %d, card_changed = %d", sim_status, card_changed);
- goto ERROR_RETURN;
+ ctsvc_server_trim_memory();
+ return CONTACTS_ERROR_SYSTEM;
}
if (TAPI_SIM_STATUS_CARD_NOT_PRESENT == sim_status ||
TAPI_SIM_STATUS_CARD_REMOVED == sim_status) {
- ret = ctsvc_server_delete_sdn_contact(info->sim_slot_no);
- if(CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_server_delete_sdn_contact() Failed(%d)", ret);
- goto ERROR_RETURN;
+ ret = ctsvc_server_delete_sdn_contact(ctsvc_server_zone_get_default_zone(), info->sim_slot_no);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_delete_sdn_contact() Fail(%d)", ret);
+ ctsvc_server_trim_memory();
+ return ret;
}
}
else if (TAPI_SIM_STATUS_SIM_INIT_COMPLETED == sim_status) {
- ret = ctsvc_server_delete_sdn_contact(info->sim_slot_no);
- if(CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_server_delete_sdn_contact() Failed(%d)", ret);
- goto ERROR_RETURN;
+ ret = ctsvc_server_delete_sdn_contact(ctsvc_server_zone_get_default_zone(), info->sim_slot_no);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_delete_sdn_contact() Fail(%d)", ret);
+ ctsvc_server_trim_memory();
+ return ret;
}
- ret = tel_get_sim_pb_meta_info(info->handle, TAPI_SIM_PB_SDN, __ctsvc_server_sim_sdn_meta_info_cb, info);
+ ret = tel_get_sim_pb_count(info->handle, TAPI_SIM_PB_SDN, __ctsvc_server_sim_sdn_count_cb, info);
if (TAPI_API_SUCCESS != ret) {
- CTS_ERR("tel_get_sim_pb_meta_info() Failed(%d)", ret);
- goto ERROR_RETURN;
+ CTS_ERR("tel_get_sim_pb_meta_info() Fail(%d)", ret);
+ ctsvc_server_trim_memory();
+ return CONTACTS_ERROR_SYSTEM;
}
}
- else
- CTS_ERR("sim_status Failed(%d)", sim_status);
+ else {
+ CTS_ERR("sim_status Fail(%d)", sim_status);
+ return CONTACTS_ERROR_SYSTEM;
+ }
return CONTACTS_ERROR_NONE;
-
-ERROR_RETURN:
- ctsvc_server_trim_memory();
- return ret;
}
static void __ctsvc_server_sim_get_meta_info_cb(TapiHandle *handle, int result, void *data, void *user_data)
CTS_DBG("sim slot id :%d, sim_type = %d", info->sim_slot_no, info->sim_type);
if (TAPI_SIM_PB_3GSIM == info->sim_type) {
TelSimPbCapabilityInfo_t *capa = data;
- RETM_IF(capa == NULL, "capa is NULL result =%d",access_rt);
+ RETM_IF(NULL == capa, "capa is NULL result =%d",access_rt);
for (i=0; i < capa->FileTypeCount; i++) {
type = capa->FileTypeInfo[i].field_type;
}
else if (TAPI_SIM_PB_ADN == info->sim_type) {
TelSimPbEntryInfo_t *pe = data;
- RETM_IF(pe == NULL, "pe is NULL result =%d",access_rt);
+ RETM_IF(NULL == pe, "pe is NULL result =%d", access_rt);
info->file_record[CTSVC_2GSIM_NAME].support = true;
info->file_record[CTSVC_2GSIM_NAME].index_max = pe->PbIndexMax;
return;
}
- if (!info->initialized) {
+ if (false == info->initialized) {
info->initialized = true;
ret = __ctsvc_server_sim_sdn_read(info);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "__ctsvc_server_sim_sdn_read() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "__ctsvc_server_sim_sdn_read() Fail(%d)", ret);
}
return;
int ret;
int id;
- RETM_IF(access_rt != TAPI_SIM_ACCESS_SUCCESS, "tel_get_sim_iccid fail(%d)", access_rt);
+ RETM_IF(TAPI_SIM_ACCESS_SUCCESS != access_rt, "tel_get_sim_iccid Fail(%d)", access_rt);
CTS_DBG("%d, %s", iccid->icc_length, iccid->icc_num);
info->sim_unique_id = strdup(iccid->icc_num);
- ret = ctsvc_server_get_sim_id(info->sim_unique_id, &id);
+ ret = ctsvc_server_get_sim_id(ctsvc_server_zone_get_default_zone(), info->sim_unique_id, &id);
if (CONTACTS_ERROR_NONE == ret)
info->sim_info_id = id;
}
int ret = TAPI_API_SUCCESS;
int err = CONTACTS_ERROR_NONE;
- if (info->sim_type == TAPI_SIM_PB_UNKNOWNN){
+ if (TAPI_SIM_PB_UNKNOWNN == info->sim_type) {
err = __ctsvc_server_sim_init_info(info);
- WARN_IF(CONTACTS_ERROR_NONE != err, "__ctsvc_server_sim_init_info() Failed(%d)", err);
+ WARN_IF(CONTACTS_ERROR_NONE != err, "__ctsvc_server_sim_init_info() Fail(%d)", err);
}
- if (info->sim_type == TAPI_SIM_PB_3GSIM)
+ if (TAPI_SIM_PB_3GSIM == info->sim_type) {
ret = tel_get_sim_pb_usim_meta_info(info->handle, __ctsvc_server_sim_get_meta_info_cb, info);
- else if (info->sim_type == TAPI_SIM_PB_ADN)
+ }
+ else if (TAPI_SIM_PB_ADN == info->sim_type) {
ret = tel_get_sim_pb_meta_info(info->handle, info->sim_type, __ctsvc_server_sim_get_meta_info_cb, info);
- else{
+ }
+ else {
CTS_ERR("info->sim_type is invalid(%d) stop sim init !!!", info->sim_type);
return CONTACTS_ERROR_SYSTEM;
}
- RETVM_IF(ret != TAPI_API_SUCCESS, CONTACTS_ERROR_SYSTEM,
- "tel_get_sim_(usim)_meta_info(type:%d) fail (%d)", info->sim_type, ret);
+ RETVM_IF(TAPI_API_SUCCESS != ret, CONTACTS_ERROR_SYSTEM,
+ "tel_get_sim_(usim)_meta_info(type:%d) Fail(%d)", info->sim_type, ret);
return CONTACTS_ERROR_NONE;
}
int ret;
TelSimCardType_t cardtype = TAPI_SIM_PB_UNKNOWNN;
- // get sim_type
+ /* get sim_type */
ret = tel_get_sim_type(info->handle, &cardtype);
- RETVM_IF(ret != TAPI_API_SUCCESS, CONTACTS_ERROR_SYSTEM, "tel_get_sim_type failed(%d)slot no(%d)", ret, info->sim_slot_no);
- if (cardtype == TAPI_SIM_CARD_TYPE_USIM)
+ RETVM_IF(TAPI_API_SUCCESS != ret, CONTACTS_ERROR_SYSTEM, "tel_get_sim_type Fail(%d)slot no(%d)", ret, info->sim_slot_no);
+ if (TAPI_SIM_CARD_TYPE_USIM == cardtype) {
info->sim_type = TAPI_SIM_PB_3GSIM;
- else if (cardtype == TAPI_SIM_CARD_TYPE_GSM)
+ }
+ else if (TAPI_SIM_CARD_TYPE_GSM == cardtype) {
info->sim_type = TAPI_SIM_PB_ADN;
- else{
+ }
+ else {
CTS_ERR("cardtype(%d)is invalid!!!", cardtype);
return CONTACTS_ERROR_SYSTEM;
}
- // set iccid : unique info of SIM
- ret = tel_get_sim_iccid (info->handle, __ctsvc_server_sim_get_iccid_cb, info);
- RETVM_IF(ret != TAPI_API_SUCCESS, CONTACTS_ERROR_SYSTEM, "tel_get_sim_iccid failed(%d)", ret);
+ /* set iccid : unique info of SIM */
+ ret = tel_get_sim_iccid(info->handle, __ctsvc_server_sim_get_iccid_cb, info);
+ RETVM_IF(TAPI_API_SUCCESS != ret, CONTACTS_ERROR_SYSTEM, "tel_get_sim_iccid Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
-static void __ctsvc_server_sim_data_remove(ctsvc_sim_info_s *info)
-{
- GSList *cursor;
- sim_contact_s *record = NULL;
-
- for (cursor=info->import_contacts;cursor;cursor=cursor->next) {
- record = cursor->data;
- info->import_contacts = g_slist_remove(info->import_contacts, record);
- ctsvc_server_sim_record_destroy(record);
- }
- g_slist_free(info->import_contacts);
- info->import_contacts = NULL;
-}
-
static void __ctsvc_server_sim_noti_pb_status(TapiHandle *handle, const char *noti_id, void *data, void *user_data)
{
CTS_FN_CALL;
int ret = 0;
ctsvc_sim_info_s *info = (ctsvc_sim_info_s*)user_data;
TelSimPbStatus_t *pb_status = (TelSimPbStatus_t *)data;
- RETM_IF(pb_status == NULL, "pb_status is null");
+ RET_IF(NULL == pb_status);
INFO("received pb status noti : b_3g[%d], b_adn[%d], b_fdn[%d]", pb_status->pb_list.b_3g, pb_status->pb_list.b_adn, pb_status->pb_list.b_fdn);
- if (pb_status->pb_list.b_3g == 1 || pb_status->pb_list.b_adn == 1) {
+ if ((1 == pb_status->pb_list.b_3g) || (1 == pb_status->pb_list.b_adn)) {
if (info->initialized)
return;
ret = __ctsvc_server_sim_init_meta_info(info);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "__ctsvc_server_sim_init_meta_info() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "__ctsvc_server_sim_init_meta_info() Fail(%d)", ret);
}
- // FDN on : can not import sim contacts
- else if (pb_status->pb_list.b_fdn ==1 && pb_status->pb_list.b_adn == 0 && info->sim_type == TAPI_SIM_PB_ADN) {
+ /* FDN on : can not import sim contacts */
+ else if ((1 == pb_status->pb_list.b_fdn) && (0 == pb_status->pb_list.b_adn)
+ && (TAPI_SIM_PB_ADN == info->sim_type)) {
CTS_INFO("This is sim card is 2G and FDN on status. sim phonebook will be block");
info->initialized = false;
- __ctsvc_server_sim_data_remove(info);
+ __ctsvc_server_sim_destroy_import_contacts(info);
}
else {
CTS_ERR("This noti did not control !!!");
INFO("Recieved SIM Refresh event");
info->initialized = false;
- __ctsvc_server_sim_data_remove(info);
+ __ctsvc_server_sim_destroy_import_contacts(info);
}
static int __ctsvc_server_sim_info_init()
int i;
unsigned int cp_index = 0;
+#if !GLIB_CHECK_VERSION(2,35,0)
g_type_init();
+#endif
cp_name = tel_get_cp_name_list();
- RETVM_IF(cp_name == NULL, CONTACTS_ERROR_SYSTEM, "tel_get_cp_name_list fail (cp_name is NULL)");
+ RETVM_IF(NULL == cp_name, CONTACTS_ERROR_SYSTEM, "tel_get_cp_name_list() Fail(cp_name is NULL)");
- ret = ctsvc_server_delete_sdn_contact(-1);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_delete_sdn_contact() Failed(%d)", ret);
+ ret = ctsvc_server_delete_sdn_contact(ctsvc_server_zone_get_default_zone(), -1);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_delete_sdn_contact() Fail(%d)", ret);
- while(cp_name[cp_index]){
+ while (cp_name[cp_index]) {
cp_index++;
}
cp_index = 0;
- while(cp_name[cp_index]) {
+ while (cp_name[cp_index]) {
TapiHandle *handle;
ctsvc_sim_info_s *info = calloc(1, sizeof(ctsvc_sim_info_s));
- if (NULL == info) {
- CTS_ERR("calloc() return NULL");
- break;
+ if (NULL == info)
+ {
+ CTS_ERR("calloc() Fail");
+ g_strfreev(cp_name);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
info->cp_name = strdup(cp_name[cp_index]);
INFO("SIM cp_name[%d] : %s", cp_index, info->cp_name);
info->import_contacts = NULL;
info->sim_unique_id = NULL;
- // initialize file_record meta info
+ /* initialize file_record meta info */
for (i = 0 ;i <TAPI_PB_MAX_FILE_CNT; i++) {
info->file_record[i].support = false;
info->file_record[i].index_max = 0;
handle = __ctsvc_server_sim_get_tapi_handle(info);
if (handle) {
ret = __ctsvc_server_sim_init_info(info);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "__ctsvc_server_sim_init_info() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "__ctsvc_server_sim_init_info() Fail(%d)", ret);
ret = tel_get_sim_pb_init_info(handle, &sim_stat, &pb_list);
- if (TAPI_API_SUCCESS == ret && (pb_list.b_3g == 1 || pb_list.b_adn == 1)) {
+ if (TAPI_API_SUCCESS == ret && ((1 == pb_list.b_3g) || (1 == pb_list.b_adn))) {
ret = __ctsvc_server_sim_init_meta_info(info);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "__ctsvc_server_sim_init_meta_info() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "__ctsvc_server_sim_init_meta_info() Fail(%d)", ret);
}
ret = tel_register_noti_event(handle, TAPI_NOTI_PB_STATUS, __ctsvc_server_sim_noti_pb_status, info);
- WARN_IF( TAPI_API_SUCCESS != ret, "tel_register_noti_event() Failed(%d)", ret);
+ WARN_IF(TAPI_API_SUCCESS != ret, "tel_register_noti_event() Fail(%d)", ret);
ret = tel_register_noti_event(handle, TAPI_NOTI_SIM_REFRESHED, __ctsvc_server_sim_noti_sim_refreshed, info);
- WARN_IF( TAPI_API_SUCCESS != ret, "tel_register_noti_event() Failed(%d)", ret);
+ WARN_IF(TAPI_API_SUCCESS != ret, "tel_register_noti_event() Fail(%d)", ret);
}
else {
- CTS_ERR("tel_init fail");
+ CTS_ERR("tel_init() Fail");
}
__ctsvc_sim_info = g_slist_append(__ctsvc_sim_info, (void*)info);
__ctsvc_sim_cb = false;
vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_STATUS, __ctsvc_server_sim_ready_cb);
+ ctsvc_server_stop_timeout();
__ctsvc_server_sim_info_init();
+ ctsvc_server_start_timeout();
}
static void __ctsvc_server_telephony_ready_cb(keynode_t *key, void *data)
{
int bReady = 0;
- // TODO: it should be changed API
- vconf_get_bool(VCONFKEY_TELEPHONY_TAPI_STATE, &bReady);
+ vconf_get_bool(VCONFKEY_TELEPHONY_READY, &bReady);
- if (!bReady) {
+ if (0 == bReady) {
CTS_ERR("telephony is not ready ");
return;
}
INFO("telephony is Ready");
- vconf_ignore_key_changed(VCONFKEY_TELEPHONY_TAPI_STATE, __ctsvc_server_telephony_ready_cb);
+ vconf_ignore_key_changed(VCONFKEY_TELEPHONY_READY, __ctsvc_server_telephony_ready_cb);
__ctsvc_tapi_cb = false;
int status = 0;
return;
}
+ ctsvc_server_stop_timeout();
__ctsvc_server_sim_info_init();
+ ctsvc_server_start_timeout();
}
int ctsvc_server_sim_init()
{
int bReady = 0;
- // TODO: it should be changed API
- vconf_get_bool(VCONFKEY_TELEPHONY_TAPI_STATE, &bReady);
+ vconf_get_bool(VCONFKEY_TELEPHONY_READY, &bReady);
- if (!bReady) {
+ if (0 == bReady) {
CTS_ERR("telephony is not ready ");
- vconf_notify_key_changed(VCONFKEY_TELEPHONY_TAPI_STATE, __ctsvc_server_telephony_ready_cb, NULL);
+ vconf_notify_key_changed(VCONFKEY_TELEPHONY_READY, __ctsvc_server_telephony_ready_cb, NULL);
__ctsvc_tapi_cb = true;
return CONTACTS_ERROR_NONE;
}
{
CTS_FN_CALL;
GSList *info_cursor = NULL;
- sim_contact_s *record = NULL;
int ret = 0;
if (__ctsvc_tapi_cb)
- vconf_ignore_key_changed(VCONFKEY_TELEPHONY_TAPI_STATE, __ctsvc_server_telephony_ready_cb);
+ vconf_ignore_key_changed(VCONFKEY_TELEPHONY_READY, __ctsvc_server_telephony_ready_cb);
if (__ctsvc_sim_cb)
vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_STATUS, __ctsvc_server_sim_ready_cb);
for (info_cursor=__ctsvc_sim_info;info_cursor;info_cursor=info_cursor->next) {
ctsvc_sim_info_s *info = info_cursor->data;
- GSList *cursor;
free(info->cp_name);
free(info->sim_unique_id);
if (info->handle) {
ret = tel_deinit(info->handle);
- WARN_IF(TAPI_API_SUCCESS != ret, "tel_deinit() Failed(%d)", ret);
+ WARN_IF(TAPI_API_SUCCESS != ret, "tel_deinit() Fail(%d)", ret);
}
- for (cursor=info->import_contacts;cursor;cursor=cursor->next) {
- record = cursor->data;
- info->import_contacts = g_slist_remove(info->import_contacts, record);
- ctsvc_server_sim_record_destroy(record);
- }
- g_slist_free(info->import_contacts);
+ __ctsvc_server_sim_destroy_import_contacts(info);
free(info);
}
#ifndef __CTSVC_SERVER_SIM_H__
#define __CTSVC_SERVER_SIM_H__
-#include <tapi_type.h>
-
typedef struct {
int sim_index;
int contact_id;
int ctsvc_server_sim_get_sim_slot_no_by_info_id(int sim_info_id);
int ctsvc_server_socket_get_sim_init_status(void* data, int sim_slot_no);
-#endif // __CTSVC_SERVER_SIM_H__
+#endif /* __CTSVC_SERVER_SIM_H__ */
#include "contacts.h"
#include "ctsvc_internal.h"
#include "ctsvc_struct.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_socket.h"
#include "ctsvc_server_socket.h"
-#ifdef ENABLE_SIM_FEATURE
-#include "ctsvc_server_sim.h"
#include "ctsvc_server_utils.h"
-#endif
+#include "ctsvc_server_sim.h"
static int sockfd = -1;
CTS_FN_CALL;
int ret;
ctsvc_socket_msg_s msg = {0};
+ RETVM_IF(NULL == src, CONTACTS_ERROR_INVALID_PARAMETER, "src is NULL");
- // RETVM_IF(CONTACTS_ERROR_SYSTEM == value, value, "Socket has problems");
+ /* RETVM_IF(CONTACTS_ERROR_SYSTEM == value, value, "Socket has problems"); */
RETVM_IF(CTSVC_SOCKET_MSG_REQUEST_MAX_ATTACH < attach_num, CONTACTS_ERROR_INTERNAL,
"Invalid msg(attach_num = %d)", attach_num);
return CONTACTS_ERROR_NONE;
}
-#ifdef ENABLE_SIM_FEATURE
static void __ctsvc_server_socket_import_sim(GIOChannel *src, int size)
{
CTS_FN_CALL;
GError *gerr = NULL;
char receiver[CTS_SQL_MAX_LEN] = {0};
- if (size > 0) {
+ if (0 < size) {
g_io_channel_read_chars(src, receiver, size, &len, &gerr);
if (gerr) {
- CTS_ERR("g_io_channel_read_chars() Failed(%s)", gerr->message);
+ CTS_ERR("g_io_channel_read_chars() Fail(%s)", gerr->message);
g_error_free(gerr);
return;
}
}
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_server_sim_import_contact() Failed(%d)", ret);
+ CTS_ERR("ctsvc_server_sim_import_contact() Fail(%d)", ret);
ctsvc_server_socket_return(src, ret, 0, NULL);
}
}
GError *gerr = NULL;
char receiver[CTS_SQL_MAX_LEN] = {0};
- if (size > 0) {
+ if (0 < size) {
g_io_channel_read_chars(src, receiver, size, &len, &gerr);
if (gerr) {
- CTS_ERR("g_io_channel_read_chars() Failed(%s)", gerr->message);
+ CTS_ERR("g_io_channel_read_chars() Fail(%s)", gerr->message);
g_error_free(gerr);
return;
}
}
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_server_socket_get_sim_init_status() Failed(%d)", ret);
+ CTS_ERR("ctsvc_server_socket_get_sim_init_status() Fail(%d)", ret);
ctsvc_server_socket_return(src, ret, 0, NULL);
}
}
str_len = snprintf(count_str, sizeof(count_str), "%d", value);
ret = ctsvc_server_socket_return(src, CONTACTS_ERROR_NONE, 1, &str_len);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_server_socket_return() Failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_server_socket_return() Fail(%d)", ret);
CTS_DBG("count_str : %s", count_str);
ret = __ctsvc_server_socket_safe_write(g_io_channel_unix_get_fd(src), count_str, str_len);
RETVM_IF(-1 == ret, CONTACTS_ERROR_SYSTEM, "__ctsvc_server_socket_safe_write() Failed(errno = %d)", errno);
g_io_channel_read_chars(src, receiver, size, &len, &gerr);
if (gerr) {
- CTS_ERR("g_io_channel_read_chars() Failed(%s)", gerr->message);
+ CTS_ERR("g_io_channel_read_chars() Fail(%s)", gerr->message);
g_error_free(gerr);
}
}
-#endif // ENABLIE_SIM_FEATURE
static gboolean __ctsvc_server_socket_request_handler(GIOChannel *src, GIOCondition condition,
gpointer data)
{
int ret;
int fd;
-#ifdef ENABLE_SIM_FEATURE
bool have_read_permission = false;
bool have_write_permission = false;
- bool have_telephony_feature = false;
-#endif // ENABLE_SIM_FEATURE
ctsvc_socket_msg_s msg = {0};
CTS_FN_CALL;
CTS_DBG("attach number = %d", msg.attach_num);
-
-
-#ifdef ENABLE_SIM_FEATURE
+ bool have_telephony_feature = false;
have_telephony_feature = ctsvc_server_have_telephony_feature();
- if (!have_telephony_feature) {
+ if (false == have_telephony_feature) {
CTS_ERR("Telephony feature disabled");
- __ctsvc_server_socket_read_flush(src, msg.attach_sizes[0]); // sim_id
+ __ctsvc_server_socket_read_flush(src, msg.attach_sizes[0]); /* sim_id */
ctsvc_server_socket_return(src, CONTACTS_ERROR_NOT_SUPPORTED, 0, NULL);
return TRUE;
}
+
if (SECURITY_SERVER_API_SUCCESS == (ret = security_server_check_privilege_by_sockfd(fd, "contacts-service::svc", "r")))
have_read_permission = true;
else
have_write_permission = true;
else
INFO("fd(%d) : does not have contact write permission (%d)", fd, ret);
-#endif // ENABLE_SIM_FEATURE
switch (msg.type) {
-#ifdef ENABLE_SIM_FEATURE
case CTSVC_SOCKET_MSG_TYPE_REQUEST_IMPORT_SIM:
- if (!have_write_permission) {
+ if (false == have_write_permission) {
CTS_ERR("write permission denied");
- __ctsvc_server_socket_read_flush(src, msg.attach_sizes[0]); // sim_id
+ __ctsvc_server_socket_read_flush(src, msg.attach_sizes[0]); /* sim_id */
ctsvc_server_socket_return(src, CONTACTS_ERROR_PERMISSION_DENIED, 0, NULL);
return TRUE;
}
__ctsvc_server_socket_import_sim(src, msg.attach_sizes[0]);
break;
case CTSVC_SOCKET_MSG_TYPE_REQUEST_SIM_INIT_COMPLETE:
- if (!have_read_permission) {
+ if (false == have_read_permission) {
CTS_ERR("read permission denied");
- __ctsvc_server_socket_read_flush(src, msg.attach_sizes[0]); // sim_id
+ __ctsvc_server_socket_read_flush(src, msg.attach_sizes[0]); /* sim_id */
ctsvc_server_socket_return(src, CONTACTS_ERROR_PERMISSION_DENIED, 0, NULL);
return TRUE;
}
__ctsvc_server_socket_get_sim_init_status(src, msg.attach_sizes[0]);
break;
-#endif // ENABLE_SIM_FEATURE
default:
CTS_ERR("Unknown request type(%d)", msg.type);
break;
RETVM_IF(-1 == sockfd, CONTACTS_ERROR_SYSTEM, "socket() Failed(errno = %d)", errno);
ret = bind(sockfd, (struct sockaddr *)&addr, sizeof(addr));
- RETVM_IF(-1 == ret, CONTACTS_ERROR_SYSTEM, "bind() Failed(errno = %d)", errno);
+ if (-1 == ret) {
+ close(sockfd);
+ CTS_ERR("bind() Failed(errno = %d)", errno);
+ return CONTACTS_ERROR_SYSTEM;
+ }
ret = chown(CTSVC_SOCKET_PATH, getuid(), CTS_SECURITY_FILE_GROUP);
if (0 != ret)
- CTS_ERR("chown(%s) Failed(%d)", CTSVC_SOCKET_PATH, ret);
+ CTS_ERR("chown(%s) Fail(%d)", CTSVC_SOCKET_PATH, ret);
ret = chmod(CTSVC_SOCKET_PATH, CTS_SECURITY_DEFAULT_PERMISSION);
if (0 != ret)
- CTS_ERR("chmod(%s) Failed(%d)", CTSVC_SOCKET_PATH, ret);
+ CTS_ERR("chmod(%s) Fail(%d)", CTSVC_SOCKET_PATH, ret);
ret = listen(sockfd, 30);
if (-1 == ret) {
int ctsvc_server_socket_return(GIOChannel *src, int value, int attach_num, int *attach_size);
int ctsvc_server_socket_return_sim_int(GIOChannel *src, int value);
-#endif // __CTSVC_SERVER_SOCKET_H__
+#endif /* __CTSVC_SERVER_SOCKET_H__ */
\ No newline at end of file
#include "ctsvc_internal.h"
#include "contacts.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_notify.h"
-#include "ctsvc_setting.h"
+#include "ctsvc_server_setting.h"
#include "ctsvc_normalize.h"
#include "ctsvc_localize.h"
#include "ctsvc_localize_utils.h"
#include "ctsvc_db_plugin_group_helper.h"
#include "ctsvc_db_plugin_contact_helper.h"
-#include "ctsvc_person.h"
+#include "ctsvc_zone.h"
+#include "ctsvc_server_person.h"
#ifdef ENABLE_LOG_FEATURE
-#include "ctsvc_phonelog.h"
-#endif // ENABLE_LOG_FEATURE
+#include "ctsvc_server_phonelog.h"
+#endif /* ENABLE_LOG_FEATURE */
-static sqlite3 *server_db;
+static GHashTable *ctsvc_db_table = NULL;
-int ctsvc_server_db_open(sqlite3 **db)
+int ctsvc_server_db_open(const char *zone_name, sqlite3 **db)
{
CTS_FN_CALL;
int ret;
- if (!server_db) {
- ret = db_util_open(CTSVC_DB_PATH, &server_db, 0);
- RETVM_IF(ret != SQLITE_OK, CONTACTS_ERROR_DB,
- "db_util_open() Failed(%d)", ret);
+ sqlite3 *server_db = NULL;
+ if (NULL == ctsvc_db_table)
+ ctsvc_db_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
+ else
+ server_db = g_hash_table_lookup(ctsvc_db_table, zone_name);
+
+ if (NULL == server_db) {
+ char db_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, db_path, sizeof(db_path));
+ snprintf(db_path+len, sizeof(db_path)-len, "%s", CTSVC_DB_PATH);
+
+ ret = db_util_open(db_path, &server_db, 0);
+ RETVM_IF(ret != SQLITE_OK, CONTACTS_ERROR_DB, "db_util_open() Fail(%d)", ret);
+ g_hash_table_replace(ctsvc_db_table, g_strdup(zone_name), server_db);
- ret = sqlite3_create_function(server_db, "_DATA_DELETE_", 2, SQLITE_UTF8, NULL,
+ ret = sqlite3_create_function(server_db, "_DATA_DELETE_", 2, SQLITE_UTF8, strdup(zone_name),
ctsvc_db_data_delete_callback, NULL, NULL);
RETVM_IF(SQLITE_OK != ret, CONTACTS_ERROR_DB,
- "sqlite3_create_function() Failed(%d)", ret);
- ret = sqlite3_create_function(server_db, "_DATA_IMAGE_DELETE_", 1, SQLITE_UTF8, NULL,
+ "sqlite3_create_function() Fail(%d)", ret);
+ ret = sqlite3_create_function(server_db, "_DATA_IMAGE_DELETE_", 1, SQLITE_UTF8, strdup(zone_name),
ctsvc_db_image_delete_callback, NULL, NULL);
RETVM_IF(SQLITE_OK != ret, CONTACTS_ERROR_DB,
- "sqlite3_create_function() Failed(%d)", ret);
- ret = sqlite3_create_function(server_db, "_DATA_COMPANY_DELETE_", 1, SQLITE_UTF8, NULL,
+ "sqlite3_create_function() Fail(%d)", ret);
+ ret = sqlite3_create_function(server_db, "_DATA_COMPANY_DELETE_", 1, SQLITE_UTF8, strdup(zone_name),
ctsvc_db_company_delete_callback, NULL, NULL);
RETVM_IF(SQLITE_OK != ret, CONTACTS_ERROR_DB,
- "sqlite3_create_function() Failed(%d)", ret);
+ "sqlite3_create_function() Fail(%d)", ret);
#ifdef ENABLE_LOG_FEATURE
- ret = sqlite3_create_function(server_db, "_PHONE_LOG_DELETE_", 1, SQLITE_UTF8, NULL,
+ ret = sqlite3_create_function(server_db, "_PHONE_LOG_DELETE_", 1, SQLITE_UTF8, strdup(zone_name),
ctsvc_db_phone_log_delete_callback, NULL, NULL);
RETVM_IF(SQLITE_OK != ret, CONTACTS_ERROR_DB,
- "sqlite3_create_function() Failed(%d)", ret);
-#endif // ENABLE_LOG_FEATURE
- ret = sqlite3_create_function(server_db, "_PERSON_DELETE_", 1, SQLITE_UTF8, NULL,
+ "sqlite3_create_function() Fail(%d)", ret);
+#endif /* ENABLE_LOG_FEATURE */
+ ret = sqlite3_create_function(server_db, "_PERSON_DELETE_", 1, SQLITE_UTF8, strdup(zone_name),
ctsvc_db_person_delete_callback, NULL, NULL);
RETVM_IF(SQLITE_OK != ret, CONTACTS_ERROR_DB,
- "sqlite3_create_function() Failed(%d)", ret);
- ret = sqlite3_create_function(server_db, "_GROUP_DELETE_", 1, SQLITE_UTF8, NULL,
+ "sqlite3_create_function() Fail(%d)", ret);
+ ret = sqlite3_create_function(server_db, "_GROUP_DELETE_", 1, SQLITE_UTF8, strdup(zone_name),
ctsvc_db_group_delete_callback, NULL, NULL);
RETVM_IF(SQLITE_OK != ret, CONTACTS_ERROR_DB,
- "sqlite3_create_function() Failed(%d)", ret);
+ "sqlite3_create_function() Fail(%d)", ret);
ret = sqlite3_create_function(server_db, "_NUMBER_COMPARE_", 4, SQLITE_UTF8, NULL,
ctsvc_db_phone_number_equal_callback, NULL, NULL);
RETVM_IF(SQLITE_OK != ret, CONTACTS_ERROR_DB,
- "sqlite3_create_function() Failed(%d)", ret);
+ "sqlite3_create_function() Fail(%d)", ret);
}
+
if (db)
*db = server_db;
return CONTACTS_ERROR_NONE;
}
-int ctsvc_server_db_close(void)
+int ctsvc_server_db_close(const char *zone_name)
{
+ RETV_IF(NULL == ctsvc_db_table, CONTACTS_ERROR_NONE);
+
+ sqlite3 *server_db = NULL;
+ server_db = g_hash_table_lookup(ctsvc_db_table, zone_name);
+
if (server_db) {
+ g_hash_table_remove(ctsvc_db_table, zone_name);
db_util_close(server_db);
server_db = NULL;
}
return CONTACTS_ERROR_NONE;
}
-int ctsvc_server_begin_trans(void)
+int ctsvc_server_begin_trans(const char *zone_name)
{
- int ret = -1;
+ RETVM_IF(NULL == ctsvc_db_table, CONTACTS_ERROR_DB, "ctsvc_db_table is NULL");
+
+ sqlite3 *server_db = NULL;
+ server_db = g_hash_table_lookup(ctsvc_db_table, zone_name);
+ RETVM_IF(NULL == server_db, CONTACTS_ERROR_DB, "g_hash_table_lookup(%s) return NULL", zone_name);
+ int ret = -1;
ret = sqlite3_exec(server_db, "BEGIN IMMEDIATE TRANSACTION",
NULL, NULL, NULL);
}
if (SQLITE_OK != ret) {
- CTS_ERR("sqlite3_exec() Failed(%d)", ret);
+ CTS_ERR("sqlite3_exec() Fail(%d)", ret);
return CONTACTS_ERROR_DB;
}
return CONTACTS_ERROR_NONE;
}
#define CTS_COMMIT_TRY_MAX 5
-int ctsvc_server_end_trans(bool success)
+int ctsvc_server_end_trans(const char *zone_name, bool success)
{
+ RETVM_IF(NULL == ctsvc_db_table, CONTACTS_ERROR_DB, "ctsvc_db_table is NULL");
+
+ sqlite3 *server_db = NULL;
+ server_db = g_hash_table_lookup(ctsvc_db_table, zone_name);
+ RETVM_IF(NULL == server_db, CONTACTS_ERROR_DB, "g_hash_table_lookup(%s) return NULL", zone_name);
+
int ret = -1, i=0;
char *errmsg = NULL;
ret = sqlite3_exec(server_db, "COMMIT TRANSACTION",
NULL, NULL, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("sqlite3_exec(COMMIT) Failed(%d, %s)", ret, errmsg);
+ CTS_ERR("sqlite3_exec(COMMIT) Fail(%d, %s)", ret, errmsg);
sqlite3_free(errmsg);
i++;
sleep(1);
ret = sqlite3_exec(server_db, "ROLLBACK TRANSACTION",
NULL, NULL, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("sqlite3_exec(ROLLBACK) Failed(%d, %s)", ret, errmsg);
+ CTS_ERR("sqlite3_exec(ROLLBACK) Fail(%d, %s)", ret, errmsg);
sqlite3_free(errmsg);
i++;
sleep(1);
} while ((SQLITE_BUSY == ret || SQLITE_LOCKED == ret) && i < CTS_COMMIT_TRY_MAX);
if (SQLITE_OK != ret) {
- CTS_ERR("sqlite3_exec(ROLLBACK) Failed(%d) : DB lock", ret);
+ CTS_ERR("sqlite3_exec(ROLLBACK) Fail(%d) : DB lock", ret);
return CONTACTS_ERROR_DB;
}
else {
}
}
-int ctsvc_server_update_sort(int prev_sort_primary, int prev_sort_secondary, int new_sort_primary, int new_sort_secondary)
+int ctsvc_server_update_sort(const char *zone_name, int prev_sort_primary, int prev_sort_secondary, int new_sort_primary, int new_sort_secondary)
{
CTS_FN_CALL;
int ret;
char *errmsg = NULL;
char query[CTS_SQL_MIN_LEN] = {0};
- ret = ctsvc_server_db_open(&db);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_server_db_open() Failed(%d)", ret);
+ ret = ctsvc_server_db_open(zone_name, &db);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_server_db_open() Fail(%d)", ret);
- ret = ctsvc_server_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_server_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_server_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_server_begin_trans() Fail(%d)", ret);
snprintf(query, sizeof(query), "UPDATE %s SET display_name_language=%d WHERE display_name_language =%d",
CTS_TABLE_CONTACTS, prev_sort_primary, CTSVC_SORT_PRIMARY);
ret = sqlite3_exec(db, query, NULL, NULL, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("sqlite3_exec(%s) Failed(%d, %s)", query, ret, errmsg);
+ CTS_ERR("sqlite3_exec(%s) Fail(%d, %s)", query, ret, errmsg);
sqlite3_free(errmsg);
- ctsvc_server_end_trans(false);
- ctsvc_server_db_close();
+ ctsvc_server_end_trans(zone_name, false);
+ ctsvc_server_db_close(zone_name);
return CONTACTS_ERROR_DB;
}
CTS_TABLE_CONTACTS, prev_sort_secondary, CTSVC_SORT_SECONDARY);
ret = sqlite3_exec(db, query, NULL, NULL, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("sqlite3_exec(%s) Failed(%d, %s)", query, ret, errmsg);
+ CTS_ERR("sqlite3_exec(%s) Fail(%d, %s)", query, ret, errmsg);
sqlite3_free(errmsg);
- ctsvc_server_end_trans(false);
- ctsvc_server_db_close();
+ ctsvc_server_end_trans(zone_name, false);
+ ctsvc_server_db_close(zone_name);
return CONTACTS_ERROR_DB;
}
CTS_TABLE_CONTACTS, CTSVC_SORT_PRIMARY, new_sort_primary);
ret = sqlite3_exec(db, query, NULL, NULL, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("sqlite3_exec(%s) Failed(%d, %s)", query, ret, errmsg);
+ CTS_ERR("sqlite3_exec(%s) Fail(%d, %s)", query, ret, errmsg);
sqlite3_free(errmsg);
- ctsvc_server_end_trans(false);
- ctsvc_server_db_close();
+ ctsvc_server_end_trans(zone_name, false);
+ ctsvc_server_db_close(zone_name);
return CONTACTS_ERROR_DB;
}
CTS_TABLE_CONTACTS, CTSVC_SORT_SECONDARY, new_sort_secondary);
ret = sqlite3_exec(db, query, NULL, NULL, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("sqlite3_exec(%s) Failed(%d, %s)", query, ret, errmsg);
+ CTS_ERR("sqlite3_exec(%s) Fail(%d, %s)", query, ret, errmsg);
sqlite3_free(errmsg);
- ctsvc_server_end_trans(false);
- ctsvc_server_db_close();
+ ctsvc_server_end_trans(zone_name, false);
+ ctsvc_server_db_close(zone_name);
return CONTACTS_ERROR_DB;
}
CTS_TABLE_CONTACTS, prev_sort_primary, CTSVC_SORT_PRIMARY);
ret = sqlite3_exec(db, query, NULL, NULL, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("sqlite3_exec(%s) Failed(%d, %s)", query, ret, errmsg);
+ CTS_ERR("sqlite3_exec(%s) Fail(%d, %s)", query, ret, errmsg);
sqlite3_free(errmsg);
- ctsvc_server_end_trans(false);
- ctsvc_server_db_close();
+ ctsvc_server_end_trans(zone_name, false);
+ ctsvc_server_db_close(zone_name);
return CONTACTS_ERROR_DB;
}
CTS_TABLE_CONTACTS, prev_sort_secondary, CTSVC_SORT_SECONDARY);
ret = sqlite3_exec(db, query, NULL, NULL, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("sqlite3_exec(%s) Failed(%d, %s)", query, ret, errmsg);
+ CTS_ERR("sqlite3_exec(%s) Fail(%d, %s)", query, ret, errmsg);
sqlite3_free(errmsg);
- ctsvc_server_end_trans(false);
- ctsvc_server_db_close();
+ ctsvc_server_end_trans(zone_name, false);
+ ctsvc_server_db_close(zone_name);
return CONTACTS_ERROR_DB;
}
CTS_TABLE_CONTACTS, CTSVC_SORT_PRIMARY, new_sort_primary);
ret = sqlite3_exec(db, query, NULL, NULL, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("sqlite3_exec(%s) Failed(%d, %s)", query, ret, errmsg);
+ CTS_ERR("sqlite3_exec(%s) Fail(%d, %s)", query, ret, errmsg);
sqlite3_free(errmsg);
- ctsvc_server_end_trans(false);
- ctsvc_server_db_close();
+ ctsvc_server_end_trans(zone_name, false);
+ ctsvc_server_db_close(zone_name);
return CONTACTS_ERROR_DB;
}
CTS_TABLE_CONTACTS, CTSVC_SORT_SECONDARY, new_sort_secondary);
ret = sqlite3_exec(db, query, NULL, NULL, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("sqlite3_exec(%s) Failed(%d, %s)", query, ret, errmsg);
+ CTS_ERR("sqlite3_exec(%s) Fail(%d, %s)", query, ret, errmsg);
sqlite3_free(errmsg);
- ctsvc_server_end_trans(false);
- ctsvc_server_db_close();
+ ctsvc_server_end_trans(zone_name, false);
+ ctsvc_server_db_close(zone_name);
return CONTACTS_ERROR_DB;
}
ret = ctsvc_server_set_default_sort(new_sort_primary);
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_server_end_trans(false);
- ctsvc_server_db_close();
+ ctsvc_server_end_trans(zone_name, false);
+ ctsvc_server_db_close(zone_name);
return ret;
}
- ret = ctsvc_server_end_trans(true);
+ ret = ctsvc_server_end_trans(zone_name, true);
- // person noti
+ /* person noti */
#if 0
if (CONTACTS_ERROR_NONE == ret) {
int fd = open(CTSVC_NOTI_PERSON_CHANGED, O_TRUNC | O_RDWR);
close(fd);
}
#endif
- ctsvc_server_db_close();
+ ctsvc_server_db_close(zone_name);
return ret;
}
-int ctsvc_server_insert_sdn_contact(const char *name, const char *number,
+int ctsvc_server_insert_sdn_contact(const char *zone_name, const char *name, const char *number,
int sim_slot_no)
{
int ret;
sqlite3_stmt* stmt = NULL;
char query[CTS_SQL_MIN_LEN] = {0};
- ret = ctsvc_server_db_open(&db);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_server_db_open() Failed(%d)", ret);
+ ret = ctsvc_server_db_open(zone_name, &db);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_server_db_open() Fail(%d)", ret);
snprintf(query, sizeof(query), "INSERT INTO %s(name, number, sim_slot_no) VALUES(?, ?, ?)",
CTS_TABLE_SDN);
ret = sqlite3_prepare_v2(db, query, strlen(query), &stmt, NULL);
- if(SQLITE_OK != ret) {
- CTS_ERR("sqlite3_prepare_v2(%s) Failed(%s)", query, sqlite3_errmsg(db));
- ctsvc_server_db_close();
+ if (SQLITE_OK != ret) {
+ CTS_ERR("sqlite3_prepare_v2(%s) Fail(%s)", query, sqlite3_errmsg(db));
+ ctsvc_server_db_close(zone_name);
return CONTACTS_ERROR_DB;
}
ret = sqlite3_step(stmt);
if (SQLITE_DONE != ret) {
- CTS_ERR("sqlite3_step() Failed(%d)", ret);
+ CTS_ERR("sqlite3_step() Fail(%d)", ret);
sqlite3_finalize(stmt);
- ctsvc_server_db_close();
+ ctsvc_server_db_close(zone_name);
return CONTACTS_ERROR_DB;
}
sqlite3_finalize(stmt);
- ctsvc_server_db_close();
+ ctsvc_server_db_close(zone_name);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_server_delete_sdn_contact(int sim_slot_no)
+int ctsvc_server_delete_sdn_contact(const char *zone_name, int sim_slot_no)
{
int ret;
sqlite3* db = NULL;
sqlite3_stmt* stmt = NULL;
char query[CTS_SQL_MAX_LEN] = {0};
- ret = ctsvc_server_db_open(&db);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "helper_db_open() Failed(%d)", ret);
+ ret = ctsvc_server_db_open(zone_name, &db);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "helper_db_open() Fail(%d)", ret);
if (sim_slot_no < 0)
snprintf(query, sizeof(query), "DELETE FROM %s", CTS_TABLE_SDN);
snprintf(query, sizeof(query), "DELETE FROM %s WHERE sim_slot_no = %d", CTS_TABLE_SDN, sim_slot_no);
ret = sqlite3_prepare_v2(db, query, strlen(query), &stmt, NULL);
- if(SQLITE_OK != ret) {
- CTS_ERR("sqlite3_prepare_v2(%s) Failed(%s)", query, sqlite3_errmsg(db));
- ctsvc_server_db_close();
+ if (SQLITE_OK != ret) {
+ CTS_ERR("sqlite3_prepare_v2(%s) Fail(%s)", query, sqlite3_errmsg(db));
+ ctsvc_server_db_close(zone_name);
return CONTACTS_ERROR_DB;
}
ret = sqlite3_step(stmt);
if (SQLITE_DONE != ret) {
- CTS_ERR("sqlite3_step() Failed(%d)", ret);
+ CTS_ERR("sqlite3_step() Fail(%d)", ret);
sqlite3_finalize(stmt);
- ctsvc_server_db_close();
+ ctsvc_server_db_close(zone_name);
return CONTACTS_ERROR_DB;
}
sqlite3_finalize(stmt);
- ctsvc_server_db_close();
+ ctsvc_server_db_close(zone_name);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_server_update_collation()
+int ctsvc_server_update_collation(const char *zone_name)
{
int ret = 0;
sqlite3* db = NULL;
cts_stmt update_stmt = NULL;
char query[CTS_SQL_MIN_LEN] = {0};
- ctsvc_db_set_status(CONTACTS_DB_STATUS_CHANGING_COLLATION);
+ ctsvc_db_set_status(zone_name, CONTACTS_DB_STATUS_CHANGING_COLLATION);
- ret = ctsvc_server_db_open(&db);
+ ret = ctsvc_server_db_open(zone_name, &db);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_server_db_open() Failed(%d)", ret);
- ctsvc_db_set_status(CONTACTS_DB_STATUS_NORMAL);
+ CTS_ERR("ctsvc_server_db_open() Fail(%d)", ret);
+ ctsvc_db_set_status(zone_name, CONTACTS_DB_STATUS_NORMAL);
return ret;
}
- ret = ctsvc_server_begin_trans();
- if(CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_server_begin_trans() Failed(%d)", ret);
- ctsvc_server_db_close();
- ctsvc_db_set_status(CONTACTS_DB_STATUS_NORMAL);
+ ret = ctsvc_server_begin_trans(zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_begin_trans() Fail(%d)", ret);
+ ctsvc_server_db_close(zone_name);
+ ctsvc_db_set_status(zone_name, CONTACTS_DB_STATUS_NORMAL);
return ret;
}
"SELECT contact_id, sort_name, reverse_sort_name "
"FROM "CTS_TABLE_CONTACTS" WHERE deleted = 0");
ret = sqlite3_prepare_v2(db, query, strlen(query), &stmt, NULL);
- if(SQLITE_OK != ret) {
- CTS_ERR("sqlite3_prepare_v2(%s) Failed(%s)", query, sqlite3_errmsg(db));
- ctsvc_server_end_trans(false);
- ctsvc_server_db_close();
- ctsvc_db_set_status(CONTACTS_DB_STATUS_NORMAL);
+ if (SQLITE_OK != ret) {
+ CTS_ERR("sqlite3_prepare_v2(%s) Fail(%s)", query, sqlite3_errmsg(db));
+ ctsvc_server_end_trans(zone_name, false);
+ ctsvc_server_db_close(zone_name);
+ ctsvc_db_set_status(zone_name, CONTACTS_DB_STATUS_NORMAL);
return CONTACTS_ERROR_DB;
}
"UPDATE "CTS_TABLE_CONTACTS" SET sortkey=?, reverse_sortkey=? "
"WHERE contact_id = ?");
ret = sqlite3_prepare_v2(db, query, strlen(query), &update_stmt, NULL);
- if(SQLITE_OK != ret) {
- CTS_ERR("sqlite3_prepare_v2(%s) Failed(%s)", query, sqlite3_errmsg(db));
+ if (SQLITE_OK != ret) {
+ CTS_ERR("sqlite3_prepare_v2(%s) Fail(%s)", query, sqlite3_errmsg(db));
sqlite3_finalize(stmt);
- ctsvc_server_end_trans(false);
- ctsvc_server_db_close();
- ctsvc_db_set_status(CONTACTS_DB_STATUS_NORMAL);
+ ctsvc_server_end_trans(zone_name, false);
+ ctsvc_server_db_close(zone_name);
+ ctsvc_db_set_status(zone_name, CONTACTS_DB_STATUS_NORMAL);
return CONTACTS_ERROR_DB;
}
free(reverse_sortkey);
if (SQLITE_DONE != ret) {
- CTS_ERR("sqlite3_step(%s) Failed(%d, %s)", query, ret, sqlite3_errmsg(db));
+ CTS_ERR("sqlite3_step(%s) Fail(%d, %s)", query, ret, sqlite3_errmsg(db));
sqlite3_finalize(stmt);
sqlite3_finalize(update_stmt);
- ctsvc_server_end_trans(false);
- ctsvc_server_db_close();
- ctsvc_db_set_status(CONTACTS_DB_STATUS_NORMAL);
+ ctsvc_server_end_trans(zone_name, false);
+ ctsvc_server_db_close(zone_name);
+ ctsvc_db_set_status(zone_name, CONTACTS_DB_STATUS_NORMAL);
return CONTACTS_ERROR_DB;
}
}
if (SQLITE_ROW != ret && SQLITE_DONE != ret) {
- CTS_ERR("sqlite3_step() Failed(%d)", ret);
+ CTS_ERR("sqlite3_step() Fail(%d)", ret);
sqlite3_finalize(update_stmt);
sqlite3_finalize(stmt);
- ctsvc_server_end_trans(false);
- ctsvc_server_db_close();
- ctsvc_db_set_status(CONTACTS_DB_STATUS_NORMAL);
+ ctsvc_server_end_trans(zone_name, false);
+ ctsvc_server_db_close(zone_name);
+ ctsvc_db_set_status(zone_name, CONTACTS_DB_STATUS_NORMAL);
return CONTACTS_ERROR_DB;
}
sqlite3_finalize(update_stmt);
sqlite3_finalize(stmt);
- ret = ctsvc_server_end_trans(true);
+ ret = ctsvc_server_end_trans(zone_name, true);
if (CONTACTS_ERROR_NONE == ret) {
int fd;
fd = open(CTSVC_NOTI_CONTACT_CHANGED, O_TRUNC | O_RDWR);
if (0 <= fd)
close(fd);
}
- ctsvc_server_db_close();
+ ctsvc_server_db_close(zone_name);
- ctsvc_db_set_status(CONTACTS_DB_STATUS_NORMAL);
+ ctsvc_db_set_status(zone_name, CONTACTS_DB_STATUS_NORMAL);
return ret;
}
-int ctsvc_server_get_sim_id(const char *unique_id, int *sim_id)
+int ctsvc_server_get_sim_id(const char *zone_name, const char *unique_id, int *sim_id)
{
int ret;
int id;
snprintf(query, sizeof(query),
"SELECT sim_id FROM "CTS_TABLE_SIM_INFO" "
"WHERE unique_id = '%s'", unique_id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
if (CONTACTS_ERROR_NONE != ret && CONTACTS_ERROR_NO_DATA != ret) {
- CTS_ERR("ctsvc_query_get_first_int_result() Failed(%d)", ret);
+ CTS_ERR("ctsvc_query_get_first_int_result() Fail(%d)", ret);
return ret;
}
if (CONTACTS_ERROR_NO_DATA == ret) {
snprintf(query, sizeof(query),
"INSERT INTO "CTS_TABLE_SIM_INFO" (unique_id) VALUES('%s')", unique_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_query_exec Fail(%d)", ret);
return ret;
}
- id = ctsvc_db_get_last_insert_id();
+ id = ctsvc_db_get_last_insert_id(zone_name);
}
CTS_DBG("id :%d, unique_id :%s", id, unique_id);
*sim_id = id;
"WHERE data.contact_id = %d AND is_my_profile = 0 "
"ORDER BY is_default DESC", id);
ret = sqlite3_prepare_v2(db, query, strlen(query), &stmt, NULL);
- RETVM_IF(SQLITE_OK != ret, ret, "DB error : sqlite3_prepare_v2() Failed(%d)", ret);
+ RETVM_IF(SQLITE_OK != ret, ret, "DB error : sqlite3_prepare_v2() Fail(%d)", ret);
ret = sqlite3_step(stmt);
if (SQLITE_ROW != ret) {
- CTS_ERR("sqlite3_step() Failed(%d)", ret);
+ CTS_ERR("sqlite3_step() Fail(%d)", ret);
sqlite3_finalize(stmt);
return ret;
}
default:
break;
}
- }while(SQLITE_ROW == sqlite3_step(stmt));
+ } while (SQLITE_ROW == sqlite3_step(stmt));
sqlite3_finalize(stmt);
return SQLITE_DONE;
}
-int ctsvc_server_update_sort_name()
+int ctsvc_server_update_sort_name(const char *zone_name)
{
int ret = 0;
sqlite3* db = NULL;
INFO("Start to update sort_name");
- ctsvc_db_set_status(CONTACTS_DB_STATUS_CHANGING_COLLATION);
+ ctsvc_db_set_status(zone_name, CONTACTS_DB_STATUS_CHANGING_COLLATION);
- ret = ctsvc_server_db_open(&db);
+ ret = ctsvc_server_db_open(zone_name, &db);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_server_db_open() Failed(%d)", ret);
- ctsvc_db_set_status(CONTACTS_DB_STATUS_NORMAL);
+ CTS_ERR("ctsvc_server_db_open() Fail(%d)", ret);
+ ctsvc_db_set_status(zone_name, CONTACTS_DB_STATUS_NORMAL);
return ret;
}
- ret = ctsvc_server_begin_trans();
- if(CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_server_begin_trans() Failed(%d)", ret);
- ctsvc_server_db_close();
- ctsvc_db_set_status(CONTACTS_DB_STATUS_NORMAL);
+ ret = ctsvc_server_begin_trans(zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_server_begin_trans() Fail(%d)", ret);
+ ctsvc_server_db_close(zone_name);
+ ctsvc_db_set_status(zone_name, CONTACTS_DB_STATUS_NORMAL);
return ret;
}
"SELECT contact_id "
"FROM "CTS_TABLE_CONTACTS" WHERE deleted = 0");
ret = sqlite3_prepare_v2(db, query, strlen(query), &stmt, NULL);
- if(SQLITE_OK != ret) {
- CTS_ERR("sqlite3_prepare_v2(%s) Failed(%s)", query, sqlite3_errmsg(db));
- ctsvc_server_end_trans(false);
- ctsvc_server_db_close();
- ctsvc_db_set_status(CONTACTS_DB_STATUS_NORMAL);
+ if (SQLITE_OK != ret) {
+ CTS_ERR("sqlite3_prepare_v2(%s) Fail(%s)", query, sqlite3_errmsg(db));
+ ctsvc_server_end_trans(zone_name, false);
+ ctsvc_server_db_close(zone_name);
+ ctsvc_db_set_status(zone_name, CONTACTS_DB_STATUS_NORMAL);
return CONTACTS_ERROR_DB;
}
- // Update sort_name, sortkey, display_name_language of contact table
+ /* Update sort_name, sortkey, display_name_language of contact table */
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_CONTACTS" "
"SET sort_name = ?, reverse_sort_name = ?, sortkey = ?, reverse_sortkey = ?, "
" display_name_source = ? "
"WHERE contact_id = ?");
ret = sqlite3_prepare_v2(db, query, strlen(query), &update_stmt, NULL);
- if(SQLITE_OK != ret) {
- CTS_ERR("sqlite3_propare_v2(%s) Failed(%s)", query, sqlite3_errmsg(db));
+ if (SQLITE_OK != ret) {
+ CTS_ERR("sqlite3_propare_v2(%s) Fail(%s)", query, sqlite3_errmsg(db));
ret = CONTACTS_ERROR_DB;
goto DATA_FREE;
}
- // Update name of search_index table
+ /* Update name of search_index table */
snprintf(query, sizeof(query),
"UPDATE %s SET name=? WHERE contact_id = ?",
CTS_TABLE_SEARCH_INDEX);
ret = sqlite3_prepare_v2(db, query, strlen(query), &search_name_stmt, NULL);
- if(SQLITE_OK != ret) {
- CTS_ERR("sqlite3_propare_v2(%s) Failed(%s)", query, sqlite3_errmsg(db));
+ if (SQLITE_OK != ret) {
+ CTS_ERR("sqlite3_propare_v2(%s) Fail(%s)", query, sqlite3_errmsg(db));
ret = CONTACTS_ERROR_DB;
goto DATA_FREE;
}
int contact_id = sqlite3_column_int(stmt, 0);
char *search_name = NULL;
- // get_contact_info
+ /* get_contact_info */
ctsvc_contact_s *contact = NULL;
contacts_record_create(_contacts_contact._uri, (contacts_record_h*)&contact);
ret = __ctsvc_server_db_get_contact_data(db, contact_id, contact);
if (SQLITE_DONE != ret) {
- CTS_ERR("sqlite3_step(%s) Failed(%d, %s)", query, ret, sqlite3_errmsg(db));
+ CTS_ERR("sqlite3_step(%s) Fail(%d, %s)", query, ret, sqlite3_errmsg(db));
contacts_record_destroy((contacts_record_h)contact, true);
ret = CONTACTS_ERROR_DB;
goto DATA_FREE;
}
- // update sort_name, sortkey, display_name_language(sort group)
+ /* update sort_name, sortkey, display_name_language(sort group) */
ctsvc_contact_make_display_name(contact);
if (contact->sort_name)
sqlite3_bind_text(update_stmt, 1, contact->sort_name, strlen(contact->sort_name), SQLITE_STATIC);
ret = sqlite3_step(update_stmt);
if (SQLITE_DONE != ret) {
- CTS_ERR("sqlite3_step(%s) Failed(%d, %s)", query, ret, sqlite3_errmsg(db));
+ CTS_ERR("sqlite3_step(%s) Fail(%d, %s)", query, ret, sqlite3_errmsg(db));
contacts_record_destroy((contacts_record_h)contact, true);
ret = CONTACTS_ERROR_DB;
goto DATA_FREE;
}
sqlite3_reset(update_stmt);
- // update name valud of search_index table
+ /* update name valud of search_index table */
ctsvc_contact_make_search_name(contact, &search_name);
if (search_name) {
sqlite3_bind_text(search_name_stmt, 1, search_name, strlen(search_name), SQLITE_STATIC);
ret = sqlite3_step(search_name_stmt);
free(search_name);
if (SQLITE_DONE != ret) {
- CTS_ERR("sqlite3_step(%s) Failed(%d, %s)", query, ret, sqlite3_errmsg(db));
+ CTS_ERR("sqlite3_step(%s) Fail(%d, %s)", query, ret, sqlite3_errmsg(db));
contacts_record_destroy((contacts_record_h)contact, true);
ret = CONTACTS_ERROR_DB;
goto DATA_FREE;
}
if (SQLITE_ROW != ret && SQLITE_DONE != ret) {
- CTS_ERR("sqlite3_step() Failed(%d)", ret);
+ CTS_ERR("sqlite3_step() Fail(%d)", ret);
ret = CONTACTS_ERROR_DB;
goto DATA_FREE;
}
if (search_name_stmt)
sqlite3_finalize(search_name_stmt);
- // send notification
+ /* send notification */
if (CONTACTS_ERROR_DB != ret) {
- ret = ctsvc_server_end_trans(true);
+ ret = ctsvc_server_end_trans(zone_name, true);
if (CONTACTS_ERROR_NONE == ret) {
int fd;
fd = open(CTSVC_NOTI_CONTACT_CHANGED, O_TRUNC | O_RDWR);
}
}
else
- ctsvc_server_end_trans(false);
+ ctsvc_server_end_trans(zone_name, false);
- ctsvc_server_db_close();
- ctsvc_db_set_status(CONTACTS_DB_STATUS_NORMAL);
+ ctsvc_server_db_close(zone_name);
+ ctsvc_db_set_status(zone_name, CONTACTS_DB_STATUS_NORMAL);
INFO("End to update sort_name");
#include <sqlite3.h>
-int ctsvc_server_db_open(sqlite3 **db);
-int ctsvc_server_db_close(void);
-int ctsvc_server_update_sort(int prev_sort_primary, int prev_sort_secondary, int new_sort_primary, int new_sort_secondary);
-int ctsvc_server_insert_sdn_contact(const char *name, const char *number, int sim_slot_no);
-int ctsvc_server_delete_sdn_contact(int sim_slot_no);
-int ctsvc_server_update_collation();
-int ctsvc_server_update_sort_name();
+int ctsvc_server_db_open(const char *zone_name, sqlite3 **db);
+int ctsvc_server_db_close(const char *zone_name);
+int ctsvc_server_update_sort(const char *zone_name, int prev_sort_primary, int prev_sort_secondary, int new_sort_primary, int new_sort_secondary);
+int ctsvc_server_insert_sdn_contact(const char *zone_name, const char *name, const char *number, int sim_slot_no);
+int ctsvc_server_delete_sdn_contact(const char *zone_name, int sim_slot_no);
+int ctsvc_server_update_collation(const char *zone_name);
+int ctsvc_server_update_sort_name(const char *zone_name);
-int ctsvc_server_get_sim_id(const char *unique_id, int *sim_id);
+int ctsvc_server_get_sim_id(const char *zone_name, const char *unique_id, int *sim_id);
-#endif // __CTSVC_SERVER_SQLITE_H__
+#endif /* __CTSVC_SERVER_SQLITE_H__ */
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_setting.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_server_setting.h"
#include "ctsvc_number_utils.h"
#include "ctsvc_localize_utils.h"
+#include "ctsvc_zone.h"
#include "ctsvc_server_update.h"
+#include "ctsvc_server_zone.h"
-// It should be updated whenever DB schema including VIEW query is changed
-// You have to update user version schema.sql
-// PRAGMA user_version = 100;
-#define CTSVC_SCHEMA_VERSION 101
+/*
+ * It should be updated whenever DB schema including VIEW query is changed
+ * You have to update user version schema.sql
+ * PRAGMA user_version = 100;
+ */
+#define CTSVC_SCHEMA_VERSION 101
#ifdef ENABLE_LOG_FEATURE
static int __ctsvc_server_find_person_id_of_phonelog(sqlite3 *__db, char *normal_num,
ret = sqlite3_prepare_v2(__db, query, sizeof(query), &stmt, NULL);
if (stmt == NULL) {
- CTS_ERR("sqlite3_prepare_v2 fail(%d)", ret);
+ CTS_ERR("sqlite3_prepare_v2 Fail(%d)", ret);
if (bind_text) {
for (cursor=bind_text;cursor;cursor=cursor->next,i++)
free(cursor->data);
while ((ret = sqlite3_step(stmt))) {
id = sqlite3_column_int(stmt, 0);
number_type = sqlite3_column_int(stmt, 1);
- if (find_person_id <= 0 && id > 0) {
- find_person_id = id; // find first match person_id
+ if (find_person_id <= 0 && 0 < id) {
+ find_person_id = id; /* find first match person_id */
*find_number_type = number_type;
if (person_id <= 0)
break;
return find_person_id;
}
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
static void __ctsvc_server_number_info_update(sqlite3 *__db)
{
char query[CTS_SQL_MIN_LEN] = {0};
#ifdef ENABLE_LOG_FEATURE
- // update number of phonelog table
+ /* update number of phonelog table */
ret = snprintf(query, sizeof(query),
"SELECT id, number, person_id FROM "CTS_TABLE_PHONELOGS " "
"WHERE log_type < %d", CONTACTS_PLOG_TYPE_EMAIL_RECEIVED);
ret = sqlite3_prepare_v2(__db, query, strlen(query), &stmt, NULL);
- if(SQLITE_OK != ret) {
- CTS_ERR("sqlite3_prepare_v2() Failed(%s)", sqlite3_errmsg(__db));
+ if (SQLITE_OK != ret) {
+ CTS_ERR("sqlite3_prepare_v2() Fail(%s)", sqlite3_errmsg(__db));
return;
}
"UPDATE "CTS_TABLE_PHONELOGS" SET normal_num=?, clean_num=?, "
"minmatch=?, person_id=?, number_type=? WHERE id = ?");
ret = sqlite3_prepare_v2(__db, query, strlen(query), &update_stmt, NULL);
- if(SQLITE_OK != ret) {
- CTS_ERR("sqlite3_prepare_v2() Failed(%s)", sqlite3_errmsg(__db));
+ if (SQLITE_OK != ret) {
+ CTS_ERR("sqlite3_prepare_v2() Fail(%s)", sqlite3_errmsg(__db));
sqlite3_finalize(stmt);
return;
}
- while(SQLITE_ROW == (ret = sqlite3_step(stmt))) {
+ while (SQLITE_ROW == (ret = sqlite3_step(stmt))) {
int phonelog_id = sqlite3_column_int(stmt, 0);
char *number = (char*)sqlite3_column_text(stmt, 1);
int person_id = sqlite3_column_int(stmt, 2);
find_person_id = __ctsvc_server_find_person_id_of_phonelog(__db, normal_num, minmatch, person_id, &number_type);
}
- if (find_person_id > 0)
+ if (0 < find_person_id)
sqlite3_bind_int(update_stmt, 4, find_person_id);
- if (number_type >= 0)
+ if (0 <= number_type)
sqlite3_bind_int(update_stmt, 5, number_type);
}
sqlite3_bind_int(update_stmt, 6, phonelog_id);
ret = sqlite3_step(update_stmt);
if (SQLITE_DONE != ret) {
- CTS_ERR("sqlite3_step() Failed(%d, %s)", ret, sqlite3_errmsg(__db));
+ CTS_ERR("sqlite3_step() Fail(%d, %s)", ret, sqlite3_errmsg(__db));
break;
}
sqlite3_reset(update_stmt);
}
sqlite3_finalize(stmt);
sqlite3_finalize(update_stmt);
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
- // update number of data table
+ /* update number of data table */
snprintf(query, sizeof(query),
"SELECT id, data3 FROM "CTS_TABLE_DATA" "
"WHERE datatype = %d", CTSVC_DATA_NUMBER);
ret = sqlite3_prepare_v2(__db, query, strlen(query), &stmt, NULL);
- if(SQLITE_OK != ret) {
- CTS_ERR("sqlite3_prepare_v2() Failed(%s)", sqlite3_errmsg(__db));
+ if (SQLITE_OK != ret) {
+ CTS_ERR("sqlite3_prepare_v2() Fail(%s)", sqlite3_errmsg(__db));
return;
}
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_DATA" SET data4=?, data5=?, data6=? WHERE id = ?");
ret = sqlite3_prepare_v2(__db, query, strlen(query), &update_stmt, NULL);
- if(SQLITE_OK != ret) {
- CTS_ERR("sqlite3_prepare_v2() Failed(%s)", sqlite3_errmsg(__db));
+ if (SQLITE_OK != ret) {
+ CTS_ERR("sqlite3_prepare_v2() Fail(%s)", sqlite3_errmsg(__db));
sqlite3_finalize(stmt);
return;
}
- while(SQLITE_ROW == (ret = sqlite3_step(stmt))) {
+ while (SQLITE_ROW == (ret = sqlite3_step(stmt))) {
int id = sqlite3_column_int(stmt, 0);
char *number = (char*)sqlite3_column_text(stmt, 1);
char clean_num[SAFE_STRLEN(number)+1];
sqlite3_bind_int(update_stmt, 4, id);
ret = sqlite3_step(update_stmt);
if (SQLITE_DONE != ret) {
- CTS_ERR("sqlite3_step() Failed(%d, %s)", ret, sqlite3_errmsg(__db));
+ CTS_ERR("sqlite3_step() Fail(%d, %s)", ret, sqlite3_errmsg(__db));
break;
}
sqlite3_reset(update_stmt);
snprintf(query, sizeof(query), "PRAGMA user_version;");
ret = sqlite3_prepare_v2(db, query, strlen(query), &stmt, NULL);
- if(SQLITE_OK != ret) {
- CTS_ERR("sqlite3_prepare_v2() Failed(%s)", sqlite3_errmsg(db));
+ if (SQLITE_OK != ret) {
+ CTS_ERR("sqlite3_prepare_v2() Fail(%s)", sqlite3_errmsg(db));
return CONTACTS_ERROR_DB;
}
ret = sqlite3_step(stmt);
if (SQLITE_ROW != ret) {
- CTS_ERR("sqlite3_step() Failed(%s)", sqlite3_errmsg(db));
+ CTS_ERR("sqlite3_step() Fail(%s)", sqlite3_errmsg(db));
sqlite3_finalize(stmt);
return CONTACTS_ERROR_DB;
}
return CONTACTS_ERROR_NONE;
}
-int ctsvc_server_db_update(void)
+int ctsvc_server_db_update(const char *zone_name)
{
int ret;
int old_version = 0;
sqlite3 *__db;
char query[CTS_SQL_MIN_LEN] = {0};
- ret = db_util_open(CTSVC_DB_PATH, &__db, 0);
+ char db_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, db_path, sizeof(db_path));
+ snprintf(db_path+len, sizeof(db_path)-len, "%s", CTSVC_DB_PATH);
+
+ ret = db_util_open(db_path, &__db, 0);
RETVM_IF(ret != SQLITE_OK, CONTACTS_ERROR_DB,
- "db_util_open() Failed(%d)", ret);
+ "db_util_open() Fail(%d)", ret);
- // check DB schema version
+ /* check DB schema version */
__ctsvc_server_get_db_version(__db, &old_version);
- // Tizen 2.3a Releae 0.9.114.7 ('14/5) -----------------------------------
+ /* Tizen 2.3a Releae 0.9.114.7 ('14/5) ----------------------------------- */
if (old_version <= 100) {
ret = sqlite3_exec(__db, "CREATE INDEX name_lookup_idx1 ON name_lookup(contact_id);", NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("drop view view_person_contact_group Failed(%d) : %s", ret, errmsg);
+ CTS_ERR("drop view view_person_contact_group Fail(%d) : %s", ret, errmsg);
sqlite3_free(errmsg);
}
ret = sqlite3_exec(__db, "CREATE INDEX phone_lookup_idx1 ON phone_lookup(contact_id);", NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("drop view view_person_contact_group Failed(%d) : %s", ret, errmsg);
+ CTS_ERR("drop view view_person_contact_group Fail(%d) : %s", ret, errmsg);
sqlite3_free(errmsg);
}
- // add view_activity_photos
+ /* add view_activity_photos */
ret = sqlite3_exec(__db, "DROP VIEW view_phonelog_number", NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("drop view view_person_contact_group Failed(%d) : %s", ret, errmsg);
+ CTS_ERR("drop view view_person_contact_group Fail(%d) : %s", ret, errmsg);
sqlite3_free(errmsg);
}
- // add view_person_contact_group_assigned
- // add view_person_contact_group_not_assigned
- // change DB VIEW view_person_contact_group for performance
+ /* add view_person_contact_group_assigned */
+ /* add view_person_contact_group_not_assigned */
+ /* change DB VIEW view_person_contact_group for performance */
ret = sqlite3_exec(__db, "DROP VIEW "CTSVC_DB_VIEW_PERSON_GROUP, NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("drop view view_person_contact_group Failed(%d) : %s", ret, errmsg);
+ CTS_ERR("drop view view_person_contact_group Fail(%d) : %s", ret, errmsg);
sqlite3_free(errmsg);
}
- // change DB VIEW view_contact_group for performance
+ /* change DB VIEW view_contact_group for performance */
ret = sqlite3_exec(__db, "DROP VIEW "CTSVC_DB_VIEW_CONTACT_GROUP, NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
CTS_ERR("drop view view_contact_group Failed : %s", errmsg);
sqlite3_free(errmsg);
}
- // for number compare
+ /* for number compare */
ret = sqlite3_exec(__db, "DROP VIEW "CTSVC_DB_VIEW_NUMBER, NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("drop view %s Failed(%d) : %s", CTSVC_DB_VIEW_NUMBER, ret, errmsg);
+ CTS_ERR("drop view %s Fail(%d) : %s", CTSVC_DB_VIEW_NUMBER, ret, errmsg);
sqlite3_free(errmsg);
}
ret = sqlite3_exec(__db, "DROP VIEW "CTSVC_DB_VIEW_SPEEDIDAL, NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("drop view %s Failed(%d) : %s", CTSVC_DB_VIEW_SPEEDIDAL, ret, errmsg);
+ CTS_ERR("drop view %s Fail(%d) : %s", CTSVC_DB_VIEW_SPEEDIDAL, ret, errmsg);
sqlite3_free(errmsg);
}
ret = sqlite3_exec(__db, "DROP VIEW "CTSVC_DB_VIEW_PERSON_NUMBER, NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("drop view %s Failed(%d) : %s", CTSVC_DB_VIEW_PERSON_NUMBER, ret, errmsg);
+ CTS_ERR("drop view %s Fail(%d) : %s", CTSVC_DB_VIEW_PERSON_NUMBER, ret, errmsg);
sqlite3_free(errmsg);
}
ret = sqlite3_exec(__db, "DROP VIEW "CTSVC_DB_VIEW_CONTACT_NUMBER, NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("drop view %s Failed(%d) : %s", CTSVC_DB_VIEW_CONTACT_NUMBER, ret, errmsg);
+ CTS_ERR("drop view %s Fail(%d) : %s", CTSVC_DB_VIEW_CONTACT_NUMBER, ret, errmsg);
sqlite3_free(errmsg);
}
ret = sqlite3_exec(__db, "DROP VIEW "CTSVC_DB_VIEW_PERSON_PHONELOG, NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("drop view %s Failed(%d) : %s", CTSVC_DB_VIEW_PERSON_PHONELOG, ret, errmsg);
+ CTS_ERR("drop view %s Fail(%d) : %s", CTSVC_DB_VIEW_PERSON_PHONELOG, ret, errmsg);
sqlite3_free(errmsg);
}
ret = sqlite3_exec(__db, "ALTER TABLE "CTS_TABLE_PHONELOGS" ADD COLUMN clean_num TEXT", NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("add phonelogs.clean_num Failed(%d) : %s", ret, errmsg);
+ CTS_ERR("add phonelogs.clean_num Fail(%d) : %s", ret, errmsg);
sqlite3_free(errmsg);
}
ret = sqlite3_exec(__db, "ALTER TABLE "CTS_TABLE_PHONELOGS" ADD COLUMN sim_id TEXT", NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("add phonelogs.sim_id Failed(%d) : %s", ret, errmsg);
+ CTS_ERR("add phonelogs.sim_id Fail(%d) : %s", ret, errmsg);
sqlite3_free(errmsg);
}
ret = sqlite3_exec(__db, "ALTER TABLE "CTS_TABLE_PHONELOGS" ADD COLUMN number_type TEXT", NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("add phonelogs.number_type Failed(%d) : %s", ret, errmsg);
+ CTS_ERR("add phonelogs.number_type Fail(%d) : %s", ret, errmsg);
sqlite3_free(errmsg);
}
- // update phonelog, data number value
+ /* update phonelog, data number value */
__ctsvc_server_number_info_update(__db);
ret = sqlite3_exec(__db, "ALTER TABLE "CTS_TABLE_SDN" ADD COLUMN sim_slot_no TEXT", NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("add sdn.sim_id Failed(%d) : %s", ret, errmsg);
+ CTS_ERR("add sdn.sim_id Fail(%d) : %s", ret, errmsg);
sqlite3_free(errmsg);
}
ret = sqlite3_exec(__db, "ALTER TABLE "CTS_TABLE_ADDRESSBOOKS" ADD COLUMN smack_label TEXT", NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("add sdn.sim_id Failed(%d) : %s", ret, errmsg);
+ CTS_ERR("add sdn.sim_id Fail(%d) : %s", ret, errmsg);
sqlite3_free(errmsg);
}
ret = sqlite3_exec(__db, "UPDATE "CTS_TABLE_ADDRESSBOOKS" SET='org.tizen.contact' WHERE addressbook_id = 0", NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("add sdn.sim_id Failed(%d) : %s", ret, errmsg);
+ CTS_ERR("add sdn.sim_id Fail(%d) : %s", ret, errmsg);
sqlite3_free(errmsg);
}
ret = sqlite3_exec(__db, "DROP trigger trg_contacts_update", NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("drop trigger trg_contacts_update Failed(%d) : %s", ret, errmsg);
+ CTS_ERR("drop trigger trg_contacts_update Fail(%d) : %s", ret, errmsg);
sqlite3_free(errmsg);
}
ret = sqlite3_exec(__db,
" END;",
NULL, 0, &errmsg);
if (SQLITE_OK != ret) {
- CTS_ERR("create trigger trg_contacts_update Failed(%d) : %s", ret, errmsg);
+ CTS_ERR("create trigger trg_contacts_update Fail(%d) : %s", ret, errmsg);
sqlite3_free(errmsg);
}
snprintf(query, sizeof(query),
"PRAGMA user_version = %d", CTSVC_SCHEMA_VERSION);
ret = sqlite3_exec(__db, query, NULL, 0, &errmsg);
- if(SQLITE_OK != ret) {
- CTS_ERR("sqlite3_exec() Failed(%s)", errmsg);
+ if (SQLITE_OK != ret) {
+ CTS_ERR("sqlite3_exec() Fail(%s)", errmsg);
sqlite3_free(errmsg);
}
#ifndef __CTSVC_SERVER_UDATE_H__
#define __CTSVC_SERVER_UDATE_H__
-int ctsvc_server_db_update(void);
+int ctsvc_server_db_update(const char *zone_name);
-#endif // __CTSVC_SERVER_UDATE_H__
+#endif /* __CTSVC_SERVER_UDATE_H__ */
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_setting.h"
+#include "ctsvc_server_setting.h"
#include "ctsvc_server_utils.h"
-#ifdef ENABLE_SIM_FEATURE
#include "ctsvc_server_sim.h"
-#endif // ENABLE_SIM_FEATURE
#include "ctsvc_server_sqlite.h"
#include "ctsvc_localize.h"
+#include "ctsvc_server_zone.h"
#include "ctsvc_normalize.h"
+#include "ctsvc_mutex.h"
+#include "ctsvc_server.h"
#define CTSVC_FEATURE_TELEPHONY "http://tizen.org/feature/network.telephony"
static int system_language = -1;
-static bool _have_telephony_feature = false;
+static bool _ctsvc_have_telephony_feature = false;
+static guint _ctsvc_timeout = 0;
int ctsvc_server_load_feature_list(void)
{
- system_info_get_platform_bool(CTSVC_FEATURE_TELEPHONY, &_have_telephony_feature);
+ system_info_get_platform_bool(CTSVC_FEATURE_TELEPHONY, &_ctsvc_have_telephony_feature);
return CONTACTS_ERROR_NONE;
}
bool ctsvc_server_have_telephony_feature(void)
{
- return _have_telephony_feature;
+ return _ctsvc_have_telephony_feature;
}
inline int ctsvc_server_set_default_sort(int sort)
{
int ret = vconf_set_int(ctsvc_get_default_sort_vconfkey(), sort);
- RETVM_IF(ret<0, CONTACTS_ERROR_SYSTEM, "vconf_set_int() Failed(%d)", ret);
+ RETVM_IF(ret<0, CONTACTS_ERROR_SYSTEM, "vconf_set_int() Fail(%d)", ret);
ctsvc_set_sort_memory(sort);
return CONTACTS_ERROR_NONE;
}
char *langset = NULL;
new_langset = vconf_keynode_get_str(key);
- RETM_IF(NULL == new_langset, "vconf_keynode_get_str() return NULL");
+ if (NULL == new_langset)
+ {
+ CTS_ERR("vconf_keynode_get_str() Fail");
+ return;
+ }
langset = ctsvc_get_langset();
INFO("%s --> %s", langset, new_langset);
- if (strcmp(langset, new_langset) != 0) {
+
+ ctsvc_server_stop_timeout();
+
+ if (STRING_EQUAL != strcmp(langset, new_langset)) {
+ int i;
+ int zone_name_list_count;
+ char **zone_name_list = NULL;
bool sort_name_update = false;
+
old_primary_sort = ctsvc_get_primary_sort();
if (old_primary_sort < 0) {
RETM_IF(ret<0, "ctsvc_get_primary_sort() Fail(%d)", ret);
RETM_IF(ret<0, "ctsvc_get_secondary_sort() Fail(%d)", ret);
}
- if (strncmp(langset, "zh", strlen("zh")) == 0 ||
- strncmp(langset, "ko", strlen("ko")) == 0 ||
- strncmp(langset, "ja", strlen("ja")) == 0 ||
- strncmp(new_langset, "zh", strlen("zh")) == 0 ||
- strncmp(new_langset, "ko", strlen("ko")) == 0 ||
- strncmp(new_langset, "ja", strlen("ja")) == 0) {
+ if (STRING_EQUAL == strncmp(langset, "zh", strlen("zh")) ||
+ STRING_EQUAL == strncmp(langset, "ko", strlen("ko")) ||
+ STRING_EQUAL == strncmp(langset, "ja", strlen("ja")) ||
+ STRING_EQUAL == strncmp(new_langset, "zh", strlen("zh")) ||
+ STRING_EQUAL == strncmp(new_langset, "ko", strlen("ko")) ||
+ STRING_EQUAL == strncmp(new_langset, "ja", strlen("ja"))) {
sort_name_update = true;
}
ctsvc_set_langset(strdup(new_langset));
new_secondary_sort = CTSVC_SORT_WESTERN;
- if (sort_name_update) {
- ctsvc_server_set_default_sort(new_primary_sort);
- ctsvc_server_update_sort_name();
- }
- else {
- if (new_primary_sort != old_primary_sort)
- ret = ctsvc_server_update_sort(old_primary_sort, old_secondary_sort, new_primary_sort, new_secondary_sort);
-
- ctsvc_server_update_collation();
+ ret = ctsvc_server_zone_get_activated_zone_name_list(&zone_name_list, &zone_name_list_count);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_zone_get_activated_zone_name_list() Fail(%d)", ret);
+
+ for (i=0;i<zone_name_list_count;i++) {
+ if (sort_name_update) {
+ ctsvc_server_set_default_sort(new_primary_sort);
+ ctsvc_server_update_sort_name(zone_name_list[i]);
+ }
+ else {
+ if (new_primary_sort != old_primary_sort)
+ ret = ctsvc_server_update_sort(zone_name_list[i], old_primary_sort, old_secondary_sort, new_primary_sort, new_secondary_sort);
+ ctsvc_server_update_collation(zone_name_list[i]);
+ }
+ free(zone_name_list[i]);
}
+ free(zone_name_list);
}
+
+ ctsvc_server_start_timeout();
}
void ctsvc_server_final_configuration(void)
int ret = -1;
ret = vconf_ignore_key_changed(VCONFKEY_LANGSET, __ctsvc_server_change_language_cb);
- RETM_IF(ret<0,"vconf_ignore_key_changed(%s) Failed(%d)", VCONFKEY_LANGSET, ret);
+ RETM_IF(ret<0,"vconf_ignore_key_changed(%s) Fail(%d)", VCONFKEY_LANGSET, ret);
-#ifdef ENABLE_SIM_FEATURE
ctsvc_server_sim_final();
-#endif // ENABLE_SIM_FEATURE
}
int ctsvc_server_init_configuration(void)
ret = vconf_get_int(ctsvc_get_default_sort_vconfkey(), &sort_type);
if (ret < 0 || sort_type == CTSVC_SORT_OTHERS) {
- CTS_ERR("vconf_get_int(%s) Failed(%d)", ctsvc_get_default_sort_vconfkey() ,ret);
+ CTS_ERR("vconf_get_int(%s) Fail(%d)", ctsvc_get_default_sort_vconfkey(),ret);
sort_type = ctsvc_get_sort_type_from_language(system_language);
if (sort_type == CTSVC_SORT_OTHERS)
sort_type = CTSVC_SORT_WESTERN;
ret = vconf_notify_key_changed(VCONFKEY_LANGSET,
__ctsvc_server_change_language_cb, NULL);
- RETVM_IF(ret<0, CONTACTS_ERROR_SYSTEM, "vconf_notify_key_changed(%s) Failed(%d)",
+ RETVM_IF(ret<0, CONTACTS_ERROR_SYSTEM, "vconf_notify_key_changed(%s) Fail(%d)",
VCONFKEY_LANGSET, ret);
-#ifdef ENABLE_SIM_FEATURE
ret = ctsvc_server_sim_init();
- RETVM_IF(ret !=CONTACTS_ERROR_NONE, ret, "ctsvc_server_sim_init Failed(%d)", ret);
-#endif // ENABLE_SIM_FEATURE
+ RETVM_IF(ret !=CONTACTS_ERROR_NONE, ret, "ctsvc_server_sim_init Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
malloc_trim(0);
sqlite3_release_memory(-1);
}
+
+static gboolean _timeout_cb(gpointer user_data)
+{
+ CTS_FN_CALL;
+ ctsvc_server_quit();
+ return TRUE;
+}
+
+void ctsvc_server_start_timeout(void)
+{
+ int timeout = ctsvc_server_get_timeout_sec();
+ if (timeout < 1)
+ return;
+
+ ctsvc_mutex_lock(CTS_MUTEX_TIMEOUT);
+ if (_ctsvc_timeout)
+ g_source_remove(_ctsvc_timeout);
+ _ctsvc_timeout = g_timeout_add_seconds(timeout, _timeout_cb, NULL);
+ ctsvc_mutex_unlock(CTS_MUTEX_TIMEOUT);
+}
+
+void ctsvc_server_stop_timeout(void)
+{
+ int timeout = ctsvc_server_get_timeout_sec();
+ if (timeout < 1)
+ return;
+
+ ctsvc_mutex_lock(CTS_MUTEX_TIMEOUT);
+ if (_ctsvc_timeout)
+ g_source_remove(_ctsvc_timeout);
+ _ctsvc_timeout = 0;
+ ctsvc_mutex_unlock(CTS_MUTEX_TIMEOUT);
+}
int ctsvc_server_set_default_sort(int lang);
void ctsvc_server_trim_memory(void);
+void ctsvc_server_start_timeout(void);
+void ctsvc_server_stop_timeout(void);
-#endif // __CTSVC_SERVER_UTILS_H__
+#endif /* __CTSVC_SERVER_UTILS_H__ */
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2015 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 "contacts.h"
+#include "ctsvc_socket.h"
+#include "ctsvc_server_service.h"
+#include "ctsvc_server_bg.h"
+#include "ctsvc_db_access_control.h"
+#include "ctsvc_ipc_define.h"
+#include "ctsvc_internal.h"
+#include "ctsvc_notification.h"
+#include "ctsvc_schema_recovery.h"
+#include "ctsvc_server_update.h"
+#include "ctsvc_server_zone.h"
+#include "ctsvc_server_utils.h"
+#include "ctsvc_zone.h"
+
+vsm_context_h ctsvc_vsm_ctx = NULL;
+static bool _ctsvc_zone_enabled = false;
+
+void ctsvc_server_zone_finalize_zone(const char *zone_name)
+{
+ ctsvc_server_bg_remove_cb(zone_name);
+ ctsvc_unset_client_access_info(zone_name);
+ ctsvc_disconnect(zone_name);
+}
+
+char* ctsvc_server_zone_get_default_zone()
+{
+ if (_ctsvc_zone_enabled)
+ return CTSVC_ZONE_NAME_PERSONAL;
+ else
+ return CTSVC_ZONE_NAME_HOST;
+}
+
+void ctsvc_server_zone_initialize_zone(const char *zone_name)
+{
+ CTS_FN_CALL;
+ int ret;
+
+ RET_IF(NULL == zone_name);
+
+ if (zone_name && *zone_name)
+ _ctsvc_zone_enabled = true;
+
+ ctsvc_noti_publish_socket_initialize(zone_name);
+
+ ret = ctsvc_server_check_schema(zone_name);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_check_schema() Fail(%d)", ret);
+
+ ret = ctsvc_server_db_update(zone_name);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_db_update() Fail(%d)", ret);
+
+ ret = ctsvc_connect(zone_name);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_connect() Fail(%d)", ret);
+
+ ctsvc_set_client_access_info(zone_name, "contacts-service", NULL);
+ ctsvc_server_bg_add_cb(zone_name);
+ ctsvc_server_bg_delete_start(zone_name);
+
+ if ('\0' == *zone_name || STRING_EQUAL == g_strcmp0(zone_name, CTSVC_ZONE_NAME_PERSONAL)) {
+ ret = ctsvc_server_init_configuration();
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_server_init_configuration() Fail(%d)", ret);
+ }
+}
+
+static int _ctsvc_vsm_status_cb(vsm_zone_h zone, vsm_zone_state_t state, void *user_data)
+{
+ CTS_FN_CALL;
+
+ const char *zone_name = vsm_get_zone_name(zone);
+ CTS_DBG("state(%d) [%s]", state, zone_name);
+
+ switch (state) {
+ case VSM_ZONE_STATE_STARTING:
+ CTS_DBG("STARTING");
+ ctsvc_server_zone_initialize_zone(zone_name);
+ break;
+ case VSM_ZONE_STATE_STOPPED:
+ CTS_DBG("STOPPED");
+ break;
+ case VSM_ZONE_STATE_RUNNING:
+ CTS_DBG("RUNNING");
+ break;
+ case VSM_ZONE_STATE_STOPPING:
+ CTS_DBG("STOPPING");
+ ctsvc_server_zone_finalize_zone(zone_name);
+ break;
+ case VSM_ZONE_STATE_ABORTING:
+ CTS_DBG("ABORTING");
+ break;
+ case VSM_ZONE_STATE_FREEZING:
+ CTS_DBG("FREEZING");
+ break;
+ case VSM_ZONE_STATE_FROZEN:
+ CTS_DBG("FROZEN");
+ break;
+ case VSM_ZONE_STATE_THAWED:
+ CTS_DBG("THAWED");
+ break;
+ default:
+ CTS_DBG("###### invalid status");
+ break;
+ }
+CTS_FN_END;
+ return 0;
+}
+
+static gboolean _ctsvc_server_zone_mainloop_cb(GIOChannel *channel, GIOCondition condition, void *data)
+{
+ CTS_FN_CALL;
+ vsm_context_h ctx = data;
+ vsm_enter_eventloop(ctx, 0, 0);
+ return TRUE;
+}
+
+int ctsvc_server_zone_initialize(void)
+{
+ CTS_FN_CALL;
+ int ret = 0;
+
+ if (ctsvc_vsm_ctx) {
+ CTS_DBG("already existed");
+ ctsvc_server_zone_finalize();
+ }
+
+ vsm_context_h ctx = vsm_create_context();
+ RETVM_IF(NULL == ctx, CONTACTS_ERROR_DB, "vsm_create_context() return NULL");
+
+ ret = vsm_add_state_changed_callback(ctx, _ctsvc_vsm_status_cb, NULL);
+ WARN_IF(ret < 0, "vsm_add_state_callback() Fail(%d)", ret);
+
+ GIOChannel *channel = NULL;
+ int fd = vsm_get_poll_fd(ctx);
+ channel = g_io_channel_unix_new(fd);
+ g_io_add_watch(channel, G_IO_IN, _ctsvc_server_zone_mainloop_cb, ctx);
+ g_io_channel_unref(channel);
+
+ ctsvc_vsm_ctx = ctx;
+
+ CTS_FN_END;
+
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_server_zone_declare_link(void)
+{
+ CTS_FN_CALL;
+ int ret = 0;
+
+ if (NULL == ctsvc_vsm_ctx) {
+ ret = ctsvc_server_zone_initialize();
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_server_zone_initialize() Fail(%d)", ret);
+ }
+ vsm_context_h ctx = ctsvc_vsm_ctx;
+
+ ret = vsm_declare_link(ctx, CTSVC_SOCKET_PATH, CTSVC_SOCKET_PATH);
+ RETVM_IF(ret < 0, ret, "vsm_declare_link() Fail(%d)", ret);
+
+ ret = vsm_declare_link(ctx, CTSVC_IPC_SOCKET_PATH, CTSVC_IPC_SOCKET_PATH);
+ RETVM_IF(ret < 0, ret, "vsm_declare_link() Fail(%d)", ret);
+
+ ret = vsm_declare_link(ctx, CTSVC_IPC_SOCKET_PATH_FOR_CHANGE_SUBSCRIPTION, CTSVC_IPC_SOCKET_PATH_FOR_CHANGE_SUBSCRIPTION);
+ RETVM_IF(ret < 0, ret, "vsm_declare_link() Fail(%d)", ret);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+void ctsvc_server_zone_finalize(void)
+{
+ RET_IF(NULL == ctsvc_vsm_ctx);
+ vsm_cleanup_context(ctsvc_vsm_ctx);
+}
+
+int ctsvc_server_zone_get_zone_name_by_pid(int pid, char **p_zone_name)
+{
+ if (NULL == ctsvc_vsm_ctx)
+ ctsvc_server_zone_initialize();
+
+ RETV_IF(pid < 0, CONTACTS_ERROR_INVALID_PARAMETER);
+ RETV_IF(NULL == p_zone_name, CONTACTS_ERROR_INVALID_PARAMETER);
+
+ vsm_zone_h zone = NULL;
+ zone = vsm_lookup_zone_by_pid(ctsvc_vsm_ctx, pid);
+ RETVM_IF(NULL == zone, CONTACTS_ERROR_INVALID_PARAMETER, "vsm_lookup_zone_by_pid() return NULL");
+
+ const char *zone_name = vsm_get_zone_name(zone);
+ *p_zone_name = g_strdup(zone_name);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+static void _ctsvc_server_zone_get_activated_zone_iter_cb(vsm_zone_h zone, void *user_data)
+{
+ GList **list = user_data;
+
+ /* try to connect zone with before launched service. */
+ RET_IF(NULL == zone);
+ const char *zone_name = vsm_get_zone_name(zone);
+ RET_IF(NULL == zone_name);
+
+ *list = g_list_append(*list, strdup(zone_name));
+}
+
+int ctsvc_server_zone_get_activated_zone_name_list(char ***p_zone_name_list, int *p_list_count)
+{
+ CTS_FN_CALL;
+ int ret;
+ GList *list = NULL;
+
+ RETV_IF(NULL == p_zone_name_list, CONTACTS_ERROR_INVALID_PARAMETER);
+ RETV_IF(NULL == p_list_count, CONTACTS_ERROR_INVALID_PARAMETER);
+ *p_zone_name_list = NULL;
+ *p_list_count = 0;
+
+ RETVM_IF(NULL == ctsvc_vsm_ctx, CONTACTS_ERROR_SYSTEM, "ctsvc_vsm_ctx is NULL");
+ ret = vsm_iterate_zone(ctsvc_vsm_ctx, _ctsvc_server_zone_get_activated_zone_iter_cb, &list); /* return value is handle */
+ WARN_IF(0 != ret, "vsm_iterate_zone() Fail(%d)", ret);
+
+ GList *c;
+ char **zone_name_list = NULL;
+ int list_count = g_list_length(list);
+ zone_name_list = calloc(list_count, sizeof(char *));
+ if (NULL == zone_name_list)
+ {
+ CTS_ERR("calloc() Fail");
+ g_list_free(list);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+
+ int i=0;
+ for (c=list;c;c=c->next) {
+ char *zone_name = c->data;
+ zone_name_list[i++] = zone_name;
+ }
+ g_list_free(list);
+
+ *p_zone_name_list = zone_name_list;
+ *p_list_count = list_count;
+
+ return CONTACTS_ERROR_NONE;
+}
+
+vsm_zone_h ctsvc_server_zone_lookup_by_zone_name(const char *zone_name)
+{
+ RETVM_IF(NULL == ctsvc_vsm_ctx, NULL, "ctsvc_vsm_ctx is NULL");
+ vsm_zone_h zone = vsm_lookup_zone_by_name(ctsvc_vsm_ctx, zone_name);
+ return zone;
+}
+
+vsm_zone_h ctsvc_server_zone_join(vsm_zone_h zone)
+{
+ CTS_FN_CALL;
+ RETVM_IF(NULL == zone, NULL, "zone is NULL");
+ RETVM_IF(NULL == ctsvc_vsm_ctx, NULL, "ctsvc_vsm_ctx is NULL");
+ vsm_zone_h zone_old = vsm_join_zone(zone);
+ return zone_old;
+}
+
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2015 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.
+ *
+ */
+
+#ifndef __CTSVC_SERVER_ZONE_H__
+#define __CTSVC_SERVER_ZONE_H__
+
+#include <vasum.h>
+
+void ctsvc_server_zone_initialize_zone(const char *zone_name);
+void ctsvc_server_zone_finalize_zone(const char *zone_name);
+vsm_zone_h ctsvc_server_zone_lookup_by_zone_name(const char *zone_name);
+vsm_zone_h ctsvc_server_zone_join(vsm_zone_h zone);
+int ctsvc_server_zone_initialize(void);
+void ctsvc_server_zone_finalize(void);
+int ctsvc_server_zone_get_activated_zone_name_list(char ***zone_name_list, int *list_count);
+int ctsvc_server_zone_get_zone_name_by_pid(int pid, char **zone_name);
+int ctsvc_server_zone_declare_link(void);
+char* ctsvc_server_zone_get_default_zone();
+
+#endif /* __CTSVC_SERVER_ZONE_H__ */
+
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_mutex.h"
-#include "ctsvc_service.h"
+#include "ctsvc_server_service.h"
+#include "ctsvc_zone.h"
typedef struct {
unsigned int thread_id;
int permission;
int *write_list;
int write_list_count;
+ char *zone_name;
}ctsvc_permission_info_s;
static GList *__thread_list = NULL;
static int have_smack = -1;
-// check SMACK enable or disable
+/* check SMACK enable or disable */
static int __ctsvc_have_smack(void)
{
if (-1 == have_smack) {
return have_smack;
}
-// this function is called in mutex lock
-static ctsvc_permission_info_s * __ctsvc_find_access_info(unsigned int thread_id)
+/* this function is called in mutex lock */
+static ctsvc_permission_info_s * __ctsvc_find_access_info(const char *zone_name, unsigned int thread_id)
{
GList *cursor;
CTS_VERBOSE("thread id : %08x", thread_id);
for (cursor=__thread_list;cursor;cursor = cursor->next) {
ctsvc_permission_info_s *info = NULL;
info = cursor->data;
- if (info->thread_id == thread_id)
+ if (info->thread_id == thread_id && STRING_EQUAL == g_strcmp0(zone_name, info->zone_name))
return info;
}
return NULL;
}
-// Check the client has read permission of the file(path)
-// success : CONTACTS_ERROR_NONE
-// fail : return negative value
-int ctsvc_have_file_read_permission(const char *path)
+/*
+ * Check the client has read permission of the file(path)
+ * success : CONTACTS_ERROR_NONE
+ * fail : return negative value
+ */
+int ctsvc_have_file_read_permission(const char *zone_name, const char *file_path)
{
int ret;
int permission = -1;
int have_smack;
unsigned int thread_id;
+ char file_full_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, file_full_path, sizeof(file_full_path));
+ snprintf(file_full_path+len, sizeof(file_full_path)-len, "/%s", file_path);
+
have_smack = __ctsvc_have_smack();
- if (have_smack != 1) // smack disable
+ if (have_smack != 1) /* smack disable */
return CONTACTS_ERROR_NONE;
- // Get SMACK label of the file
- ret = smack_getlabel(path, &file_label, SMACK_LABEL_ACCESS);
- if(ret < 0) {
+ /* Get SMACK label of the file */
+ ret = smack_getlabel(file_full_path, &file_label, SMACK_LABEL_ACCESS);
+ if (ret < 0) {
CTS_ERR("smack_getlabel Fail (%d)", ret);
return CONTACTS_ERROR_SYSTEM;
}
ctsvc_mutex_lock(CTS_MUTEX_ACCESS_CONTROL);
thread_id = (unsigned int)pthread_self();
- find = __ctsvc_find_access_info(thread_id);
- if (!find) {
+ find = __ctsvc_find_access_info(zone_name, thread_id);
+ if (NULL == find) {
CTS_ERR("does not have access info of the thread");
free(file_label);
ctsvc_mutex_unlock(CTS_MUTEX_ACCESS_CONTROL);
smack_label = find->smack_label;
permission = smack_have_access(smack_label, file_label, "r");
free(file_label);
- if (permission == 0) {
+ if (permission == 0) {
CTS_ERR("Thread(0x%x), smack_have_access Fail(%d) : does not have permission", thread_id, permission);
ret = CONTACTS_ERROR_PERMISSION_DENIED;
}
return ret;
}
-// this function is called in mutex lock
-static void __ctsvc_set_permission_info(unsigned int thread_id, const char *cookie)
+/* this function is called in mutex lock */
+static void __ctsvc_set_permission_info(const char *zone_name, unsigned int thread_id, const char *cookie)
{
int ret;
int count;
else
INFO("SAMCK disabled");
- find = __ctsvc_find_access_info(thread_id);
- if (!find) {
+ find = __ctsvc_find_access_info(zone_name, thread_id);
+ if (NULL == find) {
CTS_ERR("does not have access info of the thread");
return;
}
smack_label = find->smack_label;
-
- if (!find->permission) { // check once
- // contacts-service daemon has all permission
- // Or, if smack is disabled, client has all permission
- if ((smack_label && 0 == strcmp(smack_label, "contacts-service")) || !smack_enabled) {
+ FREEandSTRDUP(find->zone_name, zone_name);
+
+ if (0 == find->permission) { /* check once */
+ /*
+ * contacts-service daemon has all permission
+ * Or, if smack is disabled, client has all permission
+ */
+ if ((smack_label && STRING_EQUAL == strcmp(smack_label, "contacts-service")) || false == smack_enabled) {
find->permission |= CTSVC_PERMISSION_CONTACT_READ;
find->permission |= CTSVC_PERMISSION_CONTACT_WRITE;
find->permission |= CTSVC_PERMISSION_PHONELOG_READ;
}
INFO("Thread(0x%x), info(%p), permission:%d", thread_id, find, find->permission);
- // white listing : core module
+ /* white listing : core module */
free(find->write_list);
find->write_list = NULL;
find->write_list_count = 0;
snprintf(query, sizeof(query),
"SELECT count(addressbook_id) FROM "CTS_TABLE_ADDRESSBOOKS);
- ret = ctsvc_query_get_first_int_result(query, &count);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &count);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_query_get_first_int_result() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_get_first_int_result() Fail(%d)", ret);
return;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id, mode, smack_label FROM "CTS_TABLE_ADDRESSBOOKS);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
return;
}
char *temp = NULL;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return;
}
mode = ctsvc_stmt_get_int(stmt, 1);
temp = ctsvc_stmt_get_text(stmt, 2);
- if (smack_label && ((0 == strcmp(temp, smack_label)) || (0 == strcmp(smack_label, "contacts-service")))) {
+ INFO("temp=%s, smack_label=%s", temp, smack_label);
+
+ if (smack_label && ((STRING_EQUAL == strcmp(temp, smack_label)) || (STRING_EQUAL == strcmp(smack_label, "contacts-service")))) {
if (find->permission & CTSVC_PERMISSION_CONTACT_WRITE)
find->write_list[write_index++] = id;
continue;
ctsvc_stmt_finalize(stmt);
}
-void ctsvc_unset_client_access_info()
+void ctsvc_unset_client_access_info(const char *zone_name)
{
ctsvc_permission_info_s *find = NULL;
ctsvc_mutex_lock(CTS_MUTEX_ACCESS_CONTROL);
- find = __ctsvc_find_access_info(pthread_self());
+ find = __ctsvc_find_access_info(zone_name, pthread_self());
if (find) {
free(find->smack_label);
free(find->write_list);
+ free(find->zone_name);
__thread_list = g_list_remove(__thread_list, find);
free(find);
}
ctsvc_mutex_unlock(CTS_MUTEX_ACCESS_CONTROL);
}
-// release permission info resource when disconnecting client
-// It is set as callback function using pims-ipc API
+/*
+ * release permission info resource when disconnecting client
+ * It is set as callback function using pims-ipc API
+ */
static void __ctsvc_client_disconnected_cb(pims_ipc_h ipc, void *user_data)
{
+ char *zone_name = NULL;
ctsvc_permission_info_s *info;
ctsvc_mutex_lock(CTS_MUTEX_ACCESS_CONTROL);
info->thread_id, info, info->permission);
free(info->smack_label);
free(info->write_list);
+ zone_name = SAFE_STRDUP(info->zone_name);
__thread_list = g_list_remove(__thread_list, info);
free(info);
}
ctsvc_mutex_unlock(CTS_MUTEX_ACCESS_CONTROL);
- // if client did not call disconnect function such as contacts_disconnect, contacts_disconnect_on_thread
- // DB will be closed in ctsvc_contacts_internal_disconnect()
- ctsvc_contacts_internal_disconnect();
+ /*
+ * if client did not call disconnect function
+ * such as contacts_disconnect, contacts_disconnect_on_thread
+ * DB will be closed in ctsvc_contacts_internal_disconnect()
+ */
+ ctsvc_contacts_internal_disconnect(zone_name);
+ free(zone_name);
}
-// Set access permission info per thread(client)
-void ctsvc_set_client_access_info(const char *smack_label, const char *cookie)
+/* Set access permission info per thread(client) */
+void ctsvc_set_client_access_info(const char *zone_name, const char *smack_label, const char *cookie)
{
unsigned int thread_id;
ctsvc_permission_info_s *info = NULL;
ctsvc_mutex_lock(CTS_MUTEX_ACCESS_CONTROL);
thread_id = (unsigned int)pthread_self();
- info = __ctsvc_find_access_info(thread_id);
+ info = __ctsvc_find_access_info(zone_name, thread_id);
if (NULL == info) {
info = calloc(1, sizeof(ctsvc_permission_info_s));
if (NULL == info) {
+ CTS_ERR("Thread(0x%x), calloc() Fail", thread_id);
ctsvc_mutex_unlock(CTS_MUTEX_ACCESS_CONTROL);
- CTS_ERR("calloc()() return NULL");
return;
}
__thread_list = g_list_append(__thread_list, info);
}
info->thread_id = thread_id;
+ info->zone_name = SAFE_STRDUP(zone_name);
FREEandSTRDUP(info->smack_label, smack_label);
- __ctsvc_set_permission_info(thread_id, cookie);
+ __ctsvc_set_permission_info(zone_name, thread_id, cookie);
- if (strcmp(smack_label, "contacts-service") != 0)
+ if (STRING_EQUAL != strcmp(smack_label, "contacts-service"))
pims_ipc_svc_set_client_disconnected_cb(__ctsvc_client_disconnected_cb, info);
ctsvc_mutex_unlock(CTS_MUTEX_ACCESS_CONTROL);
-
}
-// Whenever changing addressbook this function will be called
-// to reset read/write permssion info of each addressbook
+/*
+ * Whenever changing addressbook this function will be called
+ * to reset read/write permssion info of each addressbook
+ */
void ctsvc_reset_all_client_access_info()
{
GList *cursor;
for (cursor=__thread_list;cursor;cursor=cursor->next) {
ctsvc_permission_info_s *info = (ctsvc_permission_info_s *)cursor->data;
if (info == NULL) continue;
- __ctsvc_set_permission_info(info->thread_id, NULL);
+ char *zone_name = SAFE_STRDUP(info->zone_name);
+ __ctsvc_set_permission_info(zone_name, info->thread_id, NULL);
+ free(zone_name);
}
ctsvc_mutex_unlock(CTS_MUTEX_ACCESS_CONTROL);
}
-bool ctsvc_have_permission(int permission)
+bool ctsvc_have_permission(const char *zone_name, int permission)
{
ctsvc_permission_info_s *find = NULL;
unsigned int thread_id;
have_smack = __ctsvc_have_smack();
- if (have_smack != 1) // smack disable
+ if (have_smack != 1) /* smack disable */
return true;
ctsvc_mutex_lock(CTS_MUTEX_ACCESS_CONTROL);
thread_id = (unsigned int)pthread_self();
- find = __ctsvc_find_access_info(thread_id);
- if (!find) {
+ find = __ctsvc_find_access_info(zone_name, thread_id);
+ if (NULL == find) {
ctsvc_mutex_unlock(CTS_MUTEX_ACCESS_CONTROL);
return false;
}
return false;
}
-bool ctsvc_have_ab_write_permission(int addressbook_id)
+bool ctsvc_have_ab_write_permission(const char *zone_name, int addressbook_id)
{
int i;
unsigned int thread_id;
ctsvc_permission_info_s *find = NULL;
have_smack = __ctsvc_have_smack();
- if (have_smack != 1) // smack disable
+ if (have_smack != 1) /* smack disable */
return true;
ctsvc_mutex_lock(CTS_MUTEX_ACCESS_CONTROL);
thread_id = (unsigned int)pthread_self();
- find = __ctsvc_find_access_info(thread_id);
- if (!find) {
+ find = __ctsvc_find_access_info(zone_name, thread_id);
+ if (NULL == find) {
ctsvc_mutex_unlock(CTS_MUTEX_ACCESS_CONTROL);
CTS_ERR("can not found access info");
return false;
return false;
}
-int ctsvc_get_write_permitted_addressbook_ids(int **addressbook_ids, int *count)
+int ctsvc_get_write_permitted_addressbook_ids(const char *zone_name, int **addressbook_ids, int *count)
{
+ unsigned int thread_id;
ctsvc_permission_info_s *find = NULL;
*count = 0;
*addressbook_ids = NULL;
ctsvc_mutex_lock(CTS_MUTEX_ACCESS_CONTROL);
- find = __ctsvc_find_access_info(pthread_self());
+ thread_id = (unsigned int)pthread_self();
+ find = __ctsvc_find_access_info(zone_name, thread_id);
if (find) {
- if (find->write_list && find->write_list_count > 0) {
+ if (find->write_list && 0 < find->write_list_count) {
int size = find->write_list_count * sizeof(int);
int *list = calloc(1, size);
if (NULL == list) {
+ CTS_ERR("Thread(0x%x), calloc() Fail", thread_id);
ctsvc_mutex_unlock(CTS_MUTEX_ACCESS_CONTROL);
- CTS_ERR("calloc() return NULL");
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
+
memcpy(list, find->write_list, size);
*count = find->write_list_count;
*addressbook_ids = list;
return CONTACTS_ERROR_INTERNAL;
}
-char* ctsvc_get_client_smack_label()
+char* ctsvc_get_client_smack_label(const char *zone_name)
{
ctsvc_permission_info_s *find = NULL;
char *smack = NULL;
ctsvc_mutex_lock(CTS_MUTEX_ACCESS_CONTROL);
- find = __ctsvc_find_access_info(pthread_self());
+ find = __ctsvc_find_access_info(zone_name, pthread_self());
if (find)
smack = strdup(find->smack_label);
ctsvc_mutex_unlock(CTS_MUTEX_ACCESS_CONTROL);
return smack;
}
-int ctsvc_is_owner(int addressbook_id)
+int ctsvc_is_owner(const char *zone_name, int addressbook_id)
{
int ret;
cts_stmt stmt = NULL;
snprintf(query, sizeof(query),
"SELECT addressbook_name, smack_label FROM "CTS_TABLE_ADDRESSBOOKS" "
"WHERE addressbook_id = %d", addressbook_id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
ret = CONTACTS_ERROR_PERMISSION_DENIED;
saved_smack = ctsvc_stmt_get_text(stmt, 1);
- smack = ctsvc_get_client_smack_label();
+ smack = ctsvc_get_client_smack_label(zone_name);
- if (smack && strcmp(smack, saved_smack) == 0)
+ if (smack && STRING_EQUAL == strcmp(smack, saved_smack))
ret = CONTACTS_ERROR_NONE;
ctsvc_stmt_finalize(stmt);
free(smack);
return ret;
}
-
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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.
+ *
+ */
+
+#ifndef __CTSVC_DB_ACCESS_CONTROL_H__
+#define __CTSVC_DB_ACCESS_CONTROL_H__
+
+int ctsvc_have_file_read_permission(const char *zone_name, const char *path);
+
+void ctsvc_set_client_access_info(const char *zone_name, const char *smack_label, const char *cookie);
+void ctsvc_unset_client_access_info(const char *zone_name);
+void ctsvc_reset_all_client_access_info(void);
+
+bool ctsvc_have_permission(const char *zone_name, int permission);
+char* ctsvc_get_client_smack_label(const char *zone_name);
+
+int ctsvc_get_write_permitted_addressbook_ids(const char *zone_name, int **addressbook_ids, int *count);
+bool ctsvc_have_ab_write_permission(const char *zone_name, int addressbook_id);
+int ctsvc_is_owner(const char *zone_name, int addressbook_id);
+
+
+#endif /* __CTSVC_DB_ACCESS_CONTROL_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_init.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_view.h"
#include "ctsvc_notification.h"
#include "ctsvc_db_access_control.h"
extern ctsvc_db_plugin_info_s ctsvc_db_plugin_person;
#ifdef ENABLE_LOG_FEATURE
extern ctsvc_db_plugin_info_s ctsvc_db_plugin_phonelog;
-#endif // ENABLE_LOG_FEATURE
-#ifdef ENABLE_SIM_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
extern ctsvc_db_plugin_info_s ctsvc_db_plugin_speeddial;
extern ctsvc_db_plugin_info_s ctsvc_db_plugin_sdn;
-#endif // ENABLE_SIM_FEATURE
extern ctsvc_db_plugin_info_s ctsvc_db_plugin_activity;
extern ctsvc_db_plugin_info_s ctsvc_db_plugin_activity_photo;
extern ctsvc_db_plugin_info_s ctsvc_db_plugin_address;
static GHashTable *__ctsvc_db_view_hash_table = NULL;
#ifdef _CONTACTS_IPC_SERVER
-static bool __ctsvc_db_view_already_created = false;
+static GHashTable *ctsvc_db_view_created_table = NULL;
#endif
typedef struct {
{CTSVC_VIEW_URI_GROUP_RELATION, CTSVC_DB_VIEW_GROUP_RELATION, CTSVC_PERMISSION_CONTACT_READ, CTSVC_PERMISSION_CONTACT_WRITE, true},
{CTSVC_VIEW_URI_EXTENSION, CTSVC_DB_VIEW_EXTENSION, CTSVC_PERMISSION_CONTACT_READ, CTSVC_PERMISSION_CONTACT_WRITE, true},
-// Do not support get_all_records, get_records_with_query, get_count, get_count_with_query
-// {CTSVC_VIEW_URI_GROUPS_UPDATED_INFO, CTSVC_DB_VIEW_GROUPS_UPDATED_INFO, false},
-// {CTSVC_VIEW_URI_GROUPS_MEMBER_UPDATED_INFO, CTSVC_DB_VIEW_GROUPS_MEMBER_UPDATED_INFO, false},
-// {CTSVC_VIEW_URI_CONTACTS_UPDATED_INFO, CTSVC_DB_VIEW_CONTACTS_UPDATED_INFO, false},
-// {CTSVC_VIEW_URI_MY_PROFILE_UPDATED_INFO, NULL, false},
-// {CTSVC_VIEW_URI_GROUPRELS_UPDATED_INFO, NULL, false},
+/* Do not support get_all_records, get_records_with_query, get_count, get_count_with_query */
+/*
+ * {CTSVC_VIEW_URI_GROUPS_UPDATED_INFO, CTSVC_DB_VIEW_GROUPS_UPDATED_INFO, false},
+ * {CTSVC_VIEW_URI_GROUPS_MEMBER_UPDATED_INFO, CTSVC_DB_VIEW_GROUPS_MEMBER_UPDATED_INFO, false},
+ * {CTSVC_VIEW_URI_CONTACTS_UPDATED_INFO, CTSVC_DB_VIEW_CONTACTS_UPDATED_INFO, false},
+ * {CTSVC_VIEW_URI_MY_PROFILE_UPDATED_INFO, NULL, false},
+ * {CTSVC_VIEW_URI_GROUPRELS_UPDATED_INFO, NULL, false},
+ */
{CTSVC_VIEW_URI_READ_ONLY_PERSON_CONTACT, CTSVC_DB_VIEW_PERSON_CONTACT, CTSVC_PERMISSION_CONTACT_READ, CTSVC_PERMISSION_CONTACT_NONE, true},
{CTSVC_VIEW_URI_READ_ONLY_PERSON_NUMBER, CTSVC_DB_VIEW_PERSON_NUMBER, CTSVC_PERMISSION_CONTACT_READ, CTSVC_PERMISSION_CONTACT_NONE, true},
};
-// this function is called in mutex lock
+/* this function is called in mutex lock */
int ctsvc_db_plugin_init()
{
int i;
return;
#endif
- if (!__ctsvc_db_view_hash_table) {
+ if (NULL == __ctsvc_db_view_hash_table) {
return CONTACTS_ERROR_NONE;
}
g_hash_table_destroy(__ctsvc_db_view_hash_table);
{
db_table_info_s* db_view_info = NULL;
- if(__ctsvc_db_view_hash_table){
+ if (__ctsvc_db_view_hash_table) {
db_view_info = g_hash_table_lookup(__ctsvc_db_view_hash_table, view_uri);
if (db_view_info) {
*out_table = db_view_info->table_name;
{
db_table_info_s* db_view_info = NULL;
- if(__ctsvc_db_view_hash_table){
+ if (__ctsvc_db_view_hash_table) {
db_view_info = g_hash_table_lookup(__ctsvc_db_view_hash_table, view_uri);
if (db_view_info) {
return db_view_info->read_permission;
{
db_table_info_s* db_view_info = NULL;
- if(__ctsvc_db_view_hash_table){
+ if (__ctsvc_db_view_hash_table) {
db_view_info = g_hash_table_lookup(__ctsvc_db_view_hash_table, view_uri);
if (db_view_info) {
return db_view_info->write_permission;
{
db_table_info_s* db_view_info = NULL;
- if(__ctsvc_db_view_hash_table){
+ if (__ctsvc_db_view_hash_table) {
db_view_info = g_hash_table_lookup(__ctsvc_db_view_hash_table, view_uri);
if (db_view_info) {
return db_view_info->need_ab_access_control;
#ifdef ENABLE_LOG_FEATURE
case CTSVC_RECORD_PHONELOG:
return &ctsvc_db_plugin_phonelog;
-#endif // ENABLE_LOG_FEATURE
-#ifdef ENABLE_SIM_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
case CTSVC_RECORD_SPEEDDIAL:
return &ctsvc_db_plugin_speeddial;
case CTSVC_RECORD_SDN:
return &ctsvc_db_plugin_sdn;
-#endif // ENABLE_SIM_FEATURE
case CTSVC_RECORD_UPDATED_INFO:
case CTSVC_RECORD_RESULT:
default:
}
#ifdef _CONTACTS_IPC_SERVER
-static int __ctsvc_db_create_views()
+static int __ctsvc_db_create_views(const char *zone_name)
{
int ret;
char query[CTS_SQL_MAX_LEN] = {0};
- if( __ctsvc_db_view_already_created )
+ bool db_view_created = false;
+ if (NULL == ctsvc_db_view_created_table)
+ ctsvc_db_view_created_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
+ else
+ db_view_created = (bool)GPOINTER_TO_INT(g_hash_table_lookup(ctsvc_db_view_created_table, zone_name));
+
+ if (db_view_created)
return CONTACTS_ERROR_NONE;
- // CTSVC_DB_VIEW_CONTACT
+ /* CTSVC_DB_VIEW_CONTACT */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_CONTACT" AS "
"SELECT * FROM "CTS_TABLE_CONTACTS" WHERE deleted = 0");
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_execs() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_execs() Fail(%d)", ret);
- // CTSVC_DB_VIEW_MY_PROFILE
+ /* CTSVC_DB_VIEW_MY_PROFILE */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_MY_PROFILE" AS "
"SELECT * FROM "CTS_TABLE_MY_PROFILES" WHERE deleted = 0");
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_PERSON
+ /* CTSVC_DB_VIEW_PERSON */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_PERSON" AS "
"SELECT persons.person_id, "
"(SELECT favorite_prio FROM "CTS_TABLE_FAVORITES" WHERE person_id=persons.person_id) favorite_prio "
"FROM "CTS_TABLE_CONTACTS", "CTS_TABLE_PERSONS" "
"ON (name_contact_id = contacts.contact_id) ");
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_NAME
+ /* CTSVC_DB_VIEW_NAME */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_NAME" AS "
"SELECT id, "
"ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
"WHERE datatype = %d AND is_my_profile = 0 ",
CTSVC_DATA_NAME);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_NUMBER
+ /* CTSVC_DB_VIEW_NUMBER */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_NUMBER" AS "
"SELECT id, "
"ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
"WHERE datatype = %d AND is_my_profile = 0 ",
CTSVC_DATA_NUMBER);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_EMAIL
+ /* CTSVC_DB_VIEW_EMAIL */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_EMAIL" AS "
"SELECT id, "
"ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
"WHERE datatype = %d AND is_my_profile = 0 ",
CTSVC_DATA_EMAIL);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_ADDRESS
+ /* CTSVC_DB_VIEW_ADDRESS */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_ADDRESS" AS "
"SELECT id, "
"ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
"WHERE datatype = %d AND is_my_profile = 0 ",
CTSVC_DATA_POSTAL);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_URL
+ /* CTSVC_DB_VIEW_URL */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_URL" AS "
"SELECT id, "
"ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
"WHERE datatype = %d AND is_my_profile = 0 ",
CTSVC_DATA_URL);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_EVENT
+ /* CTSVC_DB_VIEW_EVENT */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_EVENT" AS "
"SELECT id, "
"ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
"WHERE datatype = %d AND is_my_profile = 0 ",
CTSVC_DATA_EVENT);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_GROUP_RELATION
+ /* CTSVC_DB_VIEW_GROUP_RELATION */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_GROUP_RELATION" AS "
"SELECT "CTS_TABLE_GROUP_RELATIONS".group_id, "
"FROM "CTS_TABLE_GROUP_RELATIONS", "CTS_TABLE_GROUPS" "
"ON "CTS_TABLE_GROUP_RELATIONS".group_id = "CTS_TABLE_GROUPS".group_id AND deleted = 0 "
"ORDER BY group_prio");
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_RELATIONSHIP
+ /* CTSVC_DB_VIEW_RELATIONSHIP */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_RELATIONSHIP" AS "
"SELECT id, "
"ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
"WHERE datatype = %d AND is_my_profile = 0 ",
CTSVC_DATA_RELATIONSHIP);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_IMAGE
+ /* CTSVC_DB_VIEW_IMAGE */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_IMAGE" AS "
"SELECT id, "
"ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
"WHERE datatype = %d AND is_my_profile = 0 ",
CTSVC_DATA_IMAGE);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_COMPANY
+ /* CTSVC_DB_VIEW_COMPANY */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_COMPANY" AS "
"SELECT id, "
"ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
"WHERE datatype = %d AND is_my_profile = 0 ",
CTSVC_DATA_COMPANY);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_NICKNAME
+ /* CTSVC_DB_VIEW_NICKNAME */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_NICKNAME" AS "
"SELECT id, "
"ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
"WHERE datatype = %d AND is_my_profile = 0 ",
CTSVC_DATA_NICKNAME);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_MESSENGER
+ /* CTSVC_DB_VIEW_MESSENGER */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_MESSENGER" AS "
"SELECT id, "
"ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
"WHERE datatype = %d AND is_my_profile = 0 ",
CTSVC_DATA_MESSENGER);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_NOTE
+ /* CTSVC_DB_VIEW_NOTE */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_NOTE" AS "
"SELECT id, "
"ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
"WHERE datatype = %d AND is_my_profile = 0 ",
CTSVC_DATA_NOTE);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_PROFILE
+ /* CTSVC_DB_VIEW_PROFILE */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_PROFILE" AS "
"SELECT id, "
"ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
"WHERE datatype = %d AND is_my_profile = 0 ",
CTSVC_DATA_PROFILE);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_EXTENSION
+ /* CTSVC_DB_VIEW_EXTENSION */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_EXTENSION" AS "
"SELECT id, "
"ON "CTS_TABLE_DATA".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
"WHERE datatype = %d AND is_my_profile = 0 ",
CTSVC_DATA_EXTENSION);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_ACTIVITY
+ /* CTSVC_DB_VIEW_ACTIVITY */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_ACTIVITY" AS "
"SELECT id, "
"FROM "CTS_TABLE_ACTIVITIES", "CTSVC_DB_VIEW_CONTACT" "
"ON "CTS_TABLE_ACTIVITIES".contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id "
"ORDER BY timestamp DESC");
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_ACTIVITY_PHOTOS
+ /* CTSVC_DB_VIEW_ACTIVITY_PHOTOS */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_ACTIVITY_PHOTOS" AS "
"SELECT "CTS_TABLE_ACTIVITY_PHOTOS".id, "
"sort_index "
"FROM "CTS_TABLE_ACTIVITY_PHOTOS", "CTSVC_DB_VIEW_ACTIVITY" "
"ON "CTS_TABLE_ACTIVITY_PHOTOS".activity_id = "CTSVC_DB_VIEW_ACTIVITY".id");
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
-#ifdef ENABLE_SIM_FEATURE
- // CTSVC_DB_VIEW_SPEEDIDAL
+ /* CTSVC_DB_VIEW_SPEEDIDAL */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_SPEEDIDAL" AS "
"SELECT persons.person_id, "
"AND temp_contacts.contact_id = data.contact_id "
"AND data.id = speeddials.number_id) "
"ORDER BY speeddials.speed_number");
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
-#endif // ENABLE_SIM_FEATURE
-
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_PERSON_CONTACT
+ /* CTSVC_DB_VIEW_PERSON_CONTACT */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_PERSON_CONTACT" AS "
"SELECT * FROM "CTSVC_DB_VIEW_PERSON" "
"FROM "CTS_TABLE_ADDRESSBOOKS") temp_addressbooks "
"ON temp_contacts.person_id_in_contact = "CTSVC_DB_VIEW_PERSON".person_id "
"AND addressbook_id = temp_addressbooks.addressbook_id_in_addressbooks");
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_PERSON_NUMBER
+ /* CTSVC_DB_VIEW_PERSON_NUMBER */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_PERSON_NUMBER" AS "
"SELECT * FROM "CTSVC_DB_VIEW_PERSON_CONTACT" "
"FROM "CTS_TABLE_DATA" WHERE datatype = %d AND is_my_profile = 0) temp_data "
"ON temp_data.contact_id = "CTSVC_DB_VIEW_PERSON_CONTACT".contact_id",
CTSVC_DATA_NUMBER);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_PERSON_EMAIL
+ /* CTSVC_DB_VIEW_PERSON_EMAIL */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_PERSON_EMAIL" AS "
"SELECT * FROM "CTSVC_DB_VIEW_PERSON_CONTACT" "
"FROM "CTS_TABLE_DATA" WHERE datatype = %d AND is_my_profile = 0) temp_data "
"ON temp_data.contact_id = "CTSVC_DB_VIEW_PERSON_CONTACT".contact_id",
CTSVC_DATA_EMAIL);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
#ifdef ENABLE_LOG_FEATURE
- // CTSVC_DB_VIEW_PERSON_PHONELOG
+ /* CTSVC_DB_VIEW_PERSON_PHONELOG */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_PERSON_PHONELOG" AS "
"SELECT L.id phonelog_id, "
"LEFT JOIN "CTS_TABLE_CONTACTS" C "
"ON P.name_contact_id = C.contact_id AND C.deleted = 0 "
"ORDER BY L.log_time DESC");
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
-#endif // ENABLE_LOG_FEATURE
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
+#endif /* ENABLE_LOG_FEATURE */
- // CTSVC_DB_VIEW_PERSON_USAGE
+ /* CTSVC_DB_VIEW_PERSON_USAGE */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_PERSON_USAGE" AS "
"SELECT * FROM "CTSVC_DB_VIEW_PERSON" "
"FROM "CTS_TABLE_CONTACT_STAT") usage "
"ON usage.person_id = "CTSVC_DB_VIEW_PERSON".person_id "
"ORDER BY usage.times_used");
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_PERSON_GROUP
+ /* CTSVC_DB_VIEW_PERSON_GROUP */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_PERSON_GROUP" AS "
"SELECT view_person_contact.*, groups.group_id, group_prio "
"LEFT JOIN "CTS_TABLE_GROUPS" "
"ON "CTS_TABLE_GROUP_RELATIONS".group_id = "CTS_TABLE_GROUPS".group_id "
"ORDER BY group_prio");
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_PERSON_GROUP_NOT_ASSIGNED
+ /* CTSVC_DB_VIEW_PERSON_GROUP_NOT_ASSIGNED */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_PERSON_GROUP_NOT_ASSIGNED" AS "
"SELECT * FROM "CTSVC_DB_VIEW_PERSON_CONTACT" "
"WHERE contact_id NOT IN (select contact_id FROM "CTS_TABLE_GROUP_RELATIONS" WHERE deleted = 0)");
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_PERSON_GROUP_ASSIGNED
+ /* CTSVC_DB_VIEW_PERSON_GROUP_ASSIGNED */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_PERSON_GROUP_ASSIGNED" AS "
"SELECT "CTSVC_DB_VIEW_PERSON_CONTACT".*, groups.group_id, group_prio "
CTS_TABLE_GROUP_RELATIONS".group_id = "CTS_TABLE_GROUPS".group_id AND "
CTS_TABLE_GROUP_RELATIONS".deleted = 0 "
"ORDER BY group_prio");
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_CONTACT_NUMBER
+ /* CTSVC_DB_VIEW_CONTACT_NUMBER */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_CONTACT_NUMBER" AS "
"SELECT * FROM "CTSVC_DB_VIEW_CONTACT" "
"FROM "CTS_TABLE_DATA" WHERE datatype = %d AND is_my_profile = 0) temp_data "
"ON temp_data.contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id",
CTSVC_DATA_NUMBER);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_CONTACT_EMAIL
+ /* CTSVC_DB_VIEW_CONTACT_EMAIL */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_CONTACT_EMAIL" AS "
"SELECT * FROM "CTSVC_DB_VIEW_CONTACT" "
"FROM "CTS_TABLE_DATA" WHERE datatype = %d AND is_my_profile = 0) temp_data "
"ON temp_data.contact_id = "CTSVC_DB_VIEW_CONTACT".contact_id",
CTSVC_DATA_EMAIL);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_CONTACT_GROUP
+ /* CTSVC_DB_VIEW_CONTACT_GROUP */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_CONTACT_GROUP" AS "
"SELECT C.*, groups.group_id, group_name "
CTS_TABLE_GROUP_RELATIONS".contact_id = C.contact_id "
"LEFT JOIN "CTS_TABLE_GROUPS" "
"ON "CTS_TABLE_GROUP_RELATIONS".group_id = "CTS_TABLE_GROUPS".group_id");
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- // CTSVC_DB_VIEW_CONTACT_ACTIVITY
+ /* CTSVC_DB_VIEW_CONTACT_ACTIVITY */
snprintf(query, sizeof(query),
"CREATE VIEW IF NOT EXISTS "CTSVC_DB_VIEW_CONTACT_ACTIVITY" AS "
"SELECT A.contact_id, "
"ON A.contact_id = AC.contact_id "
"AND A.addressbook_id = AB.addressbook_id "
"ORDER BY timestamp DESC");
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- __ctsvc_db_view_already_created = true;
+ g_hash_table_replace(ctsvc_db_view_created_table, g_strdup(zone_name), GINT_TO_POINTER((int)true));
return CONTACTS_ERROR_NONE;
}
#endif
-int ctsvc_db_init()
+int ctsvc_db_init(const char *zone_name)
{
int ret = CONTACTS_ERROR_NONE;
- ret = ctsvc_db_open();
+ ret = ctsvc_db_open(zone_name);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_db_open() Failed(%d)", ret);
+ CTS_ERR("ctsvc_db_open() Fail(%d)", ret);
return ret;
}
#ifdef _CONTACTS_IPC_SERVER
- ret = __ctsvc_db_create_views();
+ ret = __ctsvc_db_create_views(zone_name);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("__ctsvc_db_create_views() Failed(%d)", ret);
+ CTS_ERR("__ctsvc_db_create_views() Fail(%d)", ret);
return ret;
}
#endif
return ret;
}
-int ctsvc_db_deinit()
+int ctsvc_db_deinit(const char *zone_name)
{
int ret = CONTACTS_ERROR_NONE;
- ret = ctsvc_db_close();
+ ret = ctsvc_db_close(zone_name);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_db_close() Failed(%d)", ret);
+ CTS_ERR("ctsvc_db_close() Fail(%d)", ret);
return ret;
}
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_DB_INIT_H__
-#define __TIZEN_SOCIAL_CTSVC_DB_INIT_H__
+#ifndef __CTSVC_DB_INIT_H__
+#define __CTSVC_DB_INIT_H__
#include "contacts.h"
#include "ctsvc_struct.h"
-typedef int (*ctsvc_db_insert_record_cb)( contacts_record_h record, int *id );
-typedef int (*ctsvc_db_get_record_cb)( int id, contacts_record_h* out_record );
-typedef int (*ctsvc_db_update_record_cb)( contacts_record_h record );
-typedef int (*ctsvc_db_delete_record_cb)( int id );
-typedef int (*ctsvc_db_replace_record_cb)( contacts_record_h record, int id );
+typedef int (*ctsvc_db_insert_record_cb)(const char *zone_name, contacts_record_h record, int *id);
+typedef int (*ctsvc_db_get_record_cb)(const char *zone_name, int id, contacts_record_h* out_record);
+typedef int (*ctsvc_db_update_record_cb)(const char *zone_name, contacts_record_h record);
+typedef int (*ctsvc_db_delete_record_cb)(const char *zone_name, int id);
+typedef int (*ctsvc_db_replace_record_cb)(const char *zone_name, contacts_record_h record, int id);
-typedef int (*ctsvc_db_insert_records_cb)(const contacts_list_h in_list, int **ids);
-typedef int (*ctsvc_db_update_records_cb)(const contacts_list_h in_list);
-typedef int (*ctsvc_db_delete_records_cb)(int ids[], int count);
-typedef int (*ctsvc_db_replace_records_cb)(const contacts_list_h in_list, int ids[], int count);
+typedef int (*ctsvc_db_insert_records_cb)(const char *zone_name, const contacts_list_h in_list, int **ids);
+typedef int (*ctsvc_db_update_records_cb)(const char *zone_name, const contacts_list_h in_list);
+typedef int (*ctsvc_db_delete_records_cb)(const char *zone_name, int ids[], int count);
+typedef int (*ctsvc_db_replace_records_cb)(const char *zone_name, const contacts_list_h in_list, int ids[], int count);
-typedef int (*ctsvc_db_get_all_records_cb)( int offset, int limit, contacts_list_h* out_list );
-typedef int (*ctsvc_db_get_records_with_query_cb)( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-typedef int (*ctsvc_db_get_count_cb)( int *out_count);
-typedef int (*ctsvc_db_get_count_with_query_cb)( contacts_query_h query, int *out_count);
+typedef int (*ctsvc_db_get_all_records_cb)(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+typedef int (*ctsvc_db_get_records_with_query_cb)(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
+typedef int (*ctsvc_db_get_count_cb)(const char *zone_name, int *out_count);
+typedef int (*ctsvc_db_get_count_with_query_cb)(const char *zone_name, contacts_query_h query, int *out_count);
typedef struct {
bool is_query_only;
ctsvc_db_get_count_with_query_cb get_count_with_query;
} ctsvc_db_plugin_info_s;
-int ctsvc_db_init();
-int ctsvc_db_deinit();
+int ctsvc_db_init(const char *zone_name);
+int ctsvc_db_deinit(const char *zone_name);
int ctsvc_db_plugin_init();
int ctsvc_db_plugin_deinit();
bool ctsvc_should_ab_access_control(const char *view_uri);
-#endif // __TIZEN_SOCIAL_CTSVC_DB_INIT_H__
+#endif /* __CTSVC_DB_INIT_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_list.h"
#include "ctsvc_db_plugin_activity_photo_helper.h"
#include "ctsvc_db_plugin_contact_helper.h"
#include "ctsvc_db_init.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_record.h"
#include "ctsvc_db_query.h"
#include "ctsvc_notification.h"
#include "ctsvc_db_access_control.h"
-static int __ctsvc_db_activity_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_activity_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_activity_update_record( contacts_record_h record );
-static int __ctsvc_db_activity_delete_record( int id );
-static int __ctsvc_db_activity_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_activity_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_activity_insert_records(const contacts_list_h in_list, int **ds);
-//static int __ctsvc_db_activity_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_activity_delete_records( int ids[], int count);
+static int __ctsvc_db_activity_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_activity_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_activity_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_activity_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_activity_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_activity_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_activity = {
.is_query_only = false,
.delete_record = __ctsvc_db_activity_delete_record,
.get_all_records = __ctsvc_db_activity_get_all_records,
.get_records_with_query = __ctsvc_db_activity_get_records_with_query,
- .insert_records = NULL, //__ctsvc_db_activity_insert_records,
- .update_records = NULL, //__ctsvc_db_activity_update_records,
- .delete_records = NULL, //__ctsvc_db_activity_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_activity_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_activity_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int activity_id;
RETVM_IF(activity->contact_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,
"The contact_id(%d) does not exist", activity->contact_id);
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "contacts_svc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "contacts_svc_begin_trans() Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT addressbook_id from %s WHERE contact_id = %d",
CTSVC_DB_VIEW_CONTACT, activity->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
- if (CONTACTS_ERROR_NONE != ret ) {
- ctsvc_end_trans(false);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
+ if (CONTACTS_ERROR_NONE != ret) {
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_ERR("No data : contact id (%d)", activity->contact_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- ret = ctsvc_is_owner(addressbook_id);
+ ret = ctsvc_is_owner(zone_name, addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
if (CONTACTS_ERROR_PERMISSION_DENIED == ret)
CTS_ERR("Does not have permission of address_book (%d)", addressbook_id);
else
CTS_ERR("ctsvc_is_owner Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
"VALUES(%d, ?, ?, %d, ?, ?)",
activity->contact_id, activity->timestamp);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
CTS_ERR("DB error : ctsvc_query_prepare() Failed9(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- activity_id = ctsvc_db_get_last_insert_id();
+ activity_id = ctsvc_db_get_last_insert_id(zone_name);
ctsvc_stmt_finalize(stmt);
if (activity->photos) {
ret = contacts_list_get_count((contacts_list_h)activity->photos, &count);
- if(CONTACTS_ERROR_NONE == ret && 0 < count) {
+ if (CONTACTS_ERROR_NONE == ret && 0 < count) {
ctsvc_activity_photo_s *photo = NULL;
contacts_record_h record = NULL;
do {
contacts_list_get_current_record_p((contacts_list_h)activity->photos, &record);
photo = (ctsvc_activity_photo_s*)record;
- ret = ctsvc_db_activity_photo_insert((contacts_record_h)photo, activity_id, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_activity_photo_insert(zone_name, (contacts_record_h)photo, activity_id, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : return (%d)", ret);
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next((contacts_list_h)activity->photos));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next((contacts_list_h)activity->photos));
}
}
- ctsvc_set_activity_noti();
- ctsvc_set_person_noti();
+ ctsvc_set_activity_noti(zone_name);
+ ctsvc_set_person_noti(zone_name);
if (id)
*id = activity_id;
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(zone_name, true);
if (ret < CONTACTS_ERROR_NONE)
return ret;
else
}
-static int __ctsvc_db_activity_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_activity_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
char query[CTS_SQL_MAX_LEN] = {0};
int ret;
"timestamp, service_operation, uri "
"FROM "CTSVC_DB_VIEW_ACTIVITY" WHERE id = %d", id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
__ctsvc_db_activity_value_set(stmt, &record);
ctsvc_stmt_finalize(stmt);
- ctsvc_db_activity_photo_get_records(id, record);
+ ctsvc_db_activity_photo_get_records(zone_name, id, record);
*out_record = (contacts_record_h)record;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_activity_update_record( contacts_record_h record )
+static int __ctsvc_db_activity_update_record(const char *zone_name, contacts_record_h record)
{
CTS_ERR("Invalid operation : activity can not update, only insert/delete");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_db_activity_delete_record( int id )
+static int __ctsvc_db_activity_delete_record(const char *zone_name, int id)
{
int ret;
int addressbook_id;
char query[CTS_SQL_MAX_LEN] = {0};
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" "
"WHERE contact_id = (SELECT contact_id FROM "CTSVC_DB_VIEW_ACTIVITY" WHERE id = %d)", id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
- if (CONTACTS_ERROR_NONE != ret ) {
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
+ if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : id (%d)", id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_is_owner(addressbook_id);
+ ret = ctsvc_is_owner(zone_name, addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
if (CONTACTS_ERROR_PERMISSION_DENIED == ret)
CTS_ERR("Does not have permission of address_book (%d)", addressbook_id);
else
CTS_ERR("ctsvc_is_owner Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
snprintf(query, sizeof(query),
"DELETE FROM "CTS_TABLE_ACTIVITIES" WHERE id = %d", id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_activity_noti();
- ctsvc_set_person_noti();
+ ctsvc_set_activity_noti(zone_name);
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(zone_name, true);
if (ret < CONTACTS_ERROR_NONE)
return ret;
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_activity_get_all_records( int offset, int limit,
- contacts_list_h* out_list )
+static int __ctsvc_db_activity_get_all_records(const char *zone_name, int offset, int limit,
+ contacts_list_h* out_list)
{
int ret;
int len;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
}
activity_id = ctsvc_stmt_get_int(stmt, 0);
- ret = contacts_db_get_record(_contacts_activity._uri, activity_id, &record);
+ ret = ctsvc_db_get_record(zone_name, _contacts_activity._uri, activity_id, &record);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : contacts_db_get_record() Failed(%d)", ret);
+ CTS_ERR("DB error : contacts_db_get_record() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_activity_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_activity_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list)
{
int ret;
int i;
}
}
}
- else
+ else {
+ s_query->projection_count = 0;
had_activity_id = true;
+ }
- if (!had_activity_id) {
- unsigned int *temp = realloc(s_query->projection, s_query->projection_count+1);
- RETVM_IF(NULL == temp, CONTACTS_ERROR_OUT_OF_MEMORY, "realloc() return NULL");
- s_query->projection = temp;
+ if (false == had_activity_id) {
+ s_query->projection = realloc(s_query->projection, s_query->projection_count+1);
+ if (NULL == s_query->projection) {
+ CTS_ERR("realloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
s_query->projection[s_query->projection_count] = CTSVC_PROPERTY_ACTIVITY_ID;
s_query->projection_count++;
}
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ret = ctsvc_record_set_projection_flags(record, s_query->projection,
s_query->projection_count, s_query->property_count);
- if(CONTACTS_ERROR_NONE != ret)
+ if (CONTACTS_ERROR_NONE != ret)
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_ACTIVITY_SOURCE_NAME:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(activity->source_name);
activity->source_name = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_ACTIVITY_STATUS:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(activity->status);
activity->status = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_ACTIVITY_TIMESTAMP:
break;
case CTSVC_PROPERTY_ACTIVITY_SERVICE_OPERATION:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(activity->service_operation);
activity->service_operation = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_ACTIVITY_URI:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(activity->uri);
activity->uri = SAFE_STRDUP(temp);
break;
default:
break;
}
}
- ctsvc_db_activity_photo_get_records(activity_id, record);
+ ctsvc_db_activity_photo_get_records(zone_name, activity_id, record);
ctsvc_list_prepend(list, record);
}
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-//static int __ctsvc_db_activity_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_activity_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_activity_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
*/
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_db_plugin_activity_photo_helper.h"
#include "ctsvc_db_query.h"
#include "ctsvc_list.h"
-static int __ctsvc_db_activity_photo_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_activity_photo_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_activity_photo_update_record( contacts_record_h record );
-static int __ctsvc_db_activity_photo_delete_record( int id );
-static int __ctsvc_db_activity_photo_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_activity_photo_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
+static int __ctsvc_db_activity_photo_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_activity_photo_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_activity_photo_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_activity_photo_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_activity_photo_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_activity_photo_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_activity_photo = {
.is_query_only = false,
.replace_records = NULL,
};
-static int __ctsvc_db_activity_photo_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_activity_photo_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int addressbook_id;
RETVM_IF(NULL == activity_photo->photo_url, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : photo_url is NULL");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans() Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id from "CTSVC_DB_VIEW_CONTACT" "
"WHERE contact_id = (SELECT contact_id from "CTS_TABLE_ACTIVITIES" WHERE id = %d)", activity_photo->activity_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_ERR("No data : activity_id (%d) is not exist", activity_photo->activity_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to insert this activity_photo record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_activity_photo_insert(record, activity_photo->activity_id, id);
+ ret = ctsvc_db_activity_photo_insert(zone_name, record, activity_photo->activity_id, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_activity_photo_insert() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_activity_photo_insert() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_end_trans(true);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_activity_photo_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_activity_photo_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"WHERE id = %d",
id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_activity_photo_update_record( contacts_record_h record )
+static int __ctsvc_db_activity_photo_update_record(const char *zone_name, contacts_record_h record)
{
int ret;
int addressbook_id;
RETVM_IF(NULL == activity_photo->photo_url, CONTACTS_ERROR_INVALID_PARAMETER, "photo_url is empty");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
"WHERE contact_id = (SELECT contact_id from "CTS_TABLE_ACTIVITIES" WHERE id = %d)",
activity_photo->activity_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : activity_id (%d) is not exist", activity_photo->activity_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this activity_photo record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_activity_photo_update(record);
+ ret = ctsvc_db_activity_photo_update(zone_name, record);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("Update record Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("Update record Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_end_trans(true);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_activity_photo_delete_record( int id )
+static int __ctsvc_db_activity_photo_delete_record(const char *zone_name, int id)
{
int ret;
char query[CTS_SQL_MAX_LEN] = {0};
int addressbook_id;
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans() Fail(%d)", ret);
return ret;
}
"ON C.contact_id = A.contact_id AND A.id = P.activity_id "
"WHERE P.id = %d", id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : id (%d) is not exist", id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this activity_photo record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_activity_photo_delete(id);
+ ret = ctsvc_db_activity_photo_delete(zone_name, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_activity_photo_delete() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_activity_photo_delete() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_end_trans(true);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_activity_photo_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_activity_photo_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int len;
int ret;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB : ctsvc_stmt_step fail(%d)", ret);
+ CTS_ERR("DB : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_activity_photo_get_records_with_query(contacts_query_h query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_activity_photo_get_records_with_query(const char *zone_name, contacts_query_h query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ret = ctsvc_record_set_projection_flags(record, s_query->projection,
s_query->projection_count, s_query->property_count);
- if(CONTACTS_ERROR_NONE != ret)
+ if (CONTACTS_ERROR_NONE != ret)
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_ACTIVITY_PHOTO_URL:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(activity_photo->photo_url);
activity_photo->photo_url = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_ACTIVITY_PHOTO_SORT_INDEX:
*/
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_plugin_activity_photo_helper.h"
int start_count = 0;
ret = contacts_record_create(_contacts_activity_photo._uri, (contacts_record_h *)&activity_photo);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
activity_photo->id = ctsvc_stmt_get_int(stmt, start_count++);
activity_photo->activity_id = ctsvc_stmt_get_int(stmt, start_count++);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_activity_photo_insert(contacts_record_h record, int activity_id, int *id)
+int ctsvc_db_activity_photo_insert(const char *zone_name, contacts_record_h record, int activity_id, int *id)
{
int ret;
cts_stmt stmt = NULL;
"VALUES(%d, ?, %d)",
activity_id, activity_photo->sort_index);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
sqlite3_bind_text(stmt, 1, activity_photo->photo_url, strlen(activity_photo->photo_url), SQLITE_STATIC);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
if (id)
- *id = ctsvc_db_get_last_insert_id();
+ *id = ctsvc_db_get_last_insert_id(zone_name);
ctsvc_stmt_finalize(stmt);
- ctsvc_set_activity_noti();
- ctsvc_set_activity_photo_noti();
+ ctsvc_set_activity_noti(zone_name);
+ ctsvc_set_activity_photo_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_activity_photo_update(contacts_record_h record)
+int ctsvc_db_activity_photo_update(const char *zone_name, contacts_record_h record)
{
int id;
int ret = CONTACTS_ERROR_NONE;
ctsvc_activity_photo_s *activity_photo = (ctsvc_activity_photo_s*)record;
char query[CTS_SQL_MIN_LEN] = {0};
- RETVM_IF(!activity_photo->id, CONTACTS_ERROR_INVALID_PARAMETER, "activity_photo has no ID.");
+ RETVM_IF(0 == activity_photo->id, CONTACTS_ERROR_INVALID_PARAMETER, "activity_photo has no ID.");
RETVM_IF(CTSVC_PROPERTY_FLAG_DIRTY != (activity_photo->base.property_flag & CTSVC_PROPERTY_FLAG_DIRTY), CONTACTS_ERROR_NONE, "No update");
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_ACTIVITY_PHOTOS" WHERE id = %d", activity_photo->id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
RETV_IF(ret != CONTACTS_ERROR_NONE, ret);
do {
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_ACTIVITY_PHOTOS, activity_photo->id))) break;
- ctsvc_set_activity_noti();
- ctsvc_set_activity_photo_noti();
+ if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(zone_name, set, bind_text, CTS_TABLE_ACTIVITY_PHOTOS, activity_photo->id))) break;
+ ctsvc_set_activity_noti(zone_name);
+ ctsvc_set_activity_photo_noti(zone_name);
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
return ret;
}
-int ctsvc_db_activity_photo_delete(int id)
+int ctsvc_db_activity_photo_delete(const char *zone_name, int id)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_ACTIVITY_PHOTOS" WHERE id = %d", id);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Fail(%d)", ret);
- ctsvc_set_activity_noti();
- ctsvc_set_activity_photo_noti();
+ ctsvc_set_activity_noti(zone_name);
+ ctsvc_set_activity_photo_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_activity_photo_get_records(int activity_id, contacts_record_h record_activity)
+int ctsvc_db_activity_photo_get_records(const char *zone_name, int activity_id, contacts_record_h record_activity)
{
char query[CTS_SQL_MAX_LEN] = {0};
int ret;
"FROM "CTSVC_DB_VIEW_ACTIVITY_PHOTOS" WHERE activity_id = %d "
"ORDER BY sort_index ASC", activity_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
#define __CTSVC_DB_PLUGIN_ACTIVITY_PHOTO_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
-int ctsvc_db_activity_photo_insert(contacts_record_h record, int activity_id, int *id);
-int ctsvc_db_activity_photo_update(contacts_record_h record);
-int ctsvc_db_activity_photo_delete(int id);
+int ctsvc_db_activity_photo_insert(const char *zone_name, contacts_record_h record, int activity_id, int *id);
+int ctsvc_db_activity_photo_update(const char *zone_name, contacts_record_h record);
+int ctsvc_db_activity_photo_delete(const char *zone_name, int id);
int ctsvc_db_activity_photo_get_value_from_stmt(cts_stmt stmt, contacts_record_h *record);
-int ctsvc_db_activity_photo_get_records(int activity_id, contacts_record_h record_activity);
+int ctsvc_db_activity_photo_get_records(const char *zone_name, int activity_id, contacts_record_h record_activity);
-#endif // __CTSVC_DB_PLUGIN_ACTIVITY_PHOTO_HELPER_H__
\ No newline at end of file
+#endif /* __CTSVC_DB_PLUGIN_ACTIVITY_PHOTO_HELPER_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_plugin_contact_helper.h"
#include "ctsvc_db_plugin_address_helper.h"
#include "ctsvc_notification.h"
#include "ctsvc_db_access_control.h"
-static int __ctsvc_db_address_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_address_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_address_update_record( contacts_record_h record );
-static int __ctsvc_db_address_delete_record( int id );
-static int __ctsvc_db_address_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_address_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_address_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_address_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_address_delete_records( int ids[], int count);
+static int __ctsvc_db_address_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_address_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_address_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_address_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_address_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_address_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_address = {
.is_query_only = false,
.delete_record = __ctsvc_db_address_delete_record,
.get_all_records = __ctsvc_db_address_get_all_records,
.get_records_with_query = __ctsvc_db_address_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_address_insert_records,
- .update_records = NULL,//__ctsvc_db_address_update_records,
- .delete_records = NULL,//__ctsvc_db_address_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_address_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_address_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int addressbook_id;
&& NULL == address->country,
CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : address is NULL");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", address->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_ERR("No data : contact_id (%d) is not exist", address->contact_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this address record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_address_insert(record, address->contact_id, false, id);
+ ret = ctsvc_db_address_insert(zone_name, record, address->contact_id, false, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(address->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, address->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(zone_name, true);
if (ret < CONTACTS_ERROR_NONE)
return ret;
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_address_update_record( contacts_record_h record )
+static int __ctsvc_db_address_update_record(const char *zone_name, contacts_record_h record)
{
int ret;
int addressbook_id;
NULL == address->locality && NULL == address->street && NULL == address->extended &&
NULL == address->country, CONTACTS_ERROR_INVALID_PARAMETER, "address is empty");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", address->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : contact_id (%d) is not exist", address->contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this address record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_address_update(record, false);
+ ret = ctsvc_db_address_update(zone_name, record, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("update record failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("update record Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(address->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, address->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(zone_name, true);
if (ret < CONTACTS_ERROR_NONE)
return ret;
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_address_delete_record( int id )
+static int __ctsvc_db_address_delete_record(const char *zone_name, int id)
{
int ret;
int contact_id;
int addressbook_id;
char query[CTS_SQL_MIN_LEN] = {0};
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT contact_id, addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" "
"WHERE contact_id = (SELECT contact_id FROM "CTS_TABLE_DATA" WHERE id = %d)", id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
CTS_ERR("DB error :ctsvc_query_prepare Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
CTS_ERR("The id(%d) is Invalid(%d)", id, ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
addressbook_id = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this address record : addresbook_id(%d)", addressbook_id);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_address_delete(id, false);
+ ret = ctsvc_db_address_delete(zone_name, id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_address_delete() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_address_delete() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(zone_name, true);
if (ret < CONTACTS_ERROR_NONE)
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_address_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_address_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
char query[CTS_SQL_MAX_LEN] = {0};
int ret;
"WHERE datatype=%d AND id = %d ",
CTSVC_DATA_POSTAL, id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_address_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_address_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int len;
int ret;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_address_get_records_with_query( contacts_query_h query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_address_get_records_with_query(const char *zone_name, contacts_query_h query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ret = ctsvc_record_set_projection_flags(record, s_query->projection,
s_query->projection_count, s_query->property_count);
- if(CONTACTS_ERROR_NONE != ret)
+ if (CONTACTS_ERROR_NONE != ret)
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_ADDRESS_LABEL:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(address->label);
address->label = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_ADDRESS_POSTBOX:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(address->pobox);
address->pobox = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_ADDRESS_POSTAL_CODE:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(address->postalcode);
address->postalcode = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_ADDRESS_REGION:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(address->region);
address->region = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_ADDRESS_LOCALITY:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(address->locality);
address->locality = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_ADDRESS_STREET:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(address->street);
address->street = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_ADDRESS_COUNTRY:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(address->country);
address->country = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_ADDRESS_EXTENDED:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(address->extended);
address->extended = SAFE_STRDUP(temp);
break;
default:
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-
-//static int __ctsvc_db_address_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_address_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_address_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_plugin_address_helper.h"
ctsvc_address_s *address;
ret = contacts_record_create(_contacts_address._uri, (contacts_record_h *)&address);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
address->id = ctsvc_stmt_get_int(stmt, start_count++);
address->contact_id = ctsvc_stmt_get_int(stmt, start_count++);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_address_reset_default(int address_id, int contact_id)
+static int __ctsvc_db_address_reset_default(const char *zone_name, int address_id, int contact_id)
{
int ret;
char query[CTS_SQL_MAX_LEN] = {0};
"UPDATE "CTS_TABLE_DATA" SET is_default = 0, is_primary_default = 0 "
"WHERE id != %d AND contact_id = %d AND datatype = %d",
address_id, contact_id, CTSVC_DATA_POSTAL);
- ret = ctsvc_query_exec(query);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
-int ctsvc_db_address_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id)
+int ctsvc_db_address_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id)
{
int ret;
int address_id;
"VALUES(%d, %d, %d, %d, %d, ?, ?, ?, ?, ?, ?, ?, ?)",
contact_id, is_my_profile, CTSVC_DATA_POSTAL, address->is_default, address->type);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
if (address->label)
ctsvc_stmt_bind_text(stmt, 1, address->label);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
- address_id = ctsvc_db_get_last_insert_id();
+ address_id = ctsvc_db_get_last_insert_id(zone_name);
if (id)
*id = address_id;
ctsvc_stmt_finalize(stmt);
if (ctsvc_record_check_property_flag((ctsvc_record_s *)record, _contacts_address.is_default, CTSVC_PROPERTY_FLAG_DIRTY)) {
if (address->is_default)
- __ctsvc_db_address_reset_default(address_id, contact_id);
+ __ctsvc_db_address_reset_default(zone_name, address_id, contact_id);
}
- if (!is_my_profile)
- ctsvc_set_address_noti();
+ if (false == is_my_profile)
+ ctsvc_set_address_noti(zone_name);
}
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_address_update(contacts_record_h record, bool is_my_profile)
+int ctsvc_db_address_update(const char *zone_name, contacts_record_h record, bool is_my_profile)
{
int id;
int ret = CONTACTS_ERROR_NONE;
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE id = %d", address->id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
RETV_IF(ret != CONTACTS_ERROR_NONE, ret);
if (ctsvc_record_check_property_flag((ctsvc_record_s *)record, _contacts_address.is_default, CTSVC_PROPERTY_FLAG_DIRTY)) {
if (address->is_default)
- __ctsvc_db_address_reset_default(address->id, address->contact_id);
+ __ctsvc_db_address_reset_default(zone_name, address->id, address->contact_id);
}
do {
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_DATA, address->id))) break;
- if (!is_my_profile)
- ctsvc_set_address_noti();
+ if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(zone_name, set, bind_text, CTS_TABLE_DATA, address->id))) break;
+ if (false == is_my_profile)
+ ctsvc_set_address_noti(zone_name);
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
return ret;
}
-int ctsvc_db_address_delete(int id, bool is_my_profile)
+int ctsvc_db_address_delete(const char *zone_name, int id, bool is_my_profile)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_DATA" WHERE datatype = %d AND id = %d",
CTSVC_DATA_POSTAL, id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
- if (!is_my_profile)
- ctsvc_set_address_noti();
+ if (false == is_my_profile)
+ ctsvc_set_address_noti(zone_name);
return ret;
}
#define __CTSVC_DB_PLUGIN_ADDRESS_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
-int ctsvc_db_address_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id);
-int ctsvc_db_address_update(contacts_record_h record, bool is_my_profile);
-int ctsvc_db_address_delete(int id, bool is_my_profile);
+int ctsvc_db_address_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id);
+int ctsvc_db_address_update(const char *zone_name, contacts_record_h record, bool is_my_profile);
+int ctsvc_db_address_delete(const char *zone_name, int id, bool is_my_profile);
int ctsvc_db_address_get_value_from_stmt(cts_stmt stmt, contacts_record_h *record, int start_count);
-#endif // __CTSVC_DB_PLUGIN_ADDRESS_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_ADDRESS_HELPER_H__ */
\ No newline at end of file
* limitations under the License.
*
*/
-#ifdef CTS_MOBILE
#include <account.h>
-#endif // CTS_MOBILE
-
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_list.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_plugin_person_helper.h"
-#include "ctsvc_person.h"
+#include "ctsvc_server_person.h"
#include "ctsvc_record.h"
#include "ctsvc_notification.h"
+#include "ctsvc_server_zone.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_db_plugin_addressbook_helper.h"
-static int __ctsvc_db_addressbook_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_addressbook_get_record( int id, contacts_record_h* record );
-static int __ctsvc_db_addressbook_update_record( contacts_record_h record );
-static int __ctsvc_db_addressbook_delete_record( int id );
-static int __ctsvc_db_addressbook_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_addressbook_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_addressbook_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_addressbook_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_addressbook_delete_records(int ids[], int count);
+static int __ctsvc_db_addressbook_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_addressbook_get_record(const char *zone_name, int id, contacts_record_h* record);
+static int __ctsvc_db_addressbook_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_addressbook_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_addressbook_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_addressbook_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_addressbook = {
.is_query_only = false,
.delete_record = __ctsvc_db_addressbook_delete_record,
.get_all_records = __ctsvc_db_addressbook_get_all_records,
.get_records_with_query = __ctsvc_db_addressbook_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_addressbook_insert_records,
- .update_records = NULL,//__ctsvc_db_addressbook_update_records,
- .delete_records = NULL,//__ctsvc_db_addressbook_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
ctsvc_addressbook_s *addressbook;
ret = contacts_record_create(_contacts_address_book._uri, record);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
addressbook = (ctsvc_addressbook_s*)*record;
i = 0;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_addressbook_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_addressbook_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"SELECT addressbook_id, addressbook_name, account_id, mode, last_sync_ver "
"FROM "CTS_TABLE_ADDRESSBOOKS" WHERE addressbook_id = %d", id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_db_addressbook_value_set(ALL) Failed(%d)", ret);
+ CTS_ERR("__ctsvc_db_addressbook_value_set(ALL) Fail(%d)", ret);
return ret;
}
}
-static int __ctsvc_db_addressbook_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_addressbook_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
cts_stmt stmt = NULL;
RETVM_IF(CTSVC_RECORD_ADDRESSBOOK != addressbook->base.r_type, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : record is invalid type(%d)", addressbook->base.r_type);
- ret = ctsvc_begin_trans();
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
- // Can not insert addressbook which has same account_id
+ /* Can not insert addressbook which has same account_id */
int addresbook_id;
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTS_TABLE_ADDRESSBOOKS" WHERE account_id = %d",
addressbook->account_id);
- ret = ctsvc_query_get_first_int_result(query, &addresbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addresbook_id);
if (CONTACTS_ERROR_NO_DATA != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret) {
CTS_ERR("One addressbook which has account_id(%d) already exists", addressbook->account_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
return ret;
}
}
-#ifdef CTS_MOBILE
+
+ vsm_zone_h zone = ctsvc_server_zone_lookup_by_zone_name(zone_name);
+ vsm_zone_h zone_old = ctsvc_server_zone_join(zone);
+
account_h account = NULL;
- ret = account_connect();
- if (ACCOUNT_ERROR_NONE != ret) {
- CTS_ERR("account_connect Failed(%d)", ret);
- ctsvc_end_trans(false);
- return CONTACTS_ERROR_SYSTEM;
- }
- // check account_id validation
+ /* check account_id validation */
ret = account_create(&account);
if (ACCOUNT_ERROR_NONE != ret) {
- CTS_ERR("account_create() Failed(%d)", ret);
- ctsvc_end_trans(false);
- account_disconnect();
+ CTS_ERR("account_create() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
+ ctsvc_server_zone_join(zone_old);
return CONTACTS_ERROR_SYSTEM;
}
ret = account_query_account_by_account_id(addressbook->account_id, &account);
CTS_ERR("account_query_account_by_account_id Faild(%d) : account_id(%d)", ret, addressbook->account_id);
ret = account_destroy(account);
WARN_IF(ret != ACCOUNT_ERROR_NONE, "account_destroy Fail(%d)", ret);
- ctsvc_end_trans(false);
- account_disconnect();
+ ctsvc_end_trans(zone_name, false);
+ ctsvc_server_zone_join(zone_old);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
ret = account_destroy(account);
WARN_IF(ret != ACCOUNT_ERROR_NONE, "account_destroy Fail(%d)", ret);
- ret = account_disconnect();
- WARN_IF(ret != ACCOUNT_ERROR_NONE, "account_disconnect Fail(%d)", ret);
-#endif // CTS_MOBILE
+ ctsvc_server_zone_join(zone_old);
snprintf(query, sizeof(query),
"INSERT INTO %s(addressbook_name, account_id, mode, smack_label) "
"VALUES(?, %d, %d, ?)",
CTS_TABLE_ADDRESSBOOKS, addressbook->account_id, addressbook->mode);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ctsvc_stmt_bind_text(stmt, 1, addressbook->name);
- smack = ctsvc_get_client_smack_label();
+ smack = ctsvc_get_client_smack_label(zone_name);
if (smack)
ctsvc_stmt_bind_text(stmt, 2, smack);
do {
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
break;
}
- //int index = ctsvc_db_get_last_insert_id();
+ /* int index = ctsvc_db_get_last_insert_id(zone_name); */
if (id)
- *id = ctsvc_db_get_last_insert_id();
+ *id = ctsvc_db_get_last_insert_id(zone_name);
ctsvc_stmt_finalize(stmt);
- ctsvc_set_addressbook_noti();
- ret = ctsvc_end_trans(true);
- if(ret < CONTACTS_ERROR_NONE )
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ctsvc_set_addressbook_noti(zone_name);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
free(smack);
return ret;
}
- //addressbook->id = index;
+ /* addressbook->id = index; */
- // SUCCESS
+ /* SUCCESS */
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
/* ROLLBACK TRANSACTION */
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
free(smack);
return ret;
}
-static int __ctsvc_db_addressbook_update_record( contacts_record_h record )
+static int __ctsvc_db_addressbook_update_record(const char *zone_name, contacts_record_h record)
{
int ret = CONTACTS_ERROR_NONE;
char* set = NULL;
RETVM_IF(CTSVC_RECORD_ADDRESSBOOK != addressbook->base.r_type, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : record is invalid type(%d)", addressbook->base.r_type);
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
- ret = ctsvc_is_owner(addressbook->id);
+ ret = ctsvc_is_owner(zone_name, addressbook->id);
if (CONTACTS_ERROR_NONE != ret) {
if (CONTACTS_ERROR_PERMISSION_DENIED == ret)
CTS_ERR("Does not have permission of address_book (%d)", addressbook->id);
else
CTS_ERR("ctsvc_is_owner Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
break;
snprintf(query, sizeof(query), "UPDATE %s SET %s WHERE addressbook_id = %d", CTS_TABLE_ADDRESSBOOKS, set, addressbook->id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
break;
}
if (bind_text) {
}
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
break;
}
ctsvc_stmt_finalize(stmt);
- ctsvc_set_addressbook_noti();
+ ctsvc_set_addressbook_noti(zone_name);
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
CONTACTS_FREE(set);
}
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_end_trans(true);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_addressbook_delete_record( int addressbook_id )
+static int __ctsvc_db_addressbook_delete_record(const char *zone_name, int addressbook_id)
{
CTS_FN_CALL;
if (0 /*CTS_ADDRESSBOOK_INTERNAL*/ == addressbook_id)
- return ctsvc_addressbook_reset_internal_addressbook();
+ return ctsvc_addressbook_reset_internal_addressbook(zone_name);
char query[CTS_SQL_MAX_LEN] = {0};
- int ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE > ret, ret, "DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ int ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
- ret = ctsvc_is_owner(addressbook_id);
+ ret = ctsvc_is_owner(zone_name, addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
if (CONTACTS_ERROR_PERMISSION_DENIED == ret)
CTS_ERR("Does not have permission to delete address_book (%d)", addressbook_id);
else
CTS_ERR("ctsvc_is_owner Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
/* DOING JOB */
do {
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_query_exec() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_exec() Fail(%d)", ret);
break;
}
- ret = ctsvc_db_change();
+ ret = ctsvc_db_change(zone_name);
if (0 < ret) {
- ctsvc_set_my_profile_noti();
- ctsvc_set_contact_noti();
- // person noti will set in ctsvc_person_do_garbage_collection : ctsvc_set_person_noti();
- ctsvc_set_group_noti();
- ctsvc_set_addressbook_noti();
+ ctsvc_set_my_profile_noti(zone_name);
+ ctsvc_set_contact_noti(zone_name);
+ /* person noti will set in ctsvc_person_do_garbage_collection : ctsvc_set_person_noti(zone_name); */
+ ctsvc_set_group_noti(zone_name);
+ ctsvc_set_addressbook_noti(zone_name);
}
else {
ret = CONTACTS_ERROR_NO_DATA;
break;
}
- ret = ctsvc_person_do_garbage_collection();
+ ret = ctsvc_person_do_garbage_collection(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_person_garbagecollection() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_person_garbagecollection() Fail(%d)", ret);
break;
}
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
return CONTACTS_ERROR_NONE;
- } while(0);
+ } while (0);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
-static int __ctsvc_db_addressbook_get_all_records( int offset, int limit,
- contacts_list_h* out_list )
+static int __ctsvc_db_addressbook_get_all_records(const char *zone_name, int offset, int limit,
+ contacts_list_h* out_list)
{
int ret;
int len;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_addressbook_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_addressbook_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_ADDRESSBOOK_NAME:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(addressbook->name);
addressbook->name = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_ADDRESSBOOK_MODE:
return CONTACTS_ERROR_NONE;
}
-#if 0
-static int __ctsvc_db_addressbook_insert_records(const contacts_list_h in_list, int **ids)
-{
- return CONTACTS_ERROR_NONE;
-}
-
-static int __ctsvc_db_addressbook_update_records(const contacts_list_h in_list)
-{
- return CONTACTS_ERROR_NONE;
-}
-
-static int __ctsvc_db_addressbook_delete_records(int ids[], int count)
-{
- return CONTACTS_ERROR_NONE;
-}
-#endif
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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 "contacts.h"
+#include "ctsvc_internal.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_utils.h"
+#include "ctsvc_server_person.h"
+#include "ctsvc_notification.h"
+#include "ctsvc_db_access_control.h"
+#include "ctsvc_db_plugin_addressbook_helper.h"
+
+int ctsvc_addressbook_reset_internal_addressbook(const char *zone_name)
+{
+ CTS_FN_CALL;
+ char query[CTS_SQL_MIN_LEN] = {0};
+ int ret;
+ int version;
+
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+
+ ret = ctsvc_is_owner(zone_name, 0);
+ if (CONTACTS_ERROR_NONE != ret) {
+ if (CONTACTS_ERROR_PERMISSION_DENIED == ret)
+ CTS_ERR("Does not have permission of address_book (0)");
+ else
+ CTS_ERR("ctsvc_is_owner Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
+ return ret;
+ }
+
+ version = ctsvc_get_next_ver(zone_name);
+ snprintf(query, sizeof(query),
+ "UPDATE %s SET deleted = 1, person_id = 0, changed_ver=%d WHERE addressbook_id = %d",
+ CTS_TABLE_CONTACTS, version, 0 /*CTS_ADDRESSBOOK_INTERNAL*/);
+
+ /* DOING JOB */
+ do {
+ ret = ctsvc_query_exec(zone_name, query);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("DB error : ctsvc_query_exec() Fail(%d)", ret);
+ break;
+ }
+
+ snprintf(query, sizeof(query), "DELETE FROM %s WHERE addressbook_id = %d",
+ CTS_TABLE_MY_PROFILES, 0);
+
+ ret = ctsvc_query_exec(zone_name, query);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("DB error : ctsvc_query_exec() Fail(%d)", ret);
+ break;
+ }
+
+ snprintf(query, sizeof(query), "DELETE FROM %s WHERE addressbook_id = %d",
+ CTS_TABLE_GROUPS, 0 /*CTS_ADDRESSBOOK_INTERNAL*/);
+ ret = ctsvc_query_exec(zone_name, query);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("DB error : ctsvc_query_exec() Fail(%d)", ret);
+ break;
+ }
+
+ snprintf(query, sizeof(query), "DELETE FROM %s WHERE addressbook_id = %d",
+ CTS_TABLE_GROUP_DELETEDS, 0 /*CTS_ADDRESSBOOK_INTERNAL*/);
+ ret = ctsvc_query_exec(zone_name, query);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("DB error : ctsvc_query_exec() Fail(%d)", ret);
+ break;
+ }
+
+ snprintf(query, sizeof(query), "DELETE FROM %s WHERE addressbook_id = %d",
+ CTS_TABLE_DELETEDS, 0 /*CTS_ADDRESSBOOK_INTERNAL*/);
+ ret = ctsvc_query_exec(zone_name, query);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("DB error : ctsvc_query_exec() Fail(%d)", ret);
+ break;
+ }
+
+ ret = ctsvc_person_do_garbage_collection(zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("DB error : ctsvc_person_garbagecollection() Fail(%d)", ret);
+ break;
+ }
+
+ ctsvc_set_contact_noti(zone_name);
+ ctsvc_set_my_profile_noti(zone_name);
+ /* person noti will set in ctsvc_person_do_garbage_collection : ctsvc_set_person_noti(zone_name); */
+ ctsvc_set_group_noti(zone_name);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
+ return ret;
+ }
+
+ return CONTACTS_ERROR_NONE;
+ } while (0);
+
+ /* ROLLBACK TRANSACTION */
+ ctsvc_end_trans(zone_name, false);
+
+ return ret;
+}
+
+int ctsvc_addressbook_delete(const char *zone_name, int account_id)
+{
+ CTS_FN_CALL;
+ int ret;
+ int addressbook_id = -1;
+ char query[CTS_SQL_MAX_LEN] = {0};
+ RETVM_IF(account_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "Account_id(%d) is invalid", account_id);
+
+ /* delete addressbook whish has account_id */
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF (CONTACTS_ERROR_NONE != ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+
+ snprintf(query, sizeof(query), "SELECT addressbook_id FROM %s WHERE account_id = %d",
+ CTS_TABLE_ADDRESSBOOKS, account_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("DB error : ctsvc_query_get_first_int_result() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
+ return ret;
+ }
+
+ if (addressbook_id == 0) {
+ ret = ctsvc_addressbook_reset_internal_addressbook(zone_name);
+ if (ret == CONTACTS_ERROR_NONE)
+ ret = ctsvc_end_trans(zone_name, true);
+ else
+ ctsvc_end_trans(zone_name, false);
+ return ret;
+ }
+
+ snprintf(query, sizeof(query), "DELETE FROM %s WHERE account_id = %d",
+ CTS_TABLE_ADDRESSBOOKS, account_id);
+ ret = ctsvc_query_exec(zone_name, query);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("DB error : ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
+ return ret;
+ }
+
+ ret = ctsvc_db_change(zone_name);
+ if (0 < ret) {
+ ctsvc_set_my_profile_noti(zone_name);
+ ctsvc_set_contact_noti(zone_name);
+ /* person noti will set in ctsvc_person_do_garbage_collection : ctsvc_set_person_noti(zone_name); */
+ ctsvc_set_group_noti(zone_name);
+ ctsvc_set_addressbook_noti(zone_name);
+ }
+ else {
+ CTS_ERR("There is no addressbook which has account_id (%d)", account_id);
+ ctsvc_end_trans(zone_name, false);
+ return CONTACTS_ERROR_NO_DATA;
+ }
+
+ ret = ctsvc_person_do_garbage_collection(zone_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("DB error : ctsvc_person_garbagecollection() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
+ return ret;
+ }
+
+ return ctsvc_end_trans(zone_name, true);
+}
+
#ifndef __CTSVC_DB_PLUGIN_ADDRESS_BOOK_HELPER_H__
#define __CTSVC_DB_PLUGIN_ADDRESS_BOOK_HELPER_H__
-int ctsvc_addressbook_delete(int account_id);
-int ctsvc_addressbook_reset_internal_addressbook(void);
+int ctsvc_addressbook_delete(const char *zone_name, int account_id);
+int ctsvc_addressbook_reset_internal_addressbook(const char *zone_name);
-#endif // __CTSVC_DB_PLUGIN_ADDRESS_BOOK_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_ADDRESS_BOOK_HELPER_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_db_plugin_contact_helper.h"
#include "ctsvc_db_query.h"
#include "ctsvc_list.h"
-static int __ctsvc_db_company_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_company_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_company_update_record( contacts_record_h record );
-static int __ctsvc_db_company_delete_record( int id );
-static int __ctsvc_db_company_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_company_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_company_insert_records(const contacts_list_h in_list, int **ds);
-//static int __ctsvc_db_company_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_company_delete_records( int ids[], int count);
+static int __ctsvc_db_company_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_company_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_company_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_company_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_company_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_company_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_company = {
.is_query_only = false,
.delete_record = __ctsvc_db_company_delete_record,
.get_all_records = __ctsvc_db_company_get_all_records,
.get_records_with_query = __ctsvc_db_company_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_company_insert_records,
- .update_records = NULL,//__ctsvc_db_company_update_records,
- .delete_records = NULL,//__ctsvc_db_company_delete_records
+ .insert_records = NULL, /* __ctsvc_db_company_insert_records, */
+ .update_records = NULL, /* __ctsvc_db_company_update_records, */
+ .delete_records = NULL, /* __ctsvc_db_company_delete_records, */
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_company_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_company_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"WHERE id = %d AND datatype = %d ",
id, CTSVC_DATA_COMPANY);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_company_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_company_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int addressbook_id;
&& NULL == company->location && NULL == company->description && NULL == company->phonetic_name,
CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : company is NULL");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", company->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_ERR("No data : contact_id (%d) is not exist", company->contact_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this company record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_company_insert(record, company->contact_id, false, id);
+ ret = ctsvc_db_company_insert(zone_name, record, company->contact_id, false, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_contact_update_display_name(company->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_COMPANY);
+ ctsvc_contact_update_display_name(zone_name, company->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_COMPANY);
- ret = ctsvc_db_contact_update_changed_time(company->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, company->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_company_update_record( contacts_record_h record )
+static int __ctsvc_db_company_update_record(const char *zone_name, contacts_record_h record)
{
int ret;
int addressbook_id;
NULL == company->location && NULL == company->description && NULL == company->phonetic_name,
CONTACTS_ERROR_INVALID_PARAMETER, "company is empty");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", company->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : contact_id (%d) is not exist", company->contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this company record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_company_update(record, company->contact_id, false);
+ ret = ctsvc_db_company_update(zone_name, record, company->contact_id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("Update record Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("Update record Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_contact_update_display_name(company->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_COMPANY);
+ ctsvc_contact_update_display_name(zone_name, company->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_COMPANY);
- ret = ctsvc_db_contact_update_changed_time(company->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, company->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
}
-static int __ctsvc_db_company_delete_record( int id )
+static int __ctsvc_db_company_delete_record(const char *zone_name, int id)
{
int ret;
int contact_id;
cts_stmt stmt;
int addressbook_id;
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT contact_id, addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" "
"WHERE contact_id = (SELECT contact_id FROM "CTS_TABLE_DATA" WHERE id = %d)", id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
CTS_ERR("DB error : ctsvc_query_prepare Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
CTS_ERR("The id(%d) is Invalid(%d)", id, ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
addressbook_id = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this company record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_company_delete(id, false);
+ ret = ctsvc_db_company_delete(zone_name, id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_contact_update_display_name(contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_COMPANY);
+ ctsvc_contact_update_display_name(zone_name, contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_COMPANY);
- ret = ctsvc_db_contact_update_changed_time(contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_company_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_company_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int len;
int ret;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB : ctsvc_stmt_step fail(%d)", ret);
+ CTS_ERR("DB : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_company_get_records_with_query( contacts_query_h query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_company_get_records_with_query(const char *zone_name, contacts_query_h query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ret = ctsvc_record_set_projection_flags(record, s_query->projection,
s_query->projection_count, s_query->property_count);
- if(CONTACTS_ERROR_NONE != ret)
+ if (CONTACTS_ERROR_NONE != ret)
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_COMPANY_LABEL:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(company->label);
company->label = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_COMPANY_NAME:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(company->name);
company->name = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_COMPANY_DEPARTMENT:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(company->department);
company->department = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_COMPANY_JOB_TITLE:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(company->job_title);
company->job_title = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_COMPANY_ASSISTANT_NAME:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(company->assistant_name);
company->assistant_name = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_COMPANY_ROLE:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(company->role);
company->role = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_COMPANY_LOGO:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(company->logo);
company->logo = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_COMPANY_LOCATION:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(company->location);
company->location = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_COMPANY_DESCRIPTION:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(company->description);
company->description = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_COMPANY_PHONETIC_NAME:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(company->phonetic_name);
company->phonetic_name = SAFE_STRDUP(temp);
break;
default:
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-
-//static int __ctsvc_db_company_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_company_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_company_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_zone.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_plugin_company_helper.h"
sqlite3_bind_text(stmt, start_cnt+7, company->assistant_name,
strlen(company->assistant_name), SQLITE_STATIC);
- // skip logo here
+ /* skip logo here */
if (company->location)
sqlite3_bind_text(stmt, start_cnt+9, company->location,
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_company_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id)
+int ctsvc_db_company_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id)
{
int ret;
int company_id = 0;
|| company->assistant_name || company->logo || company->location || company->description
|| company->phonetic_name) {
- ret = ctsvc_db_get_next_id(CTS_TABLE_DATA);
+ ret = ctsvc_db_get_next_id(zone_name, CTS_TABLE_DATA);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_db_get_next_id() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_db_get_next_id() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
company_id = ret;
"VALUES(%d, %d, %d, %d, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
company_id, contact_id, is_my_profile, CTSVC_DATA_COMPANY);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
__ctsvc_company_bind_stmt(stmt, company, 1);
if (company->logo) {
char image[CTSVC_IMG_FULL_PATH_SIZE_MAX] = {0};
- ret = ctsvc_have_file_read_permission(company->logo);
+ ret = ctsvc_have_file_read_permission(zone_name, company->logo);
if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_have_file_read_permission Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
ctsvc_utils_make_image_file_name(contact_id, company_id, company->logo, image, sizeof(image));
- ret = ctsvc_utils_copy_image(CTS_LOGO_IMAGE_LOCATION, company->logo, image);
+ ret = ctsvc_utils_copy_image(zone_name, CTS_LOGO_IMAGE_LOCATION, company->logo, image);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_utils_copy_image() Failed(%d)", ret);
+ CTS_ERR("ctsvc_utils_copy_image() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
if (id)
*id = company_id;
- if (!is_my_profile)
- ctsvc_set_company_noti();
+ if (false == is_my_profile)
+ ctsvc_set_company_noti(zone_name);
}
return CONTACTS_ERROR_NONE;
}
ctsvc_company_s *company;
ret = contacts_record_create(_contacts_company._uri, (contacts_record_h *)&company);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
company->id = ctsvc_stmt_get_int(stmt, start_count++);
company->contact_id = ctsvc_stmt_get_int(stmt, start_count++);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_company_update(contacts_record_h record, int contact_id, bool is_my_profile)
+int ctsvc_db_company_update(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile)
{
int ret = CONTACTS_ERROR_NONE;
char* set = NULL;
ctsvc_company_s *company = (ctsvc_company_s*)record;
cts_stmt stmt = NULL;
- RETVM_IF(!company->id, CONTACTS_ERROR_INVALID_PARAMETER, "company of contact has no ID.");
+ RETVM_IF(0 == company->id, CONTACTS_ERROR_INVALID_PARAMETER, "company of contact has no ID.");
RETVM_IF(CTSVC_PROPERTY_FLAG_DIRTY != (company->base.property_flag & CTSVC_PROPERTY_FLAG_DIRTY), CONTACTS_ERROR_NONE, "No update");
snprintf(query, sizeof(query),
"SELECT id, data8 FROM "CTS_TABLE_DATA" WHERE id = %d", company->id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (ret != 1) {
bool same = false;
bool check_permission = false;
- // delete current logo image
+ /* delete current logo image */
if (logo) {
char full_path[CTSVC_IMG_FULL_PATH_SIZE_MAX] = {0};
- snprintf(full_path, sizeof(full_path), "%s/%s", CTS_LOGO_IMAGE_LOCATION, logo);
- if (company->logo && strcmp(company->logo, full_path) == 0) {
+ char root_path[CTSVC_PATH_MAX_LEN] = {0};
+ ctsvc_zone_get_root_path(zone_name, root_path, sizeof(root_path));
+ snprintf(full_path, sizeof(full_path), "%s/%s/%s", root_path, CTS_LOGO_IMAGE_LOCATION, logo);
+ if (company->logo && STRING_EQUAL == strcmp(company->logo, full_path)) {
int index = _contacts_company.logo & 0x000000FF;
((ctsvc_record_s *)record)->properties_flags[index] = 0;
same = true;
}
else {
if (company->logo) {
- ret = ctsvc_have_file_read_permission(company->logo);
+ ret = ctsvc_have_file_read_permission(zone_name, company->logo);
if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_have_file_read_permission Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
}
ret = unlink(full_path);
if (ret < 0) {
- CTS_WARN("unlink Failed(%d)", errno);
+ CTS_WARN("unlink Fail(%d)", errno);
}
}
}
- // add new logo file
- if (!same && company->logo) {
+ /* add new logo file */
+ if (false == same && company->logo) {
char dest[CTSVC_IMG_FULL_PATH_SIZE_MAX] = {0};
if (false == check_permission) {
- ret = ctsvc_have_file_read_permission(company->logo);
+ ret = ctsvc_have_file_read_permission(zone_name, company->logo);
if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_have_file_read_permission Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
}
}
ctsvc_utils_make_image_file_name(contact_id, company->id, company->logo, dest, sizeof(dest));
- ret = ctsvc_utils_copy_image(CTS_LOGO_IMAGE_LOCATION, company->logo, dest);
+ ret = ctsvc_utils_copy_image(zone_name, CTS_LOGO_IMAGE_LOCATION, company->logo, dest);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("cts_copy_file() Failed(%d)", ret);
+ CTS_ERR("cts_copy_file() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
do {
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_DATA, company->id))) break;
- if (!is_my_profile)
- ctsvc_set_company_noti();
+ if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(zone_name, set, bind_text, CTS_TABLE_DATA, company->id))) break;
+ if (false == is_my_profile)
+ ctsvc_set_company_noti(zone_name);
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
return ret;
}
-int ctsvc_db_company_delete(int id, bool is_my_profile)
+int ctsvc_db_company_delete(const char *zone_name, int id, bool is_my_profile)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_DATA" WHERE id = %d AND datatype = %d",
id, CTSVC_DATA_COMPANY);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Failed(%d)", ret);
- if (!is_my_profile)
- ctsvc_set_company_noti();
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Fail(%d)", ret);
+ if (false == is_my_profile)
+ ctsvc_set_company_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
-// Whenever deleting company record in data table, this function will be called
-// in order to delete company logo image file
+/*
+ * Whenever deleting company record in data table, this function will be called
+ * in order to delete company logo image file
+ */
void ctsvc_db_company_delete_callback(sqlite3_context *context, int argc, sqlite3_value ** argv)
{
int ret;
const unsigned char* logo_path;
+ char *zone_name = NULL;
- if (argc > 1) {
+ if (1 < argc) {
sqlite3_result_null(context);
return;
}
logo_path = sqlite3_value_text(argv[0]);
+ zone_name = sqlite3_user_data(context);
+ char root_path[CTSVC_PATH_MAX_LEN] = {0};
+ ctsvc_zone_get_root_path(zone_name, root_path, sizeof(root_path));
+
if (logo_path) {
char full_path[CTSVC_IMG_FULL_PATH_SIZE_MAX] = {0};
- snprintf(full_path, sizeof(full_path), "%s/%s", CTS_LOGO_IMAGE_LOCATION, logo_path);
+ snprintf(full_path, sizeof(full_path), "%s/%s/%s", root_path, CTS_LOGO_IMAGE_LOCATION, logo_path);
ret = unlink(full_path);
if (ret < 0) {
- CTS_WARN("unlink Failed(%d)", errno);
+ CTS_WARN("unlink Fail(%d)", errno);
}
}
#define __CTSVC_DB_PLUGIN_COMPANY_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
#define CTS_LOGO_IMAGE_LOCATION "/opt/usr/data/contacts-svc/img/logo"
-int ctsvc_db_company_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id);
-int ctsvc_db_company_update(contacts_record_h record, int contact_id, bool is_my_profile);
-int ctsvc_db_company_delete(int id, bool is_my_profile);
+int ctsvc_db_company_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id);
+int ctsvc_db_company_update(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile);
+int ctsvc_db_company_delete(const char *zone_name, int id, bool is_my_profile);
int ctsvc_db_company_get_value_from_stmt(cts_stmt stmt, contacts_record_h *record, int start_count);
void ctsvc_db_company_delete_callback(sqlite3_context *context, int argc, sqlite3_value ** argv);
-#endif // __CTSVC_DB_PLUGIN_COMPANY_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_COMPANY_HELPER_H__ */
\ No newline at end of file
* limitations under the License.
*
*/
-#include <sys/types.h>
-#include <sys/syscall.h>
#include <fcntl.h>
#include <unistd.h>
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_schema.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_record.h"
#include "ctsvc_normalize.h"
#include "ctsvc_number_utils.h"
#include "ctsvc_list.h"
-#include "ctsvc_setting.h"
+#include "ctsvc_server_setting.h"
#include "ctsvc_localize_ch.h"
-#include "ctsvc_group.h"
+#include "ctsvc_server_group.h"
#include "ctsvc_notification.h"
#include "ctsvc_localize.h"
#include "ctsvc_localize_utils.h"
-#include "ctsvc_person.h"
+#include "ctsvc_server_person.h"
#ifdef ENABLE_LOG_FEATURE
-#include "ctsvc_phonelog.h"
-#endif // ENABLE_LOG_FEATURE
+#include "ctsvc_server_phonelog.h"
+#endif /* ENABLE_LOG_FEATURE */
#include "ctsvc_db_access_control.h"
#include "ctsvc_db_plugin_contact_helper.h"
#include "ctsvc_db_plugin_person_helper.h"
-static int __ctsvc_db_contact_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_contact_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_contact_update_record( contacts_record_h record );
-static int __ctsvc_db_contact_delete_record( int id );
-static int __ctsvc_db_contact_replace_record( contacts_record_h record, int id );
+static int __ctsvc_db_contact_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_contact_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_contact_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_contact_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_contact_replace_record(const char *zone_name, contacts_record_h record, int id);
-static int __ctsvc_db_contact_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_contact_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_contact_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_contact_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_contact_delete_records(int ids[], int count);
+static int __ctsvc_db_contact_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_contact_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_contact = {
.is_query_only = false,
.delete_record = __ctsvc_db_contact_delete_record,
.get_all_records = __ctsvc_db_contact_get_all_records,
.get_records_with_query = __ctsvc_db_contact_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_contact_insert_records,
- .update_records = NULL,//__ctsvc_db_contact_update_records,
- .delete_records = NULL,//__ctsvc_db_contact_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = __ctsvc_db_contact_replace_record,
.replace_records = NULL,
};
-static int __ctsvc_db_get_contact_base_info(int id, ctsvc_contact_s *contact)
+static int __ctsvc_db_get_contact_base_info(const char *zone_name, int id, ctsvc_contact_s *contact)
{
int ret;
int i;
"uid, is_favorite, has_phonenumber, has_email, "
"sort_name, reverse_sort_name "
"FROM "CTS_TABLE_CONTACTS" WHERE contact_id = %d AND deleted = 0",
- ctsvc_get_display_column(), id);
+ ctsvc_get_display_column(zone_name), id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_get_data(int id, ctsvc_contact_s *contact)
+static int __ctsvc_db_get_data(const char *zone_name, int id, ctsvc_contact_s *contact)
{
int ret;
int datatype;
"WHERE data.contact_id = %d AND is_my_profile = 0 "
"ORDER BY is_default DESC", id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE */!= ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
break;
}
- }while(1 == ctsvc_stmt_step(stmt));
+ } while (1 == ctsvc_stmt_step(stmt));
ctsvc_stmt_finalize(stmt);
}
-static inline int __ctsvc_get_contact_grouprel(int contact_id, ctsvc_contact_s *contact)
+static inline int __ctsvc_get_contact_grouprel(const char *zone_name, int contact_id, ctsvc_contact_s *contact)
{
CTS_FN_CALL;
int ret;
"SELECT group_id, contact_id, group_name "
" FROM "CTSVC_DB_VIEW_GROUP_RELATION" WHERE contact_id = %d", contact_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
while (1 /*CTS_TRUE */ == ctsvc_stmt_step(stmt)) {
contacts_record_create(_contacts_group_relation._uri, (contacts_record_h*)&grouprel);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_contact_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_contact_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
contacts_record_h record;
contacts_record_create(_contacts_contact._uri, &record);
contact = (ctsvc_contact_s *)record;
- ret = __ctsvc_db_get_contact_base_info(id, contact);
+ ret = __ctsvc_db_get_contact_base_info(zone_name, id, contact);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_db_get_contact_base_info(ALL) Failed(%d)", ret);
+ CTS_ERR("__ctsvc_db_get_contact_base_info(ALL) Fail(%d)", ret);
contacts_record_destroy(record, true);
return ret;
}
- ret = __ctsvc_db_get_data(id, contact);
+ ret = __ctsvc_db_get_data(zone_name, id, contact);
if (CONTACTS_ERROR_NONE != ret && CONTACTS_ERROR_NO_DATA != ret) {
- CTS_ERR("ctsvc_get_data_info Failed(%d)", ret);
+ CTS_ERR("ctsvc_get_data_info Fail(%d)", ret);
contacts_record_destroy(record, true);
return ret;
}
- ret = __ctsvc_get_contact_grouprel(id, contact);
+ ret = __ctsvc_get_contact_grouprel(zone_name, id, contact);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_get_group_relations Failed(%d)", ret);
+ CTS_ERR("ctsvc_get_group_relations Fail(%d)", ret);
contacts_record_destroy(record, true);
return ret;
}
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_contact_delete_record( int id )
+static int __ctsvc_db_contact_delete_record(const char *zone_name, int id)
{
- return ctsvc_db_contact_delete(id);
+ return ctsvc_db_contact_delete(zone_name, id);
}
-static inline int __ctsvc_contact_update_data(ctsvc_contact_s *contact)
+static inline int __ctsvc_contact_update_data(const char *zone_name, ctsvc_contact_s *contact)
{
int ret;
if (contact->name) {
- ret = ctsvc_contact_update_data_name((contacts_list_h)contact->name, contact->id, false);
+ ret = ctsvc_contact_update_data_name(zone_name, (contacts_list_h)contact->name, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_name() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_name() Fail(%d)", ret);
return ret;
}
}
if (contact->company) {
- ret = ctsvc_contact_update_data_company((contacts_list_h)contact->company, contact->id, false);
+ ret = ctsvc_contact_update_data_company(zone_name, (contacts_list_h)contact->company, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_company() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_company() Fail(%d)", ret);
return ret;
}
}
if (contact->note) {
- ret = ctsvc_contact_update_data_note((contacts_list_h)contact->note, contact->id, false);
+ ret = ctsvc_contact_update_data_note(zone_name, (contacts_list_h)contact->note, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_note() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_note() Fail(%d)", ret);
return ret;
}
}
if (contact->events) {
- ret = ctsvc_contact_update_data_event((contacts_list_h)contact->events, contact->id, false);
+ ret = ctsvc_contact_update_data_event(zone_name, (contacts_list_h)contact->events, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_events() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_events() Fail(%d)", ret);
return ret;
}
}
if (contact->messengers) {
- ret = ctsvc_contact_update_data_messenger((contacts_list_h)contact->messengers, contact->id, false);
+ ret = ctsvc_contact_update_data_messenger(zone_name, (contacts_list_h)contact->messengers, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_messengers() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_messengers() Fail(%d)", ret);
return ret;
}
}
if (contact->postal_addrs) {
- ret = ctsvc_contact_update_data_address((contacts_list_h)contact->postal_addrs, contact->id, false);
+ ret = ctsvc_contact_update_data_address(zone_name, (contacts_list_h)contact->postal_addrs, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_address() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_address() Fail(%d)", ret);
return ret;
}
}
if (contact->urls) {
- ret = ctsvc_contact_update_data_url((contacts_list_h)contact->urls, contact->id, false);
+ ret = ctsvc_contact_update_data_url(zone_name, (contacts_list_h)contact->urls, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_url() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_url() Fail(%d)", ret);
return ret;
}
}
if (contact->nicknames) {
- ret = ctsvc_contact_update_data_nickname((contacts_list_h)contact->nicknames, contact->id, false);
+ ret = ctsvc_contact_update_data_nickname(zone_name, (contacts_list_h)contact->nicknames, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_nickname() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_nickname() Fail(%d)", ret);
return ret;
}
}
if (contact->numbers) {
bool had_phonenumber;
- ret = ctsvc_contact_update_data_number((contacts_list_h)contact->numbers, contact->id, false, &had_phonenumber);
+ ret = ctsvc_contact_update_data_number(zone_name, (contacts_list_h)contact->numbers, contact->id, false, &had_phonenumber);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_number() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_number() Fail(%d)", ret);
return ret;
}
contact->has_phonenumber = had_phonenumber;
if (contact->emails) {
bool had_email;
- ret = ctsvc_contact_update_data_email((contacts_list_h)contact->emails, contact->id, false, &had_email);
+ ret = ctsvc_contact_update_data_email(zone_name, (contacts_list_h)contact->emails, contact->id, false, &had_email);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_email() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_email() Fail(%d)", ret);
return ret;
}
contact->has_email = had_email;
}
if (contact->profiles) {
- ret = ctsvc_contact_update_data_profile((contacts_list_h)contact->profiles, contact->id, false);
+ ret = ctsvc_contact_update_data_profile(zone_name, (contacts_list_h)contact->profiles, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_profile() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_profile() Fail(%d)", ret);
return ret;
}
}
if (contact->relationships) {
- ret = ctsvc_contact_update_data_relationship((contacts_list_h)contact->relationships, contact->id, false);
+ ret = ctsvc_contact_update_data_relationship(zone_name, (contacts_list_h)contact->relationships, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_relationship() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_relationship() Fail(%d)", ret);
return ret;
}
}
if (contact->images) {
- ret = ctsvc_contact_update_data_image((contacts_list_h)contact->images, contact->id, false);
+ ret = ctsvc_contact_update_data_image(zone_name, (contacts_list_h)contact->images, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_image() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_image() Fail(%d)", ret);
return ret;
}
}
if (contact->extensions) {
- ret = ctsvc_contact_update_data_extension((contacts_list_h)contact->extensions, contact->id, false);
+ ret = ctsvc_contact_update_data_extension(zone_name, (contacts_list_h)contact->extensions, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_extension() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_extension() Fail(%d)", ret);
return ret;
}
}
ctsvc_contact_check_default_address((contacts_list_h)contact->postal_addrs);
}
-static inline int __ctsvc_contact_update_grouprel(int contact_id, contacts_list_h group_list)
+static inline int __ctsvc_contact_update_grouprel(const char *zone_name, int contact_id, contacts_list_h group_list)
{
CTS_FN_CALL;
ctsvc_group_relation_s *grouprel;
RETV_IF(NULL == group_list, CONTACTS_ERROR_INVALID_PARAMETER);
- for(cursor = list->deleted_records;cursor;cursor=cursor->next) {
+ for (cursor = list->deleted_records;cursor;cursor=cursor->next) {
grouprel = (ctsvc_group_relation_s *)cursor->data;
- ret = ctsvc_group_remove_contact_in_transaction(grouprel->group_id, contact_id);
+ ret = ctsvc_group_remove_contact_in_transaction(zone_name, grouprel->group_id, contact_id);
if (0 < ret)
rel_changed += ret;
}
ret = contacts_list_get_count(group_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(group_list);
RETVM_IF(grouprel->group_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "group_id(%d) invalid", grouprel->group_id);
if (grouprel->group_id) {
- ret = ctsvc_group_add_contact_in_transaction(grouprel->group_id, contact_id);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_db_group_set_relation() Failed(%d)", ret);
+ ret = ctsvc_group_add_contact_in_transaction(zone_name, grouprel->group_id, contact_id);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_db_group_set_relation() Fail(%d)", ret);
if (0 < ret)
rel_changed += ret;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(group_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(group_list));
if (rel_changed)
return rel_changed;
return had;
}
-// Make search data by number, email, nicknames, address, note, messenger, relationship, company
-static inline int __ctsvc_contact_make_search_data(int contact_id, ctsvc_contact_s *contact,
- char **search_name, char **search_number, char **search_data)
+/* Make search data by number, email, nicknames, address, note, messenger, relationship, company */
+static inline int __ctsvc_contact_make_search_data(ctsvc_contact_s *contact,
+ char **search_number, char **search_data)
{
int len = 0;
char *temp_data=NULL;
int buf_size=0;
- if (contact == NULL)
- return CONTACTS_ERROR_NO_DATA;
-
- RETV_IF(NULL == search_name, CONTACTS_ERROR_INVALID_PARAMETER);
- RETV_IF(NULL == search_number, CONTACTS_ERROR_INVALID_PARAMETER);
- RETV_IF(NULL == search_data, CONTACTS_ERROR_INVALID_PARAMETER);
-
- ctsvc_contact_make_search_name(contact, search_name);
+ RETV_IF(NULL == contact, CONTACTS_ERROR_NO_DATA);
if (contact->numbers) {
contacts_list_h number_list = (contacts_list_h)contact->numbers;
contacts_list_first(number_list);
do {
contacts_list_get_current_record_p(number_list, (contacts_record_h*)&number_record);
- if (NULL != number_record && number_record->cleaned) {
+ if (number_record && number_record->cleaned) {
buf_size = SAFE_STRLEN(number) + SAFE_STRLEN(number_record->cleaned) + SAFE_STRLEN(number_record->normalized) + 3;
temp_number = calloc(1, buf_size);
if (NULL == temp_number) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(number);
- free(*search_name);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
- if (NULL == temp_number) {
- CTS_ERR("calloc() return NULL");
- break;
- }
+
if (number)
snprintf(temp_number, buf_size, "%s %s %s", SAFE_STR(number), number_record->cleaned, number_record->normalized);
else
free(number);
number = temp_number;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(number_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(number_list));
}
if (contact->emails) {
contacts_list_first(email_list);
do {
contacts_list_get_current_record_p(email_list, (contacts_record_h*)&email);
- if (NULL != email && email->email_addr) {
+ if (email && email->email_addr) {
int len = strlen(email->email_addr);
char temp[len+1];
bool had = __ctsvc_contact_check_token(email->email_addr, temp, len);
buf_size = SAFE_STRLEN(data) + SAFE_STRLEN(email->email_addr) * (had?2:1) + 4;
temp_data = calloc(1, buf_size);
if (NULL == temp_data) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(data);
free(number);
- free(*search_name);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
+
if (data)
snprintf(temp_data, buf_size, "%s %s %s",data, email->email_addr, (had?temp:""));
else
free(data);
data = temp_data;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(email_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(email_list));
}
if (contact->nicknames) {
contacts_list_first(nickname_list);
do {
contacts_list_get_current_record_p(nickname_list, (contacts_record_h*)&nickname);
- if (NULL != nickname && nickname->nickname) {
+ if (nickname && nickname->nickname) {
int len = strlen(nickname->nickname);
char temp[len+1];
bool had = __ctsvc_contact_check_token(nickname->nickname, temp, len);
buf_size = SAFE_STRLEN(data) + SAFE_STRLEN(nickname->nickname) * (had?2:1) + 4;
temp_data = calloc(1, buf_size);
if (NULL == temp_data) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(data);
free(number);
- free(*search_name);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
+
if (data)
snprintf(temp_data, buf_size, "%s %s %s", data, nickname->nickname, (had?temp:""));
else
free(data);
data = temp_data;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(nickname_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(nickname_list));
}
if (contact->postal_addrs) {
contacts_list_first(address_list);
do {
contacts_list_get_current_record_p(address_list, (contacts_record_h*)&address);
- if (NULL != address) {
+ if (address) {
bool had;
int str_len = SAFE_STRLEN(address->country)
+ SAFE_STRLEN(address->pobox)
+ str_len * 2 + 16;
temp_data = calloc(1, buf_size);
if (NULL == temp_data) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(data);
free(number);
- free(*search_name);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
char temp[str_len+1];
- if(data)
+ if (data)
len += snprintf(temp_data + len, buf_size - len, "%s ", data);
if (address->country) {
free(data);
data = temp_data;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(address_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(address_list));
}
if (contact->note) {
contacts_list_first(note_list);
do {
contacts_list_get_current_record_p(note_list, (contacts_record_h*)¬e);
- if (NULL != note && note->note) {
+ if (note && note->note) {
int len = strlen(note->note);
char temp[len+1];
bool had = __ctsvc_contact_check_token(note->note, temp, len);
buf_size = SAFE_STRLEN(data) + SAFE_STRLEN(note->note) * (had?2:1) + 4;
temp_data = calloc(1, buf_size);
if (NULL == temp_data) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(data);
free(number);
- free(*search_name);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
+
if (data)
snprintf(temp_data, buf_size, "%s %s %s",data, note->note, (had?temp:""));
else
free(data);
data = temp_data;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(note_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(note_list));
}
if (contact->messengers) {
contacts_list_first(messenger_list);
do {
contacts_list_get_current_record_p(messenger_list, (contacts_record_h*)&messenger);
- if (NULL != messenger && messenger->im_id) {
+ if (messenger && messenger->im_id) {
int len = strlen(messenger->im_id);
char temp[len+1];
bool had = __ctsvc_contact_check_token(messenger->im_id, temp, len);
buf_size = SAFE_STRLEN(data) + SAFE_STRLEN(messenger->im_id) * (had?2:1) + 4;
temp_data = calloc(1, buf_size);
if (NULL == temp_data) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(data);
free(number);
- free(*search_name);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
+
if (data)
snprintf(temp_data, buf_size, "%s %s %s",data, messenger->im_id, (had?temp:""));
else
free(data);
data = temp_data;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(messenger_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(messenger_list));
}
if (contact->relationships) {
contacts_list_first(relationship_list);
do {
contacts_list_get_current_record_p(relationship_list, (contacts_record_h*)&relationship);
- if (NULL != relationship && relationship->name) {
+ if (relationship && relationship->name) {
int len = strlen(relationship->name);
char temp[len+1];
bool had = __ctsvc_contact_check_token(relationship->name, temp, len);
buf_size = SAFE_STRLEN(data) + SAFE_STRLEN(relationship->name) * (had?2:1) + 4;
temp_data = calloc(1, buf_size);
if (NULL == temp_data) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(data);
free(number);
- free(*search_name);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
free(data);
data = temp_data;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(relationship_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(relationship_list));
}
if (contact->company) {
contacts_list_first(company_list);
do {
contacts_list_get_current_record_p(company_list, (contacts_record_h*)&company);
- if (NULL != company) {
+ if (company) {
bool had;
int str_len = SAFE_STRLEN(company->name)
+ SAFE_STRLEN(company->department)
buf_size = SAFE_STRLEN(data) + str_len * 2 + 18;
temp_data = calloc(1, buf_size);
if (NULL == temp_data) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(data);
free(number);
- free(*search_name);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
char temp[str_len+1];
- if(data)
+ if (data)
len += snprintf(temp_data + len, buf_size - len, "%s ", data);
if (company->name) {
had = __ctsvc_contact_check_token(company->name, temp, SAFE_STRLEN(company->name));
free(data);
data = temp_data;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(company_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(company_list));
}
*search_number = number;
return CONTACTS_ERROR_NONE;
}
-static inline int __ctsvc_contact_refresh_lookup_data(int contact_id, ctsvc_contact_s *contact)
+static inline int __ctsvc_contact_refresh_lookup_data(const char *zone_name, int contact_id, ctsvc_contact_s *contact)
{
+ CTS_FN_CALL;
int ret, len = 0, temp_len =0;
char query[CTS_SQL_MAX_LEN] = {0};
snprintf(query, sizeof(query), "DELETE FROM %s WHERE contact_id = %d",
CTS_TABLE_NAME_LOOKUP, contact_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query), "DELETE FROM %s WHERE contact_id = %d",
CTS_TABLE_PHONE_LOOKUP, contact_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
char *temp_name = NULL;
contacts_list_first(name_list);
len = 0;
- // name record of contact should be one
+ /* name record of contact should be one */
do {
contacts_list_get_current_record_p(name_list, (contacts_record_h*)&name_record);
- if (NULL != name_record
+ if (name_record
&& (name_record->last || name_record->first || name_record->addition || name_record->suffix)) {
char *normalized_name = NULL;
- ///////////////////////////////////////////////
- // Make reverse display name (Last name first)
- // Default : Prefix Last, First Middle(addition), Suffix
- // Korean, Chinese : Prefix LastMiddleFirstSuffix
- // Japanese : Prefix Last Middle First Suffix
- // reverse sort name does not include prefix
- // But, if there is only prefix, reverse sort_name is prefix
- //////////////////////////////////////////////
- // make display name
+ /*
+ * Make reverse display name (Last name first)
+ * Default : Prefix Last, First Middle(addition), Suffix
+ * Korean, Chinese : Prefix LastMiddleFirstSuffix
+ * Japanese : Prefix Last Middle First Suffix
+ * reverse sort name does not include prefix
+ * But, if there is only prefix, reverse sort_name is prefix
+ */
+ /* make display name */
temp_len = SAFE_STRLEN(name_record->first) + SAFE_STRLEN(name_record->addition)
+ SAFE_STRLEN(name_record->last)+ SAFE_STRLEN(name_record->suffix) + 1;
int reverse_lang_type = ctsvc_contact_get_name_language(name_record);
temp_name = calloc(1, temp_len);
if (NULL == temp_name) {
- CTS_ERR("calloc() return NULL");
- break;
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
}
+
if (reverse_lang_type == CTSVC_LANG_KOREAN ||
reverse_lang_type == CTSVC_LANG_CHINESE ||
reverse_lang_type == CTSVC_LANG_JAPANESE) {
- if(name_record->last)
+ if (name_record->last)
len += snprintf(temp_name + len, temp_len - len, "%s", name_record->last);
- if(name_record->addition)
+ if (name_record->addition)
len += snprintf(temp_name + len, temp_len - len, "%s", name_record->addition);
- if(name_record->first)
+ if (name_record->first)
len += snprintf(temp_name + len, temp_len - len, "%s", name_record->first);
- if(name_record->suffix)
+ if (name_record->suffix)
len += snprintf(temp_name + len, temp_len - len, "%s", name_record->suffix);
}
else {
- if(name_record->last)
+ if (name_record->last)
len += snprintf(temp_name + len, temp_len - len, "%s", name_record->last);
- if(name_record->first)
+ if (name_record->first)
len += snprintf(temp_name + len, temp_len - len, "%s", name_record->first);
- if(name_record->addition)
+ if (name_record->addition)
len += snprintf(temp_name + len, temp_len - len, "%s", name_record->addition);
- if(name_record->suffix)
+ if (name_record->suffix)
len += snprintf(temp_name + len, temp_len - len, "%s", name_record->suffix);
}
"VALUES(%d, %d, ?, %d)", CTS_TABLE_NAME_LOOKUP, name_record->id,
contact_id, 0);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("ctsvc_query_prepare() Fail(%d)", ret);
free(temp_name);
free(normalized_name);
return ret;
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
return ret;
}
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(name_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(name_list));
}
if (contact->numbers) {
len = 0;
do {
contacts_list_get_current_record_p(number_list, (contacts_record_h*)&number_record);
- if (NULL != number_record && number_record->number) {
+ if (number_record && number_record->number) {
if (NULL == number_record->cleaned)
continue;
- // actually phone_lookup minmatch is not used
+ /* actually phone_lookup minmatch is not used */
snprintf(query, sizeof(query), "INSERT INTO %s(data_id, contact_id, number, min_match) "
"VALUES(%d, %d, ?, ?)", CTS_TABLE_PHONE_LOOKUP, number_record->id,
contact_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
if (*number_record->cleaned)
ctsvc_stmt_bind_text(stmt, 1, number_record->cleaned);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
- if (number_record->normalized && strcmp(number_record->cleaned, number_record->normalized) != 0) {
+ if (number_record->normalized && STRING_EQUAL != strcmp(number_record->cleaned, number_record->normalized)) {
ctsvc_stmt_reset(stmt);
if (*number_record->normalized)
ctsvc_stmt_bind_text(stmt, 1, number_record->normalized);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
}
ctsvc_stmt_finalize(stmt);
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(number_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(number_list));
}
if (contact->nicknames) {
contacts_list_first(nickname_list);
do {
contacts_list_get_current_record_p(nickname_list, (contacts_record_h*)&nickname);
- if (NULL != nickname && NULL != nickname->nickname) {
+ if (nickname && nickname->nickname) {
char *normalized_nickname = NULL;
ctsvc_normalize_str(nickname->nickname, &normalized_nickname);
snprintf(query, sizeof(query), "INSERT INTO %s(data_id, contact_id, name, type) "
"VALUES(%d, %d, ?, %d)", CTS_TABLE_NAME_LOOKUP, nickname->id,
contact_id, 0);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("ctsvc_query_prepare() Fail(%d)", ret);
free(normalized_nickname);
return ret;
}
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
return ret;
}
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(nickname_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(nickname_list));
}
return CONTACTS_ERROR_NONE;
}
-static inline int __ctsvc_contact_update_search_data(int contact_id)
+static inline int __ctsvc_contact_update_search_data(const char *zone_name, int contact_id, bool need_refresh_lookup_data)
{
int ret;
cts_stmt stmt = NULL;
char *search_data = NULL;
ctsvc_contact_s *contact = NULL;
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
- ret = ctsvc_db_contact_get(contact_id, (contacts_record_h*)&contact);
+ ret = ctsvc_db_contact_get(zone_name, contact_id, (contacts_record_h*)&contact);
if (CONTACTS_ERROR_NO_DATA == ret) {
int r;
snprintf(query, sizeof(query), "DELETE FROM %s WHERE contact_id = %d",
CTS_TABLE_SEARCH_INDEX, contact_id);
- r = ctsvc_query_exec(query);
+ r = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != r) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", r);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", r);
+ ctsvc_end_trans(zone_name, false);
return r;
}
+ ctsvc_end_trans(zone_name, false);
return ret;
}
else if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_db_contact_get() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_db_contact_get() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
+ return ret;
+ }
+
+ ret = ctsvc_contact_make_search_name(contact, &search_name);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_contact_make_search_name() Fail(%d)", ret);
+ contacts_record_destroy((contacts_record_h)contact, true);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = __ctsvc_contact_make_search_data(contact_id, contact, &search_name, &search_number, &search_data);
+ ret = __ctsvc_contact_make_search_data(contact, &search_number, &search_data);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_contact_make_search_data() Failed(%d)", ret);
+ CTS_ERR("__ctsvc_contact_make_search_data() Fail(%d)", ret);
contacts_record_destroy((contacts_record_h)contact, true);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
+ free(search_name);
return ret;
}
"WHERE contact_id = %d",
CTS_TABLE_SEARCH_INDEX, contact_id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("ctsvc_query_prepare() Fail(%d)", ret);
contacts_record_destroy((contacts_record_h)contact, true);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
free(search_name);
free(search_number);
free(search_data);
free(search_data);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
contacts_record_destroy((contacts_record_h)contact, true);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ctsvc_stmt_finalize(stmt);
- // update phone_lookup, name_lookup
- ret = __ctsvc_contact_refresh_lookup_data(contact_id, contact);
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_contact_refresh_lookup_data() Failed(%d)", ret);
- contacts_record_destroy((contacts_record_h)contact, true);
- ctsvc_end_trans(false);
- return ret;
+ if (need_refresh_lookup_data) {
+ /* update phone_lookup, name_lookup */
+ ret = __ctsvc_contact_refresh_lookup_data(zone_name, contact_id, contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("__ctsvc_contact_refresh_lookup_data() Fail(%d)", ret);
+ contacts_record_destroy((contacts_record_h)contact, true);
+ ctsvc_end_trans(zone_name, false);
+ return ret;
+ }
}
contacts_record_destroy((contacts_record_h)contact, true);
- ret = ctsvc_end_trans(true);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_end_trans() Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_contact_update_record( contacts_record_h record )
+static bool __ctsvc_list_check_dirty(ctsvc_list_s *list)
+{
+ if (list) {
+ if (list->deleted_records) {
+ return true;
+ }
+ GList *c = NULL;
+ for (c=list->records;c;c=c->next) {
+ ctsvc_record_s *s_record = c->data;
+ int i;
+ unsigned int property_info_count = 0;
+ const property_info_s *property_info = ctsvc_view_get_all_property_infos(s_record->view_uri, &property_info_count);
+ for (i=0;i<property_info_count;i++) {
+ if (ctsvc_record_check_property_flag(s_record, property_info[i].property_id, CTSVC_PROPERTY_FLAG_DIRTY)) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+}
+
+static bool __ctsvc_get_need_refresh_lookup_data(ctsvc_contact_s *contact)
+{
+ if (__ctsvc_list_check_dirty(contact->name))
+ return true;
+ if (__ctsvc_list_check_dirty(contact->numbers))
+ return true;
+ if (__ctsvc_list_check_dirty(contact->nicknames))
+ return true;
+ return false;
+}
+
+static int __ctsvc_db_contact_update_record(const char *zone_name, contacts_record_h record)
{
int ret, len = 0;
int rel_changed = 0;
bool is_invalid = false;
int current_version = 0;
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans() Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT changed_ver FROM "CTS_TABLE_CONTACTS" "
"WHERE contact_id = %d AND deleted = 0", contact->id);
- ret = ctsvc_query_get_first_int_result(query, ¤t_version);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, ¤t_version);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("The index(%d) is Invalid. %d Record(s) is(are) found", contact->id, ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(contact->addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, contact->addressbook_id)) {
CTS_ERR("Does not have permission to update this contact");
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
is_invalid = true;
__ctsvc_contact_check_default_data(contact);
- //update data
- ret = __ctsvc_contact_update_data(contact);
+ /* check lookup data is dirty */
+ bool need_update_lookup = __ctsvc_get_need_refresh_lookup_data(contact);
+
+ /* update data */
+ ret = __ctsvc_contact_update_data(zone_name, contact);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_contact_update_data() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("__ctsvc_contact_update_data() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
if (contact->grouprelations) {
- rel_changed = __ctsvc_contact_update_grouprel(contact->id, (contacts_list_h)contact->grouprelations);
+ rel_changed = __ctsvc_contact_update_grouprel(zone_name, contact->id, (contacts_list_h)contact->grouprelations);
if (rel_changed < CONTACTS_ERROR_NONE) {
- CTS_ERR("cts_update_contact_grouprel() Failed(%d)", rel_changed);
- ctsvc_end_trans(false);
+ CTS_ERR("cts_update_contact_grouprel() Fail(%d)", rel_changed);
+ ctsvc_end_trans(zone_name, false);
return rel_changed;
}
}
- //////////////////////////////////////////////////////////////////////
- // this code will be removed.
+ /* thumbnail */
if (contact->images) {
int ret = CONTACTS_ERROR_NONE;
- contacts_record_h record_image = NULL;
int count = 0;
ctsvc_image_s *image;
contacts_list_get_count((contacts_list_h)contact->images, &count);
if (count) {
contacts_list_first((contacts_list_h)contact->images);
- ret = contacts_list_get_current_record_p((contacts_list_h)contact->images, &record_image);
-
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("contacts_list_get_current_record_p() Failed(%d)", ret);
- ctsvc_end_trans(false);
- return CONTACTS_ERROR_DB;
- }
+ do {
+ ret = contacts_list_get_current_record_p((contacts_list_h)contact->images, (contacts_record_h*)&image);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("contacts_list_get_current_record_p() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
+ return CONTACTS_ERROR_DB;
+ }
- image = (ctsvc_image_s*)record_image;
+ if (image->is_default)
+ break;
+ } while (CONTACTS_ERROR_NONE == contacts_list_next((contacts_list_h)contact->images));
- if ((NULL == contact->image_thumbnail_path && NULL != image->path) ||
- (NULL != contact->image_thumbnail_path && NULL == image->path) ||
- (contact->image_thumbnail_path && image->path && 0 != strcmp(contact->image_thumbnail_path, image->path))) {
+ if ((NULL == contact->image_thumbnail_path && image->path) ||
+ (contact->image_thumbnail_path && NULL == image->path) ||
+ (contact->image_thumbnail_path && image->path && (STRING_EQUAL != strcmp(contact->image_thumbnail_path, image->path)))) {
ctsvc_record_set_property_flag((ctsvc_record_s *)contact, _contacts_contact.image_thumbnail_path, CTSVC_PROPERTY_FLAG_DIRTY);
if (ctsvc_contact_check_image_location(image->path))
free(contact->image_thumbnail_path);
contact->image_thumbnail_path = NULL;
bool is_changed = ctsvc_record_check_property_flag((ctsvc_record_s *)contact, _contacts_contact.image_thumbnail_path, CTSVC_PROPERTY_FLAG_DIRTY);
- if ((!is_changed && !is_invalid) || (is_changed && !is_invalid)) {
+ if ((false == is_changed && false == is_invalid) || (is_changed && false == is_invalid)) {
ctsvc_record_set_property_flag((ctsvc_record_s *)contact, _contacts_contact.image_thumbnail_path, CTSVC_PROPERTY_FLAG_DIRTY);
}
else {
}
}
}
- // this code will be removed.
- //////////////////////////////////////////////////////////////////////
if (is_invalid) {
ctsvc_contact_s* temp_contact;
contacts_record_create(_contacts_contact._uri, (contacts_record_h*)&temp_contact);
- ret = __ctsvc_db_get_data(contact->id, temp_contact);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "__ctsvc_db_get_data() Fail(%d)", ret);
+ ret = __ctsvc_db_get_data(zone_name, contact->id, temp_contact);
ctsvc_contact_make_display_name(temp_contact);
FREEandSTRDUP(contact->display_name, temp_contact->display_name);
char query_set[CTS_SQL_MIN_LEN] = {0, };
cts_stmt stmt = NULL;
- version = ctsvc_get_next_ver();
+ version = ctsvc_get_next_ver(zone_name);
ret = ctsvc_db_create_set_query(record, &set, &bind_text);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_db_create_set_query() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_db_create_set_query() Fail(%d)", ret);
if (set && *set)
len = snprintf(query_set, sizeof(query_set), "%s, ", set);
snprintf(query, sizeof(query), "UPDATE %s SET %s WHERE contact_id = %d", CTS_TABLE_CONTACTS, query_set, contact->id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
break;
}
}
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
break;
}
} while (0);
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
CONTACTS_FREE(set);
if (bind_text) {
return ret;
}
- ctsvc_set_contact_noti();
+ ctsvc_set_contact_noti(zone_name);
if (0 < rel_changed)
- ctsvc_set_group_rel_noti();
+ ctsvc_set_group_rel_noti(zone_name);
- __ctsvc_contact_update_search_data(contact->id);
- ctsvc_db_update_person((contacts_record_h)contact);
+ __ctsvc_contact_update_search_data(zone_name, contact->id, need_update_lookup);
+ ctsvc_db_update_person(zone_name, (contacts_record_h)contact);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
CONTACTS_FREE(set);
g_slist_free(bind_text);
}
- ret = ctsvc_end_trans(true);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_contact_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_contact_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int ret;
int len;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
}
contact_id = ctsvc_stmt_get_int(stmt, 0);
- ret = ctsvc_db_contact_get(contact_id, &record);
+ ret = ctsvc_db_contact_get(zone_name, contact_id, &record);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_get() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_db_contact_get() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_contact_get_changed_ver(int contact_id, ctsvc_contact_s *contact)
+static int __ctsvc_db_contact_get_changed_ver(const char *zone_name, int contact_id, ctsvc_contact_s *contact)
{
int ret;
int version;
snprintf(query, sizeof(query),
"SELECT changed_ver FROM "CTS_TABLE_CONTACTS
" WHERE contact_id = %d AND deleted = 0", contact_id);
- ret = ctsvc_query_get_first_int_result(query, &version);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &version);
if (CONTACTS_ERROR_NONE == ret)
contact->changed_ver = version;
return ret;
}
-static int __ctsvc_db_contact_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_contact_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list)
{
int ret;
int i;
}
}
}
- else
+ else {
+ s_query->projection_count = 0;
had_contact_id = true;
+ }
+
+ if (false == had_contact_id) {
+ s_query->projection = realloc(s_query->projection, s_query->projection_count+1);
+ if (NULL == s_query->projection) {
+ CTS_ERR("realloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
- if (!had_contact_id) {
- unsigned int *temp = realloc(s_query->projection, s_query->projection_count+1);
- RETVM_IF(NULL == temp, CONTACTS_ERROR_OUT_OF_MEMORY, "realloc() return NULL");
- s_query->projection = temp;
s_query->projection[s_query->projection_count] = CTSVC_PROPERTY_CONTACT_ID;
s_query->projection_count++;
}
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_CONTACT_DISPLAY_NAME:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(contact->display_name);
contact->display_name = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID:
break;
case CTSVC_PROPERTY_CONTACT_RINGTONE:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(contact->ringtone_path);
contact->ringtone_path = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL:
temp = ctsvc_stmt_get_text(stmt, i);
if (temp && *temp) {
snprintf(full_path, sizeof(full_path), "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, temp);
+ free(contact->image_thumbnail_path);
contact->image_thumbnail_path = strdup(full_path);
}
break;
break;
case CTSVC_PROPERTY_CONTACT_UID:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(contact->uid);
contact->uid = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_CONTACT_VIBRATION:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(contact->vibration);
contact->vibration = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_CONTACT_MESSAGE_ALERT:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(contact->message_alert);
contact->message_alert = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_CONTACT_CHANGED_TIME:
break;
}
}
- // get changed_ver
- ret = __ctsvc_db_contact_get_changed_ver(contact_id, contact);
+ /* get changed_ver */
+ ret = __ctsvc_db_contact_get_changed_ver(zone_name, contact_id, contact);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_db_contact_get_changed_ver Failed(%d)", ret);
+ CTS_ERR("__ctsvc_db_contact_get_changed_ver Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
}
- ret = __ctsvc_db_get_data(contact_id, contact);
+ ret = __ctsvc_db_get_data(zone_name, contact_id, contact);
if (CONTACTS_ERROR_NONE != ret && CONTACTS_ERROR_NO_DATA != ret) {
- CTS_ERR("ctsvc_get_data_info Failed(%d)", ret);
+ CTS_ERR("ctsvc_get_data_info Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
}
- ret = __ctsvc_get_contact_grouprel(contact_id, contact);
+ ret = __ctsvc_get_contact_grouprel(zone_name, contact_id, contact);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_get_group_relations Failed(%d)", ret);
+ CTS_ERR("ctsvc_get_group_relations Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-//static int __ctsvc_db_contact_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_contact_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_contact_delete_records(int ids[], int count) { return CONTACTS_ERROR_NONE; }
+/*
+ * static int __ctsvc_db_contact_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
+ * static int __ctsvc_db_contact_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
+ * static int __ctsvc_db_contact_delete_records(int ids[], int count) { return CONTACTS_ERROR_NONE; }
+ */
-static int __ctsvc_contact_insert_data(ctsvc_contact_s *contact)
+static int __ctsvc_contact_insert_data(const char *zone_name, ctsvc_contact_s *contact)
{
int ret;
- //Insert the name
+ /* Insert the name */
if (contact->name) {
- ret = ctsvc_contact_insert_data_name((contacts_list_h)contact->name, contact->id, false);
+ ret = ctsvc_contact_insert_data_name(zone_name, (contacts_list_h)contact->name, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_insert_data_name() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_insert_data_name() Fail(%d)", ret);
return ret;
}
}
- //Insert the company
+ /* Insert the company */
if (contact->company) {
- ret = ctsvc_contact_insert_data_company((contacts_list_h)contact->company, contact->id, false);
+ ret = ctsvc_contact_insert_data_company(zone_name, (contacts_list_h)contact->company, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_insert_contact_data_company() Failed(%d)", ret);
+ CTS_ERR("ctsvc_insert_contact_data_company() Fail(%d)", ret);
return ret;
}
}
- //Insert the events
+ /* Insert the events */
if (contact->events) {
- ret = ctsvc_contact_insert_data_event((contacts_list_h)contact->events, contact->id, false);
+ ret = ctsvc_contact_insert_data_event(zone_name, (contacts_list_h)contact->events, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_insert_contact_data_event() Failed(%d)", ret);
+ CTS_ERR("ctsvc_insert_contact_data_event() Fail(%d)", ret);
return ret;
}
}
- //Insert the messengers
+ /* Insert the messengers */
if (contact->messengers) {
- ret = ctsvc_contact_insert_data_messenger((contacts_list_h)contact->messengers, contact->id, false);
+ ret = ctsvc_contact_insert_data_messenger(zone_name, (contacts_list_h)contact->messengers, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_insert_contact_data_messenger() Failed(%d)", ret);
+ CTS_ERR("ctsvc_insert_contact_data_messenger() Fail(%d)", ret);
return ret;
}
}
- //Insert the postals
+ /* Insert the postals */
if (contact->postal_addrs) {
- ret = ctsvc_contact_insert_data_address((contacts_list_h)contact->postal_addrs, contact->id, false);
+ ret = ctsvc_contact_insert_data_address(zone_name, (contacts_list_h)contact->postal_addrs, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_insert_contact_data_postal() Failed(%d)", ret);
+ CTS_ERR("ctsvc_insert_contact_data_postal() Fail(%d)", ret);
return ret;
}
}
- //Insert the Web addrs
+ /* Insert the Web addrs */
if (contact->urls) {
- ret = ctsvc_contact_insert_data_url((contacts_list_h)contact->urls, contact->id, false);
+ ret = ctsvc_contact_insert_data_url(zone_name, (contacts_list_h)contact->urls, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_insert_contact_data_web() Failed(%d)", ret);
+ CTS_ERR("ctsvc_insert_contact_data_web() Fail(%d)", ret);
return ret;
}
}
- //Insert the Nick names
+ /* Insert the Nick names */
if (contact->nicknames) {
- ret = ctsvc_contact_insert_data_nickname((contacts_list_h)contact->nicknames, contact->id, false);
+ ret = ctsvc_contact_insert_data_nickname(zone_name, (contacts_list_h)contact->nicknames, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_insert_contact_data_nickname() Failed(%d)", ret);
+ CTS_ERR("ctsvc_insert_contact_data_nickname() Fail(%d)", ret);
return ret;
}
}
- //Insert the numbers
+ /* Insert the numbers */
if (contact->numbers) {
- ret = ctsvc_contact_insert_data_number((contacts_list_h)contact->numbers, contact->id, false);
+ ret = ctsvc_contact_insert_data_number(zone_name, (contacts_list_h)contact->numbers, contact->id, false);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_contact_insert_data_number() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_insert_data_number() Fail(%d)", ret);
return ret;
}
}
- //Insert the emails
+ /* Insert the emails */
if (contact->emails) {
- ret = ctsvc_contact_insert_data_email((contacts_list_h)contact->emails, contact->id, false);
+ ret = ctsvc_contact_insert_data_email(zone_name, (contacts_list_h)contact->emails, contact->id, false);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_insert_contact_data_email() Failed(%d)", ret);
+ CTS_ERR("ctsvc_insert_contact_data_email() Fail(%d)", ret);
return ret;
}
}
- //Insert the profile values
+ /* Insert the profile values */
if (contact->profiles) {
- ret = ctsvc_contact_insert_data_profile((contacts_list_h)contact->profiles, contact->id, false);
+ ret = ctsvc_contact_insert_data_profile(zone_name, (contacts_list_h)contact->profiles, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_insert_contact_data_profile() Failed(%d)", ret);
+ CTS_ERR("ctsvc_insert_contact_data_profile() Fail(%d)", ret);
return ret;
}
}
- //Insert the relationship values
+ /* Insert the relationship values */
if (contact->relationships) {
- ret = ctsvc_contact_insert_data_relationship((contacts_list_h)contact->relationships, contact->id, false);
+ ret = ctsvc_contact_insert_data_relationship(zone_name, (contacts_list_h)contact->relationships, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_insert_data_relationship() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_insert_data_relationship() Fail(%d)", ret);
return ret;
}
}
- //Insert the image values
+ /* Insert the image values */
if (contact->images) {
- ret = ctsvc_contact_insert_data_image((contacts_list_h)contact->images, contact->id, false);
+ ret = ctsvc_contact_insert_data_image(zone_name, (contacts_list_h)contact->images, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_insert_data_image() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_insert_data_image() Fail(%d)", ret);
return ret;
}
}
- //Insert the note values
+ /* Insert the note values */
if (contact->note) {
- ret = ctsvc_contact_insert_data_note((contacts_list_h)contact->note, contact->id, false);
+ ret = ctsvc_contact_insert_data_note(zone_name, (contacts_list_h)contact->note, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_insert_data_note() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_insert_data_note() Fail(%d)", ret);
return ret;
}
}
- //Insert the extensions values
+ /* Insert the extensions values */
if (contact->extensions) {
- ret = ctsvc_contact_insert_data_extension((contacts_list_h)contact->extensions, contact->id, false);
+ ret = ctsvc_contact_insert_data_extension(zone_name, (contacts_list_h)contact->extensions, contact->id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_insert_data_extension() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_insert_data_extension() Fail(%d)", ret);
return ret;
}
}
return CONTACTS_ERROR_NONE;
}
-static inline int __ctsvc_contact_insert_search_data(int contact_id)
+static inline int __ctsvc_contact_insert_search_data(const char *zone_name, int contact_id, bool need_insert_lookup_data)
{
int ret;
cts_stmt stmt = NULL;
char *search_data = NULL;
ctsvc_contact_s *contact = NULL;
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "contacts_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "contacts_begin_trans() Fail(%d)", ret);
- ret = ctsvc_db_contact_get(contact_id, (contacts_record_h*)&contact);
+ ret = ctsvc_db_contact_get(zone_name, contact_id, (contacts_record_h*)&contact);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_db_contact_get() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_db_contact_get() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = __ctsvc_contact_make_search_data(contact_id, contact, &search_name, &search_number, &search_data);
+ ret = ctsvc_contact_make_search_name(contact, &search_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_contact_make_search_data() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_make_search_name() Fail(%d)", ret);
contacts_record_destroy((contacts_record_h)contact, true);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
+ return ret;
+ }
+
+ ret = __ctsvc_contact_make_search_data(contact, &search_number, &search_data);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("__ctsvc_contact_make_search_data() Fail(%d)", ret);
+ contacts_record_destroy((contacts_record_h)contact, true);
+ ctsvc_end_trans(zone_name, false);
+ free(search_name);
return ret;
}
"VALUES(%d, ?, ?, ?)",
CTS_TABLE_SEARCH_INDEX, contact_id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("ctsvc_query_prepare() Fail(%d)", ret);
contacts_record_destroy((contacts_record_h)contact, true);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
free(search_name);
free(search_number);
free(search_data);
return ret;
}
- if(search_name)
+ if (search_name)
ctsvc_stmt_bind_text(stmt, 1, search_name);
- if(search_number)
+ if (search_number)
ctsvc_stmt_bind_text(stmt, 2, search_number);
- if(search_data)
+ if (search_data)
ctsvc_stmt_bind_text(stmt, 3, search_data);
ret = ctsvc_stmt_step(stmt);
free(search_data);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
contacts_record_destroy((contacts_record_h)contact, true);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ctsvc_stmt_finalize(stmt);
- // update phone_lookup, name_lookup
- ret = __ctsvc_contact_refresh_lookup_data(contact_id, contact);
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_contact_refresh_lookup_data() Failed(%d)", ret);
- contacts_record_destroy((contacts_record_h)contact, true);
- ctsvc_end_trans(false);
- return ret;
+ /* update phone_lookup, name_lookup */
+ if (need_insert_lookup_data) {
+ ret = __ctsvc_contact_refresh_lookup_data(zone_name, contact_id, contact);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("__ctsvc_contact_refresh_lookup_data() Failed(%d)", ret);
+ contacts_record_destroy((contacts_record_h)contact, true);
+ ctsvc_end_trans(zone_name, false);
+ return ret;
+ }
}
contacts_record_destroy((contacts_record_h)contact, true);
- ret = ctsvc_end_trans(true);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_end_trans() Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
-static inline int __ctsvc_contact_insert_grouprel(int contact_id, contacts_list_h group_list)
+static inline int __ctsvc_contact_insert_grouprel(const char *zone_name, int contact_id, contacts_list_h group_list)
{
CTS_FN_CALL;
ctsvc_group_relation_s *grouprel;
RETV_IF(NULL == group_list, CONTACTS_ERROR_INVALID_PARAMETER);
ret = contacts_list_get_count(group_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(group_list);
RETVM_IF(grouprel->group_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "group_id(%d) invalid", grouprel->group_id);
if (grouprel->group_id) {
- ret = ctsvc_group_add_contact_in_transaction(grouprel->group_id, contact_id);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_db_group_set_relation() Failed(%d)", ret);
+ ret = ctsvc_group_add_contact_in_transaction(zone_name, grouprel->group_id, contact_id);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_db_group_set_relation() Fail(%d)", ret);
if (0 < ret)
rel_changed += ret;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(group_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(group_list));
if (rel_changed)
return rel_changed;
return CONTACTS_ERROR_NONE;
}
-inline static int __ctsvc_find_person_to_link_with_number(const char *number, int addressbook_id, int *person_id)
+inline static int __ctsvc_find_person_to_link_with_number(const char *zone_name, const char *number, int addressbook_id, int *person_id)
{
int ret;
cts_stmt stmt = NULL;
char normal_num[sizeof(clean_num)+20];
ret = ctsvc_normalize_number(clean_num, normal_num, sizeof(normal_num), true);
char minmatch[sizeof(normal_num)+1];
- if (0 < ret) {
+ if (0 < ret)
ret = ctsvc_get_minmatch_number(normal_num, minmatch, sizeof(minmatch), ctsvc_get_phonenumber_min_match_digit());
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_get_minmatch_number() Fail(%d)", ret);
- }
snprintf(query, sizeof(query),
"SELECT C.person_id FROM "CTS_TABLE_CONTACTS" C, "CTS_TABLE_DATA" D "
"ON C.contact_id=D.contact_id AND D.datatype=%d AND C.deleted = 0 "
"AND C.addressbook_id <> %d AND D.is_my_profile = 0 "
"WHERE D.data4 = ?",
- // Below condition takes long time, so omit the condition
- // AND _NUMBER_COMPARE_(D.data5, ?, NULL, NULL)
+ /* Below condition takes long time, so omit the condition */
+ /* AND _NUMBER_COMPARE_(D.data5, ?, NULL, NULL) */
CTSVC_DATA_NUMBER, addressbook_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "ctsvc_query_prepare fail(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "ctsvc_query_prepare Fail(%d)", ret);
ctsvc_stmt_bind_text(stmt, 1, minmatch);
-// ctsvc_stmt_bind_text(stmt, 2, normal_num);
+ /* ctsvc_stmt_bind_text(stmt, 2, normal_num); */
ret = ctsvc_stmt_step(stmt);
if (1 == ret) {
*person_id = ctsvc_stmt_get_int(stmt, 0);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-inline static int __ctsvc_find_person_to_link_with_email(const char *email_addr, int addressbook_id, int *person_id)
+inline static int __ctsvc_find_person_to_link_with_email(const char *zone_name, const char *email_addr, int addressbook_id, int *person_id)
{
int ret;
cts_stmt stmt = NULL;
"WHERE D.data3 = ?",
CTSVC_DATA_EMAIL, addressbook_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "ctsvc_query_prepare fail(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "ctsvc_query_prepare Fail(%d)", ret);
ctsvc_stmt_bind_text(stmt, 1, email_addr);
ret = ctsvc_stmt_step(stmt);
return ret;
}
-inline static int __ctsvc_find_person_to_link(contacts_record_h record, int addressbook_id, int *person_id)
+inline static int __ctsvc_find_person_to_link(const char *zone_name, contacts_record_h record, int addressbook_id, int *person_id)
{
int ret;
ctsvc_contact_s *contact = (ctsvc_contact_s*)record;
ctsvc_email_s *email_data;
GList *cursor;
- for(cursor = contact->numbers->records;cursor;cursor=cursor->next) {
+ for (cursor = contact->numbers->records;cursor;cursor=cursor->next) {
number_data = (ctsvc_number_s *)cursor->data;
- if (number_data && number_data->number && number_data->number[0]){
- ret = __ctsvc_find_person_to_link_with_number(number_data->number, addressbook_id, person_id);
+ if (number_data && number_data->number && number_data->number[0]) {
+ ret = __ctsvc_find_person_to_link_with_number(zone_name, number_data->number, addressbook_id, person_id);
- if (ret == CONTACTS_ERROR_NONE && *person_id > 0)
+ if (ret == CONTACTS_ERROR_NONE && 0 < *person_id)
return ret;
}
}
- for(cursor = contact->emails->records;cursor;cursor=cursor->next) {
+ for (cursor = contact->emails->records;cursor;cursor=cursor->next) {
email_data = (ctsvc_email_s *)cursor->data;
- if (email_data && email_data->email_addr && email_data->email_addr[0]){
- ret = __ctsvc_find_person_to_link_with_email(email_data->email_addr, addressbook_id, person_id);
+ if (email_data && email_data->email_addr && email_data->email_addr[0]) {
+ ret = __ctsvc_find_person_to_link_with_email(zone_name, email_data->email_addr, addressbook_id, person_id);
- if (ret == CONTACTS_ERROR_NONE && *person_id > 0)
+ if (ret == CONTACTS_ERROR_NONE && 0 < *person_id)
return ret;
}
}
return CONTACTS_ERROR_NO_DATA;
}
-static int __ctsvc_db_contact_insert_record( contacts_record_h record, int *id)
+static int __ctsvc_db_contact_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int version;
int ret, person_id = 0;
int rel_changed = 0;
cts_stmt stmt = NULL;
- // These check should be done in client side
+ /* These check should be done in client side */
RETVM_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : contact is NULL");
RETVM_IF(contact->addressbook_id < 0, CONTACTS_ERROR_INVALID_PARAMETER,
if (contact->link_mode == CONTACTS_CONTACT_LINK_MODE_IGNORE_ONCE)
auto_link_enabled = false;
- ret = ctsvc_begin_trans();
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
- if (false == ctsvc_have_ab_write_permission(contact->addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, contact->addressbook_id)) {
CTS_ERR("ctsvc_have_ab_write_permission fail : does not have permission(addressbook_id : %d)",
contact->addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_get_next_id(CTS_TABLE_CONTACTS);
+ ret = ctsvc_db_get_next_id(zone_name, CTS_TABLE_CONTACTS);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_db_get_next_id() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_db_get_next_id() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
contact->id = ret;
ctsvc_contact_make_display_name(contact);
__ctsvc_contact_check_default_data(contact);
- //Insert Data
- ret = __ctsvc_contact_insert_data(contact);
+ /* check lookup data is dirty */
+ bool need_insert_lookup = __ctsvc_get_need_refresh_lookup_data(contact);
+
+ /* Insert Data */
+ ret = __ctsvc_contact_insert_data(zone_name, contact);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("cts_insert_contact_data() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("cts_insert_contact_data() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- //////////////////////////////////////////////////////////////////////
- // this code will be removed.
+ /* thumbnail */
free(contact->image_thumbnail_path);
contact->image_thumbnail_path = NULL;
-
if (contact->images) {
- ctsvc_image_s *image;
int count = 0;
+ ctsvc_image_s *image;
contacts_list_get_count((contacts_list_h)contact->images, &count);
-
- while (count) {
+ if (count) {
contacts_list_first((contacts_list_h)contact->images);
- ret = contacts_list_get_current_record_p((contacts_list_h)contact->images, (contacts_record_h*)&image);
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("contacts_list_get_current_record_p() Failed(%d)", ret);
- ctsvc_end_trans(false);
- return CONTACTS_ERROR_DB;
- }
+ do {
+ ret = contacts_list_get_current_record_p((contacts_list_h)contact->images, (contacts_record_h*)&image);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("contacts_list_get_current_record_p() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
+ return CONTACTS_ERROR_DB;
+ }
- if (image->path && image->is_default) {
- contact->image_thumbnail_path = strdup(image->path);
- break;
- }
- count--;
+ if (image->path && image->is_default) {
+ contact->image_thumbnail_path = strdup(image->path);
+ break;
+ }
+ } while (CONTACTS_ERROR_NONE == contacts_list_next((contacts_list_h)contact->images));
}
}
- // this code will be removed.
- //////////////////////////////////////////////////////////////////////
- version = ctsvc_get_next_ver();
+ version = ctsvc_get_next_ver(zone_name);
if (contact->person_id) {
int id;
snprintf(query,sizeof(query),
"SELECT contact_id FROM "CTSVC_DB_VIEW_CONTACT" "
"WHERE person_id = %d", contact->person_id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("Invalid person_id(%d)", contact->person_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
auto_linked = true;
}
else if (auto_link_enabled) {
- ret = __ctsvc_find_person_to_link((contacts_record_h)contact, contact->addressbook_id, &person_id);
- CTS_DBG("__ctsvc_find_person_to_link return %d , person_id(%d)", ret, person_id);
- if (ret == CONTACTS_ERROR_NONE && person_id > 0) {
+ ret = __ctsvc_find_person_to_link(zone_name, (contacts_record_h)contact, contact->addressbook_id, &person_id);
+ CTS_DBG("__ctsvc_find_person_to_link return %d, person_id(%d)", ret, person_id);
+ if (ret == CONTACTS_ERROR_NONE && 0 < person_id) {
contact->person_id = person_id;
auto_linked = true;
}
else {
- ret = ctsvc_db_insert_person((contacts_record_h)contact);
+ ret = ctsvc_db_insert_person(zone_name, (contacts_record_h)contact);
CTS_DBG("ctsvc_db_insert_person return %d, person_id(%d)", ret, ret);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_db_insert_person() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_db_insert_person() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
contact->person_id = ret;
}
}
else {
- ret = ctsvc_db_insert_person((contacts_record_h)contact);
+ ret = ctsvc_db_insert_person(zone_name, (contacts_record_h)contact);
CTS_DBG("ctsvc_db_insert_person return %d, person_id(%d)", ret, ret);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_db_insert_person() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_db_insert_person() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
contact->person_id = ret;
"VALUES(%d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, ?, ?, %d, %d, %d, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
contact->id, contact->person_id, contact->addressbook_id, contact->is_favorite,
version, version, (int)time(NULL), contact->link_mode,
- (NULL !=contact->image_thumbnail_path)?version:0, contact->has_phonenumber, contact->has_email,
+ (contact->image_thumbnail_path)?version:0, contact->has_phonenumber, contact->has_email,
contact->display_source_type, contact->display_name_language, contact->reverse_display_name_language);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ctsvc_stmt_finalize(stmt);
- //Insert group Info
+ /* Insert group Info */
if (contact->grouprelations) {
- rel_changed = __ctsvc_contact_insert_grouprel(contact->id, (contacts_list_h)contact->grouprelations);
+ rel_changed = __ctsvc_contact_insert_grouprel(zone_name, contact->id, (contacts_list_h)contact->grouprelations);
if (rel_changed < CONTACTS_ERROR_NONE) {
- CTS_ERR("__ctsvc_contact_insert_grouprel() Failed(%d)", rel_changed);
- ctsvc_end_trans(false);
+ CTS_ERR("__ctsvc_contact_insert_grouprel() Fail(%d)", rel_changed);
+ ctsvc_end_trans(zone_name, false);
return rel_changed;
}
}
- ret = __ctsvc_contact_insert_search_data(contact->id);
+ ret = __ctsvc_contact_insert_search_data(zone_name, contact->id, need_insert_lookup);
if (ret != CONTACTS_ERROR_NONE) {
- CTS_ERR("__ctsvc_contact_insert_search_data() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("__ctsvc_contact_insert_search_data() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- // person aggregation when auto_linked
+ /* person aggregation when auto_linked */
if (auto_linked)
- ctsvc_person_aggregate(contact->person_id);
+ ctsvc_person_aggregate(zone_name, contact->person_id);
#ifdef ENABLE_LOG_FEATURE
- // update phonelog
+ /* update phonelog */
if (contact->numbers) {
int count;
ret = contacts_list_get_count((contacts_list_h)contact->numbers, &count);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "contacts_list_get_count() Fail(%d)", ret);
contacts_list_first((contacts_list_h)contact->numbers);
- if (count > 0) {
+ if (0 < count) {
ctsvc_number_s *number_record;
do {
contacts_list_get_current_record_p((contacts_list_h)contact->numbers, (contacts_record_h*)&number_record);
if (number_record->number)
- ctsvc_db_phone_log_update_person_id(number_record->number, -1, contact->person_id, false);
- } while(CONTACTS_ERROR_NONE == contacts_list_next((contacts_list_h)contact->numbers));
+ ctsvc_db_phone_log_update_person_id(zone_name, number_record->number, -1, contact->person_id, false);
+ } while (CONTACTS_ERROR_NONE == contacts_list_next((contacts_list_h)contact->numbers));
}
}
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
if (rel_changed)
- ctsvc_set_group_rel_noti();
- ctsvc_set_contact_noti();
+ ctsvc_set_group_rel_noti(zone_name);
+ ctsvc_set_contact_noti(zone_name);
- ret = ctsvc_end_trans(true);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_svc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_svc_end_trans() Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_contact_replace_record( contacts_record_h record, int contact_id )
+static int __ctsvc_db_contact_replace_record(const char *zone_name, contacts_record_h record, int contact_id)
{
CTS_FN_CALL;
int ret, len;
cts_stmt stmt = NULL;
int version;
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT addressbook_id, person_id FROM "CTS_TABLE_CONTACTS" "
"WHERE contact_id = %d AND deleted = 0", contact_id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB errror : ctsvc_query_prepare fail(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB errror : ctsvc_query_prepare Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
CTS_ERR("The contact_id(%d) is Invalid(%d)", contact_id, ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
person_id = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to replace this contact (addressbook_id : %d, contact_id : %d", addressbook_id, contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
ctsvc_contact_make_display_name(contact);
__ctsvc_contact_check_default_data(contact);
- //remove current child data
+ /* remove current child data */
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_DATA" WHERE contact_id = %d", contact_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = __ctsvc_contact_insert_data(contact);
+ ret = __ctsvc_contact_insert_data(zone_name, contact);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_contact_insert_data() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("__ctsvc_contact_insert_data() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- //remove current child data
+ /* remove current child data */
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_GROUP_RELATIONS" WHERE contact_id = %d", contact_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
if (contact->grouprelations) {
- rel_changed = __ctsvc_contact_insert_grouprel(contact_id, (contacts_list_h)contact->grouprelations);
+ rel_changed = __ctsvc_contact_insert_grouprel(zone_name, contact_id, (contacts_list_h)contact->grouprelations);
if (rel_changed < CONTACTS_ERROR_NONE) {
- CTS_ERR("__ctsvc_contact_insert_grouprel() Failed(%d)", rel_changed);
- ctsvc_end_trans(false);
+ CTS_ERR("__ctsvc_contact_insert_grouprel() Fail(%d)", rel_changed);
+ ctsvc_end_trans(zone_name, false);
return rel_changed;
}
}
- //////////////////////////////////////////////////////////////////////
- // this code will be removed.
+ /* thumbnail */
if (contact->images) {
int ret = CONTACTS_ERROR_NONE;
- contacts_record_h record_image = NULL;
int count = 0;
ctsvc_image_s *image;
contacts_list_get_count((contacts_list_h)contact->images, &count);
if (count) {
contacts_list_first((contacts_list_h)contact->images);
- ret = contacts_list_get_current_record_p((contacts_list_h)contact->images, &record_image);
+ do {
+ ret = contacts_list_get_current_record_p((contacts_list_h)contact->images, (contacts_record_h*)&image);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("contacts_list_get_current_record_p() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
+ return CONTACTS_ERROR_DB;
+ }
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("contacts_list_get_current_record_p() Failed(%d)", ret);
- ctsvc_end_trans(false);
- return CONTACTS_ERROR_DB;
- }
+ if (image->is_default)
+ break;
+ } while (CONTACTS_ERROR_NONE == contacts_list_next((contacts_list_h)contact->images));
- image = (ctsvc_image_s*)record_image;
- if ((NULL == contact->image_thumbnail_path && NULL != image->path) ||
- (NULL != contact->image_thumbnail_path && NULL == image->path) ||
- (contact->image_thumbnail_path && image->path && 0 != strcmp(contact->image_thumbnail_path, image->path))) {
+ if ((NULL == contact->image_thumbnail_path && image->path) ||
+ (contact->image_thumbnail_path && NULL == image->path) ||
+ (contact->image_thumbnail_path && image->path && STRING_EQUAL != strcmp(contact->image_thumbnail_path, image->path))) {
ctsvc_record_set_property_flag((ctsvc_record_s *)contact, _contacts_contact.image_thumbnail_path, CTSVC_PROPERTY_FLAG_DIRTY);
if (ctsvc_contact_check_image_location(image->path))
else if (contact->image_thumbnail_path) {
free(contact->image_thumbnail_path);
contact->image_thumbnail_path = NULL;
- if (!ctsvc_record_check_property_flag((ctsvc_record_s *)contact, _contacts_contact.image_thumbnail_path, CTSVC_PROPERTY_FLAG_DIRTY)) {
+ if (false == ctsvc_record_check_property_flag((ctsvc_record_s *)contact, _contacts_contact.image_thumbnail_path, CTSVC_PROPERTY_FLAG_DIRTY)) {
ctsvc_record_set_property_flag((ctsvc_record_s *)contact, _contacts_contact.image_thumbnail_path, CTSVC_PROPERTY_FLAG_DIRTY);
}
else {
}
}
}
- // this code will be removed.
- //////////////////////////////////////////////////////////////////////
- version = ctsvc_get_next_ver();
+
+ version = ctsvc_get_next_ver(zone_name);
len = snprintf(query, sizeof(query),
- "UPDATE "CTS_TABLE_CONTACTS" SET changed_ver=%d, changed_time=%d, "
- "has_phonenumber=%d, has_email=%d , display_name=?, "
+ "UPDATE "CTS_TABLE_CONTACTS" SET changed_ver=%d, changed_time=%d, is_favorite=%d, "
+ "has_phonenumber=%d, has_email=%d, display_name=?, "
"reverse_display_name=?, display_name_source=%d, "
"display_name_language=%d, reverse_display_name_language=%d, "
"sort_name=?, reverse_sort_name=?, "
"sortkey=?, reverse_sortkey=?, uid=?, ringtone_path=?, vibration=?, "
"message_alert =?, image_thumbnail_path=?",
- version, (int)time(NULL),
+ version, (int)time(NULL), contact->is_favorite,
contact->has_phonenumber, contact->has_email,
contact->display_source_type,
contact->display_name_language, contact->reverse_display_name_language);
len += snprintf(query+len, sizeof(query)-len, " WHERE contact_id=%d", contact->id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ctsvc_stmt_finalize(stmt);
- ctsvc_set_contact_noti();
+ ctsvc_set_contact_noti(zone_name);
if (0 < rel_changed)
- ctsvc_set_group_rel_noti();
+ ctsvc_set_group_rel_noti(zone_name);
- __ctsvc_contact_update_search_data(contact->id);
- ctsvc_db_update_person((contacts_record_h)contact);
+ __ctsvc_contact_update_search_data(zone_name, contact->id, true);
+ ctsvc_db_update_person(zone_name, (contacts_record_h)contact);
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(zone_name, true);
if (ret < CONTACTS_ERROR_NONE)
return ret;
*
*/
#include <ctype.h>
-#include <sys/types.h>
-#include <sys/syscall.h>
#include <fcntl.h>
#include <unistd.h>
-#include <vconf.h>
-#include <vconf-keys.h>
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_schema.h"
+#include "ctsvc_zone.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_schema.h"
#include "ctsvc_db_init.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_record.h"
#include "ctsvc_normalize.h"
-#include "ctsvc_setting.h"
+#include "ctsvc_server_setting.h"
#include "ctsvc_localize.h"
#include "ctsvc_localize_utils.h"
#include "ctsvc_localize_ch.h"
#include "ctsvc_db_plugin_image_helper.h"
#include "ctsvc_db_plugin_extension_helper.h"
-#include "ctsvc_person.h"
-#include "ctsvc_group.h"
+#include "ctsvc_server_person.h"
+#include "ctsvc_server_group.h"
#ifdef ENABLE_LOG_FEATURE
-#include "ctsvc_phonelog.h"
-#endif // ENABLE_LOG_FEATURE
+#include "ctsvc_server_phonelog.h"
+#endif /* ENABLE_LOG_FEATURE */
#define CTSVC_CONTACT_INITIAL_DATA_MAX_LEN 128
-int ctsvc_contact_add_image_file(int parent_id, int img_id,
+int ctsvc_contact_add_image_file(const char *zone_name, int parent_id, int img_id,
char *src_img, char *dest, int dest_size)
{
int ret;
ext = "";
lower_ext = strdup(ext);
- RETVM_IF(NULL == lower_ext, CONTACTS_ERROR_OUT_OF_MEMORY, "strdup() return NULL");
-
temp = lower_ext;
+ if (NULL == temp) {
+ CTS_ERR("strdup() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
while (*temp) {
*temp = tolower(*temp);
temp++;
}
- version = ctsvc_get_next_ver();
+ version = ctsvc_get_next_ver(zone_name);
snprintf(dest, dest_size, "%d_%d-%d%s", parent_id, img_id, version, lower_ext);
free(lower_ext);
- ret = ctsvc_utils_copy_image(CTSVC_CONTACT_IMG_FULL_LOCATION, src_img, dest);
+ ret = ctsvc_utils_copy_image(zone_name, CTSVC_CONTACT_IMG_FULL_LOCATION, src_img, dest);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_utils_copy_image() Failed(%d)", ret);
+ CTS_ERR("ctsvc_utils_copy_image() Fail(%d)", ret);
dest[0] = '\0';
return ret;
}
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_contact_get_current_image_file(int image_id, char *dest, int dest_size)
+static int __ctsvc_contact_get_current_image_file(const char *zone_name, int image_id, char *dest, int dest_size)
{
int ret;
cts_stmt stmt;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query), "SELECT data3 FROM %s WHERE id = %d", CTS_TABLE_DATA, image_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("DB error: ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error: ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
tmp_path = ctsvc_stmt_get_text(stmt, 0);
if (tmp_path) {
- snprintf(dest, dest_size, "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, tmp_path);
+ char root_path[CTSVC_PATH_MAX_LEN] = {0};
+ ctsvc_zone_get_root_path(zone_name, root_path, sizeof(root_path));
+ snprintf(dest, dest_size, "%s/%s/%s", root_path, CTSVC_CONTACT_IMG_FULL_LOCATION, tmp_path);
}
ctsvc_stmt_finalize(stmt);
return CONTACTS_ERROR_NONE;
}
-// check that the image file under location or not
-// we should check CTSVC_CONTACT_IMG_FULL_LOCATION, CTSVC_VCARD_IMAGE_LOCATION, CTS_GROUP_IMAGE_LOCATION, CTS_LOGO_IMAGE_LOCATION
+/*
+ * check that the image file under location or not
+ * we should check CTSVC_CONTACT_IMG_FULL_LOCATION, CTSVC_VCARD_IMAGE_LOCATION,
+ * CTS_GROUP_IMAGE_LOCATION, CTS_LOGO_IMAGE_LOCATION
+ */
bool ctsvc_contact_check_image_location(const char *path)
{
int len;
if (len != strlen(CTSVC_CONTACT_IMG_FULL_LOCATION))
return false;
- if (strncmp(path, CTSVC_CONTACT_IMG_FULL_LOCATION, len) == 0)
+ if (STRING_EQUAL == strncmp(path, CTSVC_CONTACT_IMG_FULL_LOCATION, len))
return true;
return false;
}
-int ctsvc_contact_update_image_file(int parent_id, int img_id,
+int ctsvc_contact_update_image_file(const char *zone_name, int parent_id, int img_id,
char *src_img, char *dest_name, int dest_size)
{
int ret;
char dest[CTSVC_IMG_FULL_PATH_SIZE_MAX] = {0};
- ret = __ctsvc_contact_get_current_image_file(img_id, dest, sizeof(dest));
+ ret = __ctsvc_contact_get_current_image_file(zone_name, img_id, dest, sizeof(dest));
WARN_IF(CONTACTS_ERROR_NONE != ret && CONTACTS_ERROR_NO_DATA != ret,
- "__ctsvc_contact_get_current_image_file() Failed(%d)", ret);
+ "__ctsvc_contact_get_current_image_file() Fail(%d)", ret);
if (*dest) {
- if (src_img && strcmp(dest, src_img) == 0) {
+ if (src_img && STRING_EQUAL == strcmp(dest, src_img)) {
snprintf(dest_name, dest_size, "%s", src_img + strlen(CTSVC_CONTACT_IMG_FULL_LOCATION) + 1);
return CONTACTS_ERROR_NONE;
}
ret = unlink(dest);
if (ret < 0) {
- CTS_WARN("unlink Failed(%d)", errno);
+ CTS_WARN("unlink Fail(%d)", errno);
}
}
if (src_img) {
- ret = ctsvc_contact_add_image_file(parent_id, img_id, src_img, dest_name, dest_size);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_contact_add_image_file() Failed(%d)", ret);
+ ret = ctsvc_contact_add_image_file(zone_name, parent_id, img_id, src_img, dest_name, dest_size);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_contact_add_image_file() Fail(%d)", ret);
}
return ret;
}
-int ctsvc_db_contact_update_changed_time(int contact_id)
+int ctsvc_db_contact_update_changed_time(const char *zone_name, int contact_id)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query),
"UPDATE %s SET changed_ver=%d, changed_time=%d WHERE contact_id=%d AND deleted = 0",
- CTS_TABLE_CONTACTS, ctsvc_get_next_ver(), (int)time(NULL), contact_id);
+ CTS_TABLE_CONTACTS, ctsvc_get_next_ver(zone_name), (int)time(NULL), contact_id);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Fail(%d)", ret);
- ctsvc_set_contact_noti();
+ ctsvc_set_contact_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_contact_delete_image_file_with_path(const unsigned char* image_path)
+int ctsvc_contact_delete_image_file_with_path(const char *zone_name, const unsigned char* image_path)
{
int ret;
+ char root_path[CTSVC_PATH_MAX_LEN] = {0};
+ ctsvc_zone_get_root_path(zone_name, root_path, sizeof(root_path));
+
if (image_path) {
char full_path[CTSVC_IMG_FULL_PATH_SIZE_MAX] = {0};
- snprintf(full_path, sizeof(full_path), "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, image_path);
+ snprintf(full_path, sizeof(full_path), "%s/%s/%s", root_path, CTSVC_CONTACT_IMG_FULL_LOCATION, image_path);
ret = unlink(full_path);
if (ret < 0) {
- CTS_WARN("unlink Failed(%d)", errno);
+ CTS_WARN("unlink Fail(%d)", errno);
}
}
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_contact_delete(int contact_id)
+int ctsvc_db_contact_delete(const char *zone_name, int contact_id)
{
CTS_FN_CALL;
int ret, rel_changed;
cts_stmt stmt = NULL;
int version;
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT addressbook_id, person_id "
"FROM "CTS_TABLE_CONTACTS" WHERE contact_id = %d AND deleted = 0", contact_id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
ctsvc_stmt_finalize(stmt);
stmt = NULL;
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this contact");
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- version = ctsvc_get_next_ver();
+ version = ctsvc_get_next_ver(zone_name);
snprintf(query, sizeof(query),
"UPDATE %s SET member_changed_ver=%d "
"WHERE group_id IN (SELECT group_id FROM %s WHERE contact_id = %d AND deleted = 0) ",
CTS_TABLE_GROUPS, version, CTS_TABLE_GROUP_RELATIONS, contact_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- rel_changed = ctsvc_db_change();
+ rel_changed = ctsvc_db_change(zone_name);
snprintf(query, sizeof(query),
"UPDATE %s SET deleted = 1, person_id = 0, changed_ver=%d WHERE contact_id = %d",
CTS_TABLE_CONTACTS, version, contact_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
snprintf(query, sizeof(query), "SELECT link_count FROM "CTS_TABLE_PERSONS" WHERE person_id = %d", person_id);
- ret = ctsvc_query_get_first_int_result(query, &link_count);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_get_first_int_result() Failed(%d)", ret);
- // set dirty bit to person by trigger : person will be aggregated in ctsvc_person_aggregate
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &link_count);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_get_first_int_result() Fail(%d)", ret);
+ /*
+ * set dirty bit to person by trigger
+ * : person will be aggregated in ctsvc_person_aggregate
+ */
if (1 < link_count) {
- ctsvc_person_aggregate(person_id);
+ ctsvc_person_aggregate(zone_name, person_id);
#ifdef ENABLE_LOG_FEATURE
- // update phonelog
- ctsvc_db_phone_log_update_person_id(NULL, person_id, -1, false);
-#endif // ENABLE_LOG_FEATURE
+ /* update phonelog */
+ ctsvc_db_phone_log_update_person_id(zone_name, NULL, person_id, -1, false);
+#endif /* ENABLE_LOG_FEATURE */
}
else
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ctsvc_set_contact_noti();
- if (rel_changed > 0)
- ctsvc_set_group_rel_noti();
+ ctsvc_set_contact_noti(zone_name);
+ if (0 < rel_changed)
+ ctsvc_set_group_rel_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static inline void __ctsvc_contact_get_initial(char *src, char *dest, int dest_size, bool pinyin )
+static inline void __ctsvc_contact_get_initial(char *src, char *dest, int dest_size, bool pinyin)
{
int i, j=0;
bool bFirst = true;
int len = strlen(src);
- for(i = 0; i < len && j < (dest_size-1);)
- {
+ for (i = 0; i < len && j < (dest_size-1);) {
if (src[i] == ' ') {
bFirst=true;
i++;
int k;
for (k=0;k<char_len && j < (dest_size-1) ;k++)
dest[j++] = src[i++];
- if (!pinyin && j < (dest_size-1))
+ if (false == pinyin && j < (dest_size-1))
dest[j++] = ' ';
bFirst = false;
}
int len = strlen(src);
int i, j=0;
- for(i=0; i < len && i < dest_size; i++) {
+ for (i=0; i < len && i < dest_size; i++) {
if (src[i] && src[i] != ' ') {
dest[j] = src[i];
j++;
char *name = NULL;
char *temp_name = NULL;
int buf_size, ret;
- RETV_IF(NULL == search_name, CONTACTS_ERROR_INVALID_PARAMETER);
+
+ RETV_IF(NULL == contact, CONTACTS_ERROR_NO_DATA);
if (contact->display_name) {
if (ctsvc_has_chinese(contact->display_name)) {
if (normalized_display_name) {
buf_size = SAFE_STRLEN(normalized_display_name) + strlen(contact->sort_name) + 2;
name = calloc(1, buf_size);
- RETVM_IF(NULL == name, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
+ if (NULL == name) {
+ CTS_ERR("calloc() Fail");
+ free(normalized_display_name);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
snprintf(name, buf_size, "%s %s", normalized_display_name, contact->sort_name);
free(normalized_display_name);
}
}
else {
char *langset = ctsvc_get_langset();
- if (strncmp(langset, "zh_CN", strlen("zh_CN")) == 0) {
+ if (STRING_EQUAL == strncmp(langset, "zh_CN", strlen("zh_CN"))) {
pinyin_name_s *pinyinname;
int size, i, len;
int name_len = (CHINESE_PINYIN_SPELL_MAX_LEN*strlen(contact->display_name)+1) * sizeof(char);
char *name_nospace = calloc(1, name_len);
if (NULL == name_nospace) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
ctsvc_pinyin_free(pinyinname, size);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
ctsvc_normalize_str(contact->display_name, &name);
if (name) {
- for(i=0; i<size; i++) {
+ for (i=0; i<size; i++) {
__ctsvc_remove_space(pinyinname[i].pinyin_name, name_nospace, name_len);
buf_size = SAFE_STRLEN(name)
+ 4;
temp_name = calloc(1, buf_size);
if (NULL == temp_name) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(name_nospace);
ctsvc_pinyin_free(pinyinname, size);
free(name);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
-
snprintf(temp_name, buf_size, "%s %s %s %s",
name, pinyinname[i].pinyin_name, name_nospace, pinyinname[i].pinyin_initial);
free(name);
}
len = ctsvc_check_utf8(contact->display_name[0]);
- for(i=len; i < strlen(contact->display_name); i+=len) {
+ for (i=len; i < strlen(contact->display_name); i+=len) {
len = ctsvc_check_utf8(contact->display_name[i]);
buf_size = SAFE_STRLEN(name) + SAFE_STRLEN(&contact->display_name[i]) + 2;
temp_name = calloc(1, buf_size);
if (NULL == temp_name) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(name_nospace);
ctsvc_pinyin_free(pinyinname, size);
free(name);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
-
snprintf(temp_name, buf_size, "%s %s", name, &contact->display_name[i]);
free(name);
buf_size = SAFE_STRLEN(normalized_display_name) + strlen(initial) + 2;
name = calloc(1, buf_size);
if (NULL == name) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(normalized_display_name);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
buf_size = SAFE_STRLEN(normalized_display_name) + strlen(initial) + 2;
name = calloc(1, buf_size);
if (NULL == name) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(normalized_display_name);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
-
snprintf(name, buf_size, "%s %s", normalized_display_name, initial);
free(normalized_display_name);
}
}
else if (ctsvc_has_korean(contact->display_name)) {
- // 'a가' should be searched by 'ㄱ'
+ /* 'a가' should be searched by 'ㄱ' */
int count, i, j;
int full_len, chosung_len;
char *chosung = calloc(1, strlen(contact->display_name) * 5);
if (NULL == chosung) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
int total_len = strlen(contact->display_name);
- count = ctsvc_get_chosung(contact->display_name, chosung, strlen(contact->display_name) * 5 );
+ count = ctsvc_get_chosung(contact->display_name, chosung, strlen(contact->display_name) * 5);
ctsvc_normalize_str(contact->display_name, &name);
- if (count > 0) {
- for(i=0, j=0; i < total_len; i+=full_len, j+=chosung_len) {
+ if (0 < count) {
+ for (i=0, j=0; i < total_len; i+=full_len, j+=chosung_len) {
full_len = ctsvc_check_utf8(contact->display_name[i]);
chosung_len = ctsvc_check_utf8(chosung[j]);
buf_size = SAFE_STRLEN(name) + SAFE_STRLEN(&contact->display_name[i]) + SAFE_STRLEN(&chosung[j]) + 3;
temp_name = calloc(1, buf_size);
if (NULL == temp_name) {
- CTS_ERR("calloc() return NULL");
- free(name);
+ CTS_ERR("calloc() Fail");
free(chosung);
+ free(name);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
ctsvc_convert_japanese_to_hiragana(contact->display_name, &name);
}
else {
- // Insert 'ABO Â' for 'ÂBC'
+ /* Insert 'ABO Â' for 'ÂBC' */
char initial[CTSVC_CONTACT_INITIAL_DATA_MAX_LEN] = {0,};
char *normalized_display_name=NULL;
buf_size = SAFE_STRLEN(normalized_display_name) + strlen(initial) + 2;
name = calloc(1, buf_size);
if (NULL == name) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(normalized_display_name);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
}
}
- // append phonetic name
+ /* append phonetic name */
if (contact->name) {
contacts_list_h name_list = (contacts_list_h)contact->name;
ctsvc_name_s *name_record;
int temp_len = 0;
contacts_list_get_current_record_p(name_list, (contacts_record_h*)&name_record);
- if (NULL != name_record) {
+ if (name_record) {
buf_size = SAFE_STRLEN(name_record->phonetic_first) + SAFE_STRLEN(name_record->phonetic_last) + SAFE_STRLEN(name_record->phonetic_middle);
- if (buf_size > 0) {
- buf_size += 3; // for space and null string
+ if (0 < buf_size) {
+ buf_size += 3; /* for space and null string */
phonetic = calloc(1, buf_size);
if (NULL == phonetic) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(name);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
buf_size = SAFE_STRLEN(name) + SAFE_STRLEN(phonetic) + 2;
temp_name = calloc(1, buf_size);
if (NULL == temp_name) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(phonetic);
free(name);
return CONTACTS_ERROR_OUT_OF_MEMORY;
static int __ctsvc_make_phonetic_name(ctsvc_name_s* name, char** phonetic, contacts_name_display_order_e order)
{
int len = SAFE_STRLEN(name->phonetic_first) + SAFE_STRLEN(name->phonetic_last) + SAFE_STRLEN(name->phonetic_middle);
- if( len > 0 )
- {
- len += 3; // for space and null string
+ if (0 < len) {
+ len += 3; /* for space and null string */
*phonetic = calloc(1, len);
- RETVM_IF(NULL == *phonetic, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
+ if (NULL == *phonetic) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
int temp_len = 0;
- if ( order == CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST ) {
+ if (order == CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST) {
if (name->phonetic_first)
temp_len += snprintf(*phonetic, len, "%s", name->phonetic_first);
if (name->phonetic_middle) {
int name_index = 0;
int temp_index = 0;
- while(1) {
+ while (1) {
int pinyin_len = 0;
int name_len = 0;
temp[temp_index] = ' ';
temp_index++;
name_len = ctsvc_check_utf8(display_name[name_index]);
- if (name_len > 0) {
+ if (0 < name_len) {
memcpy(&(temp[temp_index]), &(display_name[name_index]), name_len);
temp_index += name_len;
name_index += name_len;
void ctsvc_contact_make_sortkey(ctsvc_contact_s *contact)
{
- int ret;
char *sortkey = NULL;
char *phonetic = NULL;
int sort_type = -1;
if (contact->display_source_type == CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NAME) {
- if ( contact->name->count > 0 && contact->name->records != NULL
- && contact->name->records->data != NULL ) {
+ if (0 < contact->name->count && contact->name->records
+ && contact->name->records->data) {
ctsvc_name_s *name = (ctsvc_name_s *)contact->name->records->data;
- ret = __ctsvc_make_phonetic_name(name, &phonetic, CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST);
- RETM_IF(CONTACTS_ERROR_NONE != ret, "__ctsvc_make_phonetic_name() Fail(%d)", ret);
+ __ctsvc_make_phonetic_name(name, &phonetic, CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST);
}
}
else
sort_type = CTSVC_SORT_OTHERS;
- WARN_IF(sort_type < 0, "ctsvc_get_name_sort_type Failed(%d)", sort_type);
+ WARN_IF(sort_type < 0, "ctsvc_get_name_sort_type Fail(%d)", sort_type);
char *langset = ctsvc_get_langset();
switch (sort_type) {
case CTSVC_SORT_CJK:
{
- if (strncmp(langset, "zh_CN", strlen("zh_CN")) == 0) { // chinese to pinyin
+ if (STRING_EQUAL == strncmp(langset, "zh_CN", strlen("zh_CN"))) {
+ /* chinese to pinyin */
char *pinyin = NULL;
if (phonetic)
__ctsvc_get_sort_name_to_pinyin(phonetic, &pinyin);
sort_type = CTSVC_SORT_WESTERN;
}
}
- else if (strncmp(langset, "ko_KR", strlen("ko_KR")) == 0) {
+ else if (STRING_EQUAL == strncmp(langset, "ko_KR", strlen("ko_KR"))) {
sort_type = CTSVC_SORT_KOREAN;
}
}
}
default:
{
- if( phonetic )
+ if (phonetic)
FREEandSTRDUP(contact->sort_name, phonetic);
}
break;
else
contact->display_name_language = sort_type;
- // check reverse sort_name, reverser_display_name_language
- // make reverse phonetic name
+ /*
+ * check reverse sort_name, reverser_display_name_language
+ * make reverse phonetic name
+ */
if (contact->display_source_type == CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NAME) {
- if ( contact->name->count > 0 && contact->name->records != NULL
- && contact->name->records->data != NULL ) {
+ if (0 < contact->name->count && contact->name->records
+ && contact->name->records->data) {
ctsvc_name_s *name = (ctsvc_name_s *)contact->name->records->data;
- ret = __ctsvc_make_phonetic_name(name, &phonetic, CONTACTS_NAME_DISPLAY_ORDER_LASTFIRST);
- RETM_IF(CONTACTS_ERROR_NONE != ret, "__ctsvc_make_phonetic_name() Fail(%d)", ret);
+ __ctsvc_make_phonetic_name(name, &phonetic, CONTACTS_NAME_DISPLAY_ORDER_LASTFIRST);
}
}
else
sort_type = CTSVC_SORT_OTHERS;
- WARN_IF( sort_type < 0, "ctsvc_get_name_sort_type Failed(%d)", sort_type);
+ WARN_IF(sort_type < 0, "ctsvc_get_name_sort_type Fail(%d)", sort_type);
- switch (sort_type)
- {
+ switch (sort_type) {
case CTSVC_SORT_CJK:
{
- if (strncmp(langset, "zh_CN", strlen("zh_CN")) == 0) {
+ if (STRING_EQUAL == strncmp(langset, "zh_CN", strlen("zh_CN"))) {
char *pinyin = NULL;
if (phonetic)
__ctsvc_get_sort_name_to_pinyin(phonetic, &pinyin);
sort_type = CTSVC_SORT_WESTERN;
}
}
- else if (strncmp(langset, "ko_KR", strlen("ko_KR")) == 0) {
+ else if (STRING_EQUAL == strncmp(langset, "ko_KR", strlen("ko_KR"))) {
sort_type = CTSVC_SORT_KOREAN;
}
}
break;
default:
{
- if( phonetic )
+ if (phonetic)
FREEandSTRDUP(contact->reverse_sort_name, phonetic);
}
break;
char * __ctsvc_remove_first_space(char *src)
{
- if(src == NULL ||SAFE_STRLEN(src) == 0)
+ if (src == NULL ||SAFE_STRLEN(src) == 0)
return NULL;
int name_len = (SAFE_STRLEN(src)+1)*sizeof(char);
char *name_nospace = NULL;
name_nospace = calloc(1, name_len);
- RETVM_IF(NULL == name_nospace, NULL, "calloc() return NULL");
+ if (NULL == name_nospace) {
+ CTS_ERR("calloc() Fail");
+ return NULL;
+ }
int len = strlen(src);
int i =0;
- for(i=0; i < len && i < name_len; i++) {
+ for (i=0; i < len && i < name_len; i++) {
if (src[i] && src[i] != ' ') {
strncpy(name_nospace, src+i, name_len);
break;
}
return name_nospace;
}
-// Make display_name, sort_name, sortkey of the contact by name record
-// If the contact record does not have name record,
-// we use company, nickname, number, email record in order
+/*
+ * Make display_name, sort_name, sortkey of the contact by name record
+ * If the contact record does not have name record,
+ * we use company, nickname, number, email record in order
+ */
void ctsvc_contact_make_display_name(ctsvc_contact_s *contact)
{
int len;
contact->display_source_type = CONTACTS_DISPLAY_NAME_SOURCE_TYPE_INVALID;
- if ( contact->name->count > 0 && contact->name->records != NULL && contact->name->records->data != NULL )
- {
+ if (0 < contact->name->count && contact->name->records && contact->name->records->data) {
name = (ctsvc_name_s *)contact->name->records->data;
}
- if ( name && ( name->first || name->last || name->prefix || name->addition || name->suffix) ) {
+ if (name && (name->first || name->last || name->prefix || name->addition || name->suffix)) {
int reverse_lang_type = -1;
int display_len;
int temp_display_len;
char *display = NULL;
char *temp_display = NULL;
- ///////////////////////////////////////////////
- // Make reverse display name (Last name first)
- // Default : Prefix Last, First Middle(addition), Suffix
- // Korean, Chinese : Prefix LastMiddleFirstSuffix
- // Japanese : Prefix Last Middle First Suffix
- // reverse sort name does not include prefix
- // But, if there is only prefix, reverse sort_name is prefix
- //////////////////////////////////////////////
+ /*
+ * Make reverse display name (Last name first)
+ * Default : Prefix Last, First Middle(addition), Suffix
+ * Korean, Chinese : Prefix LastMiddleFirstSuffix
+ * Japanese : Prefix Last Middle First Suffix
+ * reverse sort name does not include prefix
+ * But, if there is only prefix, reverse sort_name is prefix
+ */
temp_display_len = SAFE_STRLEN(name->first)
+ SAFE_STRLEN(name->addition)
+ SAFE_STRLEN(name->last)
if (0 < temp_display_len) {
temp_display_len += 7;
temp_display = calloc(1, temp_display_len);
- RETM_IF(NULL == temp_display, "calloc() return NULL");
+ if (NULL == temp_display) {
+ CTS_ERR("calloc() Fail");
+ return;
+ }
len=0;
- // get language type
+ /* get language type */
reverse_lang_type = ctsvc_contact_get_name_language(name);
- if(name->last) {
+ if (name->last) {
char * temp = __ctsvc_remove_first_space(name->last);
len += snprintf(temp_display + len, temp_display_len - len, "%s", temp);
free(temp);
if (reverse_lang_type != CTSVC_LANG_KOREAN &&
reverse_lang_type != CTSVC_LANG_CHINESE &&
reverse_lang_type != CTSVC_LANG_JAPANESE) {
- if(name->first || name->addition)
+ if (name->first || name->addition)
len += snprintf(temp_display + len, temp_display_len - len, ",");
}
}
- if(reverse_lang_type == CTSVC_LANG_JAPANESE) {
- // make temp_display name Prefix - Last - Middle - First - Suffix
- if(name->addition) {
+ if (reverse_lang_type == CTSVC_LANG_JAPANESE) {
+ /* make temp_display name Prefix - Last - Middle - First - Suffix */
+ if (name->addition) {
char * temp = __ctsvc_remove_first_space(name->addition);
if (*temp_display)
len += snprintf(temp_display + len, temp_display_len - len, " ");
free(temp);
}
- if(name->first) {
+ if (name->first) {
char * temp = __ctsvc_remove_first_space(name->first);
if (*temp_display)
len += snprintf(temp_display + len, temp_display_len - len, " ");
}
}
else if (reverse_lang_type == CTSVC_LANG_CHINESE || reverse_lang_type == CTSVC_LANG_KOREAN) {
- if(name->addition) {
+ if (name->addition) {
char * temp = __ctsvc_remove_first_space(name->addition);
len += snprintf(temp_display + len, temp_display_len - len, "%s", temp);
free(temp);
}
- if(name->first) {
+ if (name->first) {
char * temp = __ctsvc_remove_first_space(name->first);
len += snprintf(temp_display + len, temp_display_len - len, "%s", temp);
free(temp);
}
}
else {
- // make temp_display name Prefix - Last - First - Middle - Suffix
- if(name->first) {
+ /* make temp_display name Prefix - Last - First - Middle - Suffix */
+ if (name->first) {
if (*temp_display) {
if (reverse_lang_type < 0) {
reverse_lang_type = ctsvc_check_language_type(temp_display);
free(temp);
}
- if(name->addition) {
+ if (name->addition) {
if (*temp_display) {
if (reverse_lang_type < 0) {
reverse_lang_type = ctsvc_check_language_type(temp_display);
}
}
- if(name->suffix) {
+ if (name->suffix) {
if (*temp_display) {
if (reverse_lang_type < 0) {
reverse_lang_type = ctsvc_check_language_type(temp_display);
}
}
- if(name->prefix && temp_display) {
+ if (name->prefix && temp_display) {
display_len = SAFE_STRLEN(name->prefix) + temp_display_len + 2;
display = calloc(1, display_len);
if (NULL == display) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(temp_display);
return;
}
char * temp = __ctsvc_remove_first_space(name->prefix);
- snprintf(display, display_len , "%s %s", temp, temp_display);
+ snprintf(display, display_len, "%s %s", temp, temp_display);
free(temp);
contact->reverse_display_name = display;
contact->reverse_sort_name = temp_display;
else if (temp_display) {
contact->reverse_display_name = temp_display;
contact->reverse_sort_name = strdup(temp_display);
- RETM_IF(NULL == contact->reverse_sort_name, "strdup() return NULL");
}
else if (name->prefix) {
contact->reverse_display_name = strdup(name->prefix);
- RETM_IF(NULL == contact->reverse_display_name, "strdup() return NULL");
contact->reverse_sort_name = strdup(name->prefix);
- RETM_IF(NULL == contact->reverse_sort_name, "strdup() return NULL");
}
- ///////////////////////////////////////////////
- // Make display name (First name first)
- // Default : Prefix First Middle Last, Suffix
- // Korean, Chinese : Prefix LastFirstMiddleSuffix (Same as reverse display name)
- // Japanese : Prefix First Middle Last Suffix
- // sort name does not include prefix
- // But, if there is only prefix, sort_name is prefix
- //////////////////////////////////////////////
+ /*
+ * Make display name (First name first)
+ * Default : Prefix First Middle Last, Suffix
+ * Korean, Chinese : Prefix LastFirstMiddleSuffix (Same as reverse display name)
+ * Japanese : Prefix First Middle Last Suffix
+ * sort name does not include prefix
+ * But, if there is only prefix, sort_name is prefix
+ */
if (reverse_lang_type == CTSVC_LANG_KOREAN ||
reverse_lang_type == CTSVC_LANG_CHINESE ||
reverse_lang_type == CTSVC_LANG_JAPANESE) {
contact->display_name = strdup(contact->reverse_display_name);
- RETM_IF(NULL == contact->display_name, "strdup() return NULL");
contact->sort_name = SAFE_STRDUP(contact->reverse_sort_name);
}
else {
+ SAFE_STRLEN(name->suffix);
if (0 < temp_display_len) {
temp_display_len += 6;
- // make reverse_temp_display_name
+ /* make reverse_temp_display_name */
temp_display = calloc(1, temp_display_len);
- RETM_IF(NULL == temp_display, "calloc() return NULL");
+ if (NULL == temp_display) {
+ CTS_ERR("calloc() Fail");
+ return;
+ }
len = 0;
- if(name->first) {
+ if (name->first) {
char * temp = __ctsvc_remove_first_space(name->first);
len += snprintf(temp_display + len, temp_display_len - len, "%s", temp);
free(temp);
}
- if(name->addition) {
+ if (name->addition) {
char * temp = __ctsvc_remove_first_space(name->addition);
if (*temp_display)
len += snprintf(temp_display + len, temp_display_len - len, " ");
free(temp);
}
- if(name->last) {
+ if (name->last) {
char * temp = __ctsvc_remove_first_space(name->last);
if (*temp_display)
len += snprintf(temp_display + len, temp_display_len - len, " ");
free(temp);
}
- if(name->suffix) {
+ if (name->suffix) {
if (*temp_display) {
lang_type = ctsvc_check_language_type(temp_display);
if (lang_type == CTSVC_LANG_JAPANESE)
}
}
- if(name->prefix && temp_display) {
+ if (name->prefix && temp_display) {
display_len = SAFE_STRLEN(name->prefix) + temp_display_len + 2;
display = calloc(1, display_len);
if (NULL == display) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(temp_display);
return;
}
- snprintf(display, display_len , "%s %s", name->prefix, temp_display);
+ snprintf(display, display_len, "%s %s", name->prefix, temp_display);
contact->display_name = display;
contact->sort_name = temp_display;
}
else if (temp_display) {
contact->display_name = temp_display;
contact->sort_name = strdup(temp_display);
- RETM_IF(NULL == contact->sort_name, "strdup() return NULL");
}
else if (name->prefix) {
contact->display_name = strdup(name->prefix);
- RETM_IF(NULL == contact->display_name, "strdup() return NULL");
contact->sort_name = strdup(name->prefix);
- RETM_IF(NULL == contact->sort_name, "strdup() return NULL");
}
}
ctsvc_company_s *company = (ctsvc_company_s *)cur->data;
if (company && company->name) {
ctsvc_record_set_property_flag((ctsvc_record_s *)contact, _contacts_contact.display_name, CTSVC_PROPERTY_FLAG_DIRTY);
- FREEandSTRDUP(contact->display_name, company->name);
+ contact->display_name = SAFE_STRDUP(company->name);
contact->display_source_type = CONTACTS_DISPLAY_NAME_SOURCE_TYPE_COMPANY;
break;
}
}
}
- if (!ctsvc_record_check_property_flag((ctsvc_record_s *)contact, _contacts_contact.display_name, CTSVC_PROPERTY_FLAG_DIRTY) &&
+ if (false == ctsvc_record_check_property_flag((ctsvc_record_s *)contact, _contacts_contact.display_name, CTSVC_PROPERTY_FLAG_DIRTY) &&
contact->nicknames && contact->nicknames->records) {
for (cur=contact->nicknames->records;cur;cur=cur->next) {
ctsvc_nickname_s *nickname = (ctsvc_nickname_s *)cur->data;
if (nickname && nickname->nickname) {
ctsvc_record_set_property_flag((ctsvc_record_s *)contact, _contacts_contact.display_name, CTSVC_PROPERTY_FLAG_DIRTY);
- FREEandSTRDUP(contact->display_name, nickname->nickname);
+ free(contact->display_name);
+ contact->display_name = SAFE_STRDUP(nickname->nickname);
contact->display_source_type = CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NICKNAME;
break;
}
}
}
- if (!ctsvc_record_check_property_flag((ctsvc_record_s *)contact, _contacts_contact.display_name, CTSVC_PROPERTY_FLAG_DIRTY) &&
+ if (false == ctsvc_record_check_property_flag((ctsvc_record_s *)contact, _contacts_contact.display_name, CTSVC_PROPERTY_FLAG_DIRTY) &&
contact->numbers && contact->numbers->records) {
for (cur=contact->numbers->records;cur;cur=cur->next) {
ctsvc_number_s *number = (ctsvc_number_s *)cur->data;
if (number && number->number) {
ctsvc_record_set_property_flag((ctsvc_record_s *)contact, _contacts_contact.display_name, CTSVC_PROPERTY_FLAG_DIRTY);
- FREEandSTRDUP(contact->display_name, number->number);
+ free(contact->display_name);
+ contact->display_name = SAFE_STRDUP(number->number);
contact->display_source_type = CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NUMBER;
break;
}
}
}
- if (!ctsvc_record_check_property_flag((ctsvc_record_s *)contact, _contacts_contact.display_name, CTSVC_PROPERTY_FLAG_DIRTY) &&
+ if (false == ctsvc_record_check_property_flag((ctsvc_record_s *)contact, _contacts_contact.display_name, CTSVC_PROPERTY_FLAG_DIRTY) &&
contact->emails && contact->emails->records) {
for (cur=contact->emails->records;cur;cur=cur->next) {
ctsvc_email_s *email = (ctsvc_email_s *)cur->data;
if (email && email->email_addr) {
ctsvc_record_set_property_flag((ctsvc_record_s *)contact, _contacts_contact.display_name, CTSVC_PROPERTY_FLAG_DIRTY);
- FREEandSTRDUP(contact->display_name, email->email_addr);
+ free(contact->display_name);
+ contact->display_name = SAFE_STRDUP(email->email_addr);
contact->display_source_type = CONTACTS_DISPLAY_NAME_SOURCE_TYPE_EMAIL;
break;
}
}
if (ctsvc_record_check_property_flag((ctsvc_record_s *)contact, _contacts_contact.display_name, CTSVC_PROPERTY_FLAG_DIRTY)) {
- FREEandSTRDUP(contact->reverse_display_name, contact->display_name);
- FREEandSTRDUP(contact->sort_name, contact->display_name);
- FREEandSTRDUP(contact->reverse_sort_name, contact->display_name);
+ contact->reverse_display_name = SAFE_STRDUP(contact->display_name);
+ contact->sort_name = SAFE_STRDUP(contact->display_name);
+ contact->reverse_sort_name = SAFE_STRDUP(contact->display_name);
}
else {
- // Update as NULL
+ /* Update as NULL */
ctsvc_record_set_property_flag((ctsvc_record_s *)contact, _contacts_contact.display_name, CTSVC_PROPERTY_FLAG_DIRTY);
}
}
- // make sortkey
+ /* make sortkey */
if (ctsvc_record_check_property_flag((ctsvc_record_s *)contact, _contacts_contact.display_name, CTSVC_PROPERTY_FLAG_DIRTY))
ctsvc_contact_make_sortkey(contact);
contacts_record_h record;
ret = contacts_list_get_count(name_list, &count);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_list_get_count is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_list_get_count Fail(%d)", ret);
RETVM_IF (1 < count, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : already had name");
ctsvc_db_name_get_value_from_stmt(stmt, &record, 1);
RETV_IF(NULL == number_list, false);
ret = contacts_list_get_count(number_list, &count);
- if(CONTACTS_ERROR_NONE !=ret || 0 == count)
+ if (CONTACTS_ERROR_NONE !=ret || 0 == count)
return false;
contacts_list_first(number_list);
do {
contacts_list_get_current_record_p(number_list, (contacts_record_h*)&number);
- if (NULL != number && number->number && *number->number) {
+ if (number && number->number && *number->number) {
if (number->is_default && false == has_default)
has_default = true;
else if (has_default)
number->is_default = false;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(number_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(number_list));
if (false == has_default) {
contacts_list_first(number_list);
do {
contacts_list_get_current_record_p(number_list, (contacts_record_h*)&number);
- if (NULL != number && number->number && *number->number) {
+ if (number && number->number && *number->number) {
number->is_default = true;
ctsvc_record_set_property_flag((ctsvc_record_s *)number, _contacts_number.is_default, CTSVC_PROPERTY_FLAG_DIRTY);
has_default = true;
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(number_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(number_list));
}
return has_default;
}
RETV_IF(NULL == email_list, false);
ret = contacts_list_get_count(email_list, &count);
- if(CONTACTS_ERROR_NONE !=ret || 0 == count)
+ if (CONTACTS_ERROR_NONE !=ret || 0 == count)
return false;
contacts_list_first(email_list);
do {
contacts_list_get_current_record_p(email_list, (contacts_record_h*)&email);
- if (NULL != email && email->email_addr && *email->email_addr) {
+ if (email && email->email_addr && *email->email_addr) {
if (email->is_default && false == has_default)
has_default = true;
else if (has_default)
email->is_default = false;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(email_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(email_list));
if (false == has_default) {
contacts_list_first(email_list);
do {
contacts_list_get_current_record_p(email_list, (contacts_record_h*)&email);
- if (NULL != email && email->email_addr && *email->email_addr) {
+ if (email && email->email_addr && *email->email_addr) {
email->is_default = true;
ctsvc_record_set_property_flag((ctsvc_record_s *)email, _contacts_email.is_default, CTSVC_PROPERTY_FLAG_DIRTY);
has_default = true;
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(email_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(email_list));
}
return has_default;
}
contacts_list_first(image_list);
do {
contacts_list_get_current_record_p(image_list, (contacts_record_h*)&image);
- if (NULL != image && image->path && *image->path) {
+ if (image && image->path && *image->path) {
if (image->is_default && false == has_default)
has_default = true;
else if (has_default)
image->is_default = false;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(image_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(image_list));
if (false == has_default) {
contacts_list_first(image_list);
do {
contacts_list_get_current_record_p(image_list, (contacts_record_h*)&image);
- if (NULL != image && image->path && *image->path) {
+ if (image && image->path && *image->path) {
image->is_default = true;
ctsvc_record_set_property_flag((ctsvc_record_s *)image, _contacts_image.is_default, CTSVC_PROPERTY_FLAG_DIRTY);
has_default = true;
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(image_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(image_list));
}
return CONTACTS_ERROR_NONE;
}
contacts_list_first(address_list);
do {
contacts_list_get_current_record_p(address_list, (contacts_record_h*)&address);
- if (NULL != address &&
+ if (address &&
(address->pobox || address->postalcode || address->region || address->locality
|| address->street || address->extended || address->country)) {
if (address->is_default && false == has_default)
else if (has_default)
address->is_default = false;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(address_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(address_list));
if (false == has_default) {
contacts_list_first(address_list);
do {
contacts_list_get_current_record_p(address_list, (contacts_record_h*)&address);
- if (NULL != address &&
+ if (address &&
(address->pobox || address->postalcode || address->region || address->locality
|| address->street || address->extended || address->country)) {
address->is_default = true;
has_default = true;
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(address_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(address_list));
}
return CONTACTS_ERROR_NONE;
}
-int ctsvc_contact_update_data_name(contacts_list_h name_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_update_data_name(const char *zone_name, contacts_list_h name_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
GList *cursor;
RETV_IF(NULL == name_list, CONTACTS_ERROR_INVALID_PARAMETER);
- for(cursor = list->deleted_records;cursor;cursor=cursor->next) {
+ for (cursor = list->deleted_records;cursor;cursor=cursor->next) {
name = (ctsvc_name_s *)cursor->data;
- ctsvc_db_name_delete(name->id, is_my_profile);
+ ctsvc_db_name_delete(zone_name, name->id, is_my_profile);
}
contacts_list_first(name_list);
if (0 < name->id) {
if (name->first || name->last || name->addition || name->prefix || name->suffix
|| name->phonetic_first || name->phonetic_middle || name->phonetic_last)
- ret = ctsvc_db_name_update(record, is_my_profile);
+ ret = ctsvc_db_name_update(zone_name, record, is_my_profile);
else
- ret = ctsvc_db_name_delete(name->id, is_my_profile);
+ ret = ctsvc_db_name_delete(zone_name, name->id, is_my_profile);
}
else
- ret = ctsvc_db_name_insert(record, contact_id, is_my_profile, NULL);
+ ret = ctsvc_db_name_insert(zone_name, record, contact_id, is_my_profile, NULL);
if (CONTACTS_ERROR_DB == ret)
CTS_ERR("DB error : return(%d)", ret);
}
return ret;
}
-int ctsvc_contact_update_data_company(contacts_list_h company_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_update_data_company(const char *zone_name, contacts_list_h company_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == company_list, CONTACTS_ERROR_INVALID_PARAMETER);
- for(cursor = list->deleted_records;cursor;cursor=cursor->next) {
+ for (cursor = list->deleted_records;cursor;cursor=cursor->next) {
company = (ctsvc_company_s *)cursor->data;
- ctsvc_db_company_delete(company->id, is_my_profile);
+ ctsvc_db_company_delete(zone_name, company->id, is_my_profile);
}
ret = contacts_list_get_count(company_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(company_list);
if (company->name || company->department || company->job_title || company->role
|| company->assistant_name || company->logo || company->location || company->description
|| company->phonetic_name)
- ret = ctsvc_db_company_update(record, contact_id, is_my_profile);
+ ret = ctsvc_db_company_update(zone_name, record, contact_id, is_my_profile);
else
- ret = ctsvc_db_company_delete(company->id, is_my_profile);
+ ret = ctsvc_db_company_delete(zone_name, company->id, is_my_profile);
}
else
- ret = ctsvc_db_company_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_company_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : return (%d)", ret);
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(company_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(company_list));
return ret;
}
-int ctsvc_contact_update_data_note(contacts_list_h note_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_update_data_note(const char *zone_name, contacts_list_h note_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == note_list, CONTACTS_ERROR_INVALID_PARAMETER);
- for(cursor = list->deleted_records;cursor;cursor=cursor->next) {
+ for (cursor = list->deleted_records;cursor;cursor=cursor->next) {
note = (ctsvc_note_s *)cursor->data;
- ctsvc_db_note_delete(note->id, is_my_profile);
+ ctsvc_db_note_delete(zone_name, note->id, is_my_profile);
}
ret = contacts_list_get_count(note_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(note_list);
note = (ctsvc_note_s*)record;
if (0 < note->id) {
if (note->note)
- ret = ctsvc_db_note_update(record, is_my_profile);
+ ret = ctsvc_db_note_update(zone_name, record, is_my_profile);
else
- ret = ctsvc_db_note_delete(note->id, is_my_profile);
+ ret = ctsvc_db_note_delete(zone_name, note->id, is_my_profile);
}
else
- ret = ctsvc_db_note_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_note_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : return (%d)", ret);
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(note_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(note_list));
return ret;
}
-int ctsvc_contact_update_data_event(contacts_list_h event_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_update_data_event(const char *zone_name, contacts_list_h event_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == event_list, CONTACTS_ERROR_INVALID_PARAMETER);
- for(cursor = list->deleted_records;cursor;cursor=cursor->next) {
+ for (cursor = list->deleted_records;cursor;cursor=cursor->next) {
event = (ctsvc_event_s *)cursor->data;
- ctsvc_db_event_delete(event->id, is_my_profile);
+ ctsvc_db_event_delete(zone_name, event->id, is_my_profile);
}
ret = contacts_list_get_count(event_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(event_list);
contacts_list_get_current_record_p(event_list, &record);
event = (ctsvc_event_s*)record;
if (0 < event->id) {
- if (event->date > 0)
- ret = ctsvc_db_event_update(record, is_my_profile);
+ if (0 < event->date)
+ ret = ctsvc_db_event_update(zone_name, record, is_my_profile);
else
- ret = ctsvc_db_event_delete(event->id, is_my_profile);
+ ret = ctsvc_db_event_delete(zone_name, event->id, is_my_profile);
}
else
- ret = ctsvc_db_event_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_event_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : return (%d)", ret);
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(event_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(event_list));
return ret;
}
-int ctsvc_contact_update_data_messenger(contacts_list_h messenger_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_update_data_messenger(const char *zone_name, contacts_list_h messenger_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == messenger_list, CONTACTS_ERROR_INVALID_PARAMETER);
- for(cursor = list->deleted_records;cursor;cursor=cursor->next) {
+ for (cursor = list->deleted_records;cursor;cursor=cursor->next) {
messenger = (ctsvc_messenger_s *)cursor->data;
- ctsvc_db_messenger_delete(messenger->id, is_my_profile);
+ ctsvc_db_messenger_delete(zone_name, messenger->id, is_my_profile);
}
ret = contacts_list_get_count(messenger_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(messenger_list);
messenger = (ctsvc_messenger_s*)record;
if (0 < messenger->id) {
if (messenger->im_id)
- ret = ctsvc_db_messenger_update(record, is_my_profile);
+ ret = ctsvc_db_messenger_update(zone_name, record, is_my_profile);
else
- ret = ctsvc_db_messenger_delete(messenger->id, is_my_profile);
+ ret = ctsvc_db_messenger_delete(zone_name, messenger->id, is_my_profile);
}
else
- ret = ctsvc_db_messenger_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_messenger_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : return (%d)", ret);
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(messenger_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(messenger_list));
return ret;
}
-int ctsvc_contact_update_data_address(contacts_list_h address_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_update_data_address(const char *zone_name, contacts_list_h address_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == address_list, CONTACTS_ERROR_INVALID_PARAMETER);
- for(cursor = list->deleted_records;cursor;cursor=cursor->next) {
+ for (cursor = list->deleted_records;cursor;cursor=cursor->next) {
address = (ctsvc_address_s *)cursor->data;
- ctsvc_db_address_delete(address->id, is_my_profile);
+ ctsvc_db_address_delete(zone_name, address->id, is_my_profile);
}
ret = contacts_list_get_count(address_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(address_list);
if (0 < address->id) {
if (address->pobox || address->postalcode || address->region || address->locality
|| address->street || address->extended || address->country)
- ret = ctsvc_db_address_update(record, is_my_profile);
+ ret = ctsvc_db_address_update(zone_name, record, is_my_profile);
else
- ret = ctsvc_db_address_delete(address->id, is_my_profile);
+ ret = ctsvc_db_address_delete(zone_name, address->id, is_my_profile);
}
else
- ret = ctsvc_db_address_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_address_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : return (%d)", ret);
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(address_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(address_list));
return ret;
}
-int ctsvc_contact_update_data_url(contacts_list_h url_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_update_data_url(const char *zone_name, contacts_list_h url_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == url_list, CONTACTS_ERROR_INVALID_PARAMETER);
- for(cursor = list->deleted_records;cursor;cursor=cursor->next) {
+ for (cursor = list->deleted_records;cursor;cursor=cursor->next) {
url = (ctsvc_url_s *)cursor->data;
- ctsvc_db_url_delete(url->id, is_my_profile);
+ ctsvc_db_url_delete(zone_name, url->id, is_my_profile);
}
ret = contacts_list_get_count(url_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(url_list);
url = (ctsvc_url_s*)record;
if (0 < url->id) {
if (url->url)
- ret = ctsvc_db_url_update(record, is_my_profile);
+ ret = ctsvc_db_url_update(zone_name, record, is_my_profile);
else
- ret = ctsvc_db_url_delete(url->id, is_my_profile);
+ ret = ctsvc_db_url_delete(zone_name, url->id, is_my_profile);
}
else
- ret = ctsvc_db_url_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_url_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : return (%d)", ret);
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(url_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(url_list));
return ret;
}
-int ctsvc_contact_update_data_profile(contacts_list_h profile_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_update_data_profile(const char *zone_name, contacts_list_h profile_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == profile_list, CONTACTS_ERROR_INVALID_PARAMETER);
- for(cursor = list->deleted_records;cursor;cursor=cursor->next) {
+ for (cursor = list->deleted_records;cursor;cursor=cursor->next) {
profile = (ctsvc_profile_s *)cursor->data;
- ctsvc_db_profile_delete(profile->id, is_my_profile);
+ ctsvc_db_profile_delete(zone_name, profile->id, is_my_profile);
}
ret = contacts_list_get_count(profile_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(profile_list);
profile = (ctsvc_profile_s*)record;
if (0 < profile->id) {
if (profile->text)
- ret = ctsvc_db_profile_update(record, is_my_profile);
+ ret = ctsvc_db_profile_update(zone_name, record, is_my_profile);
else
- ret = ctsvc_db_profile_delete(profile->id, is_my_profile);
+ ret = ctsvc_db_profile_delete(zone_name, profile->id, is_my_profile);
}
else
- ret = ctsvc_db_profile_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_profile_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : return (%d)", ret);
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(profile_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(profile_list));
return ret;
}
-int ctsvc_contact_update_data_relationship(contacts_list_h relationship_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_update_data_relationship(const char *zone_name, contacts_list_h relationship_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == relationship_list, CONTACTS_ERROR_INVALID_PARAMETER);
- for(cursor = list->deleted_records;cursor;cursor=cursor->next) {
+ for (cursor = list->deleted_records;cursor;cursor=cursor->next) {
relationship = (ctsvc_relationship_s *)cursor->data;
- ctsvc_db_relationship_delete(relationship->id, is_my_profile);
+ ctsvc_db_relationship_delete(zone_name, relationship->id, is_my_profile);
}
ret = contacts_list_get_count(relationship_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(relationship_list);
relationship = (ctsvc_relationship_s*)record;
if (0 < relationship->id) {
if (relationship->name)
- ret = ctsvc_db_relationship_update(record, is_my_profile);
+ ret = ctsvc_db_relationship_update(zone_name, record, is_my_profile);
else
- ret = ctsvc_db_relationship_delete(relationship->id, is_my_profile);
+ ret = ctsvc_db_relationship_delete(zone_name, relationship->id, is_my_profile);
}
else
- ret = ctsvc_db_relationship_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_relationship_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : return (%d)", ret);
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(relationship_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(relationship_list));
return ret;
}
-int ctsvc_contact_update_data_image(contacts_list_h image_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_update_data_image(const char *zone_name, contacts_list_h image_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == image_list, CONTACTS_ERROR_INVALID_PARAMETER);
- for(cursor = list->deleted_records;cursor;cursor=cursor->next) {
+ for (cursor = list->deleted_records;cursor;cursor=cursor->next) {
image = (ctsvc_image_s *)cursor->data;
- ctsvc_db_image_delete(image->id, is_my_profile);
+ ctsvc_db_image_delete(zone_name, image->id, is_my_profile);
}
ret = contacts_list_get_count(image_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(image_list);
if (CTSVC_PROPERTY_FLAG_DIRTY & image->base.property_flag) {
if (0 < image->id) {
if (image->path)
- ret = ctsvc_db_image_update(record, contact_id, is_my_profile);
+ ret = ctsvc_db_image_update(zone_name, record, contact_id, is_my_profile);
else
- ret = ctsvc_db_image_delete(image->id, is_my_profile);
+ ret = ctsvc_db_image_delete(zone_name, image->id, is_my_profile);
}
else
- ret = ctsvc_db_image_insert(record, contact_id, is_my_profile, NULL);
+ ret = ctsvc_db_image_insert(zone_name, record, contact_id, is_my_profile, NULL);
}
- if (CONTACTS_ERROR_DB == ret){
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : return (%d)", ret);
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(image_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(image_list));
return ret;
}
-int ctsvc_contact_update_data_nickname(contacts_list_h nickname_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_update_data_nickname(const char *zone_name, contacts_list_h nickname_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == nickname_list, CONTACTS_ERROR_INVALID_PARAMETER);
- for(cursor = list->deleted_records;cursor;cursor=cursor->next) {
+ for (cursor = list->deleted_records;cursor;cursor=cursor->next) {
nickname = (ctsvc_nickname_s *)cursor->data;
- ctsvc_db_nickname_delete(nickname->id, is_my_profile);
+ ctsvc_db_nickname_delete(zone_name, nickname->id, is_my_profile);
}
ret = contacts_list_get_count(nickname_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(nickname_list);
nickname = (ctsvc_nickname_s*)record;
if (0 < nickname->id) {
if (nickname->nickname)
- ret = ctsvc_db_nickname_update(record, is_my_profile);
+ ret = ctsvc_db_nickname_update(zone_name, record, is_my_profile);
else
- ret = ctsvc_db_nickname_delete(nickname->id, is_my_profile);
+ ret = ctsvc_db_nickname_delete(zone_name, nickname->id, is_my_profile);
}
else
- ret = ctsvc_db_nickname_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_nickname_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : return (%d)", ret);
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(nickname_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(nickname_list));
return ret;
}
-int ctsvc_contact_update_data_extension(contacts_list_h extension_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_update_data_extension(const char *zone_name, contacts_list_h extension_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == extension_list, CONTACTS_ERROR_INVALID_PARAMETER);
- for(cursor = list->deleted_records;cursor;cursor=cursor->next) {
+ for (cursor = list->deleted_records;cursor;cursor=cursor->next) {
extension = (ctsvc_extension_s *)cursor->data;
- ctsvc_db_extension_delete(extension->id, is_my_profile);
+ ctsvc_db_extension_delete(zone_name, extension->id, is_my_profile);
}
ret = contacts_list_get_count(extension_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(extension_list);
if (extension->data2 || extension->data3 || extension->data4 || extension->data5
|| extension->data6 || extension->data7 || extension->data8 || extension->data9
|| extension->data10 || extension->data11 || extension->data12)
- ret = ctsvc_db_extension_update(record);
+ ret = ctsvc_db_extension_update(zone_name, record);
else
- ret = ctsvc_db_extension_delete(extension->id, is_my_profile);
+ ret = ctsvc_db_extension_delete(zone_name, extension->id, is_my_profile);
}
else
- ret = ctsvc_db_extension_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_extension_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : return (%d)", ret);
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(extension_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(extension_list));
return ret;
}
-int ctsvc_contact_update_data_number(contacts_list_h number_list,
+int ctsvc_contact_update_data_number(const char *zone_name, contacts_list_h number_list,
int contact_id, bool is_my_profile, bool *had_phonenumber)
{
CTS_FN_CALL;
RETV_IF(NULL == number_list, CONTACTS_ERROR_INVALID_PARAMETER);
- for(cursor = list->deleted_records;cursor;cursor=cursor->next) {
+ for (cursor = list->deleted_records;cursor;cursor=cursor->next) {
number = (ctsvc_number_s *)cursor->data;
- ctsvc_db_number_delete(number->id, is_my_profile);
+ ctsvc_db_number_delete(zone_name, number->id, is_my_profile);
}
ret = contacts_list_get_count(number_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(number_list);
number = (ctsvc_number_s*)record;
if (0 < number->id) {
if (number->number) {
- ret = ctsvc_db_number_update(record, is_my_profile);
+ ret = ctsvc_db_number_update(zone_name, record, is_my_profile);
had = true;
}
else
- ret = ctsvc_db_number_delete(number->id, is_my_profile);
+ ret = ctsvc_db_number_delete(zone_name, number->id, is_my_profile);
}
else if (number->number) {
- ret = ctsvc_db_number_insert(record, contact_id, is_my_profile, NULL);
+ ret = ctsvc_db_number_insert(zone_name, record, contact_id, is_my_profile, NULL);
had = true;
}
if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : return (%d)", ret);
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(number_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(number_list));
*had_phonenumber = had;
return ret;
}
-int ctsvc_contact_update_data_email(contacts_list_h email_list,
+int ctsvc_contact_update_data_email(const char *zone_name, contacts_list_h email_list,
int contact_id, bool is_my_profile, bool *had_email)
{
CTS_FN_CALL;
RETV_IF(NULL == email_list, CONTACTS_ERROR_INVALID_PARAMETER);
- for(cursor = list->deleted_records;cursor;cursor=cursor->next) {
+ for (cursor = list->deleted_records;cursor;cursor=cursor->next) {
email = (ctsvc_email_s *)cursor->data;
- ctsvc_db_email_delete(email->id, is_my_profile);
+ ctsvc_db_email_delete(zone_name, email->id, is_my_profile);
}
ret = contacts_list_get_count(email_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(email_list);
if (0 < email->id) {
if (email->email_addr) {
- ret = ctsvc_db_email_update(record, is_my_profile);
+ ret = ctsvc_db_email_update(zone_name, record, is_my_profile);
had = true;
}
else
- ret = ctsvc_db_email_delete(email->id, is_my_profile);
+ ret = ctsvc_db_email_delete(zone_name, email->id, is_my_profile);
}
else if (email->email_addr) {
- ret = ctsvc_db_email_insert(record, contact_id, is_my_profile, NULL);
+ ret = ctsvc_db_email_insert(zone_name, record, contact_id, is_my_profile, NULL);
had = true;
}
- if (CONTACTS_ERROR_DB == ret){
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : return (%d)", ret);
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(email_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(email_list));
*had_email = had;
return ret;
}
-int ctsvc_contact_insert_data_name(contacts_list_h name_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_insert_data_name(const char *zone_name, contacts_list_h name_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
contacts_list_first(name_list);
contacts_list_get_current_record_p(name_list, &record);
if (record) {
- ret = ctsvc_db_name_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_name_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : ctsvc_db_name_insert");
}
}
return ret;
}
-int ctsvc_contact_insert_data_number(contacts_list_h number_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_insert_data_number(const char *zone_name, contacts_list_h number_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == number_list, CONTACTS_ERROR_INVALID_PARAMETER);
ret = contacts_list_get_count(number_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(number_list);
do {
contacts_list_get_current_record_p(number_list, &record);
- ret = ctsvc_db_number_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_number_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : ctsvc_db_number_insert");
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(number_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(number_list));
return ret;
}
-int ctsvc_contact_insert_data_email(contacts_list_h email_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_insert_data_email(const char *zone_name, contacts_list_h email_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == email_list, CONTACTS_ERROR_INVALID_PARAMETER);
ret = contacts_list_get_count(email_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(email_list);
do {
contacts_list_get_current_record_p(email_list, &record);
- ret = ctsvc_db_email_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_email_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : ctsvc_db_email_insert");
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(email_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(email_list));
return ret;
}
-int ctsvc_contact_insert_data_profile(contacts_list_h profile_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_insert_data_profile(const char *zone_name, contacts_list_h profile_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == profile_list, CONTACTS_ERROR_INVALID_PARAMETER);
ret = contacts_list_get_count(profile_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(profile_list);
do {
contacts_list_get_current_record_p(profile_list, &record);
- ret = ctsvc_db_profile_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_profile_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : ctsvc_db_profile_insert");
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(profile_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(profile_list));
return ret;
}
-int ctsvc_contact_insert_data_company(contacts_list_h company_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_insert_data_company(const char *zone_name, contacts_list_h company_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == company_list, CONTACTS_ERROR_INVALID_PARAMETER);
ret = contacts_list_get_count(company_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(company_list);
do {
contacts_list_get_current_record_p(company_list, &record);
- ret = ctsvc_db_company_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_company_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : ctsvc_db_company_insert");
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(company_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(company_list));
return ret;
}
-int ctsvc_contact_insert_data_note(contacts_list_h note_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_insert_data_note(const char *zone_name, contacts_list_h note_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == note_list, CONTACTS_ERROR_INVALID_PARAMETER);
ret = contacts_list_get_count(note_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(note_list);
do {
contacts_list_get_current_record_p(note_list, &record);
if (record) {
- ret = ctsvc_db_note_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_note_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : ctsvc_db_note_insert");
break;
}
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(note_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(note_list));
return ret;
}
-int ctsvc_contact_insert_data_event(contacts_list_h event_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_insert_data_event(const char *zone_name, contacts_list_h event_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == event_list, CONTACTS_ERROR_INVALID_PARAMETER);
ret = contacts_list_get_count(event_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(event_list);
do {
contacts_list_get_current_record_p(event_list, &record);
- ret = ctsvc_db_event_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_event_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : ctsvc_db_event_insert");
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(event_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(event_list));
return ret;
}
-int ctsvc_contact_insert_data_messenger(contacts_list_h messenger_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_insert_data_messenger(const char *zone_name, contacts_list_h messenger_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == messenger_list, CONTACTS_ERROR_INVALID_PARAMETER);
ret = contacts_list_get_count(messenger_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(messenger_list);
do {
contacts_list_get_current_record_p(messenger_list, &record);
- ret = ctsvc_db_messenger_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_messenger_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : ctsvc_db_messenger_insert");
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(messenger_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(messenger_list));
return ret;
}
-int ctsvc_contact_insert_data_address(contacts_list_h address_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_insert_data_address(const char *zone_name, contacts_list_h address_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == address_list, CONTACTS_ERROR_INVALID_PARAMETER);
ret = contacts_list_get_count(address_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(address_list);
do {
contacts_list_get_current_record_p(address_list, &record);
- ret = ctsvc_db_address_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_address_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : ctsvc_db_address_insert");
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(address_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(address_list));
return ret;
}
-int ctsvc_contact_insert_data_url(contacts_list_h url_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_insert_data_url(const char *zone_name, contacts_list_h url_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == url_list, CONTACTS_ERROR_INVALID_PARAMETER);
ret = contacts_list_get_count(url_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(url_list);
do {
contacts_list_get_current_record_p(url_list, &record);
- ret = ctsvc_db_url_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_url_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : ctsvc_db_url_insert");
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(url_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(url_list));
return ret;
}
-int ctsvc_contact_insert_data_nickname(contacts_list_h nickname_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_insert_data_nickname(const char *zone_name, contacts_list_h nickname_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == nickname_list, CONTACTS_ERROR_INVALID_PARAMETER);
ret = contacts_list_get_count(nickname_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(nickname_list);
do {
contacts_list_get_current_record_p(nickname_list, &record);
- ret = ctsvc_db_nickname_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_nickname_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : ctsvc_db_nickname_insert");
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(nickname_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(nickname_list));
return ret;
}
-int ctsvc_contact_insert_data_relationship(contacts_list_h relationship_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_insert_data_relationship(const char *zone_name, contacts_list_h relationship_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == relationship_list, CONTACTS_ERROR_INVALID_PARAMETER);
ret = contacts_list_get_count(relationship_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(relationship_list);
do {
contacts_list_get_current_record_p(relationship_list, &record);
- ret = ctsvc_db_relationship_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_relationship_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : ctsvc_db_relationship_insert");
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(relationship_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(relationship_list));
return ret;
}
-int ctsvc_contact_insert_data_image(contacts_list_h image_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_insert_data_image(const char *zone_name, contacts_list_h image_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == image_list, CONTACTS_ERROR_INVALID_PARAMETER);
ret = contacts_list_get_count(image_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(image_list);
do {
contacts_list_get_current_record_p(image_list, &record);
- ret = ctsvc_db_image_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_image_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : ctsvc_db_image_insert");
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(image_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(image_list));
return ret;
}
-int ctsvc_contact_insert_data_extension(contacts_list_h extension_list, int contact_id, bool is_my_profile)
+int ctsvc_contact_insert_data_extension(const char *zone_name, contacts_list_h extension_list, int contact_id, bool is_my_profile)
{
CTS_FN_CALL;
int ret = CONTACTS_ERROR_NONE;
RETV_IF(NULL == extension_list, CONTACTS_ERROR_INVALID_PARAMETER);
ret = contacts_list_get_count(extension_list, &count);
- if(0 == count)
+ if (0 == count)
return CONTACTS_ERROR_NONE;
contacts_list_first(extension_list);
do {
contacts_list_get_current_record_p(extension_list, &record);
- ret = ctsvc_db_extension_insert(record, contact_id, is_my_profile, NULL);
- if (CONTACTS_ERROR_DB == ret){
+ ret = ctsvc_db_extension_insert(zone_name, record, contact_id, is_my_profile, NULL);
+ if (CONTACTS_ERROR_DB == ret) {
CTS_ERR("DB error : ctsvc_db_extension_insert");
break;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(extension_list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(extension_list));
return ret;
}
-int ctsvc_contact_update_display_name(int contact_id, contacts_display_name_source_type_e changed_record_type)
+int ctsvc_contact_update_display_name(const char *zone_name, int contact_id, contacts_display_name_source_type_e changed_record_type)
{
int ret = CONTACTS_ERROR_NONE;
int display_name_type;
contacts_record_h record;
- ret = ctsvc_db_contact_get(contact_id, (contacts_record_h*)&record);
+ ret = ctsvc_db_contact_get(zone_name, contact_id, (contacts_record_h*)&record);
RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_db_contact_get Fail(%d)", ret);
contacts_record_get_int(record, _contacts_contact.display_source_type, &display_name_type);
"changed_ver=%d, changed_time=%d WHERE contact_id=%d",
contact->display_source_type,
contact->display_name_language, contact->reverse_display_name_language,
- ctsvc_get_next_ver(), (int)time(NULL), contact_id);
+ ctsvc_get_next_ver(zone_name), (int)time(NULL), contact_id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_record_destroy(record, true);
return ret;
}
ctsvc_stmt_bind_text(stmt, 6, contact->reverse_sortkey);
ret = ctsvc_stmt_step(stmt);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_stmt_step() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
}
}
extern ctsvc_db_plugin_info_s ctsvc_db_plugin_contact;
-int ctsvc_db_contact_get( int id, contacts_record_h* out_record )
+int ctsvc_db_contact_get(const char *zone_name, int id, contacts_record_h* out_record)
{
- return ctsvc_db_plugin_contact.get_record(id, out_record);
+ return ctsvc_db_plugin_contact.get_record(zone_name, id, out_record);
}
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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.
+ *
+ */
+
+#ifndef __CTSVC_DB_PLUGIN_CONTACT_HELPER_H__
+#define __CTSVC_DB_PLUGIN_CONTACT_HELPER_H__
+
+#include "ctsvc_struct.h"
+#include "ctsvc_db_sqlite.h"
+
+int ctsvc_contact_add_image_file(const char *zone_name, int parent_id, int img_id,
+ char *src_img, char *dest_name, int dest_size);
+int ctsvc_contact_update_image_file(const char *zone_name, int parent_id, int img_id,
+ char *src_img, char *dest_name, int dest_size);
+int ctsvc_contact_delete_image_file_with_path(const char *zone_name, const unsigned char* image_path);
+
+void ctsvc_contact_make_display_name(ctsvc_contact_s *contact);
+int ctsvc_contact_make_search_name(ctsvc_contact_s *contact, char **search_name);
+int ctsvc_contact_get_name_language(const ctsvc_name_s *name);
+
+int ctsvc_db_contact_update_changed_time(const char *zone_name, int contact_id);
+int ctsvc_contact_update_display_name(const char *zone_name, int contact_id, contacts_display_name_source_type_e changed_record_type);
+
+int ctsvc_db_contact_delete(const char *zone_name, int contact_id);
+int ctsvc_db_contact_get(const char *zone_name, int id, contacts_record_h* out_record);
+
+int ctsvc_get_data_info_name(cts_stmt stmt, contacts_list_h name_list);
+int ctsvc_get_data_info_event(cts_stmt stmt, contacts_list_h list);
+int ctsvc_get_data_info_number(cts_stmt stmt, contacts_list_h number_list);
+int ctsvc_get_data_info_email(cts_stmt stmt, contacts_list_h list);
+int ctsvc_get_data_info_address(cts_stmt stmt, contacts_list_h list);
+int ctsvc_get_data_info_messenger(cts_stmt stmt, contacts_list_h list);
+int ctsvc_get_data_info_note(cts_stmt stmt, contacts_list_h list);
+int ctsvc_get_data_info_company(cts_stmt stmt, contacts_list_h list);
+int ctsvc_get_data_info_profile(cts_stmt stmt, contacts_list_h list);
+int ctsvc_get_data_info_relationship(cts_stmt stmt, contacts_list_h list);
+int ctsvc_get_data_info_image(cts_stmt stmt, contacts_list_h list);
+int ctsvc_get_data_info_url(cts_stmt stmt, contacts_list_h list);
+int ctsvc_get_data_info_nickname(cts_stmt stmt, contacts_list_h list);
+int ctsvc_get_data_info_extension(cts_stmt stmt, contacts_list_h list);
+
+bool ctsvc_contact_check_default_number(contacts_list_h number_list);
+bool ctsvc_contact_check_default_email(contacts_list_h email_list);
+bool ctsvc_contact_check_default_address(contacts_list_h address_list);
+bool ctsvc_contact_check_default_image(contacts_list_h image_list);
+bool ctsvc_contact_check_image_location(const char *path);
+
+int ctsvc_contact_update_data_name(const char *zone_name, contacts_list_h name_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_update_data_company(const char *zone_name, contacts_list_h company_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_update_data_note(const char *zone_name, contacts_list_h note_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_update_data_event(const char *zone_name, contacts_list_h event_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_update_data_messenger(const char *zone_name, contacts_list_h messenger_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_update_data_address(const char *zone_name, contacts_list_h address_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_update_data_url(const char *zone_name, contacts_list_h url_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_update_data_profile(const char *zone_name, contacts_list_h profile_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_update_data_relationship(const char *zone_name, contacts_list_h relationship_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_update_data_image(const char *zone_name, contacts_list_h image_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_update_data_nickname(const char *zone_name, contacts_list_h nickname_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_update_data_extension(const char *zone_name, contacts_list_h extension_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_update_data_number(const char *zone_name, contacts_list_h number_list, int contact_id, bool is_my_profile, bool *had_phonenumber);
+int ctsvc_contact_update_data_email(const char *zone_name, contacts_list_h email_list, int contact_id, bool is_my_profile, bool *had_email);
+
+int ctsvc_contact_insert_data_name(const char *zone_name, contacts_list_h name_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_insert_data_number(const char *zone_name, contacts_list_h number_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_insert_data_email(const char *zone_name, contacts_list_h email_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_insert_data_profile(const char *zone_name, contacts_list_h profile_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_insert_data_company(const char *zone_name, contacts_list_h company_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_insert_data_note(const char *zone_name, contacts_list_h note_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_insert_data_event(const char *zone_name, contacts_list_h event_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_insert_data_messenger(const char *zone_name, contacts_list_h messenger_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_insert_data_address(const char *zone_name, contacts_list_h address_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_insert_data_url(const char *zone_name, contacts_list_h url_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_insert_data_nickname(const char *zone_name, contacts_list_h nickname_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_insert_data_relationship(const char *zone_name, contacts_list_h relationship_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_insert_data_image(const char *zone_name, contacts_list_h image_list, int contact_id, bool is_my_profile);
+int ctsvc_contact_insert_data_extension(const char *zone_name, contacts_list_h extension_list, int contact_id, bool is_my_profile);
+
+#endif /* __CTSVC_DB_PLUGIN_CONTACT_HELPER_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_db_plugin_contact_helper.h"
#include "ctsvc_db_query.h"
#include "ctsvc_list.h"
-static int __ctsvc_db_email_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_email_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_email_update_record( contacts_record_h record );
-static int __ctsvc_db_email_delete_record( int id );
-static int __ctsvc_db_email_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_email_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_email_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_email_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_email_delete_records( int ids[], int count);
+static int __ctsvc_db_email_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_email_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_email_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_email_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_email_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_email_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_email = {
.is_query_only = false,
.delete_record = __ctsvc_db_email_delete_record,
.get_all_records = __ctsvc_db_email_get_all_records,
.get_records_with_query = __ctsvc_db_email_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_email_insert_records,
- .update_records = NULL,//__ctsvc_db_email_update_records,
- .delete_records = NULL,//__ctsvc_db_email_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_email_get_person_default_email(int person_id)
+static int __ctsvc_db_email_get_person_default_email(const char *zone_name, int person_id)
{
int ret;
int default_email_id;
"SELECT id FROM "CTSVC_DB_VIEW_CONTACT" c, "CTS_TABLE_DATA" d "
"WHERE c.person_id = %d AND d.datatype = %d AND c.contact_id = d.contact_id AND d.is_default = 1",
person_id, CTSVC_DATA_EMAIL);
- ret = ctsvc_query_get_first_int_result(query, &default_email_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &default_email_id);
if (CONTACTS_ERROR_NONE != ret)
return 0;
return default_email_id;
}
-static int __ctsvc_db_email_update_person_has_email(int person_id, bool has_email)
+static int __ctsvc_db_email_update_person_has_email(const char *zone_name, int person_id, bool has_email)
{
int ret;
char query[CTS_SQL_MAX_LEN] = {0};
"UPDATE "CTS_TABLE_PERSONS" SET has_email = %d WHERE person_id = %d",
has_email, person_id);
- ret = ctsvc_query_exec(query);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
-static int __ctsvc_db_email_update_default(int email_id, int contact_id, bool is_default, bool is_primary_default)
+static int __ctsvc_db_email_update_default(const char *zone_name, int email_id, int contact_id, bool is_default, bool is_primary_default)
{
int ret;
char query[CTS_SQL_MAX_LEN] = {0};
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_DATA" SET is_default = %d, is_primary_default = %d WHERE id = %d",
is_default, is_primary_default, email_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
-static int __ctsvc_db_email_get_default_email_id(int contact_id)
+static int __ctsvc_db_email_get_default_email_id(const char *zone_name, int contact_id)
{
int ret;
int email_id = 0;
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE datatype=%d AND contact_id=%d AND is_default=1",
CTSVC_DATA_EMAIL, contact_id);
- ret = ctsvc_query_get_first_int_result(query, &email_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &email_id);
if (CONTACTS_ERROR_NONE != ret)
return 0;
return email_id;
}
-static int __ctsvc_db_email_get_primary_default_email_id(int contact_id)
+static int __ctsvc_db_email_get_primary_default_email_id(const char *zone_name, int contact_id)
{
int ret;
int email_id = 0;
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE datatype=%d AND contact_id=%d AND is_primary_default=1",
CTSVC_DATA_EMAIL, contact_id);
- ret = ctsvc_query_get_first_int_result(query, &email_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &email_id);
if (CONTACTS_ERROR_NONE != ret)
return 0;
return email_id;
}
-static int __ctsvc_db_email_get_primary_default_contact_id(int person_id)
+static int __ctsvc_db_email_get_primary_default_contact_id(const char *zone_name, int person_id)
{
int ret;
int default_contact_id;
"SELECT c.contact_id FROM "CTS_TABLE_CONTACTS" c, "CTS_TABLE_DATA" d "
"WHERE c.person_id = %d AND d.datatype = %d AND c.contact_id = d.contact_id AND d.is_primary_default = 1",
person_id, CTSVC_DATA_EMAIL);
- ret = ctsvc_query_get_first_int_result(query, &default_contact_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &default_contact_id);
if (CONTACTS_ERROR_NONE != ret)
return 0;
return default_contact_id;
}
-static int __ctsvc_db_email_set_primary_default(int email_id, bool is_primary_default)
+static int __ctsvc_db_email_set_primary_default(const char *zone_name, int email_id, bool is_primary_default)
{
int ret;
char query[CTS_SQL_MAX_LEN] = {0};
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_DATA" SET is_primary_default = %d WHERE id = %d",
is_primary_default, email_id);
- ret = ctsvc_query_exec(query);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
-static int __ctsvc_db_email_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_email_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int addressbook_id = 0;
RETVM_IF(NULL == email->email_addr, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : email is NULL");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans() Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id, person_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", email->contact_id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_INVALID_PARAMETER;
else
person_id = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this email record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- old_default_email_id = __ctsvc_db_email_get_default_email_id(email->contact_id);
+ old_default_email_id = __ctsvc_db_email_get_default_email_id(zone_name, email->contact_id);
if (0 == old_default_email_id)
email->is_default = true;
- ret = ctsvc_db_email_insert(record, email->contact_id, false, id);
+ ret = ctsvc_db_email_insert(zone_name, record, email->contact_id, false, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_CONTACTS" SET has_email = %d, changed_ver = %d, changed_time = %d "
"WHERE contact_id = %d",
- 1, ctsvc_get_next_ver(), (int)time(NULL), email->contact_id);
+ 1, ctsvc_get_next_ver(zone_name), (int)time(NULL), email->contact_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
if (email->is_default) {
int primary_default_contact_id = 0;
- __ctsvc_db_email_update_person_has_email(person_id, true);
+ __ctsvc_db_email_update_person_has_email(zone_name, person_id, true);
- primary_default_contact_id = __ctsvc_db_email_get_primary_default_contact_id(person_id);
+ primary_default_contact_id = __ctsvc_db_email_get_primary_default_contact_id(zone_name, person_id);
if (0 == primary_default_contact_id || email->contact_id == primary_default_contact_id)
- __ctsvc_db_email_set_primary_default(*id, true);
+ __ctsvc_db_email_set_primary_default(zone_name, *id, true);
- ctsvc_contact_update_display_name(email->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_EMAIL);
+ ctsvc_contact_update_display_name(zone_name, email->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_EMAIL);
}
- ctsvc_set_contact_noti();
- ctsvc_set_person_noti();
+ ctsvc_set_contact_noti(zone_name);
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_email_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_email_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"WHERE id = %d AND datatype = %d ",
id, CTSVC_DATA_EMAIL);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_email_update_record( contacts_record_h record )
+static int __ctsvc_db_email_update_record(const char *zone_name, contacts_record_h record)
{
int ret;
int addressbook_id;
ctsvc_email_s *email = (ctsvc_email_s *)record;
RETVM_IF(NULL == email->email_addr, CONTACTS_ERROR_INVALID_PARAMETER, "email is empty");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", email->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : contact_id (%d) is not exist", email->contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this email record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_email_update(record, false);
+ ret = ctsvc_db_email_update(zone_name, record, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("update record failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("update record Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
if (email->is_default) {
int old_primary_default_email_id = 0;
- old_primary_default_email_id = __ctsvc_db_email_get_primary_default_email_id(email->contact_id);
+ old_primary_default_email_id = __ctsvc_db_email_get_primary_default_email_id(zone_name, email->contact_id);
if (old_primary_default_email_id)
- __ctsvc_db_email_set_primary_default(email->id, true);
+ __ctsvc_db_email_set_primary_default(zone_name, email->id, true);
}
- ctsvc_contact_update_display_name(email->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_EMAIL);
+ ctsvc_contact_update_display_name(zone_name, email->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_EMAIL);
- ret = ctsvc_db_contact_update_changed_time(email->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, email->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_email_delete_record( int id )
+static int __ctsvc_db_email_delete_record(const char *zone_name, int id)
{
int ret;
int email_id;
cts_stmt stmt = NULL;
int addressbook_id;
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans() Fail(%d)", ret);
return ret;
}
"SELECT contact_id, person_id, addressbook_id FROM "CTSVC_DB_VIEW_CONTACT " "
"WHERE contact_id = (SELECT contact_id FROM "CTS_TABLE_DATA" WHERE id = %d)", id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
addressbook_id = ctsvc_stmt_get_int(stmt, 2);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this email record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
snprintf(query, sizeof(query),
"SELECT is_default, is_primary_default FROM "CTS_TABLE_DATA" WHERE id = %d", id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
is_primary_default = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- ret = ctsvc_db_email_delete(id, false);
+ ret = ctsvc_db_email_delete(zone_name, id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE datatype = %d AND contact_id = %d AND is_my_profile = 0 limit 1",
CTSVC_DATA_EMAIL, contact_id);
- ret = ctsvc_query_get_first_int_result(query, &email_id);
- if (0 < ret )
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &email_id);
+ if (0 < ret)
has_email = true;
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_CONTACTS" SET has_email = %d, changed_ver = %d, changed_time = %d "
"WHERE contact_id = %d",
- has_email, ctsvc_get_next_ver(), (int)time(NULL), contact_id);
+ has_email, ctsvc_get_next_ver(zone_name), (int)time(NULL), contact_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
if (is_default) {
if (email_id) {
- __ctsvc_db_email_update_default(email_id, contact_id, is_default, is_primary_default);
+ __ctsvc_db_email_update_default(zone_name, email_id, contact_id, is_default, is_primary_default);
}
else if (is_primary_default) {
int default_email_id = 0;
- default_email_id = __ctsvc_db_email_get_person_default_email(person_id);
+ default_email_id = __ctsvc_db_email_get_person_default_email(zone_name, person_id);
if (default_email_id)
- __ctsvc_db_email_set_primary_default(default_email_id, true);
+ __ctsvc_db_email_set_primary_default(zone_name, default_email_id, true);
else
- __ctsvc_db_email_update_person_has_email(person_id, false);
+ __ctsvc_db_email_update_person_has_email(zone_name, person_id, false);
}
- ctsvc_contact_update_display_name(contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_EMAIL);
+ ctsvc_contact_update_display_name(zone_name, contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_EMAIL);
}
- ctsvc_set_contact_noti();
- ctsvc_set_person_noti();
+ ctsvc_set_contact_noti(zone_name);
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_email_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_email_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int len;
int ret;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB : ctsvc_stmt_step fail(%d)", ret);
+ CTS_ERR("DB : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_email_get_records_with_query( contacts_query_h query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_email_get_records_with_query(const char *zone_name, contacts_query_h query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ret = ctsvc_record_set_projection_flags(record, s_query->projection,
s_query->projection_count, s_query->property_count);
- if(CONTACTS_ERROR_NONE != ret)
+ if (CONTACTS_ERROR_NONE != ret)
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_EMAIL_LABEL:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(email->label);
email->label = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_EMAIL_EMAIL:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(email->email_addr);
email->email_addr = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_EMAIL_IS_DEFAULT:
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-
-//static int __ctsvc_db_email_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_email_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_email_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_plugin_email_helper.h"
ctsvc_email_s *email;
ret = contacts_record_create(_contacts_email._uri, (contacts_record_h *)&email);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
email->id = ctsvc_stmt_get_int(stmt, start_count++);
email->contact_id = ctsvc_stmt_get_int(stmt, start_count++);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_email_reset_default(int email_id, int contact_id)
+static int __ctsvc_db_email_reset_default(const char *zone_name, int email_id, int contact_id)
{
int ret;
char query[CTS_SQL_MAX_LEN] = {0};
"UPDATE "CTS_TABLE_DATA" SET is_default = 0, is_primary_default = 0 "
"WHERE id != %d AND contact_id = %d AND datatype = %d",
email_id, contact_id, CTSVC_DATA_EMAIL);
- ret = ctsvc_query_exec(query);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
-int ctsvc_db_email_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id)
+int ctsvc_db_email_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id)
{
int ret;
int email_id;
"VALUES(%d, %d, %d, %d, %d, ?, ?)",
contact_id, is_my_profile, CTSVC_DATA_EMAIL, email->is_default, email->type);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
if (email->label)
ctsvc_stmt_bind_text(stmt, 1, email->label);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
- email_id = ctsvc_db_get_last_insert_id();
+ email_id = ctsvc_db_get_last_insert_id(zone_name);
if (id)
*id = email_id;
ctsvc_stmt_finalize(stmt);
if (ctsvc_record_check_property_flag((ctsvc_record_s *)record, _contacts_email.is_default, CTSVC_PROPERTY_FLAG_DIRTY)) {
if (email->is_default)
- __ctsvc_db_email_reset_default(email_id, contact_id);
+ __ctsvc_db_email_reset_default(zone_name, email_id, contact_id);
}
- if (!is_my_profile)
- ctsvc_set_email_noti();
+ if (false == is_my_profile)
+ ctsvc_set_email_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_email_update(contacts_record_h record, bool is_my_profile)
+int ctsvc_db_email_update(const char *zone_name, contacts_record_h record, bool is_my_profile)
{
int id;
int ret = CONTACTS_ERROR_NONE;
ctsvc_email_s *email = (ctsvc_email_s*)record;
char query[CTS_SQL_MAX_LEN] = {0};
- RETVM_IF(!email->id, CONTACTS_ERROR_INVALID_PARAMETER, "email of contact has no ID.");
+ RETVM_IF(0 == email->id, CONTACTS_ERROR_INVALID_PARAMETER, "email of contact has no ID.");
RETVM_IF(CTSVC_PROPERTY_FLAG_DIRTY != (email->base.property_flag & CTSVC_PROPERTY_FLAG_DIRTY), CONTACTS_ERROR_NONE, "No update");
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE id = %d", email->id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
RETV_IF(ret != CONTACTS_ERROR_NONE, ret);
if (ctsvc_record_check_property_flag((ctsvc_record_s *)record, _contacts_email.is_default, CTSVC_PROPERTY_FLAG_DIRTY)) {
if (email->is_default)
- __ctsvc_db_email_reset_default(email->id, email->contact_id);
+ __ctsvc_db_email_reset_default(zone_name, email->id, email->contact_id);
}
do {
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_DATA, email->id))) break;
- if (!is_my_profile)
- ctsvc_set_email_noti();
+ if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(zone_name, set, bind_text, CTS_TABLE_DATA, email->id))) break;
+ if (false == is_my_profile)
+ ctsvc_set_email_noti(zone_name);
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
return ret;
}
-int ctsvc_db_email_delete(int id, bool is_my_profile)
+int ctsvc_db_email_delete(const char *zone_name, int id, bool is_my_profile)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_DATA" WHERE id = %d AND datatype = %d",
id, CTSVC_DATA_EMAIL);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Failed(%d)", ret);
- if (!is_my_profile)
- ctsvc_set_email_noti();
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Fail(%d)", ret);
+ if (false == is_my_profile)
+ ctsvc_set_email_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
#define __CTSVC_DB_PLUGIN_EMAIL_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
-int ctsvc_db_email_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id);
-int ctsvc_db_email_update(contacts_record_h record, bool is_my_profile);
-int ctsvc_db_email_delete(int id, bool is_my_profile);
+int ctsvc_db_email_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id);
+int ctsvc_db_email_update(const char *zone_name, contacts_record_h record, bool is_my_profile);
+int ctsvc_db_email_delete(const char *zone_name, int id, bool is_my_profile);
int ctsvc_db_email_get_value_from_stmt(cts_stmt stmt, contacts_record_h *record, int start_count);
-#endif // __CTSVC_DB_PLUGIN_EMAIL_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_EMAIL_HELPER_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_db_plugin_event_helper.h"
#include "ctsvc_list.h"
#include "ctsvc_notification.h"
-static int __ctsvc_db_event_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_event_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_event_update_record( contacts_record_h record );
-static int __ctsvc_db_event_delete_record( int id );
-static int __ctsvc_db_event_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_event_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_event_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_event_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_event_delete_records( int ids[], int count);
+static int __ctsvc_db_event_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_event_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_event_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_event_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_event_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_event_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_event = {
.is_query_only = false,
.delete_record = __ctsvc_db_event_delete_record,
.get_all_records = __ctsvc_db_event_get_all_records,
.get_records_with_query = __ctsvc_db_event_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_event_insert_records,
- .update_records = NULL,//__ctsvc_db_event_update_records,
- .delete_records = NULL,//__ctsvc_db_event_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_event_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_event_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int addressbook_id;
RETVM_IF(event->date <= 0, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : event date(%d)", event->date);
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", event->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_ERR("No data : contact_id (%d) is not exist", event->contact_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this event record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_event_insert(record, event->contact_id, false, id);
+ ret = ctsvc_db_event_insert(zone_name, record, event->contact_id, false, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(event->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, event->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_event_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_event_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"WHERE id = %d AND datatype = %d ",
id, CTSVC_DATA_EVENT);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_event_update_record( contacts_record_h record )
+static int __ctsvc_db_event_update_record(const char *zone_name, contacts_record_h record)
{
int ret;
int addressbook_id;
char query[CTS_SQL_MAX_LEN] = {0};
ctsvc_event_s *event = (ctsvc_event_s *)record;
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", event->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : contact_id (%d) is not exist", event->contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this event record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_event_update(record, false);
+ ret = ctsvc_db_event_update(zone_name, record, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("update record failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("update record Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- // TODO ; contact display event update
- ret = ctsvc_db_contact_update_changed_time(event->contact_id);
+ /* TODO ; contact display event update */
+ ret = ctsvc_db_contact_update_changed_time(zone_name, event->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_event_delete_record( int id )
+static int __ctsvc_db_event_delete_record(const char *zone_name, int id)
{
int ret;
int contact_id;
cts_stmt stmt = NULL;
int addressbook_id;
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT contact_id, addressbook_id FROM "CTSVC_DB_VIEW_CONTACT " "
"WHERE contact_id = (SELECT contact_id FROM "CTS_TABLE_DATA" WHERE id = %d)", id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
CTS_ERR("The id(%d) is Invalid(%d)", id, ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
addressbook_id = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this event record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_event_delete(id, false);
+ ret = ctsvc_db_event_delete(zone_name, id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_event_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_event_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int len;
int ret;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB : ctsvc_stmt_step fail(%d)", ret);
+ CTS_ERR("DB : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_event_get_records_with_query( contacts_query_h query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_event_get_records_with_query(const char *zone_name, contacts_query_h query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ret = ctsvc_record_set_projection_flags(record, s_query->projection,
s_query->projection_count, s_query->property_count);
- if(CONTACTS_ERROR_NONE != ret)
+ if (CONTACTS_ERROR_NONE != ret)
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_EVENT_LABEL:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(event->label);
event->label = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_EVENT_DATE:
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-
-//static int __ctsvc_db_event_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_event_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_event_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_plugin_event_helper.h"
#include "ctsvc_record.h"
#include "ctsvc_notification.h"
-int ctsvc_db_event_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id)
+int ctsvc_db_event_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id)
{
int ret;
cts_stmt stmt = NULL;
char query[CTS_SQL_MAX_LEN] = {0};
ctsvc_event_s *event = (ctsvc_event_s *)record;
- // These check should be done in client side
+ /* These check should be done in client side */
RETV_IF(event->date <= 0, CONTACTS_ERROR_NONE);
RETVM_IF(contact_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : contact_id(%d) is mandatory field to insert event record", event->contact_id);
"INSERT INTO "CTS_TABLE_DATA"(contact_id, is_my_profile, datatype, data1, data2, data3, data4, data5) "
"VALUES(%d, %d, %d, %d, ?, ?, ?, %d)",
contact_id, is_my_profile, CTSVC_DATA_EVENT, event->type, event->is_leap_month);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
if (event->label)
ctsvc_stmt_bind_text(stmt, 1, event->label);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
-// event->id = ctsvc_db_get_last_insert_id();
+ /* event->id = ctsvc_db_get_last_insert_id(zone_name); */
if (id)
- *id = ctsvc_db_get_last_insert_id();
+ *id = ctsvc_db_get_last_insert_id(zone_name);
ctsvc_stmt_finalize(stmt);
- if (!is_my_profile)
- ctsvc_set_event_noti();
+ if (false == is_my_profile)
+ ctsvc_set_event_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
char *temp;
ret = contacts_record_create(_contacts_event._uri, (contacts_record_h *)&event);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
event->id = ctsvc_stmt_get_int(stmt, start_count++);
event->contact_id = ctsvc_stmt_get_int(stmt, start_count++);
- start_count++; // skip is default
+ start_count++; /* skip is default */
event->type = ctsvc_stmt_get_int(stmt, start_count++);
temp = ctsvc_stmt_get_text(stmt, start_count++);
event->label = SAFE_STRDUP(temp);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_event_update(contacts_record_h record, bool is_my_profile)
+int ctsvc_db_event_update(const char *zone_name, contacts_record_h record, bool is_my_profile)
{
int id;
int ret = CONTACTS_ERROR_NONE;
ctsvc_event_s *event = (ctsvc_event_s*)record;
char query[CTS_SQL_MAX_LEN] = {0};
- RETVM_IF(!event->id, CONTACTS_ERROR_INVALID_PARAMETER, "event of contact has no ID.");
+ RETVM_IF(0 == event->id, CONTACTS_ERROR_INVALID_PARAMETER, "event of contact has no ID.");
RETVM_IF(CTSVC_PROPERTY_FLAG_DIRTY != (event->base.property_flag & CTSVC_PROPERTY_FLAG_DIRTY), CONTACTS_ERROR_NONE, "No update");
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE id = %d", event->id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
RETV_IF(ret != CONTACTS_ERROR_NONE, ret);
do {
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_DATA, event->id))) break;
- if (!is_my_profile)
- ctsvc_set_event_noti();
+ if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(zone_name, set, bind_text, CTS_TABLE_DATA, event->id))) break;
+ if (false == is_my_profile)
+ ctsvc_set_event_noti(zone_name);
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
return ret;
}
-int ctsvc_db_event_delete(int id, bool is_my_profile)
+int ctsvc_db_event_delete(const char *zone_name, int id, bool is_my_profile)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_DATA" WHERE id = %d AND datatype = %d",
id, CTSVC_DATA_EVENT);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Fail(%d)", ret);
- if (!is_my_profile)
- ctsvc_set_event_noti();
+ if (false == is_my_profile)
+ ctsvc_set_event_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
#define __CTSVC_DB_PLUGIN_EVENT_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
-int ctsvc_db_event_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id);
-int ctsvc_db_event_update(contacts_record_h record, bool is_my_profile);
-int ctsvc_db_event_delete(int id, bool is_my_profile);
+int ctsvc_db_event_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id);
+int ctsvc_db_event_update(const char *zone_name, contacts_record_h record, bool is_my_profile);
+int ctsvc_db_event_delete(const char *zone_name, int id, bool is_my_profile);
int ctsvc_db_event_get_value_from_stmt(cts_stmt stmt, contacts_record_h *record, int start_count);
-#endif // __CTSVC_DB_PLUGIN_EVENT_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_EVENT_HELPER_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_db_plugin_contact_helper.h"
#include "ctsvc_list.h"
#include "ctsvc_notification.h"
-static int __ctsvc_db_extension_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_extension_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_extension_update_record( contacts_record_h record );
-static int __ctsvc_db_extension_delete_record( int id );
-static int __ctsvc_db_extension_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_extension_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_extension_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_extension_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_extension_delete_records( int ids[], int count);
+static int __ctsvc_db_extension_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_extension_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_extension_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_extension_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_extension_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_extension_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_extension = {
.is_query_only = false,
.delete_record = __ctsvc_db_extension_delete_record,
.get_all_records = __ctsvc_db_extension_get_all_records,
.get_records_with_query = __ctsvc_db_extension_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_extension_insert_records,
- .update_records = NULL,//__ctsvc_db_extension_update_records,
- .delete_records = NULL,//__ctsvc_db_extension_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_extension_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_extension_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int addressbook_id;
&& NULL == extension->data11 && NULL == extension->data12,
CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", extension->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_ERR("No data : contact_id (%d) is not exist", extension->contact_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this extension record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_extension_insert(record, extension->contact_id, false, id);
+ ret = ctsvc_db_extension_insert(zone_name, record, extension->contact_id, false, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(extension->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, extension->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_extension_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_extension_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"WHERE id = %d AND datatype = %d ",
id, CTSVC_DATA_EXTENSION);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_extension_update_record( contacts_record_h record )
+static int __ctsvc_db_extension_update_record(const char *zone_name, contacts_record_h record)
{
int ret;
int addressbook_id;
NULL == extension->data8 && NULL == extension->data9 && NULL == extension->data10 &&
NULL == extension->data11 && NULL == extension->data12, CONTACTS_ERROR_INVALID_PARAMETER, "extension is empty");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", extension->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : contact_id (%d) is not exist", extension->contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this extension record : addressbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_extension_update(record);
+ ret = ctsvc_db_extension_update(zone_name, record);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("update record failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("update record Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(extension->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, extension->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_extension_delete_record( int id )
+static int __ctsvc_db_extension_delete_record(const char *zone_name, int id)
{
int ret;
int contact_id;
cts_stmt stmt = NULL;
int addressbook_id;
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT contact_id, addressbook_id FROM "CTSVC_DB_VIEW_CONTACT " "
"WHERE contact_id = (SELECT contact_id FROM "CTS_TABLE_DATA" WHERE id = %d)", id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
CTS_ERR("DB error : ctsvc_query_prepare Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
CTS_ERR("The id(%d) is Invalid(%d)", id, ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
addressbook_id = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this extension record : addressbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_extension_delete(id, false);
+ ret = ctsvc_db_extension_delete(zone_name, id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_extension_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_extension_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int len;
int ret;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB : ctsvc_stmt_step fail(%d)", ret);
+ CTS_ERR("DB : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_extension_get_records_with_query( contacts_query_h query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_extension_get_records_with_query(const char *zone_name, contacts_query_h query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ret = ctsvc_record_set_projection_flags(record, s_query->projection,
s_query->projection_count, s_query->property_count);
- if(CONTACTS_ERROR_NONE != ret)
+ if (CONTACTS_ERROR_NONE != ret)
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_EXTENSION_DATA2:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(extension->data2);
extension->data2 = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_EXTENSION_DATA3:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(extension->data3);
extension->data3 = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_EXTENSION_DATA4:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(extension->data4);
extension->data4 = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_EXTENSION_DATA5:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(extension->data5);
extension->data5 = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_EXTENSION_DATA6:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(extension->data6);
extension->data6 = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_EXTENSION_DATA7:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(extension->data7);
extension->data7 = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_EXTENSION_DATA8:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(extension->data8);
extension->data8 = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_EXTENSION_DATA9:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(extension->data9);
extension->data9 = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_EXTENSION_DATA10:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(extension->data10);
extension->data10 = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_EXTENSION_DATA11:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(extension->data11);
extension->data11 = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_EXTENSION_DATA12:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(extension->data12);
extension->data12 = SAFE_STRDUP(temp);
break;
default:
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-
-//static int __ctsvc_db_extension_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_extension_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_extension_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_plugin_extension_helper.h"
ctsvc_extension_s *extension;
ret = contacts_record_create(_contacts_extension._uri, (contacts_record_h *)&extension);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
extension->id = ctsvc_stmt_get_int(stmt, start_count++);
extension->contact_id = ctsvc_stmt_get_int(stmt, start_count++);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_extension_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id)
+int ctsvc_db_extension_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id)
{
int ret;
cts_stmt stmt = NULL;
"VALUES(%d, %d, %d, %d, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
contact_id, is_my_profile, CTSVC_DATA_EXTENSION, extension->data1);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
__ctsvc_extension_bind_stmt(stmt, extension, 1);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
-// extension->id = ctsvc_db_get_last_insert_id();
+ /* extension->id = ctsvc_db_get_last_insert_id(zone_name); */
if (id)
- *id = ctsvc_db_get_last_insert_id();
+ *id = ctsvc_db_get_last_insert_id(zone_name);
ctsvc_stmt_finalize(stmt);
- if (!is_my_profile)
- ctsvc_set_data_noti();
+ if (false == is_my_profile)
+ ctsvc_set_data_noti(zone_name);
}
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_extension_update(contacts_record_h record)
+int ctsvc_db_extension_update(const char *zone_name, contacts_record_h record)
{
int id;
int ret = CONTACTS_ERROR_NONE;
ctsvc_extension_s *extension = (ctsvc_extension_s*)record;
char query[CTS_SQL_MAX_LEN] = {0};
- RETVM_IF(!extension->id, CONTACTS_ERROR_INVALID_PARAMETER, "extension of contact has no ID.");
+ RETVM_IF(0 == extension->id, CONTACTS_ERROR_INVALID_PARAMETER, "extension of contact has no ID.");
RETVM_IF(CTSVC_PROPERTY_FLAG_DIRTY != (extension->base.property_flag & CTSVC_PROPERTY_FLAG_DIRTY), CONTACTS_ERROR_NONE, "No update");
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE id = %d", extension->id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
RETV_IF(ret != CONTACTS_ERROR_NONE, ret);
do {
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_DATA, extension->id))) break;
+ if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(zone_name, set, bind_text, CTS_TABLE_DATA, extension->id))) break;
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
return ret;
}
-int ctsvc_db_extension_delete(int id, bool is_my_profile)
+int ctsvc_db_extension_delete(const char *zone_name, int id, bool is_my_profile)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_DATA" WHERE id = %d AND datatype = %d",
id, CTSVC_DATA_EXTENSION);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Fail(%d)", ret);
- if (!is_my_profile)
- ctsvc_set_data_noti();
+ if (false == is_my_profile)
+ ctsvc_set_data_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
#define __CTSVC_DB_PLUGIN_EXTENSION_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
-int ctsvc_db_extension_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id);
-int ctsvc_db_extension_update(contacts_record_h record);
-int ctsvc_db_extension_delete(int id, bool is_my_profile);
+int ctsvc_db_extension_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id);
+int ctsvc_db_extension_update(const char *zone_name, contacts_record_h record);
+int ctsvc_db_extension_delete(const char *zone_name, int id, bool is_my_profile);
int ctsvc_db_extension_get_value_from_stmt(cts_stmt stmt, contacts_record_h *record, int start_count);
-#endif // __CTSVC_DB_PLUGIN_EXTENSION_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_EXTENSION_HELPER_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_zone.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_list.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_db_plugin_group_helper.h"
-static int __ctsvc_db_group_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_group_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_group_update_record( contacts_record_h record );
-static int __ctsvc_db_group_delete_record( int id );
-static int __ctsvc_db_group_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_group_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_group_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_group_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_group_delete_records( int ids[], int count);
+static int __ctsvc_db_group_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_group_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_group_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_group_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_group_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_group_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_group = {
.is_query_only = false,
.delete_record = __ctsvc_db_group_delete_record,
.get_all_records = __ctsvc_db_group_get_all_records,
.get_records_with_query = __ctsvc_db_group_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_group_insert_records,
- .update_records = NULL,//__ctsvc_db_group_update_records,
- .delete_records = NULL,//__ctsvc_db_group_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static double __ctsvc_db_group_get_next_group_prio(void)
+static double __ctsvc_db_group_get_next_group_prio(const char *zone_name)
{
int ret;
double prio = 0.0;
snprintf(query, sizeof(query), "SELECT MAX(group_prio) FROM "CTS_TABLE_GROUPS" ");
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ == ret)
return prio + 1.0;
}
-static int __ctsvc_db_group_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_group_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int ver;
RETVM_IF(NULL == group->name, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : The name of record is empty.");
- ret = ctsvc_begin_trans();
- RETVM_IF( ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_begin_trans() Fail(%d)", ret);
- if (false == ctsvc_have_ab_write_permission(group->addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, group->addressbook_id)) {
CTS_ERR("ctsvc_have_ab_write_permission fail : does not have permission(addressbook_id : %d)",
group->addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- group_prio = __ctsvc_db_group_get_next_group_prio();
- group->id = ctsvc_db_get_next_id(CTS_TABLE_GROUPS);
+ group_prio = __ctsvc_db_group_get_next_group_prio(zone_name);
+ group->id = ctsvc_db_get_next_id(zone_name, CTS_TABLE_GROUPS);
if (id)
*id = group->id;
"VALUES(%d, %d, ?, ?, ?, ?, ?, ?, ?, ?, %d, %lf)",
group->id, group->addressbook_id, group->is_read_only, group_prio);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ctsvc_stmt_bind_text(stmt, 1, group->name);
- ver = ctsvc_get_next_ver();
+ ver = ctsvc_get_next_ver(zone_name);
ctsvc_stmt_bind_int(stmt, 2, ver);
ctsvc_stmt_bind_int(stmt, 3, ver);
if (group->message_alert)
ctsvc_stmt_bind_text(stmt, 6, group->message_alert);
- if(group->image_thumbnail_path) {
+ if (group->image_thumbnail_path) {
char image[CTSVC_IMG_FULL_PATH_SIZE_MAX] = {0};
- ret = ctsvc_have_file_read_permission(group->image_thumbnail_path);
+ ret = ctsvc_have_file_read_permission(zone_name, group->image_thumbnail_path);
if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_have_file_read_permission Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ctsvc_utils_make_image_file_name(0, group->id, group->image_thumbnail_path, image, sizeof(image));
- ret = ctsvc_utils_copy_image(CTS_GROUP_IMAGE_LOCATION, group->image_thumbnail_path, image);
+ ret = ctsvc_utils_copy_image(zone_name, CTS_GROUP_IMAGE_LOCATION, group->image_thumbnail_path, image);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_utils_copy_image() Failed(%d)", ret);
+ CTS_ERR("ctsvc_utils_copy_image() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_group_noti();
+ ctsvc_set_group_noti(zone_name);
ctsvc_stmt_finalize(stmt);
- ret = ctsvc_end_trans(true);
- if(ret < CONTACTS_ERROR_NONE ) {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_group_update_record( contacts_record_h record )
+static int __ctsvc_db_group_update_record(const char *zone_name, contacts_record_h record)
{
int addressbook_id = 0;
int ret = CONTACTS_ERROR_NONE;
RETVM_IF(NULL == group->name, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : The name of group is empty.");
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT addressbook_id, is_read_only, image_thumbnail_path FROM %s WHERE group_id = %d",
CTS_TABLE_GROUPS, group->id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret) {
CTS_ERR("DB error : The group record(%d) is Invalid(%d)", group->id, ret);
return CONTACTS_ERROR_NO_DATA;
if (is_read_only && ctsvc_record_check_property_flag((ctsvc_record_s *)record, _contacts_group.name, CTSVC_PROPERTY_FLAG_DIRTY)) {
CTS_ERR("Can not change the group name. It is a read-only group (group_id : %d)", group->id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
free(image);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("ctsvc_have_ab_write_permission fail : does not have permission(addressbook_id : %d, group_id : %d)",
addressbook_id, group->id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
free(image);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
if (ctsvc_record_check_property_flag((ctsvc_record_s *)group, _contacts_group.image_path, CTSVC_PROPERTY_FLAG_DIRTY)) {
bool same = false;
bool check_permission = 0;
- // delete current image
+ /* delete current image */
if (image) {
char full_path[CTSVC_IMG_FULL_PATH_SIZE_MAX] = {0};
- snprintf(full_path, sizeof(full_path), "%s/%s", CTS_GROUP_IMAGE_LOCATION, image);
+ char root_path[CTSVC_PATH_MAX_LEN] = {0};
+ ctsvc_zone_get_root_path(zone_name, root_path, sizeof(root_path));
+ snprintf(full_path, sizeof(full_path), "%s/%s/%s", root_path, CTS_GROUP_IMAGE_LOCATION, image);
- if (group->image_thumbnail_path && strcmp(group->image_thumbnail_path, full_path) == 0) {
+ if (group->image_thumbnail_path && STRING_EQUAL == strcmp(group->image_thumbnail_path, full_path)) {
int index = _contacts_group.image_path & 0x000000FF;
((ctsvc_record_s *)record)->properties_flags[index] = 0;
same = true;
}
else {
if (group->image_thumbnail_path) {
- ret = ctsvc_have_file_read_permission(group->image_thumbnail_path);
+ ret = ctsvc_have_file_read_permission(zone_name, group->image_thumbnail_path);
if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("Your module does not have read permission of the image file()");
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
free(image);
return ret;
}
}
ret = unlink(full_path);
if (ret < 0) {
- CTS_WARN("unlink Failed(%d)", errno);
+ CTS_WARN("unlink Fail(%d)", errno);
}
}
}
- // add new image file
- if (!same && group->image_thumbnail_path) {
+ /* add new image file */
+ if (false == same && group->image_thumbnail_path) {
char dest[CTS_SQL_MAX_LEN] = {0};
if (false == check_permission) {
- ret = ctsvc_have_file_read_permission(group->image_thumbnail_path);
+ ret = ctsvc_have_file_read_permission(zone_name, group->image_thumbnail_path);
if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_have_file_read_permission Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
free(image);
return ret;
}
}
ctsvc_utils_make_image_file_name(0, group->id, group->image_thumbnail_path, dest, sizeof(dest));
- ret = ctsvc_utils_copy_image(CTS_GROUP_IMAGE_LOCATION, group->image_thumbnail_path, dest);
+ ret = ctsvc_utils_copy_image(zone_name, CTS_GROUP_IMAGE_LOCATION, group->image_thumbnail_path, dest);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("cts_copy_file() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("cts_copy_file() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
free(image);
return ret;
}
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
if (NULL == set || '\0' == *set)
break;
- snprintf(query_set, sizeof(query_set), "%s, changed_ver=%d ", set, ctsvc_get_next_ver());
+ snprintf(query_set, sizeof(query_set), "%s, changed_ver=%d ", set, ctsvc_get_next_ver(zone_name));
snprintf(query, sizeof(query), "UPDATE %s SET %s WHERE group_id = %d", CTS_TABLE_GROUPS, query_set, group->id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
break;
}
if (bind_text) {
}
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
break;
}
ctsvc_stmt_finalize(stmt);
- ctsvc_set_group_noti();
+ ctsvc_set_group_noti(zone_name);
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
}
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_end_trans(true);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_group_delete_record( int id )
+static int __ctsvc_db_group_delete_record(const char *zone_name, int id)
{
int ret;
int count = 0;
int addressbook_id;
char query[CTS_SQL_MAX_LEN] = {0};
- ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE > ret, ret, "DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM %s WHERE group_id = %d",
CTS_TABLE_GROUPS, id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
- if ( ret < CONTACTS_ERROR_NONE) {
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
+ if (ret < CONTACTS_ERROR_NONE) {
CTS_ERR("DB error : The id(%d) is Invalid(%d)", id, addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("ctsvc_have_ab_write_permission fail : does not have permission(addressbook_id : %d, group_id : %d)",
addressbook_id, id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
snprintf(query, sizeof(query),
"SELECT COUNT(contact_id) FROM "CTS_TABLE_GROUP_RELATIONS" WHERE group_id = %d", id);
- ret = ctsvc_query_get_first_int_result(query, &count);
- if ( ret < CONTACTS_ERROR_NONE) {
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &count);
+ if (ret < CONTACTS_ERROR_NONE) {
CTS_ERR("DB error : ctsvc_query_get_first_int_result Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
snprintf(query, sizeof(query), "DELETE FROM %s WHERE group_id=%d AND is_read_only=0",
CTS_TABLE_GROUPS, id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_change();
+ ret = ctsvc_db_change(zone_name);
if (ret <= 0) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_NO_DATA;
}
- ctsvc_get_next_ver();
+ ctsvc_get_next_ver(zone_name);
- ctsvc_set_group_noti();
- if (count > 0) {
- ctsvc_set_group_rel_noti();
- ctsvc_set_contact_noti();
- ctsvc_set_person_noti();
+ ctsvc_set_group_noti(zone_name);
+ if (0 < count) {
+ ctsvc_set_group_rel_noti(zone_name);
+ ctsvc_set_contact_noti(zone_name);
+ ctsvc_set_person_noti(zone_name);
}
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(zone_name, true);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
char full_path[CTSVC_IMG_FULL_PATH_SIZE_MAX] = {0};
ret = contacts_record_create(_contacts_group._uri, record);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
group = (ctsvc_group_s*)*record;
i = 0;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_group_get_record( int id, contacts_record_h *out_record )
+static int __ctsvc_db_group_get_record(const char *zone_name, int id, contacts_record_h *out_record)
{
int ret;
cts_stmt stmt = NULL;
"ringtone_path, vibration, message_alert, image_thumbnail_path "
"FROM "CTS_TABLE_GROUPS" WHERE group_id = %d", id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_db_group_value_set(ALL) Failed(%d)", ret);
+ CTS_ERR("__ctsvc_db_group_value_set(ALL) Fail(%d)", ret);
return ret;
}
*out_record = record;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_group_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_group_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int ret;
int len;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_group_get_records_with_query( contacts_query_h query,
- int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_group_get_records_with_query(const char *zone_name, contacts_query_h query,
+ int offset, int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
group = (ctsvc_group_s*)record;
if (0 == s_query->projection_count)
field_count = s_query->property_count;
- else
- {
+ else {
field_count = s_query->projection_count;
- if( CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, s_query->projection, s_query->projection_count, s_query->property_count) )
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, s_query->projection, s_query->projection_count, s_query->property_count)) {
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_GROUP_NAME:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(group->name);
group->name = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_GROUP_RINGTONE:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(group->ringtone_path);
group->ringtone_path = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_GROUP_IMAGE:
temp = ctsvc_stmt_get_text(stmt, i);
if (temp) {
snprintf(full_path, sizeof(full_path), "%s/%s", CTS_GROUP_IMAGE_LOCATION, temp);
+ free(group->image_thumbnail_path);
group->image_thumbnail_path = strdup(full_path);
}
break;
case CTSVC_PROPERTY_GROUP_VIBRATION:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(group->vibration);
group->vibration = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_GROUP_MESSAGE_ALERT:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(group->message_alert);
group->message_alert = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_GROUP_EXTRA_DATA:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(group->extra_data);
group->extra_data = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_GROUP_IS_READ_ONLY:
return CONTACTS_ERROR_NONE;
}
-//static int __ctsvc_db_group_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_group_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_group_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
-
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_zone.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_plugin_group_helper.h"
-// Whenever deleting group, this function will be called
-// in order to deleting group image file
+/*
+ * Whenever deleting group, this function will be called
+ * in order to deleting group image file
+ */
void ctsvc_db_group_delete_callback(sqlite3_context *context, int argc, sqlite3_value ** argv)
{
int ret;
const unsigned char* path;
+ char *zone_name = NULL;
- if (argc > 1) {
+ if (1 < argc) {
sqlite3_result_null(context);
return;
}
path = sqlite3_value_text(argv[0]);
+ zone_name = sqlite3_user_data(context);
+ char root_path[CTSVC_PATH_MAX_LEN] = {0};
+ ctsvc_zone_get_root_path(zone_name, root_path, sizeof(root_path));
+
if (path) {
char full_path[CTSVC_IMG_FULL_PATH_SIZE_MAX] = {0};
- snprintf(full_path, sizeof(full_path), "%s/%s", CTS_GROUP_IMAGE_LOCATION, path);
+ snprintf(full_path, sizeof(full_path), "%s/%s/%s", root_path, CTS_GROUP_IMAGE_LOCATION, path);
ret = unlink(full_path);
if (ret < 0) {
- CTS_WARN("unlink Failed(%d)", errno);
+ CTS_WARN("unlink Fail(%d)", errno);
}
}
#define __CTSVC_DB_PLUGIN_GROUP_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
#define CTS_GROUP_IMAGE_LOCATION "/opt/usr/data/contacts-svc/img/group"
void ctsvc_db_group_delete_callback(sqlite3_context *context, int argc, sqlite3_value ** argv);
-#endif // __CTSVC_DB_PLUGIN_GROUP_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_GROUP_HELPER_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_list.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_record.h"
#include "ctsvc_db_access_control.h"
-static int __ctsvc_db_grouprelation_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_grouprelation_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_grouprelation_update_record( contacts_record_h record );
-static int __ctsvc_db_grouprelation_delete_record( int id );
-static int __ctsvc_db_grouprelation_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_grouprelation_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_grouprelation_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_grouprelation_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_grouprelation_delete_records( int ids[], int count);
+static int __ctsvc_db_grouprelation_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_grouprelation_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_grouprelation_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_grouprelation_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_grouprelation_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_grouprelation_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_grouprelation = {
.is_query_only = false,
.delete_record = __ctsvc_db_grouprelation_delete_record,
.get_all_records = __ctsvc_db_grouprelation_get_all_records,
.get_records_with_query = __ctsvc_db_grouprelation_get_records_with_query,
- .insert_records = NULL, //__ctsvc_db_grouprelation_insert_records,
- .update_records = NULL, //__ctsvc_db_grouprelation_update_records,
- .delete_records = NULL, //__ctsvc_db_grouprelation_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_grouprelation_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_grouprelation_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
CTS_ERR("Please use the contacts_group_add_contact()");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_db_grouprelation_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_grouprelation_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
CTS_ERR("Not support get group-relation");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_db_grouprelation_update_record( contacts_record_h record )
+static int __ctsvc_db_grouprelation_update_record(const char *zone_name, contacts_record_h record)
{
CTS_ERR("Not support update group-relation");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_db_grouprelation_delete_record( int id )
+static int __ctsvc_db_grouprelation_delete_record(const char *zone_name, int id)
{
CTS_ERR("Please use the contacts_group_remove_contact()");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_db_grouprelation_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_grouprelation_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int len;
int ret;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_grouprelation_get_records_with_query( contacts_query_h query,
- int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_grouprelation_get_records_with_query(const char *zone_name, contacts_query_h query,
+ int offset, int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
group_relation = (ctsvc_group_relation_s*)record;
if (0 == s_query->projection_count)
field_count = s_query->property_count;
- else
- {
+ else {
field_count = s_query->projection_count;
- if( CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, s_query->projection, s_query->projection_count, s_query->property_count) )
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, s_query->projection, s_query->projection_count, s_query->property_count)) {
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_GROUP_RELATION_GROUP_NAME:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(group_relation->group_name);
group_relation->group_name = SAFE_STRDUP(temp);
break;
default:
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-
-//static int __ctsvc_db_grouprelation_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_grouprelation_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_grouprelation_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_db_plugin_image_helper.h"
#include "ctsvc_list.h"
#include "ctsvc_notification.h"
-static int __ctsvc_db_image_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_image_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_image_update_record( contacts_record_h record );
-static int __ctsvc_db_image_delete_record( int id );
-static int __ctsvc_db_image_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_image_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_image_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_image_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_image_delete_records( int ids[], int count);
+static int __ctsvc_db_image_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_image_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_image_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_image_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_image_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_image_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_image = {
.is_query_only = false,
.delete_record = __ctsvc_db_image_delete_record,
.get_all_records = __ctsvc_db_image_get_all_records,
.get_records_with_query = __ctsvc_db_image_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_image_insert_records,
- .update_records = NULL,//__ctsvc_db_image_update_records,
- .delete_records = NULL,//__ctsvc_db_image_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_image_get_default_image_id(int contact_id)
+static int __ctsvc_db_image_get_default_image_id(const char *zone_name, int contact_id)
{
int ret;
int image_id = 0;
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE datatype=%d AND contact_id=%d AND is_default=1",
CTSVC_DATA_IMAGE, contact_id);
- ret = ctsvc_query_get_first_int_result(query, &image_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &image_id);
if (CONTACTS_ERROR_NONE != ret)
return 0;
return image_id;
}
-static int __ctsvc_db_image_set_primary_default(int image_id, bool is_primary_default)
+static int __ctsvc_db_image_set_primary_default(const char *zone_name, int image_id, bool is_primary_default)
{
int ret;
char query[CTS_SQL_MAX_LEN] = {0};
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_DATA" SET is_primary_default = %d WHERE id = %d",
is_primary_default, image_id);
- ret = ctsvc_query_exec(query);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
-static int __ctsvc_db_image_set_default(int image_id, int contact_id, bool is_default, bool is_primary_default)
+static int __ctsvc_db_image_set_default(const char *zone_name, int image_id, int contact_id, bool is_default, bool is_primary_default)
{
int ret;
char query[CTS_SQL_MAX_LEN] = {0};
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_DATA" SET is_default = %d, is_primary_default = %d WHERE id = %d",
is_default, is_primary_default, image_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
-static int __ctsvc_db_image_get_primary_default_image_id(int person_id)
+static int __ctsvc_db_image_get_primary_default_image_id(const char *zone_name, int person_id)
{
int ret;
int default_image_id;
"SELECT id FROM "CTS_TABLE_CONTACTS" c, "CTS_TABLE_DATA" d "
"WHERE c.person_id = %d AND d.datatype = %d AND c.contact_id = d.contact_id AND d.is_default = 1",
person_id, CTSVC_DATA_IMAGE);
- ret = ctsvc_query_get_first_int_result(query, &default_image_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &default_image_id);
if (CONTACTS_ERROR_NONE != ret)
return 0;
return default_image_id;
}
-static int __ctsvc_db_image_get_primary_default_contact_id(int person_id)
+static int __ctsvc_db_image_get_primary_default_contact_id(const char *zone_name, int person_id)
{
int ret;
int default_contact_id;
"SELECT c.contact_id FROM "CTS_TABLE_CONTACTS" c, "CTS_TABLE_DATA" d "
"WHERE c.person_id = %d AND d.datatype = %d AND c.contact_id = d.contact_id AND d.is_primary_default = 1",
person_id, CTSVC_DATA_IMAGE);
- ret = ctsvc_query_get_first_int_result(query, &default_contact_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &default_contact_id);
if (CONTACTS_ERROR_NONE != ret)
return 0;
return default_contact_id;
}
-static int __ctsvc_db_image_update_contact_image(int contact_id, const char *image_path)
+static int __ctsvc_db_image_update_contact_image(const char *zone_name, int contact_id, const char *image_path)
{
int ret;
char query[CTS_SQL_MAX_LEN] = {0};
snprintf(query, sizeof(query), "UPDATE "CTS_TABLE_CONTACTS" SET image_thumbnail_path=? WHERE contact_id = %d", contact_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
if (image_path)
ctsvc_stmt_bind_text(stmt, 1, image_path);
ret = ctsvc_stmt_step(stmt);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_stmt_step() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
-static int __ctsvc_db_image_update_person_image(int person_id, const char *image_path)
+static int __ctsvc_db_image_update_person_image(const char *zone_name, int person_id, const char *image_path)
{
int ret;
char query[CTS_SQL_MAX_LEN] = {0};
snprintf(query, sizeof(query), "UPDATE "CTS_TABLE_PERSONS" SET image_thumbnail_path=? WHERE person_id = %d", person_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
if (image_path)
ctsvc_stmt_bind_text(stmt, 1, image_path);
ret = ctsvc_stmt_step(stmt);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_stmt_step() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
-static int __ctsvc_db_image_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_image_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int len = 0;
int ret;
RETVM_IF(NULL == image->path, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : image path is NULL");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans() Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id, person_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", image->contact_id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (ret == CONTACTS_ERROR_NONE)
return CONTACTS_ERROR_INVALID_PARAMETER;
else
person_id = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this image record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- old_default_image_id = __ctsvc_db_image_get_default_image_id(image->contact_id);
+ old_default_image_id = __ctsvc_db_image_get_default_image_id(zone_name, image->contact_id);
if (0 == old_default_image_id)
image->is_default = true;
- ret = ctsvc_db_image_insert(record, image->contact_id, false, id);
+ ret = ctsvc_db_image_insert(zone_name, record, image->contact_id, false, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- version = ctsvc_get_next_ver();
+ version = ctsvc_get_next_ver(zone_name);
len = snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_CONTACTS" SET changed_ver = %d, changed_time = %d, image_changed_ver = %d ",
version, (int)time(NULL), version);
snprintf(query + len, sizeof(query) - len, " WHERE contact_id = %d", image->contact_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
if (image->is_default)
ctsvc_stmt_bind_text(stmt, 1, image->path);
ret = ctsvc_stmt_step(stmt);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_stmt_step() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (image->is_default) {
int primary_default_contact_id;
- primary_default_contact_id = __ctsvc_db_image_get_primary_default_contact_id(person_id);
+ primary_default_contact_id = __ctsvc_db_image_get_primary_default_contact_id(zone_name, person_id);
if (primary_default_contact_id == 0 || primary_default_contact_id == image->contact_id) {
- __ctsvc_db_image_set_primary_default(*id, true);
- __ctsvc_db_image_update_person_image(person_id, image->path);
+ __ctsvc_db_image_set_primary_default(zone_name, *id, true);
+ __ctsvc_db_image_update_person_image(zone_name, person_id, image->path);
}
}
- ctsvc_set_contact_noti();
- ctsvc_set_person_noti();
+ ctsvc_set_contact_noti(zone_name);
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_image_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_image_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"WHERE id = %d AND datatype = %d ",
id, CTSVC_DATA_IMAGE);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_image_update_record( contacts_record_h record )
+static int __ctsvc_db_image_update_record(const char *zone_name, contacts_record_h record)
{
int len = 0;
int ret;
cts_stmt stmt = NULL;
RETVM_IF(NULL == image->path, CONTACTS_ERROR_INVALID_PARAMETER, "path is empty");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id, person_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", image->contact_id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
person_id = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this image record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_image_update(record, image->contact_id, false);
+ ret = ctsvc_db_image_update(zone_name, record, image->contact_id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- version = ctsvc_get_next_ver();
+ version = ctsvc_get_next_ver(zone_name);
len = snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_CONTACTS" SET changed_ver = %d, changed_time = %d, image_changed_ver = %d ",
version, (int)time(NULL), version);
snprintf(query + len, sizeof(query) - len, " WHERE contact_id = %d", image->contact_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
if (image->is_default)
ctsvc_stmt_bind_text(stmt, 1, image->path);
ret = ctsvc_stmt_step(stmt);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_stmt_step() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (image->is_default) {
int primary_default_contact_id;
- primary_default_contact_id = __ctsvc_db_image_get_primary_default_contact_id(image->contact_id);
+ primary_default_contact_id = __ctsvc_db_image_get_primary_default_contact_id(zone_name, image->contact_id);
if (image->contact_id == primary_default_contact_id) {
- __ctsvc_db_image_set_primary_default(image->id, true);
- __ctsvc_db_image_update_person_image(person_id, image->path);
+ __ctsvc_db_image_set_primary_default(zone_name, image->id, true);
+ __ctsvc_db_image_update_person_image(zone_name, person_id, image->path);
}
}
- ctsvc_set_contact_noti();
- ctsvc_set_person_noti();
+ ctsvc_set_contact_noti(zone_name);
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_image_delete_record( int id )
+static int __ctsvc_db_image_delete_record(const char *zone_name, int id)
{
int ret;
int version;
cts_stmt stmt = NULL;
int addressbook_id;
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT contact_id, person_id, addressbook_id FROM "CTSVC_DB_VIEW_CONTACT " "
"WHERE contact_id = (SELECT contact_id FROM "CTS_TABLE_DATA" WHERE id = %d)", id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
CTS_ERR("The id(%d) is Invalid(%d)", id, ret);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
addressbook_id = ctsvc_stmt_get_int(stmt, 2);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this image record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
snprintf(query, sizeof(query),
"SELECT is_default, is_primary_default FROM "CTS_TABLE_DATA" WHERE id = %d", id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
is_primary_default = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- ret = ctsvc_db_image_delete(id, false);
+ ret = ctsvc_db_image_delete(zone_name, id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- version = ctsvc_get_next_ver();
+ version = ctsvc_get_next_ver(zone_name);
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_CONTACTS" SET changed_ver = %d, changed_time = %d, image_changed_ver = %d "
"WHERE contact_id = %d",
version, (int)time(NULL), version, contact_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE datatype = %d AND contact_id = %d AND is_my_profile = 0 limit 1",
CTSVC_DATA_IMAGE, contact_id);
- ret = ctsvc_query_get_first_int_result(query, &image_id);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_get_first_int_result() Fail(%d)", ret);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &image_id);
if (image_id) {
- __ctsvc_db_image_set_default(image_id, contact_id, is_default, is_primary_default);
+ __ctsvc_db_image_set_default(zone_name, image_id, contact_id, is_default, is_primary_default);
}
else {
- __ctsvc_db_image_update_contact_image(contact_id, NULL);
+ __ctsvc_db_image_update_contact_image(zone_name, contact_id, NULL);
if (is_primary_default) {
int default_img_id = 0;
- default_img_id = __ctsvc_db_image_get_primary_default_image_id(person_id);
+ default_img_id = __ctsvc_db_image_get_primary_default_image_id(zone_name, person_id);
if (default_img_id)
- __ctsvc_db_image_set_primary_default(default_img_id, true);
+ __ctsvc_db_image_set_primary_default(zone_name, default_img_id, true);
else
- __ctsvc_db_image_update_person_image(person_id, NULL);
+ __ctsvc_db_image_update_person_image(zone_name, person_id, NULL);
}
}
}
- ctsvc_set_contact_noti();
- ctsvc_set_person_noti();
+ ctsvc_set_contact_noti(zone_name);
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_image_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_image_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int len;
int ret;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB : ctsvc_stmt_step fail(%d)", ret);
+ CTS_ERR("DB : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_image_get_records_with_query( contacts_query_h query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_image_get_records_with_query(const char *zone_name, contacts_query_h query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ret = ctsvc_record_set_projection_flags(record, s_query->projection,
s_query->projection_count, s_query->property_count);
- if(CONTACTS_ERROR_NONE != ret)
+ if (CONTACTS_ERROR_NONE != ret)
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_IMAGE_LABEL:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(image->label);
image->label = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_IMAGE_PATH:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(image->path);
image->path = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_IMAGE_IS_DEFAULT:
- temp = ctsvc_stmt_get_text(stmt, i);
- image->is_default = SAFE_STRDUP(temp);
+ image->is_default = ctsvc_stmt_get_int(stmt, i);
break;
default:
break;
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-
-//static int __ctsvc_db_image_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_image_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_image_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_plugin_image_helper.h"
ctsvc_image_s *image;
ret = contacts_record_create(_contacts_image._uri, (contacts_record_h *)&image);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
image->id = ctsvc_stmt_get_int(stmt, start_count++);
image->contact_id = ctsvc_stmt_get_int(stmt, start_count++);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_image_reset_default(int image_id, int contact_id)
+static int __ctsvc_db_image_reset_default(const char *zone_name, int image_id, int contact_id)
{
int ret;
char query[CTS_SQL_MAX_LEN] = {0};
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_DATA" SET is_default=0, is_primary_default=0 WHERE id != %d AND contact_id = %d AND datatype=%d",
image_id, contact_id, CTSVC_DATA_IMAGE);
- ret = ctsvc_query_exec(query);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
-int ctsvc_db_image_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id)
+int ctsvc_db_image_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id)
{
int ret;
int image_id;
char image_path[CTSVC_IMG_FULL_PATH_SIZE_MAX] = {0};
ctsvc_image_s *image = (ctsvc_image_s *)record;
- // These check should be done in client side
+ /* These check should be done in client side */
RETV_IF(NULL == image->path, CONTACTS_ERROR_NONE);
RETVM_IF(contact_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : contact_id(%d) is mandatory field to insert image record", image->contact_id);
RETVM_IF(0 < image->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : id(%d), This record is already inserted", image->id);
- ret = ctsvc_have_file_read_permission(image->path);
- RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_have_file_read_permission fail(%d)", ret);
+ ret = ctsvc_have_file_read_permission(zone_name, image->path);
+ RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "ctsvc_have_file_read_permission Fail(%d)", ret);
- image_id = ctsvc_db_get_next_id(CTS_TABLE_DATA);
- ret = ctsvc_contact_add_image_file(contact_id, image_id, image->path, image_path, sizeof(image_path));
+ image_id = ctsvc_db_get_next_id(zone_name, CTS_TABLE_DATA);
+ ret = ctsvc_contact_add_image_file(zone_name, contact_id, image_id, image->path, image_path, sizeof(image_path));
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_add_image_file() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_add_image_file() Fail(%d)", ret);
return ret;
}
free(image->path);
"VALUES(%d, %d, %d, %d, %d, %d, %d, ?, ?)",
image_id, contact_id, is_my_profile, CTSVC_DATA_IMAGE, image->is_default, image->is_default, image->type);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
__ctsvc_image_bind_stmt(stmt, image, 1);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
- //image->id = ctsvc_db_get_last_insert_id();
+ /* image->id = ctsvc_db_get_last_insert_id(zone_name); */
if (id)
*id = image_id;
ctsvc_stmt_finalize(stmt);
if (ctsvc_record_check_property_flag((ctsvc_record_s *)record, _contacts_image.is_default, CTSVC_PROPERTY_FLAG_DIRTY)) {
if (image->is_default)
- __ctsvc_db_image_reset_default(image_id, contact_id);
+ __ctsvc_db_image_reset_default(zone_name, image_id, contact_id);
}
- if (!is_my_profile)
- ctsvc_set_image_noti();
+ if (false == is_my_profile)
+ ctsvc_set_image_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_image_update(contacts_record_h record, int contact_id, bool is_my_profile)
+int ctsvc_db_image_update(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile)
{
int id;
int ret = CONTACTS_ERROR_NONE;
ctsvc_image_s *image = (ctsvc_image_s*)record;
char query[CTS_SQL_MAX_LEN] = {0};
- RETVM_IF(!image->id, CONTACTS_ERROR_INVALID_PARAMETER, "image of contact has no ID.");
+ RETVM_IF(0 == image->id, CONTACTS_ERROR_INVALID_PARAMETER, "image of contact has no ID.");
RETVM_IF(CTSVC_PROPERTY_FLAG_DIRTY != (image->base.property_flag & CTSVC_PROPERTY_FLAG_DIRTY), CONTACTS_ERROR_NONE, "No update");
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE id = %d", image->id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
RETV_IF(ret != CONTACTS_ERROR_NONE, ret);
if (ctsvc_record_check_property_flag((ctsvc_record_s *)record, _contacts_image.path, CTSVC_PROPERTY_FLAG_DIRTY)) {
char image_path[CTSVC_IMG_FULL_PATH_SIZE_MAX] = {0};
if (image->path) {
- ret = ctsvc_have_file_read_permission(image->path);
+ ret = ctsvc_have_file_read_permission(zone_name, image->path);
if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_have_file_read_permission Fail(%d)", ret);
return ret;
}
}
- ret = ctsvc_contact_update_image_file(contact_id, image->id, image->path, image_path, sizeof(image_path));
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_contact_update_image_file() Failed(%d)", ret);
+ ret = ctsvc_contact_update_image_file(zone_name, contact_id, image->id, image->path, image_path, sizeof(image_path));
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_contact_update_image_file() Fail(%d)", ret);
if (*image_path) {
free(image->path);
if (ctsvc_record_check_property_flag((ctsvc_record_s *)record, _contacts_image.is_default, CTSVC_PROPERTY_FLAG_DIRTY)) {
if (image->is_default)
- __ctsvc_db_image_reset_default(image->id, contact_id);
+ __ctsvc_db_image_reset_default(zone_name, image->id, contact_id);
}
do {
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_DATA, image->id))) break;
- if (!is_my_profile)
- ctsvc_set_image_noti();
+ if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(zone_name, set, bind_text, CTS_TABLE_DATA, image->id))) break;
+ if (false == is_my_profile)
+ ctsvc_set_image_noti(zone_name);
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
return ret;
}
-int ctsvc_db_image_delete(int id, bool is_my_profile)
+int ctsvc_db_image_delete(const char *zone_name, int id, bool is_my_profile)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_DATA" WHERE id = %d AND datatype = %d",
id, CTSVC_DATA_IMAGE);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Fail(%d)", ret);
- if (!is_my_profile)
- ctsvc_set_image_noti();
+ if (false == is_my_profile)
+ ctsvc_set_image_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
-// Whenever deleting image recode in data table, this funcion will be called
-// in order to delete the image file
+/*
+ * Whenever deleting image recode in data table, this funcion will be called
+ * in order to delete the image file
+ */
void ctsvc_db_image_delete_callback(sqlite3_context *context, int argc, sqlite3_value ** argv)
{
int ret;
const unsigned char* image_path;
+ char *zone_name = NULL;
- if (argc > 1) {
+ if (1 < argc) {
sqlite3_result_null(context);
return;
}
image_path = sqlite3_value_text(argv[0]);
- ret = ctsvc_contact_delete_image_file_with_path(image_path);
+ zone_name = sqlite3_user_data(context);
+ ret = ctsvc_contact_delete_image_file_with_path(zone_name, image_path);
WARN_IF (CONTACTS_ERROR_NONE != ret && CONTACTS_ERROR_NO_DATA != ret,
- "ctsvc_contact_delete_image_file_with_path Failed(%d)", ret);
+ "ctsvc_contact_delete_image_file_with_path Fail(%d)", ret);
return;
}
#define __CTSVC_DB_PLUGIN_IMAGE_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
-int ctsvc_db_image_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id);
-int ctsvc_db_image_update(contacts_record_h record, int contact_id, bool is_my_profile);
-int ctsvc_db_image_delete(int id, bool is_my_profile);
+int ctsvc_db_image_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id);
+int ctsvc_db_image_update(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile);
+int ctsvc_db_image_delete(const char *zone_name, int id, bool is_my_profile);
int ctsvc_db_image_get_value_from_stmt(cts_stmt stmt, contacts_record_h *record, int start_count);
void ctsvc_db_image_delete_callback(sqlite3_context *context, int argc, sqlite3_value ** argv);
-#endif // __CTSVC_DB_PLUGIN_RELATIONSHIP_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_RELATIONSHIP_HELPER_H__ */
\ No newline at end of file
*/
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_db_plugin_contact_helper.h"
#include "ctsvc_db_query.h"
#include "ctsvc_list.h"
-static int __ctsvc_db_messenger_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_messenger_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_messenger_update_record( contacts_record_h record );
-static int __ctsvc_db_messenger_delete_record( int id );
-static int __ctsvc_db_messenger_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_messenger_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_messenger_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_messenger_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_messenger_delete_records( int ids[], int count);
+static int __ctsvc_db_messenger_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_messenger_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_messenger_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_messenger_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_messenger_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_messenger_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_messenger = {
.is_query_only = false,
.delete_record = __ctsvc_db_messenger_delete_record,
.get_all_records = __ctsvc_db_messenger_get_all_records,
.get_records_with_query = __ctsvc_db_messenger_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_messenger_insert_records,
- .update_records = NULL,//__ctsvc_db_messenger_update_records,
- .delete_records = NULL,//__ctsvc_db_messenger_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_messenger_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_messenger_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int addressbook_id;
RETVM_IF(NULL == messenger->im_id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : messenger id is NULL");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", messenger->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_ERR("No data : contact_id (%d) is not exist", messenger->contact_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this messenger record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_messenger_insert(record, messenger->contact_id, false, id);
+ ret = ctsvc_db_messenger_insert(zone_name, record, messenger->contact_id, false, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(messenger->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, messenger->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_messenger_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_messenger_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"WHERE id = %d AND datatype = %d ",
id, CTSVC_DATA_MESSENGER);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_messenger_update_record( contacts_record_h record )
+static int __ctsvc_db_messenger_update_record(const char *zone_name, contacts_record_h record)
{
int ret;
int addressbook_id;
ctsvc_messenger_s *messenger = (ctsvc_messenger_s *)record;
RETVM_IF(NULL == messenger->im_id, CONTACTS_ERROR_INVALID_PARAMETER, "im_id is empty");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", messenger->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : contact_id (%d) is not exist", messenger->contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this messenger record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_messenger_update(record, false);
+ ret = ctsvc_db_messenger_update(zone_name, record, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("Update record Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("Update record Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(messenger->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, messenger->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_messenger_delete_record( int id )
+static int __ctsvc_db_messenger_delete_record(const char *zone_name, int id)
{
int ret;
int contact_id;
cts_stmt stmt = NULL;
int addressbook_id;
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT contact_id, addressbook_id FROM "CTSVC_DB_VIEW_CONTACT " "
"WHERE contact_id = (SELECT contact_id FROM "CTS_TABLE_DATA" WHERE id = %d)", id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
CTS_ERR("DB error : ctsvc_query_prepare Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
CTS_ERR("The id(%d) is Invalid(%d)", id, ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
addressbook_id = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this messenger record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_messenger_delete(id, false);
+ ret = ctsvc_db_messenger_delete(zone_name, id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_messenger_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_messenger_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int len;
int ret;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB : ctsvc_stmt_step fail(%d)", ret);
+ CTS_ERR("DB : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_messenger_get_records_with_query( contacts_query_h query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_messenger_get_records_with_query(const char *zone_name, contacts_query_h query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ret = ctsvc_record_set_projection_flags(record, s_query->projection,
s_query->projection_count, s_query->property_count);
- if(CONTACTS_ERROR_NONE != ret)
+ if (CONTACTS_ERROR_NONE != ret)
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_MESSENGER_LABEL:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(messenger->label);
messenger->label = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_MESSENGER_IM_ID:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(messenger->im_id);
messenger->im_id = SAFE_STRDUP(temp);
break;
default:
return CONTACTS_ERROR_NONE;
}
-//static int __ctsvc_db_messenger_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_messenger_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_messenger_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
*/
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_plugin_messenger_helper.h"
ctsvc_messenger_s *messenger;
ret = contacts_record_create(_contacts_messenger._uri, (contacts_record_h *)&messenger);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
messenger->id = ctsvc_stmt_get_int(stmt, start_count++);
messenger->contact_id = ctsvc_stmt_get_int(stmt, start_count++);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_messenger_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id)
+int ctsvc_db_messenger_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id)
{
int ret;
cts_stmt stmt = NULL;
"VALUES(%d, %d, %d, %d, ?, ?)",
contact_id, is_my_profile, CTSVC_DATA_MESSENGER, messenger->type);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
if (messenger->label)
sqlite3_bind_text(stmt, 1, messenger->label,
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
- //messenger->id = ctsvc_db_get_last_insert_id();
+ //messenger->id = ctsvc_db_get_last_insert_id(zone_name);
if (id)
- *id = ctsvc_db_get_last_insert_id();
+ *id = ctsvc_db_get_last_insert_id(zone_name);
ctsvc_stmt_finalize(stmt);
- if (!is_my_profile)
- ctsvc_set_messenger_noti();
+ if (false == is_my_profile)
+ ctsvc_set_messenger_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_messenger_update(contacts_record_h record, bool is_my_profile)
+int ctsvc_db_messenger_update(const char *zone_name, contacts_record_h record, bool is_my_profile)
{
int id;
int ret = CONTACTS_ERROR_NONE;
ctsvc_messenger_s *messenger = (ctsvc_messenger_s*)record;
char query[CTS_SQL_MIN_LEN] = {0};
- RETVM_IF(!messenger->id, CONTACTS_ERROR_INVALID_PARAMETER, "messenger of contact has no ID.");
+ RETVM_IF(0 == messenger->id, CONTACTS_ERROR_INVALID_PARAMETER, "messenger of contact has no ID.");
RETVM_IF(CTSVC_PROPERTY_FLAG_DIRTY != (messenger->base.property_flag & CTSVC_PROPERTY_FLAG_DIRTY), CONTACTS_ERROR_NONE, "No update");
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE id = %d", messenger->id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
RETV_IF(ret != CONTACTS_ERROR_NONE, ret);
do {
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_DATA, messenger->id))) break;
- if (!is_my_profile)
- ctsvc_set_messenger_noti();
+ if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(zone_name, set, bind_text, CTS_TABLE_DATA, messenger->id))) break;
+ if (false == is_my_profile)
+ ctsvc_set_messenger_noti(zone_name);
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
return ret;
}
-int ctsvc_db_messenger_delete(int id, bool is_my_profile)
+int ctsvc_db_messenger_delete(const char *zone_name, int id, bool is_my_profile)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_DATA" WHERE id = %d AND datatype = %d",
id, CTSVC_DATA_MESSENGER);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Fail(%d)", ret);
- if (!is_my_profile)
- ctsvc_set_messenger_noti();
+ if (false == is_my_profile)
+ ctsvc_set_messenger_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
#define __CTSVC_DB_PLUGIN_MESSENGER_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
-int ctsvc_db_messenger_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id);
-int ctsvc_db_messenger_update(contacts_record_h record, bool is_my_profile);
-int ctsvc_db_messenger_delete(int id, bool is_my_profile);
+int ctsvc_db_messenger_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id);
+int ctsvc_db_messenger_update(const char *zone_name, contacts_record_h record, bool is_my_profile);
+int ctsvc_db_messenger_delete(const char *zone_name, int id, bool is_my_profile);
int ctsvc_db_messenger_get_value_from_stmt(cts_stmt stmt, contacts_record_h *record, int start_count);
-#endif // __CTSVC_DB_PLUGIN_MESSENGER_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_MESSENGER_HELPER_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_schema.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_record.h"
#include "ctsvc_normalize.h"
#include "ctsvc_list.h"
-#include "ctsvc_setting.h"
+#include "ctsvc_server_setting.h"
#include "ctsvc_localize_ch.h"
-#include "ctsvc_group.h"
+#include "ctsvc_server_group.h"
#include "ctsvc_notification.h"
#include "ctsvc_localize_utils.h"
#include "ctsvc_db_access_control.h"
#define CTSVC_MY_PROFILE_DISPLAY_NAME_MAX_LEN 1024
-static int __ctsvc_db_my_profile_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_my_profile_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_my_profile_update_record( contacts_record_h record );
-static int __ctsvc_db_my_profile_delete_record( int id );
+static int __ctsvc_db_my_profile_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_my_profile_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_my_profile_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_my_profile_delete_record(const char *zone_name, int id);
-static int __ctsvc_db_my_profile_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_my_profile_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
+static int __ctsvc_db_my_profile_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_my_profile_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_my_profile = {
.is_query_only = false,
.replace_records = NULL,
};
-static int __ctsvc_db_get_my_profile_base_info(int id, ctsvc_my_profile_s *my_profile)
+static int __ctsvc_db_get_my_profile_base_info(const char *zone_name, int id, ctsvc_my_profile_s *my_profile)
{
int ret;
int i;
snprintf(query, sizeof(query),
"SELECT my_profile_id, addressbook_id, changed_time, %s, image_thumbnail_path, uid "
- "FROM "CTS_TABLE_MY_PROFILES" WHERE my_profile_id = %d AND deleted = 0",
- ctsvc_get_display_column(), id);
+ "FROM "CTS_TABLE_MY_PROFILES" WHERE my_profile_id = %d AND deleted = 0",
+ ctsvc_get_display_column(zone_name), id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_my_profile_get_data(int id, ctsvc_my_profile_s *my_profile)
+static int __ctsvc_db_my_profile_get_data(const char *zone_name, int id, ctsvc_my_profile_s *my_profile)
{
int ret;
int datatype;
"data3, data4, data5, data6, data7, data8, data9, data10, data11, data12 "
"FROM "CTS_TABLE_DATA" WHERE contact_id = %d AND is_my_profile = 1", id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE */!= ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
break;
}
- }while(1 /*CTS_TRUE*/ == ctsvc_stmt_step(stmt));
+ } while (1 /*CTS_TRUE*/ == ctsvc_stmt_step(stmt));
ctsvc_stmt_finalize(stmt);
}
-static int __ctsvc_db_my_profile_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_my_profile_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
contacts_record_h record;
contacts_record_create(_contacts_my_profile._uri, &record);
my_profile = (ctsvc_my_profile_s *)record;
- ret = __ctsvc_db_get_my_profile_base_info(id, my_profile);
+ ret = __ctsvc_db_get_my_profile_base_info(zone_name, id, my_profile);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("cts_get_main_contacts_info(ALL) Failed(%d)", ret);
+ CTS_ERR("cts_get_main_contacts_info(ALL) Fail(%d)", ret);
contacts_record_destroy(record, true);
return ret;
}
- ret = __ctsvc_db_my_profile_get_data(id, my_profile);
+ ret = __ctsvc_db_my_profile_get_data(zone_name, id, my_profile);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_db_my_profile_get_data Failed(%d)", ret);
+ CTS_ERR("__ctsvc_db_my_profile_get_data Fail(%d)", ret);
contacts_record_destroy(record, true);
return ret;
}
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_my_profile_delete_record( int id )
+static int __ctsvc_db_my_profile_delete_record(const char *zone_name, int id)
{
CTS_FN_CALL;
int ret;
int addressbook_id;
char query[CTS_SQL_MAX_LEN] = {0};
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_MY_PROFILE" WHERE my_profile_id = %d", id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_get_first_int_result Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_get_first_int_result Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this contact");
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
snprintf(query, sizeof(query), "UPDATE "CTS_TABLE_MY_PROFILES" "
- "SET deleted = 1, changed_ver = %d WHERE my_profile_id = %d", ctsvc_get_next_ver(), id);
- ret = ctsvc_query_exec(query);
+ "SET deleted = 1, changed_ver = %d WHERE my_profile_id = %d", ctsvc_get_next_ver(zone_name), id);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_my_profile_noti();
+ ctsvc_set_my_profile_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static inline int __ctsvc_my_profile_update_data(ctsvc_my_profile_s *my_profile)
+static inline int __ctsvc_my_profile_update_data(const char *zone_name, ctsvc_my_profile_s *my_profile)
{
int ret;
if (my_profile->name) {
- ret = ctsvc_contact_update_data_name((contacts_list_h)my_profile->name, my_profile->id, true);
+ ret = ctsvc_contact_update_data_name(zone_name, (contacts_list_h)my_profile->name, my_profile->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_name() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_name() Fail(%d)", ret);
return ret;
}
}
if (my_profile->company) {
- ret = ctsvc_contact_update_data_company((contacts_list_h)my_profile->company, my_profile->id, true);
+ ret = ctsvc_contact_update_data_company(zone_name, (contacts_list_h)my_profile->company, my_profile->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_company() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_company() Fail(%d)", ret);
return ret;
}
}
if (my_profile->note) {
- ret = ctsvc_contact_update_data_note((contacts_list_h)my_profile->note, my_profile->id, true);
+ ret = ctsvc_contact_update_data_note(zone_name, (contacts_list_h)my_profile->note, my_profile->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_note() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_note() Fail(%d)", ret);
return ret;
}
}
if (my_profile->events) {
- ret = ctsvc_contact_update_data_event((contacts_list_h)my_profile->events, my_profile->id, true);
+ ret = ctsvc_contact_update_data_event(zone_name, (contacts_list_h)my_profile->events, my_profile->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_events() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_events() Fail(%d)", ret);
return ret;
}
}
if (my_profile->messengers) {
- ret = ctsvc_contact_update_data_messenger((contacts_list_h)my_profile->messengers, my_profile->id, true);
+ ret = ctsvc_contact_update_data_messenger(zone_name, (contacts_list_h)my_profile->messengers, my_profile->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_messengers() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_messengers() Fail(%d)", ret);
return ret;
}
}
if (my_profile->postal_addrs) {
- ret = ctsvc_contact_update_data_address((contacts_list_h)my_profile->postal_addrs, my_profile->id, true);
+ ret = ctsvc_contact_update_data_address(zone_name, (contacts_list_h)my_profile->postal_addrs, my_profile->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_address() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_address() Fail(%d)", ret);
return ret;
}
}
if (my_profile->urls) {
- ret = ctsvc_contact_update_data_url((contacts_list_h)my_profile->urls, my_profile->id, true);
+ ret = ctsvc_contact_update_data_url(zone_name, (contacts_list_h)my_profile->urls, my_profile->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_url() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_url() Fail(%d)", ret);
return ret;
}
}
if (my_profile->nicknames) {
- ret = ctsvc_contact_update_data_nickname((contacts_list_h)my_profile->nicknames, my_profile->id, true);
+ ret = ctsvc_contact_update_data_nickname(zone_name, (contacts_list_h)my_profile->nicknames, my_profile->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_nickname() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_nickname() Fail(%d)", ret);
return ret;
}
}
if (my_profile->numbers) {
bool had_phonenumber;
- ret = ctsvc_contact_update_data_number((contacts_list_h)my_profile->numbers, my_profile->id, true, &had_phonenumber);
+ ret = ctsvc_contact_update_data_number(zone_name, (contacts_list_h)my_profile->numbers, my_profile->id, true, &had_phonenumber);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_number() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_number() Fail(%d)", ret);
return ret;
}
}
if (my_profile->emails) {
bool had_email;
- ret = ctsvc_contact_update_data_email((contacts_list_h)my_profile->emails, my_profile->id, true, &had_email);
+ ret = ctsvc_contact_update_data_email(zone_name, (contacts_list_h)my_profile->emails, my_profile->id, true, &had_email);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_email() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_email() Fail(%d)", ret);
return ret;
}
}
if (my_profile->profiles) {
- ret = ctsvc_contact_update_data_profile((contacts_list_h)my_profile->profiles, my_profile->id, true);
+ ret = ctsvc_contact_update_data_profile(zone_name, (contacts_list_h)my_profile->profiles, my_profile->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_profile() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_profile() Fail(%d)", ret);
return ret;
}
}
if (my_profile->relationships) {
- ret = ctsvc_contact_update_data_relationship((contacts_list_h)my_profile->relationships, my_profile->id, true);
+ ret = ctsvc_contact_update_data_relationship(zone_name, (contacts_list_h)my_profile->relationships, my_profile->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_relationship() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_relationship() Fail(%d)", ret);
return ret;
}
}
if (my_profile->images) {
- ret = ctsvc_contact_update_data_image((contacts_list_h)my_profile->images, my_profile->id, true);
+ ret = ctsvc_contact_update_data_image(zone_name, (contacts_list_h)my_profile->images, my_profile->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_image() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_image() Fail(%d)", ret);
return ret;
}
}
if (my_profile->extensions) {
- ret = ctsvc_contact_update_data_extension((contacts_list_h)my_profile->extensions, my_profile->id, true);
+ ret = ctsvc_contact_update_data_extension(zone_name, (contacts_list_h)my_profile->extensions, my_profile->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_update_data_extension() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_update_data_extension() Fail(%d)", ret);
return ret;
}
}
free(my_profile->reverse_display_name);
my_profile->reverse_display_name = NULL;
- if (my_profile->name->count > 0 && my_profile->name->records != NULL && my_profile->name->records->data != NULL) {
+ if (0 < my_profile->name->count && my_profile->name->records && my_profile->name->records->data) {
name = (ctsvc_name_s *)my_profile->name->records->data;
}
int temp_display_len;
char *temp_display = NULL;
- ///////////////////////////////////////////////
- // Make reverse display name (Last name first)
- // Default : Prefix Last, First Middle(addition), Suffix
- // Korean, Chinese : Prefix LastFirstMiddleSuffix
- // Japanese : Prefix Last Middle First Suffix
- // reverse sort name does not include prefix
- // But, if there is only prefix, reverse sort_name is prefix
- //////////////////////////////////////////////
+ /*
+ * Make reverse display name (Last name first)
+ * Default : Prefix Last, First Middle(addition), Suffix
+ * Korean, Chinese : Prefix LastFirstMiddleSuffix
+ * Japanese : Prefix Last Middle First Suffix
+ * reverse sort name does not include prefix
+ * But, if there is only prefix, reverse sort_name is prefix
+ */
temp_display_len = SAFE_STRLEN(name->first)
+ SAFE_STRLEN(name->addition)
+ SAFE_STRLEN(name->last)
if (0 < temp_display_len) {
temp_display_len += 7;
temp_display = calloc(1, temp_display_len);
- RETM_IF(NULL == temp_display, "calloc() return NULL");
+ if (NULL == temp_display) {
+ CTS_ERR("calloc() Fail");
+ return;
+ }
len=0;
if (name->last) {
if (reverse_lang_type != CTSVC_LANG_KOREAN &&
reverse_lang_type != CTSVC_LANG_CHINESE &&
reverse_lang_type != CTSVC_LANG_JAPANESE) {
- if(name->first || name->addition)
+ if (name->first || name->addition)
len += snprintf(temp_display + len, temp_display_len - len, ",");
}
}
}
}
- if(reverse_lang_type == CTSVC_LANG_JAPANESE) {
- // make temp_display name Prefix - Last - Middle - First - Suffix
- if(name->addition) {
+ if (reverse_lang_type == CTSVC_LANG_JAPANESE) {
+ /* make temp_display name Prefix - Last - Middle - First - Suffix */
+ if (name->addition) {
if (*temp_display)
len += snprintf(temp_display + len, temp_display_len - len, " ");
len += snprintf(temp_display + len, temp_display_len - len, "%s", name->addition);
}
- if(name->first) {
+ if (name->first) {
if (*temp_display)
len += snprintf(temp_display + len, temp_display_len - len, " ");
len += snprintf(temp_display + len, temp_display_len - len, "%s", name->first);
}
}
- if(name->prefix && temp_display) {
+ if (name->prefix && temp_display) {
display_len = SAFE_STRLEN(name->prefix) + temp_display_len + 2;
display = calloc(1, display_len);
if (NULL == display) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(temp_display);
return;
}
-
- snprintf(display, display_len , "%s %s", name->prefix, temp_display);
+ snprintf(display, display_len, "%s %s", name->prefix, temp_display);
my_profile->reverse_display_name = display;
free(temp_display);
}
}
else if (name->prefix) {
my_profile->reverse_display_name = strdup(name->prefix);
- RETM_IF(NULL == my_profile->reverse_display_name, "strdup() return NULL");
}
- ///////////////////////////////////////////////
- // Make display name (First name first)
- // Default : Prefix First Middle Last, Suffix
- // Korean, Chinese : Prefix LastFirstMiddleSuffix (Same as reverse display name)
- // Japanese : Prefix First Middle Last Suffix
- // sort name does not include prefix
- // But, if there is only prefix, sort_name is prefix
- //////////////////////////////////////////////
+ /*
+ * Make display name (First name first)
+ * Default : Prefix First Middle Last, Suffix
+ * Korean, Chinese : Prefix LastFirstMiddleSuffix (Same as reverse display name)
+ * Japanese : Prefix First Middle Last Suffix
+ * sort name does not include prefix
+ * But, if there is only prefix, sort_name is prefix
+ */
if (reverse_lang_type == CTSVC_LANG_KOREAN ||
reverse_lang_type == CTSVC_LANG_CHINESE)
my_profile->display_name = SAFE_STRDUP(my_profile->reverse_display_name);
+ SAFE_STRLEN(name->suffix);
if (0 < temp_display_len) {
temp_display_len += 6;
- // make reverse_temp_display_name
+ /* make reverse_temp_display_name */
temp_display = calloc(1, temp_display_len);
- RETM_IF(NULL == temp_display, "calloc() return NULL");
+ if (NULL == temp_display) {
+ CTS_ERR("calloc() Fail");
+ return;
+ }
len = 0;
if (name->first) {
len += snprintf(temp_display + len, temp_display_len - len, "%s", name->last);
}
- if(name->suffix) {
+ if (name->suffix) {
if (*temp_display) {
lang_type = ctsvc_check_language_type(temp_display);
if (lang_type == CTSVC_LANG_JAPANESE)
display_len = SAFE_STRLEN(name->prefix) + temp_display_len + 2;
display = calloc(1, display_len);
if (NULL == display) {
- CTS_ERR("calloc() return NULL");
+ CTS_ERR("calloc() Fail");
free(temp_display);
return;
}
- snprintf(display, display_len , "%s %s", name->prefix, temp_display);
+ snprintf(display, display_len, "%s %s", name->prefix, temp_display);
my_profile->display_name = display;
free(temp_display);
}
}
else if (name->prefix) {
my_profile->display_name = strdup(name->prefix);
- RETM_IF(NULL == my_profile->display_name, "strdup() return NULL");
}
}
ctsvc_company_s *company = (ctsvc_company_s *)cur->data;
if (company && company->name) {
ctsvc_record_set_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.display_name, CTSVC_PROPERTY_FLAG_DIRTY);
- FREEandSTRDUP(my_profile->display_name, company->name);
+ my_profile->display_name = SAFE_STRDUP(company->name);
break;
}
}
}
- if (!ctsvc_record_check_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.display_name, CTSVC_PROPERTY_FLAG_DIRTY) &&
+ if (false == ctsvc_record_check_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.display_name, CTSVC_PROPERTY_FLAG_DIRTY) &&
my_profile->nicknames && my_profile->nicknames->records) {
for (cur=my_profile->nicknames->records;cur;cur=cur->next) {
ctsvc_nickname_s *nickname = (ctsvc_nickname_s *)cur->data;
if (nickname && nickname->nickname) {
ctsvc_record_set_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.display_name, CTSVC_PROPERTY_FLAG_DIRTY);
- FREEandSTRDUP(my_profile->display_name, nickname->nickname);
+ free(my_profile->display_name);
+ my_profile->display_name = SAFE_STRDUP(nickname->nickname);
break;
}
}
}
- if (!ctsvc_record_check_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.display_name, CTSVC_PROPERTY_FLAG_DIRTY) &&
+ if (false == ctsvc_record_check_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.display_name, CTSVC_PROPERTY_FLAG_DIRTY) &&
my_profile->numbers && my_profile->numbers->records) {
for (cur=my_profile->numbers->records;cur;cur=cur->next) {
ctsvc_number_s *number = (ctsvc_number_s *)cur->data;
if (number && number->number) {
ctsvc_record_set_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.display_name, CTSVC_PROPERTY_FLAG_DIRTY);
- FREEandSTRDUP(my_profile->display_name, number->number);
+ free(my_profile->display_name);
+ my_profile->display_name = SAFE_STRDUP(number->number);
break;
}
}
}
- if (!ctsvc_record_check_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.display_name, CTSVC_PROPERTY_FLAG_DIRTY) &&
+ if (false == ctsvc_record_check_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.display_name, CTSVC_PROPERTY_FLAG_DIRTY) &&
my_profile->emails && my_profile->emails->records) {
for (cur=my_profile->emails->records;cur;cur=cur->next) {
ctsvc_email_s *email = (ctsvc_email_s *)cur->data;
if (email && email->email_addr) {
ctsvc_record_set_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.display_name, CTSVC_PROPERTY_FLAG_DIRTY);
- FREEandSTRDUP(my_profile->display_name, email->email_addr);
+ free(my_profile->display_name);
+ my_profile->display_name = SAFE_STRDUP(email->email_addr);
break;
}
}
}
if (ctsvc_record_check_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.display_name, CTSVC_PROPERTY_FLAG_DIRTY)) {
- FREEandSTRDUP(my_profile->reverse_display_name, my_profile->display_name);
+ my_profile->reverse_display_name = SAFE_STRDUP(my_profile->display_name);
}
else {
- // Update as NULL
+ /* Update as NULL */
ctsvc_record_set_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.display_name, CTSVC_PROPERTY_FLAG_DIRTY);
}
}
}
-static int __ctsvc_db_my_profile_update_record( contacts_record_h record )
+static int __ctsvc_db_my_profile_update_record(const char *zone_name, contacts_record_h record)
{
int id;
int ret;
GSList *bind_text = NULL;
GSList *cursor = NULL;
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT my_profile_id FROM "CTSVC_DB_VIEW_MY_PROFILE" WHERE my_profile_id = %d", my_profile->id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("The index(%d) is Invalid. %d Record(s) is(are) found", my_profile->id, ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(my_profile->addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, my_profile->addressbook_id)) {
CTS_ERR("ctsvc_have_ab_write_permission fail : does not have permission(addressbook_id : %d)",
my_profile->addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
__ctsvc_make_my_profile_display_name(my_profile);
__ctsvc_my_profile_check_default_data(my_profile);
- //update data
- ret = __ctsvc_my_profile_update_data(my_profile);
+ /* update data */
+ ret = __ctsvc_my_profile_update_data(zone_name, my_profile);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_my_profile_update_data() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("__ctsvc_my_profile_update_data() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- //////////////////////////////////////////////////////////////////////
- // this code will be removed.
+ /* thumbnail */
if (my_profile->images) {
int ret = CONTACTS_ERROR_NONE;
- contacts_record_h record_image = NULL;
int count = 0;
ctsvc_image_s *image;
contacts_list_get_count((contacts_list_h)my_profile->images, &count);
if (count) {
contacts_list_first((contacts_list_h)my_profile->images);
- ret = contacts_list_get_current_record_p((contacts_list_h)my_profile->images, &record_image);
+ do {
+ ret = contacts_list_get_current_record_p((contacts_list_h)my_profile->images, (contacts_record_h*)&image);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("contacts_list_get_current_record_p() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
+ return CONTACTS_ERROR_DB;
+ }
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("contacts_list_get_current_record_p() Failed(%d)", ret);
- ctsvc_end_trans(false);
- return CONTACTS_ERROR_DB;
- }
+ if (image->is_default)
+ break;
+ } while (CONTACTS_ERROR_NONE == contacts_list_next((contacts_list_h)my_profile->images));
- image = (ctsvc_image_s*)record_image;
- if ((NULL == my_profile->image_thumbnail_path && NULL != image->path) ||
- (NULL != my_profile->image_thumbnail_path && NULL == image->path) ||
- (my_profile->image_thumbnail_path && image->path && 0 != strcmp(my_profile->image_thumbnail_path, image->path))) {
+ if ((NULL == my_profile->image_thumbnail_path && image->path) ||
+ (my_profile->image_thumbnail_path && NULL == image->path) ||
+ (my_profile->image_thumbnail_path && image->path && STRING_EQUAL != strcmp(my_profile->image_thumbnail_path, image->path))) {
ctsvc_record_set_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.image_thumbnail_path, CTSVC_PROPERTY_FLAG_DIRTY);
if (ctsvc_contact_check_image_location(image->path))
ctsvc_record_set_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.image_thumbnail_path, CTSVC_PROPERTY_FLAG_DIRTY);
}
}
- // this code will be removed.
- //////////////////////////////////////////////////////////////////////
do {
int len = 0;
char query_set[CTS_SQL_MIN_LEN] = {0, };
cts_stmt stmt = NULL;
- version = ctsvc_get_next_ver();
+ version = ctsvc_get_next_ver(zone_name);
ret = ctsvc_db_create_set_query(record, &set, &bind_text);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_db_create_set_query() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_db_create_set_query() Fail(%d)", ret);
if (set && *set)
len = snprintf(query_set, sizeof(query_set), "%s, ", set);
snprintf(query, sizeof(query), "UPDATE %s SET %s WHERE my_profile_id = %d", CTS_TABLE_MY_PROFILES, query_set, my_profile->id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
break;
}
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
break;
}
g_slist_free(bind_text);
}
- ctsvc_set_my_profile_noti();
+ ctsvc_set_my_profile_noti(zone_name);
- ret = ctsvc_end_trans(true);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_my_profile_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_my_profile_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int ret;
int len;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
}
my_profile_id = ctsvc_stmt_get_int(stmt, 0);
- ret = contacts_db_get_record(_contacts_my_profile._uri, my_profile_id, &record);
+ ret = ctsvc_db_get_record(zone_name, _contacts_my_profile._uri, my_profile_id, &record);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : contacts_db_get_record() Failed(%d)", ret);
+ CTS_ERR("DB error : contacts_db_get_record() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_my_profile_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_my_profile_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list)
{
int ret;
int i;
}
}
}
- else
+ else {
+ s_query->projection_count = 0;
had_my_profile_id = true;
+ }
- if (!had_my_profile_id) {
- unsigned int *temp = realloc(s_query->projection, s_query->projection_count+1);
- RETVM_IF(NULL == temp, CONTACTS_ERROR_OUT_OF_MEMORY, "realloc() return NULL");
- s_query->projection = temp;
+ if (false == had_my_profile_id) {
+ s_query->projection = realloc(s_query->projection, s_query->projection_count+1);
+ if (NULL == s_query->projection) {
+ CTS_ERR("realloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
s_query->projection[s_query->projection_count] = CTSVC_PROPERTY_MY_PROFILE_ID;
s_query->projection_count++;
}
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_MY_PROFILE_DISPLAY_NAME:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(my_profile->display_name);
my_profile->display_name = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_MY_PROFILE_ADDRESSBOOK_ID:
temp = ctsvc_stmt_get_text(stmt, i);
if (temp) {
snprintf(full_path, sizeof(full_path), "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, temp);
+ free(my_profile->image_thumbnail_path);
my_profile->image_thumbnail_path = strdup(full_path);
}
break;
break;
case CTSVC_PROPERTY_MY_PROFILE_UID:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(my_profile->uid);
my_profile->uid = SAFE_STRDUP(temp);
break;
default:
break;
}
}
- ret = __ctsvc_db_my_profile_get_data(my_profile_id, my_profile);
+ ret = __ctsvc_db_my_profile_get_data(zone_name, my_profile_id, my_profile);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_db_my_profile_get_data Failed(%d)", ret);
+ CTS_ERR("__ctsvc_db_my_profile_get_data Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-//static int __ctsvc_db_my_profile_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_my_profile_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_my_profile_delete_records(int ids[], int count) { return CONTACTS_ERROR_NONE; }
-
-static int __ctsvc_my_profile_insert_data(ctsvc_my_profile_s *contact)
+static int __ctsvc_my_profile_insert_data(const char *zone_name, ctsvc_my_profile_s *contact)
{
int ret;
- //Insert the name
+ /* Insert the name */
if (contact->name) {
- ret = ctsvc_contact_insert_data_name((contacts_list_h)contact->name, contact->id, true);
+ ret = ctsvc_contact_insert_data_name(zone_name, (contacts_list_h)contact->name, contact->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_insert_data_name() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_insert_data_name() Fail(%d)", ret);
return ret;
}
}
- //Insert the company
+ /* Insert the company */
if (contact->company) {
- ret = ctsvc_contact_insert_data_company((contacts_list_h)contact->company, contact->id, true);
+ ret = ctsvc_contact_insert_data_company(zone_name, (contacts_list_h)contact->company, contact->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_insert_my_profile_data_company() Failed(%d)", ret);
+ CTS_ERR("ctsvc_insert_my_profile_data_company() Fail(%d)", ret);
return ret;
}
}
- //Insert the events
+ /* Insert the events */
if (contact->events) {
- ret = ctsvc_contact_insert_data_event((contacts_list_h)contact->events, contact->id, true);
+ ret = ctsvc_contact_insert_data_event(zone_name, (contacts_list_h)contact->events, contact->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_insert_my_profile_data_event() Failed(%d)", ret);
+ CTS_ERR("ctsvc_insert_my_profile_data_event() Fail(%d)", ret);
return ret;
}
}
- //Insert the messengers
+ /* Insert the messengers */
if (contact->messengers) {
- ret = ctsvc_contact_insert_data_messenger((contacts_list_h)contact->messengers, contact->id, true);
+ ret = ctsvc_contact_insert_data_messenger(zone_name, (contacts_list_h)contact->messengers, contact->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_insert_my_profile_data_messenger() Failed(%d)", ret);
+ CTS_ERR("ctsvc_insert_my_profile_data_messenger() Fail(%d)", ret);
return ret;
}
}
- //Insert the postals
+ /* Insert the postals */
if (contact->postal_addrs) {
- ret = ctsvc_contact_insert_data_address((contacts_list_h)contact->postal_addrs, contact->id, true);
+ ret = ctsvc_contact_insert_data_address(zone_name, (contacts_list_h)contact->postal_addrs, contact->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_insert_my_profile_data_postal() Failed(%d)", ret);
+ CTS_ERR("ctsvc_insert_my_profile_data_postal() Fail(%d)", ret);
return ret;
}
}
- //Insert the Web addrs
+ /* Insert the Web addrs */
if (contact->urls) {
- ret = ctsvc_contact_insert_data_url((contacts_list_h)contact->urls, contact->id, true);
+ ret = ctsvc_contact_insert_data_url(zone_name, (contacts_list_h)contact->urls, contact->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_insert_my_profile_data_web() Failed(%d)", ret);
+ CTS_ERR("ctsvc_insert_my_profile_data_web() Fail(%d)", ret);
return ret;
}
}
- //Insert the Nick names
+ /* Insert the Nick names */
if (contact->nicknames) {
- ret = ctsvc_contact_insert_data_nickname((contacts_list_h)contact->nicknames, contact->id, true);
+ ret = ctsvc_contact_insert_data_nickname(zone_name, (contacts_list_h)contact->nicknames, contact->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_insert_my_profile_data_nickname() Failed(%d)", ret);
+ CTS_ERR("ctsvc_insert_my_profile_data_nickname() Fail(%d)", ret);
return ret;
}
}
- //Insert the numbers
+ /* Insert the numbers */
if (contact->numbers) {
- ret = ctsvc_contact_insert_data_number((contacts_list_h)contact->numbers, contact->id, true);
+ ret = ctsvc_contact_insert_data_number(zone_name, (contacts_list_h)contact->numbers, contact->id, true);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_contact_insert_data_number() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_insert_data_number() Fail(%d)", ret);
return ret;
}
}
- //Insert the emails
+ /* Insert the emails */
if (contact->emails) {
- ret = ctsvc_contact_insert_data_email((contacts_list_h)contact->emails, contact->id, true);
+ ret = ctsvc_contact_insert_data_email(zone_name, (contacts_list_h)contact->emails, contact->id, true);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_insert_my_profile_data_email() Failed(%d)", ret);
+ CTS_ERR("ctsvc_insert_my_profile_data_email() Fail(%d)", ret);
return ret;
}
}
- //Insert the profile values
+ /* Insert the profile values */
if (contact->profiles) {
- ret = ctsvc_contact_insert_data_profile((contacts_list_h)contact->profiles, contact->id, true);
+ ret = ctsvc_contact_insert_data_profile(zone_name, (contacts_list_h)contact->profiles, contact->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_insert_my_profile_data_profile() Failed(%d)", ret);
+ CTS_ERR("ctsvc_insert_my_profile_data_profile() Fail(%d)", ret);
return ret;
}
}
- //Insert the relationship values
+ /* Insert the relationship values */
if (contact->relationships) {
- ret = ctsvc_contact_insert_data_relationship((contacts_list_h)contact->relationships, contact->id, true);
+ ret = ctsvc_contact_insert_data_relationship(zone_name, (contacts_list_h)contact->relationships, contact->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_insert_data_relationship() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_insert_data_relationship() Fail(%d)", ret);
return ret;
}
}
- //Insert the image values
+ /* Insert the image values */
if (contact->images) {
- ret = ctsvc_contact_insert_data_image((contacts_list_h)contact->images, contact->id, true);
+ ret = ctsvc_contact_insert_data_image(zone_name, (contacts_list_h)contact->images, contact->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_insert_data_image() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_insert_data_image() Fail(%d)", ret);
return ret;
}
}
- //Insert the note values
+ /* Insert the note values */
if (contact->note) {
- ret = ctsvc_contact_insert_data_note((contacts_list_h)contact->note, contact->id, true);
+ ret = ctsvc_contact_insert_data_note(zone_name, (contacts_list_h)contact->note, contact->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_insert_data_note() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_insert_data_note() Fail(%d)", ret);
return ret;
}
}
- //Insert the extensions values
+ /* Insert the extensions values */
if (contact->extensions) {
- ret = ctsvc_contact_insert_data_extension((contacts_list_h)contact->extensions, contact->id, true);
+ ret = ctsvc_contact_insert_data_extension(zone_name, (contacts_list_h)contact->extensions, contact->id, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_contact_insert_data_extension() Failed(%d)", ret);
+ CTS_ERR("ctsvc_contact_insert_data_extension() Fail(%d)", ret);
return ret;
}
}
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_my_profile_insert_record( contacts_record_h record, int *id)
+static int __ctsvc_db_my_profile_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
CTS_FN_CALL;
int ret;
ctsvc_my_profile_s *my_profile = (ctsvc_my_profile_s*)record;
cts_stmt stmt;
- // These check should be done in client side
+ /* These check should be done in client side */
RETVM_IF(NULL == my_profile, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : my_profile is NULL");
RETVM_IF(my_profile->addressbook_id < 0, CONTACTS_ERROR_INVALID_PARAMETER,
RETVM_IF(0 < my_profile->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : id(%d), This record is already inserted", my_profile->id);
- ret = ctsvc_begin_trans();
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
- if (false == ctsvc_have_ab_write_permission(my_profile->addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, my_profile->addressbook_id)) {
CTS_ERR("ctsvc_have_ab_write_permission fail : does not have permission(addressbook_id : %d)",
my_profile->addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_MY_PROFILES" WHERE addressbook_id = %d AND deleted = 1", my_profile->addressbook_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
WARN_IF(CONTACTS_ERROR_NONE != ret, "Delete deleted my_profile of addressbook(%d) failed", my_profile->addressbook_id);
- ret = ctsvc_db_get_next_id(CTS_TABLE_MY_PROFILES);
+ ret = ctsvc_db_get_next_id(zone_name, CTS_TABLE_MY_PROFILES);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_db_get_next_id() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_db_get_next_id() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
my_profile->id = ret;
__ctsvc_make_my_profile_display_name(my_profile);
__ctsvc_my_profile_check_default_data(my_profile);
- //Insert Data
- ret = __ctsvc_my_profile_insert_data(my_profile);
+ /* Insert Data */
+ ret = __ctsvc_my_profile_insert_data(zone_name, my_profile);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("cts_insert_my_profile_data() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("cts_insert_my_profile_data() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- //////////////////////////////////////////////////////////////////////
- // this code will be removed.
+ /* thumbnail */
free(my_profile->image_thumbnail_path);
my_profile->image_thumbnail_path = NULL;
-
if (my_profile->images) {
- ctsvc_image_s *image;
int count = 0;
+ ctsvc_image_s *image;
contacts_list_get_count((contacts_list_h)my_profile->images, &count);
-
- while (count) {
+ if (count) {
contacts_list_first((contacts_list_h)my_profile->images);
- ret = contacts_list_get_current_record_p((contacts_list_h)my_profile->images, (contacts_record_h*)&image);
- if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("contacts_list_get_current_record_p() Failed(%d)", ret);
- ctsvc_end_trans(false);
- return CONTACTS_ERROR_DB;
- }
+ do {
+ ret = contacts_list_get_current_record_p((contacts_list_h)my_profile->images, (contacts_record_h*)&image);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("contacts_list_get_current_record_p() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
+ return CONTACTS_ERROR_DB;
+ }
- if (image->path && image->is_default) {
- my_profile->image_thumbnail_path = strdup(image->path);
- break;
- }
- count--;
+ if (image->path && image->is_default) {
+ my_profile->image_thumbnail_path = strdup(image->path);
+ break;
+ }
+ } while (CONTACTS_ERROR_NONE == contacts_list_next((contacts_list_h)my_profile->images));
}
}
- // this code will be removed.
- //////////////////////////////////////////////////////////////////////
- version = ctsvc_get_next_ver();
+ version = ctsvc_get_next_ver(zone_name);
snprintf(query, sizeof(query),
"INSERT INTO "CTS_TABLE_MY_PROFILES"(my_profile_id, addressbook_id, "
"VALUES(%d, %d, %d, %d, %d, ?, ?, ?, ?)",
my_profile->id, my_profile->addressbook_id, version, version, (int)time(NULL));
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ctsvc_stmt_finalize(stmt);
- ctsvc_set_my_profile_noti();
+ ctsvc_set_my_profile_noti(zone_name);
- ret = ctsvc_end_trans(true);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_svc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "contacts_svc_end_trans() Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_normalize.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_list.h"
#include "ctsvc_notification.h"
-static int __ctsvc_db_name_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_name_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_name_update_record( contacts_record_h record );
-static int __ctsvc_db_name_delete_record( int id );
-static int __ctsvc_db_name_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_name_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_name_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_name_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_name_delete_records( int ids[], int count);
+static int __ctsvc_db_name_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_name_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_name_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_name_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_name_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_name_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_name = {
.is_query_only = false,
.delete_record = __ctsvc_db_name_delete_record,
.get_all_records = __ctsvc_db_name_get_all_records,
.get_records_with_query = __ctsvc_db_name_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_name_insert_records,
- .update_records = NULL,//__ctsvc_db_name_update_records,
- .delete_records = NULL,//__ctsvc_db_name_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_name_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_name_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int name_id = 0;
char query[CTS_SQL_MAX_LEN] = {0};
ctsvc_name_s *name = (ctsvc_name_s *)record;
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", name->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_ERR("No data : contact_id (%d) is not exist", name->contact_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this name record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE contact_id = %d AND datatype=%d", name->contact_id, CTSVC_DATA_NAME);
- ret = ctsvc_query_get_first_int_result(query, &name_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &name_id);
if (name_id) {
CTS_ERR("name_id (%d) is exist", name_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- ret = ctsvc_db_name_insert(record, name->contact_id, false, id);
+ ret = ctsvc_db_name_insert(zone_name, record, name->contact_id, false, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_contact_update_display_name(name->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NAME);
+ ctsvc_contact_update_display_name(zone_name, name->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NAME);
- ret = ctsvc_db_contact_update_changed_time(name->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, name->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_name_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_name_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"WHERE id = %d AND datatype = %d ",
id, CTSVC_DATA_NAME);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_name_update_record( contacts_record_h record )
+static int __ctsvc_db_name_update_record(const char *zone_name, contacts_record_h record)
{
int ret;
int addressbook_id;
NULL == name->prefix && NULL == name->suffix && NULL == name->phonetic_first &&
NULL == name->phonetic_middle && NULL == name->phonetic_last, CONTACTS_ERROR_INVALID_PARAMETER, "name is empty");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", name->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : contact_id (%d) is not exist", name->contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this name record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_name_update(record, false);
+ ret = ctsvc_db_name_update(zone_name, record, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_contact_update_display_name(name->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NAME);
+ ctsvc_contact_update_display_name(zone_name, name->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NAME);
- ret = ctsvc_db_contact_update_changed_time(name->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, name->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
}
-static int __ctsvc_db_name_delete_record( int id )
+static int __ctsvc_db_name_delete_record(const char *zone_name, int id)
{
int ret;
int contact_id;
cts_stmt stmt = NULL;
char query[CTS_SQL_MAX_LEN] = {0};
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT contact_id, addressbook_id FROM "CTSVC_DB_VIEW_CONTACT " "
"WHERE contact_id = (SELECT contact_id FROM "CTS_TABLE_DATA" WHERE id = %d)", id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
CTS_ERR("The id(%d) is Invalid(%d)", id, ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
addressbook_id = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this name record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_name_delete(id, false);
+ ret = ctsvc_db_name_delete(zone_name, id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_contact_update_display_name(contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NAME);
+ ctsvc_contact_update_display_name(zone_name, contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NAME);
- ret = ctsvc_db_contact_update_changed_time(contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_name_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_name_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int len;
int ret;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_name_get_records_with_query( contacts_query_h query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_name_get_records_with_query(const char *zone_name, contacts_query_h query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ret = ctsvc_record_set_projection_flags(record, s_query->projection,
s_query->projection_count, s_query->property_count);
- if( CONTACTS_ERROR_NONE != ret)
+ if (CONTACTS_ERROR_NONE != ret)
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_NAME_FIRST:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(name->first);
name->first = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_NAME_LAST:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(name->last);
name->last = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_NAME_ADDITION:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(name->addition);
name->addition = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_NAME_SUFFIX:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(name->suffix);
name->suffix = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_NAME_PREFIX:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(name->prefix);
name->prefix = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_NAME_PHONETIC_FIRST:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(name->phonetic_first);
name->phonetic_first = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_NAME_PHONETIC_MIDDLE:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(name->phonetic_middle);
name->phonetic_middle = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_NAME_PHONETIC_LAST:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(name->phonetic_last);
name->phonetic_last = SAFE_STRDUP(temp);
break;
default:
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-
-//static int __ctsvc_db_name_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_name_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_name_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_normalize.h"
#include "ctsvc_localize_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_plugin_name_helper.h"
#include "ctsvc_record.h"
-#include "ctsvc_setting.h"
+#include "ctsvc_server_setting.h"
#include "ctsvc_notification.h"
enum{
static inline void __ctsvc_make_name_lookup(int op_code, const char *name_first,
const char *name_last, char **name_lookup)
{
- if (name_first && !name_last)
+ if (name_first && NULL == name_last)
*name_lookup = SAFE_STRDUP(name_first);
- else if (!name_first && name_last)
+ else if (NULL == name_first && name_last)
*name_lookup = SAFE_STRDUP(name_last);
else {
if (CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST == op_code) {
*name_lookup = calloc(1, SAFE_STRLEN(name_first) + SAFE_STRLEN(name_last) + 3);
- RETM_IF(NULL == *name_lookup, "calloc() return NULL");
+ if (NULL == *name_lookup) {
+ CTS_ERR("calloc() Fail");
+ return;
+ }
snprintf(*name_lookup, SAFE_STRLEN(name_first) + SAFE_STRLEN(name_last) + 3, "%s %c%s",
SAFE_STR(name_first), 0x7E, SAFE_STR(name_last));
}
else {
*name_lookup = calloc(1, SAFE_STRLEN(name_first) + SAFE_STRLEN(name_last) + 5);
- RETM_IF(NULL == *name_lookup, "calloc() return NULL");
+ if (NULL == *name_lookup) {
+ CTS_ERR("calloc() Fail");
+ return;
+ }
snprintf(*name_lookup, SAFE_STRLEN(name_first) + SAFE_STRLEN(name_last) + 5, "%s,%c %c%s",
SAFE_STR(name_last), 0x7E, 0x7E, SAFE_STR(name_first));
}
if (src->first) {
ret = ctsvc_normalize_str(src->first, &dest[CTSVC_NN_FIRST]);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_normalize_str() Failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_normalize_str() Fail(%d)", ret);
language_type = ret;
}
if (src->last) {
ret = ctsvc_normalize_str(src->last, &dest[CTSVC_NN_LAST]);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_normalize_str() Failed(%d)", ret);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "ctsvc_normalize_str() Fail(%d)", ret);
if (language_type < ret)
language_type = ret;
}
return language_type;
}
-int ctsvc_db_name_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id)
+int ctsvc_db_name_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id)
{
int ret, len = 0;
cts_stmt stmt = NULL;
ctsvc_name_s *name = (ctsvc_name_s*)record;
char query[CTS_SQL_MAX_LEN]={0};
- char *normal_name[CTSVC_NN_MAX]={NULL}; //insert name search info
+ char *normal_name[CTSVC_NN_MAX]={NULL}; /* insert name search info */
char *temp_normal_first = NULL;
char *temp_normal_last = NULL;
int len_normal_first = 0;
if (name->first || name->last || name->addition || name->prefix || name->suffix
|| name->phonetic_first || name->phonetic_middle || name->phonetic_last) {
- // If name record already exists, delete current name record
- // If user update record with out-of-date record, name record can be two
+ /*
+ * If name record already exists, delete current name record
+ * If user update record with out-of-date record, name record can be two
+ */
snprintf(query, sizeof(query),
"DELETE FROM "CTS_TABLE_DATA" "
"WHERE contact_id = %d AND datatype=%d "
"AND is_my_profile = %d",
contact_id, CTSVC_DATA_NAME, is_my_profile);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("ctsvc_query_exec Faild(%d)", ret);
return ret;
"VALUES(%d, %d, %d, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
contact_id, is_my_profile, CTSVC_DATA_NAME);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = __ctsvc_normalize_name(name, normal_name);
- WARN_IF(ret < CONTACTS_ERROR_NONE, "__ctsvc_normalize_name() Failed(%d)", ret);
+ WARN_IF(ret < CONTACTS_ERROR_NONE, "__ctsvc_normalize_name() Fail(%d)", ret);
switch (ret) {
case CTSVC_LANG_KOREAN:
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
- //name->id = ctsvc_db_get_last_insert_id();
+ /* name->id = ctsvc_db_get_last_insert_id(zone_name); */
if (id)
- *id = ctsvc_db_get_last_insert_id();
+ *id = ctsvc_db_get_last_insert_id(zone_name);
name->contact_id = contact_id;
ctsvc_stmt_finalize(stmt);
- if (!is_my_profile)
- ctsvc_set_name_noti();
+ if (false == is_my_profile)
+ ctsvc_set_name_noti(zone_name);
}
- // update search index table
+ /* update search index table */
return CONTACTS_ERROR_NONE;
}
ctsvc_name_s *name;
ret = contacts_record_create(_contacts_name._uri, (contacts_record_h *)&name);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
name->id = ctsvc_stmt_get_int(stmt, start_count++);
name->contact_id = ctsvc_stmt_get_int(stmt, start_count++);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_name_update(contacts_record_h record, bool is_my_profile)
+int ctsvc_db_name_update(const char *zone_name, contacts_record_h record, bool is_my_profile)
{
int ret, len=0;
int id;
char *temp_normal_last = NULL;
char query[CTS_SQL_MIN_LEN] = {0};
- RETVM_IF(!name->id, CONTACTS_ERROR_INVALID_PARAMETER, "name of contact has no ID.");
+ RETVM_IF(0 == name->id, CONTACTS_ERROR_INVALID_PARAMETER, "name of contact has no ID.");
RETVM_IF(CTSVC_PROPERTY_FLAG_DIRTY != (name->base.property_flag & CTSVC_PROPERTY_FLAG_DIRTY), CONTACTS_ERROR_NONE, "No update");
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE id = %d", name->id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
RETV_IF(ret != CONTACTS_ERROR_NONE, ret);
tmp_first = name->first;
ret = __ctsvc_normalize_name(name, normal_name);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("cts_normalize_name() Failed(%d)", ret);
+ CTS_ERR("cts_normalize_name() Fail(%d)", ret);
return ret;
}
case CTSVC_LANG_ENGLISH:
default:
if (normal_name[CTSVC_NN_FIRST] && normal_name[CTSVC_NN_FIRST][0])
- temp_normal_first = normal_name[CTSVC_NN_FIRST];
+ temp_normal_first = SAFE_STRDUP(normal_name[CTSVC_NN_FIRST]);
else
name->first = NULL;
if (normal_name[CTSVC_NN_LAST] && normal_name[CTSVC_NN_LAST][0])
- temp_normal_last = normal_name[CTSVC_NN_LAST];
+ temp_normal_last = SAFE_STRDUP(normal_name[CTSVC_NN_LAST]);
else
name->last = NULL;
break;
__ctsvc_make_name_lookup(CONTACTS_NAME_DISPLAY_ORDER_LASTFIRST,
temp_normal_first, temp_normal_last, &name->reverse_lookup);
+ free(temp_normal_first);
+ free(temp_normal_last);
free(normal_name[CTSVC_NN_FIRST]);
free(normal_name[CTSVC_NN_LAST]);
set, name->is_default, name->language_type);
bind_text = g_slist_append(bind_text, strdup(SAFE_STR(name->lookup)));
bind_text = g_slist_append(bind_text, strdup(SAFE_STR(name->reverse_lookup)));
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(query_set, bind_text, CTS_TABLE_DATA, name->id))) break;
+ if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(zone_name, query_set, bind_text, CTS_TABLE_DATA, name->id))) break;
- if (!is_my_profile)
- ctsvc_set_name_noti();
+ if (false == is_my_profile)
+ ctsvc_set_name_noti(zone_name);
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_name_delete(int id, bool is_my_profile)
+int ctsvc_db_name_delete(const char *zone_name, int id, bool is_my_profile)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_DATA" WHERE id = %d", id);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Fail(%d)", ret);
- if (!is_my_profile)
- ctsvc_set_name_noti();
+ if (false == is_my_profile)
+ ctsvc_set_name_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
#define __CTSVC_DB_PLUGIN_NAME_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
-int ctsvc_db_name_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id);
-int ctsvc_db_name_update(contacts_record_h record, bool is_my_profile);
-int ctsvc_db_name_delete(int id, bool is_my_profile);
+int ctsvc_db_name_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id);
+int ctsvc_db_name_update(const char *zone_name, contacts_record_h record, bool is_my_profile);
+int ctsvc_db_name_delete(const char *zone_name, int id, bool is_my_profile);
int ctsvc_db_name_get_value_from_stmt(cts_stmt stmt, contacts_record_h *record, int start_count);
-#endif // __CTSVC_DB_PLUGIN_NAME_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_NAME_HELPER_H__ */
\ No newline at end of file
*/
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_db_plugin_contact_helper.h"
#include "ctsvc_list.h"
#include "ctsvc_notification.h"
-static int __ctsvc_db_nickname_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_nickname_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_nickname_update_record( contacts_record_h record );
-static int __ctsvc_db_nickname_delete_record( int id );
-static int __ctsvc_db_nickname_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_nickname_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_nickname_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_nickname_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_nickname_delete_records( int ids[], int count);
+static int __ctsvc_db_nickname_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_nickname_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_nickname_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_nickname_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_nickname_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_nickname_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_nickname = {
.is_query_only = false,
.delete_record = __ctsvc_db_nickname_delete_record,
.get_all_records = __ctsvc_db_nickname_get_all_records,
.get_records_with_query = __ctsvc_db_nickname_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_nickname_insert_records,
- .update_records = NULL,//__ctsvc_db_nickname_update_records,
- .delete_records = NULL,//__ctsvc_db_nickname_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_nickname_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_nickname_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int addressbook_id;
RETVM_IF(NULL == nickname->nickname, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : nickname is NULL");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", nickname->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_ERR("No data : contact_id (%d) is not exist", nickname->contact_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this nickname record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_nickname_insert(record, nickname->contact_id, false, id);
+ ret = ctsvc_db_nickname_insert(zone_name, record, nickname->contact_id, false, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_contact_update_display_name(nickname->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NICKNAME);
+ ctsvc_contact_update_display_name(zone_name, nickname->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NICKNAME);
- ret = ctsvc_db_contact_update_changed_time(nickname->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, nickname->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_nickname_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_nickname_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"WHERE id = %d AND datatype = %d ",
id, CTSVC_DATA_NICKNAME);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_nickname_update_record( contacts_record_h record )
+static int __ctsvc_db_nickname_update_record(const char *zone_name, contacts_record_h record)
{
int ret;
int addressbook_id;
ctsvc_nickname_s *nickname = (ctsvc_nickname_s *)record;
RETVM_IF(NULL == nickname->nickname, CONTACTS_ERROR_INVALID_PARAMETER, "nickname is empty");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", nickname->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : contact_id (%d) is not exist", nickname->contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this nickname record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_nickname_update(record, false);
+ ret = ctsvc_db_nickname_update(zone_name, record, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("Update record Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("Update record Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_contact_update_display_name(nickname->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NICKNAME);
+ ctsvc_contact_update_display_name(zone_name, nickname->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NICKNAME);
- ret = ctsvc_db_contact_update_changed_time(nickname->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, nickname->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(zone_name, true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_nickname_delete_record( int id )
+static int __ctsvc_db_nickname_delete_record(const char *zone_name, int id)
{
int ret;
int contact_id;
cts_stmt stmt;
int addressbook_id;
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT contact_id, addressbook_id FROM "CTSVC_DB_VIEW_CONTACT " "
"WHERE contact_id = (SELECT contact_id FROM "CTS_TABLE_DATA" WHERE id = %d)", id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
CTS_ERR("The id(%d) is Invalid(%d)", id, ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
addressbook_id = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this nickname record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_nickname_delete(id, false);
+ ret = ctsvc_db_nickname_delete(zone_name, id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_contact_update_display_name(contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NICKNAME);
+ ctsvc_contact_update_display_name(zone_name, contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NICKNAME);
- ret = ctsvc_db_contact_update_changed_time(contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_nickname_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_nickname_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int len;
int ret;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB : ctsvc_stmt_step fail(%d)", ret);
+ CTS_ERR("DB : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_nickname_get_records_with_query( contacts_query_h query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_nickname_get_records_with_query(const char *zone_name, contacts_query_h query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ret = ctsvc_record_set_projection_flags(record, s_query->projection,
s_query->projection_count, s_query->property_count);
- if(CONTACTS_ERROR_NONE != ret)
+ if (CONTACTS_ERROR_NONE != ret)
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_NICKNAME_NAME:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(nickname->nickname);
nickname->nickname = SAFE_STRDUP(temp);
break;
default:
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-
-//static int __ctsvc_db_nickname_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_nickname_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_nickname_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
*/
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_plugin_nickname_helper.h"
ctsvc_nickname_s *nickname;
ret = contacts_record_create(_contacts_nickname._uri, (contacts_record_h *)&nickname);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
nickname->id = ctsvc_stmt_get_int(stmt, start_count++);
nickname->contact_id = ctsvc_stmt_get_int(stmt, start_count++);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_nickname_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id)
+int ctsvc_db_nickname_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id)
{
int ret;
cts_stmt stmt = NULL;
"VALUES(%d, %d, %d, %d, ?, ?)",
contact_id, is_my_profile, CTSVC_DATA_NICKNAME, nickname->type);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
if (nickname->label)
ctsvc_stmt_bind_text(stmt, 1, nickname->label);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
- //nickname->id = ctsvc_db_get_last_insert_id();
+ /* nickname->id = ctsvc_db_get_last_insert_id(zone_name); */
if (id)
- *id = ctsvc_db_get_last_insert_id();
+ *id = ctsvc_db_get_last_insert_id(zone_name);
ctsvc_stmt_finalize(stmt);
- if (!is_my_profile)
- ctsvc_set_nickname_noti();
+ if (false == is_my_profile)
+ ctsvc_set_nickname_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_nickname_update(contacts_record_h record, bool is_my_profile)
+int ctsvc_db_nickname_update(const char *zone_name, contacts_record_h record, bool is_my_profile)
{
int id;
int ret = CONTACTS_ERROR_NONE;
ctsvc_nickname_s *nickname = (ctsvc_nickname_s*)record;
char query[CTS_SQL_MAX_LEN] = {0};
- RETVM_IF(!nickname->id, CONTACTS_ERROR_INVALID_PARAMETER, "nickname of contact has no ID.");
+ RETVM_IF(0 == nickname->id, CONTACTS_ERROR_INVALID_PARAMETER, "nickname of contact has no ID.");
RETVM_IF(CTSVC_PROPERTY_FLAG_DIRTY != (nickname->base.property_flag & CTSVC_PROPERTY_FLAG_DIRTY), CONTACTS_ERROR_NONE, "No update");
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE id = %d", nickname->id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
RETV_IF(ret != CONTACTS_ERROR_NONE, ret);
do {
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_DATA, nickname->id))) break;
- if (!is_my_profile)
- ctsvc_set_nickname_noti();
+ if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(zone_name, set, bind_text, CTS_TABLE_DATA, nickname->id))) break;
+ if (false == is_my_profile)
+ ctsvc_set_nickname_noti(zone_name);
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
return ret;
}
-int ctsvc_db_nickname_delete(int id, bool is_my_profile)
+int ctsvc_db_nickname_delete(const char *zone_name, int id, bool is_my_profile)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_DATA" WHERE id = %d AND datatype = %d",
id, CTSVC_DATA_NICKNAME);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Fail(%d)", ret);
- if (!is_my_profile)
- ctsvc_set_nickname_noti();
+ if (false == is_my_profile)
+ ctsvc_set_nickname_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
#define __CTSVC_DB_PLUGIN_NICKNAME_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
-int ctsvc_db_nickname_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id);
-int ctsvc_db_nickname_update(contacts_record_h record, bool is_my_profile);
-int ctsvc_db_nickname_delete(int id, bool is_my_profile);
+int ctsvc_db_nickname_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id);
+int ctsvc_db_nickname_update(const char *zone_name, contacts_record_h record, bool is_my_profile);
+int ctsvc_db_nickname_delete(const char *zone_name, int id, bool is_my_profile);
int ctsvc_db_nickname_get_value_from_stmt(cts_stmt stmt, contacts_record_h *record, int start_count);
-#endif // __CTSVC_DB_PLUGIN_NICKNAME_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_NICKNAME_HELPER_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_db_plugin_contact_helper.h"
#include "ctsvc_record.h"
#include "ctsvc_notification.h"
-static int __ctsvc_db_note_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_note_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_note_update_record( contacts_record_h record );
-static int __ctsvc_db_note_delete_record( int id );
-static int __ctsvc_db_note_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_note_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_note_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_note_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_note_delete_records( int ids[], int count);
+static int __ctsvc_db_note_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_note_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_note_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_note_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_note_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_note_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_note = {
.is_query_only = false,
.delete_record = __ctsvc_db_note_delete_record,
.get_all_records = __ctsvc_db_note_get_all_records,
.get_records_with_query = __ctsvc_db_note_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_note_insert_records,
- .update_records = NULL,//__ctsvc_db_note_update_records,
- .delete_records = NULL,//__ctsvc_db_note_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_note_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_note_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"WHERE id = %d AND datatype = %d ",
id, CTSVC_DATA_NOTE);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_note_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_note_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int addressbook_id;
RETVM_IF(NULL == note->note, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : note is NULL");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", note->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_ERR("No data : contact_id (%d) is not exist", note->contact_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this note record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_note_insert(record, note->contact_id, false, id);
+ ret = ctsvc_db_note_insert(zone_name, record, note->contact_id, false, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(note->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, note->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_note_update_record( contacts_record_h record )
+static int __ctsvc_db_note_update_record(const char *zone_name, contacts_record_h record)
{
int ret;
int addressbook_id;
RETVM_IF(NULL == note->note, CONTACTS_ERROR_INVALID_PARAMETER, "note is empty");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", note->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : contact_id (%d) is not exist", note->contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this note record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_note_update(record, false);
+ ret = ctsvc_db_note_update(zone_name, record, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("Update record Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("Update record Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- // TODO ; contact display note update
- ret = ctsvc_db_contact_update_changed_time(note->contact_id);
+ /* TODO ; contact display note update */
+ ret = ctsvc_db_contact_update_changed_time(zone_name, note->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
}
-static int __ctsvc_db_note_delete_record( int id )
+static int __ctsvc_db_note_delete_record(const char *zone_name, int id)
{
int ret;
int contact_id;
cts_stmt stmt;
int addressbook_id;
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT contact_id, addressbook_id FROM "CTSVC_DB_VIEW_CONTACT " "
"WHERE contact_id = (SELECT contact_id FROM "CTS_TABLE_DATA" WHERE id = %d)", id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
CTS_ERR("The id(%d) is Invalid(%d)", id, ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
addressbook_id = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this note record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_note_delete(id, false);
+ ret = ctsvc_db_note_delete(zone_name, id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- // TODO ; contact name update
- ret = ctsvc_db_contact_update_changed_time(contact_id);
+ /* TODO ; contact name update */
+ ret = ctsvc_db_contact_update_changed_time(zone_name, contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_note_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_note_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int len;
int ret;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB : ctsvc_stmt_step fail(%d)", ret);
+ CTS_ERR("DB : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_note_get_records_with_query( contacts_query_h query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_note_get_records_with_query(const char *zone_name, contacts_query_h query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ret = ctsvc_record_set_projection_flags(record, s_query->projection,
s_query->projection_count, s_query->property_count);
- if(CONTACTS_ERROR_NONE != ret)
+ if (CONTACTS_ERROR_NONE != ret)
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_NOTE_NOTE:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(note->note);
note->note = SAFE_STRDUP(temp);
break;
default:
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-
-//static int __ctsvc_db_note_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_note_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_note_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_plugin_note_helper.h"
ctsvc_note_s *note;
ret = contacts_record_create(_contacts_note._uri, (contacts_record_h *)¬e);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
note->id = ctsvc_stmt_get_int(stmt, start_count++);
note->contact_id = ctsvc_stmt_get_int(stmt, start_count++);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_note_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id)
+int ctsvc_db_note_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id)
{
int ret;
cts_stmt stmt = NULL;
"INSERT INTO "CTS_TABLE_DATA"(contact_id, is_my_profile, datatype, data3) "
"VALUES(%d, %d, %d, ?)", contact_id, is_my_profile, CTSVC_DATA_NOTE);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
sqlite3_bind_text(stmt, 1, note->note,
strlen(note->note), SQLITE_STATIC);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
if (id)
- *id = ctsvc_db_get_last_insert_id();
+ *id = ctsvc_db_get_last_insert_id(zone_name);
ctsvc_stmt_finalize(stmt);
- if (!is_my_profile)
- ctsvc_set_note_noti();
+ if (false == is_my_profile)
+ ctsvc_set_note_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_note_update(contacts_record_h record, bool is_my_profile)
+int ctsvc_db_note_update(const char *zone_name, contacts_record_h record, bool is_my_profile)
{
int id;
int ret = CONTACTS_ERROR_NONE;
ctsvc_note_s *note = (ctsvc_note_s*)record;
char query[CTS_SQL_MAX_LEN] = {0};
- RETVM_IF(!note->id, CONTACTS_ERROR_INVALID_PARAMETER, "note of contact has no ID.");
+ RETVM_IF(0 == note->id, CONTACTS_ERROR_INVALID_PARAMETER, "note of contact has no ID.");
RETVM_IF(CTSVC_PROPERTY_FLAG_DIRTY != (note->base.property_flag & CTSVC_PROPERTY_FLAG_DIRTY), CONTACTS_ERROR_NONE, "No update");
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE id = %d", note->id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
RETV_IF(ret != CONTACTS_ERROR_NONE, ret);
do {
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_DATA, note->id))) break;
+ if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(zone_name, set, bind_text, CTS_TABLE_DATA, note->id))) break;
- if (!is_my_profile)
- ctsvc_set_messenger_noti();
+ if (false == is_my_profile)
+ ctsvc_set_messenger_noti(zone_name);
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
return ret;
}
-int ctsvc_db_note_delete(int id, bool is_my_profile)
+int ctsvc_db_note_delete(const char *zone_name, int id, bool is_my_profile)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_DATA" WHERE id = %d AND datatype = %d",
id, CTSVC_DATA_NOTE);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Fail(%d)", ret);
- if (!is_my_profile)
- ctsvc_set_note_noti();
+ if (false == is_my_profile)
+ ctsvc_set_note_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
#define __CTSVC_DB_PLUGIN_NOTE_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
-int ctsvc_db_note_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id);
-int ctsvc_db_note_update(contacts_record_h record, bool is_my_profile);
-int ctsvc_db_note_delete(int id, bool is_my_profile);
+int ctsvc_db_note_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id);
+int ctsvc_db_note_update(const char *zone_name, contacts_record_h record, bool is_my_profile);
+int ctsvc_db_note_delete(const char *zone_name, int id, bool is_my_profile);
int ctsvc_db_note_get_value_from_stmt(cts_stmt stmt, contacts_record_h *record, int start_count);
-#endif // __CTSVC_DB_PLUGIN_NOTE_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_NOTE_HELPER_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_normalize.h"
#include "ctsvc_notification.h"
#include "ctsvc_list.h"
-static int __ctsvc_db_number_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_number_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_number_update_record( contacts_record_h record );
-static int __ctsvc_db_number_delete_record( int id );
-static int __ctsvc_db_number_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_number_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_number_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_number_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_number_delete_records( int ids[], int count);
+static int __ctsvc_db_number_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_number_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_number_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_number_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_number_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_number_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_number = {
.is_query_only = false,
.delete_record = __ctsvc_db_number_delete_record,
.get_all_records = __ctsvc_db_number_get_all_records,
.get_records_with_query = __ctsvc_db_number_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_number_insert_records,
- .update_records = NULL,//__ctsvc_db_number_update_records,
- .delete_records = NULL,//__ctsvc_db_number_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_number_get_person_default_number(int person_id)
+static int __ctsvc_db_number_get_person_default_number(const char *zone_name, int person_id)
{
int ret;
int default_number_id;
"SELECT id FROM "CTS_TABLE_CONTACTS" c, "CTS_TABLE_DATA" d "
"WHERE c.person_id = %d AND d.datatype = %d AND c.contact_id = d.contact_id AND d.is_default = 1",
person_id, CTSVC_DATA_NUMBER);
- ret = ctsvc_query_get_first_int_result(query, &default_number_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &default_number_id);
if (CONTACTS_ERROR_NONE != ret)
return 0;
return default_number_id;
}
-static int __ctsvc_db_number_update_person_has_phonenumber(int person_id, bool has_phonenumber)
+static int __ctsvc_db_number_update_person_has_phonenumber(const char *zone_name, int person_id, bool has_phonenumber)
{
int ret;
char query[CTS_SQL_MAX_LEN] = {0};
"UPDATE "CTS_TABLE_PERSONS" SET has_phonenumber = %d WHERE person_id = %d",
has_phonenumber, person_id);
- ret = ctsvc_query_exec(query);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
-static int __ctsvc_db_number_get_default_number_id(int contact_id)
+static int __ctsvc_db_number_get_default_number_id(const char *zone_name, int contact_id)
{
int ret;
int number_id = 0;
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE datatype=%d AND contact_id=%d AND is_default=1",
CTSVC_DATA_NUMBER, contact_id);
- ret = ctsvc_query_get_first_int_result(query, &number_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &number_id);
if (CONTACTS_ERROR_NONE != ret)
return 0;
return number_id;
}
-static int __ctsvc_db_number_update_default(int number_id, int contact_id, bool is_default, bool is_primary_default)
+static int __ctsvc_db_number_update_default(const char *zone_name, int number_id, int contact_id, bool is_default, bool is_primary_default)
{
int ret;
char query[CTS_SQL_MAX_LEN] = {0};
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_DATA" SET is_default = %d, is_primary_default = %d WHERE id = %d",
is_default, is_primary_default, number_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Failed(%d)", ret);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
-static int __ctsvc_db_number_get_primary_default(int contact_id)
+static int __ctsvc_db_number_get_primary_default(const char *zone_name, int contact_id)
{
int ret;
int number_id = 0;
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE datatype=%d AND contact_id=%d AND is_primary_default=%d",
CTSVC_DATA_NUMBER, contact_id, 1);
- ret = ctsvc_query_get_first_int_result(query, &number_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &number_id);
if (CONTACTS_ERROR_NONE != ret)
return 0;
return number_id;
}
-static int __ctsvc_db_number_get_primary_default_contact_id(int person_id)
+static int __ctsvc_db_number_get_primary_default_contact_id(const char *zone_name, int person_id)
{
int ret;
int default_contact_id;
"SELECT c.contact_id FROM "CTS_TABLE_CONTACTS" c, "CTS_TABLE_DATA" d "
"WHERE c.person_id = %d AND d.datatype = %d AND c.contact_id = d.contact_id AND d.is_primary_default = 1",
person_id, CTSVC_DATA_NUMBER);
- ret = ctsvc_query_get_first_int_result(query, &default_contact_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &default_contact_id);
if (CONTACTS_ERROR_NONE != ret)
return 0;
return default_contact_id;
}
-static int __ctsvc_db_number_set_primary_default(int number_id, bool is_primary_default)
+static int __ctsvc_db_number_set_primary_default(const char *zone_name, int number_id, bool is_primary_default)
{
int ret;
char query[CTS_SQL_MAX_LEN] = {0};
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_DATA" SET is_primary_default = %d WHERE id = %d",
is_primary_default, number_id);
- ret = ctsvc_query_exec(query);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
-static int __ctsvc_db_number_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_number_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int person_id;
RETVM_IF(NULL == number->number, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : number is NULL");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id, person_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", number->contact_id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NO_DATA)
return CONTACTS_ERROR_INVALID_PARAMETER;
else
person_id = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this number record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- old_default_number_id = __ctsvc_db_number_get_default_number_id(number->contact_id);
+ old_default_number_id = __ctsvc_db_number_get_default_number_id(zone_name, number->contact_id);
if (0 == old_default_number_id)
number->is_default = true;
- ret = ctsvc_db_number_insert(record, number->contact_id, false, id);
+ ret = ctsvc_db_number_insert(zone_name, record, number->contact_id, false, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_CONTACTS" SET has_phonenumber = %d, changed_ver = %d, changed_time = %d "
"WHERE contact_id = %d",
- 1, ctsvc_get_next_ver(), (int)time(NULL), number->contact_id);
+ 1, ctsvc_get_next_ver(zone_name), (int)time(NULL), number->contact_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
if (number->is_default) {
int primary_default_contact_id = 0;
- __ctsvc_db_number_update_person_has_phonenumber(person_id, true);
+ __ctsvc_db_number_update_person_has_phonenumber(zone_name, person_id, true);
- primary_default_contact_id = __ctsvc_db_number_get_primary_default_contact_id(person_id);
+ primary_default_contact_id = __ctsvc_db_number_get_primary_default_contact_id(zone_name, person_id);
if (0 == primary_default_contact_id || number->contact_id == primary_default_contact_id)
- __ctsvc_db_number_set_primary_default(*id, true);
+ __ctsvc_db_number_set_primary_default(zone_name, *id, true);
- ctsvc_contact_update_display_name(number->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NUMBER);
+ ctsvc_contact_update_display_name(zone_name, number->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NUMBER);
}
- ctsvc_set_contact_noti();
- ctsvc_set_person_noti();
+ ctsvc_set_contact_noti(zone_name);
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_number_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_number_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
char query[CTS_SQL_MAX_LEN] = {0};
int ret;
"SELECT id, contact_id, is_default, data1, data2, data3, data4, data5, data6 "
"FROM "CTSVC_DB_VIEW_NUMBER" WHERE id = %d", id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_number_update_record( contacts_record_h record )
+static int __ctsvc_db_number_update_record(const char *zone_name, contacts_record_h record)
{
int ret;
int addressbook_id;
ctsvc_number_s *number = (ctsvc_number_s *)record;
RETVM_IF(NULL == number->number, CONTACTS_ERROR_INVALID_PARAMETER, "number is empty");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", number->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : contact_id (%d) is not exist", number->contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this number record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_number_update(record, false);
+ ret = ctsvc_db_number_update(zone_name, record, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
if (number->is_default) {
int old_primary_default_number_id = 0;
- old_primary_default_number_id = __ctsvc_db_number_get_primary_default(number->contact_id);
+ old_primary_default_number_id = __ctsvc_db_number_get_primary_default(zone_name, number->contact_id);
if (old_primary_default_number_id)
- __ctsvc_db_number_set_primary_default(number->id, true);
+ __ctsvc_db_number_set_primary_default(zone_name, number->id, true);
}
- ctsvc_contact_update_display_name(number->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NUMBER);
+ ctsvc_contact_update_display_name(zone_name, number->contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NUMBER);
- ret = ctsvc_db_contact_update_changed_time(number->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, number->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_number_delete_record( int id )
+static int __ctsvc_db_number_delete_record(const char *zone_name, int id)
{
int ret;
int number_id;
bool has_phonenumber = false;
cts_stmt stmt = NULL;
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
"SELECT contact_id, person_id, addressbook_id FROM "CTSVC_DB_VIEW_CONTACT " "
"WHERE contact_id = (SELECT contact_id FROM "CTS_TABLE_DATA" WHERE id = %d)", id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
addressbook_id = ctsvc_stmt_get_int(stmt, 2);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this number record : addresbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
snprintf(query, sizeof(query),
"SELECT is_default, is_primary_default FROM "CTS_TABLE_DATA" WHERE id = %d", id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
is_primary_default = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- ret = ctsvc_db_number_delete(id, false);
+ ret = ctsvc_db_number_delete(zone_name, id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE datatype = %d AND contact_id = %d AND is_my_profile = 0 limit 1",
CTSVC_DATA_NUMBER, contact_id);
- ret = ctsvc_query_get_first_int_result(query, &number_id);
- if ( 0 < ret )
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &number_id);
+ if (0 < ret)
has_phonenumber = true;
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_CONTACTS" SET has_phonenumber = %d, changed_ver = %d, changed_time = %d "
"WHERE contact_id = %d",
- has_phonenumber, ctsvc_get_next_ver(), (int)time(NULL), contact_id);
+ has_phonenumber, ctsvc_get_next_ver(zone_name), (int)time(NULL), contact_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
if (is_default) {
if (number_id) {
- __ctsvc_db_number_update_default(number_id, contact_id, is_default, is_primary_default);
+ __ctsvc_db_number_update_default(zone_name, number_id, contact_id, is_default, is_primary_default);
}
else if (is_primary_default) {
int default_number_id = 0;
- default_number_id = __ctsvc_db_number_get_person_default_number(person_id);
+ default_number_id = __ctsvc_db_number_get_person_default_number(zone_name, person_id);
if (default_number_id)
- __ctsvc_db_number_set_primary_default(default_number_id, true);
+ __ctsvc_db_number_set_primary_default(zone_name, default_number_id, true);
else
- __ctsvc_db_number_update_person_has_phonenumber(person_id, false);
+ __ctsvc_db_number_update_person_has_phonenumber(zone_name, person_id, false);
}
- ctsvc_contact_update_display_name(contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NUMBER);
+ ctsvc_contact_update_display_name(zone_name, contact_id, CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NUMBER);
}
- ctsvc_set_contact_noti();
- ctsvc_set_person_noti();
+ ctsvc_set_contact_noti(zone_name);
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_number_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_number_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int len;
int ret;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_number_get_records_with_query( contacts_query_h query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_number_get_records_with_query(const char *zone_name, contacts_query_h query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ret = ctsvc_record_set_projection_flags(record, s_query->projection,
s_query->projection_count, s_query->property_count);
- if(CONTACTS_ERROR_NONE != ret)
+ if (CONTACTS_ERROR_NONE != ret)
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_NUMBER_LABEL:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(number->label);
number->label = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_NUMBER_NUMBER:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(number->number);
number->number = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_NUMBER_NUMBER_FILTER:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(number->lookup);
number->lookup = SAFE_STRDUP(temp);
break;
default:
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-
-//static int __ctsvc_db_number_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_number_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_number_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_normalize.h"
#include "ctsvc_db_plugin_number_helper.h"
#include "ctsvc_record.h"
#include "ctsvc_notification.h"
-#include "ctsvc_setting.h"
+#include "ctsvc_server_setting.h"
#include "ctsvc_localize_utils.h"
#ifdef ENABLE_LOG_FEATURE
-#include "ctsvc_phonelog.h"
-#endif // ENABLE_LOG_FEATURE
+#include "ctsvc_server_phonelog.h"
+#endif /* ENABLE_LOG_FEATURE */
-static int __ctsvc_db_number_reset_default(int number_id, int contact_id)
+static int __ctsvc_db_number_reset_default(const char *zone_name, int number_id, int contact_id)
{
int ret;
char query[CTS_SQL_MAX_LEN] = {0};
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_DATA" SET is_default = 0, is_primary_default = 0 WHERE id != %d AND contact_id = %d AND datatype = %d",
number_id, contact_id, CTSVC_DATA_NUMBER);
- ret = ctsvc_query_exec(query);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
-int ctsvc_db_number_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id)
+int ctsvc_db_number_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id)
{
int ret;
int number_id;
"VALUES(%d, %d, %d, %d, %d, ?, ?, ?, ?, ?)",
contact_id, is_my_profile, CTSVC_DATA_NUMBER, number->is_default, number->type);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
if (number->label)
ctsvc_stmt_bind_text(stmt, 1, number->label);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
- number_id = ctsvc_db_get_last_insert_id();
+ number_id = ctsvc_db_get_last_insert_id(zone_name);
if (id)
*id = number_id;
ctsvc_stmt_finalize(stmt);
if (ctsvc_record_check_property_flag((ctsvc_record_s *)record, _contacts_number.is_default, CTSVC_PROPERTY_FLAG_DIRTY)) {
if (number->is_default)
- __ctsvc_db_number_reset_default(number_id, contact_id);
+ __ctsvc_db_number_reset_default(zone_name, number_id, contact_id);
}
- if (!is_my_profile) {
+ if (false == is_my_profile) {
#ifdef ENABLE_LOG_FEATURE
- // updata phonelog
+ /* updata phonelog */
int person_id = -1;
snprintf(query, sizeof(query),
"SELECT person_id, data3 FROM "CTS_TABLE_CONTACTS", "CTS_TABLE_DATA" "
"ON "CTS_TABLE_CONTACTS".contact_id = "CTS_TABLE_DATA".contact_id "
"WHERE data.id = %d", number_id);
- ret = ctsvc_query_get_first_int_result(query, &person_id);
- if (person_id > 0)
- ctsvc_db_phone_log_update_person_id(number->number, -1, person_id, false);
-#endif // ENABLE_LOG_FEATURE
- ctsvc_set_number_noti();
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &person_id);
+ if (0 < person_id)
+ ctsvc_db_phone_log_update_person_id(zone_name, number->number, -1, person_id, false);
+#endif /* ENABLE_LOG_FEATURE */
+ ctsvc_set_number_noti(zone_name);
}
return CONTACTS_ERROR_NONE;
}
ctsvc_number_s *number;
ret = contacts_record_create(_contacts_number._uri, (contacts_record_h *)&number);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
number->id = ctsvc_stmt_get_int(stmt, start_count++);
number->contact_id = ctsvc_stmt_get_int(stmt, start_count++);
temp = ctsvc_stmt_get_text(stmt, start_count++);
number->number = SAFE_STRDUP(temp);
temp = ctsvc_stmt_get_text(stmt, start_count++);
- number->lookup = SAFE_STRDUP(temp); // data4 : minmatch
+ number->lookup = SAFE_STRDUP(temp); /* data4 : minmatch */
temp = ctsvc_stmt_get_text(stmt, start_count++);
- number->normalized = SAFE_STRDUP(temp); // data5 : normalized number
+ number->normalized = SAFE_STRDUP(temp); /* data5 : normalized number */
temp = ctsvc_stmt_get_text(stmt, start_count++);
- number->cleaned = SAFE_STRDUP(temp); // data6 : cleaned number
+ number->cleaned = SAFE_STRDUP(temp); /* data6 : cleaned number */
*record = (contacts_record_h)number;
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_number_update(contacts_record_h record, bool is_my_profile)
+int ctsvc_db_number_update(const char *zone_name, contacts_record_h record, bool is_my_profile)
{
int id;
int ret = CONTACTS_ERROR_NONE;
char query[CTS_SQL_MAX_LEN] = {0};
#ifdef ENABLE_LOG_FEATURE
- // for updating phonelog
+ /* for updating phonelog */
char *pre_number = NULL;
int person_id = -1;
cts_stmt stmt = NULL;
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
- RETVM_IF(!number->id, CONTACTS_ERROR_INVALID_PARAMETER, "number of contact has no ID.");
+ RETVM_IF(0 == number->id, CONTACTS_ERROR_INVALID_PARAMETER, "number of contact has no ID.");
RETVM_IF(CTSVC_PROPERTY_FLAG_DIRTY != (number->base.property_flag & CTSVC_PROPERTY_FLAG_DIRTY),
CONTACTS_ERROR_NONE, "No update");
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE id = %d", number->id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
RETV_IF(ret != CONTACTS_ERROR_NONE, ret);
if (ctsvc_record_check_property_flag((ctsvc_record_s *)record, _contacts_number.is_default, CTSVC_PROPERTY_FLAG_DIRTY)) {
if (number->is_default)
- __ctsvc_db_number_reset_default(number->id, number->contact_id);
+ __ctsvc_db_number_reset_default(zone_name, number->id, number->contact_id);
}
do {
char query_set[CTS_SQL_MAX_LEN] = {0};
#ifdef ENABLE_LOG_FEATURE
- // updata phonelog
+ /* updata phonelog */
snprintf(query, sizeof(query),
"SELECT person_id, data3 FROM "CTS_TABLE_CONTACTS", "CTS_TABLE_DATA" "
"ON "CTS_TABLE_CONTACTS".contact_id = "CTS_TABLE_DATA".contact_id "
"WHERE data.id = %d", number->id);
- ret = ctsvc_query_prepare(query, &stmt);
- if (stmt != NULL) {
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ if (stmt) {
ret = ctsvc_stmt_step(stmt);
if (ret == 1) {
person_id = ctsvc_stmt_get_int(stmt, 0);
}
else
WARN("ctsvc_query_prepare fail (%d)", ret);
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
char clean_num[SAFE_STRLEN(number->number) + 1];
ret = ctsvc_clean_number(number->number, clean_num, sizeof(clean_num), true);
#ifdef ENABLE_LOG_FEATURE
if (ctsvc_record_check_property_flag((ctsvc_record_s *)record, CTSVC_PROPERTY_NUMBER_TYPE, CTSVC_PROPERTY_FLAG_DIRTY)) {
if (person_id <= 0) {
- // updata phonelog
+ /* updata phonelog */
snprintf(query, sizeof(query),
"SELECT person_id, data3 FROM "CTS_TABLE_CONTACTS", "CTS_TABLE_DATA" "
"ON "CTS_TABLE_CONTACTS".contact_id = "CTS_TABLE_DATA".contact_id "
"WHERE data.id = %d", number->id);
- ret = ctsvc_query_prepare(query, &stmt);
- if (stmt != NULL) {
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ if (stmt) {
ret = ctsvc_stmt_step(stmt);
if (ret == 1) {
person_id = ctsvc_stmt_get_int(stmt, 0);
WARN("ctsvc_query_prepare fail (%d)", ret);
}
}
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_DATA, number->id))) break;
+ if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(zone_name, set, bind_text, CTS_TABLE_DATA, number->id))) break;
- if (!is_my_profile)
- ctsvc_set_number_noti();
+ if (false == is_my_profile)
+ ctsvc_set_number_noti(zone_name);
#ifdef ENABLE_LOG_FEATURE
- // update phone log
- if (person_id > 0 && pre_number != NULL)
- ctsvc_db_phone_log_update_person_id(pre_number, person_id, -1, false);
- if (person_id > 0)
- ctsvc_db_phone_log_update_person_id(number->number, -1, person_id, false);
+ /* update phone log */
+ if (0 < person_id && pre_number)
+ ctsvc_db_phone_log_update_person_id(zone_name, pre_number, person_id, -1, false);
+ if (0 < person_id)
+ ctsvc_db_phone_log_update_person_id(zone_name, number->number, -1, person_id, false);
ctsvc_stmt_finalize(stmt);
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
return ret;
}
-int ctsvc_db_number_delete(int id, bool is_my_profile)
+int ctsvc_db_number_delete(const char *zone_name, int id, bool is_my_profile)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
#ifdef ENABLE_LOG_FEATURE
- // for updating phonelog
+ /* for updating phonelog */
char *pre_number = NULL;
int person_id = -1;
cts_stmt stmt = NULL;
"SELECT person_id, data3 FROM "CTS_TABLE_CONTACTS", "CTS_TABLE_DATA" "
"ON "CTS_TABLE_CONTACTS".contact_id = "CTS_TABLE_DATA".contact_id "
"WHERE data.id = %d", id);
- ret = ctsvc_query_prepare(query, &stmt);
- if (stmt != NULL) {
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ if (stmt) {
ret = ctsvc_stmt_step(stmt);
if (ret == 1) {
person_id = ctsvc_stmt_get_int(stmt, 0);
}
else
WARN("ctsvc_query_prepare fail (%d)", ret);
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_DATA" WHERE id = %d AND datatype = %d",
id, CTSVC_DATA_NUMBER);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
#ifdef ENABLE_LOG_FEATURE
ctsvc_stmt_finalize(stmt);
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
return ret;
}
#ifdef ENABLE_LOG_FEATURE
- // update phone log
- if (person_id > 0 && pre_number != NULL)
- ctsvc_db_phone_log_update_person_id(pre_number, person_id, -1, false);
+ /* update phone log */
+ if (0 < person_id && pre_number)
+ ctsvc_db_phone_log_update_person_id(zone_name, pre_number, person_id, -1, false);
ctsvc_stmt_finalize(stmt);
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
- if (!is_my_profile)
- ctsvc_set_number_noti();
+ if (false == is_my_profile)
+ ctsvc_set_number_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
#define __CTSVC_DB_PLUGIN_NUMBER_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
-int ctsvc_db_number_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id);
-int ctsvc_db_number_update(contacts_record_h record, bool is_my_profile);
-int ctsvc_db_number_delete(int id, bool is_my_profile);
+int ctsvc_db_number_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id);
+int ctsvc_db_number_update(const char *zone_name, contacts_record_h record, bool is_my_profile);
+int ctsvc_db_number_delete(const char *zone_name, int id, bool is_my_profile);
int ctsvc_db_number_get_value_from_stmt(cts_stmt stmt, contacts_record_h *record, int start_count);
-#endif // __CTSVC_DB_PLUGIN_NUMBER_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_NUMBER_HELPER_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_plugin_person_helper.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_access_control.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_list.h"
#include "ctsvc_db_query.h"
#include "ctsvc_record.h"
#include "ctsvc_server_change_subject.h"
#endif
-static int __ctsvc_db_person_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_person_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_person_update_record( contacts_record_h record );
-static int __ctsvc_db_person_delete_record( int id );
-static int __ctsvc_db_person_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_person_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_person_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_person_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_person_delete_records(int ids[], int count);
+static int __ctsvc_db_person_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_person_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_person_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_person_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_person_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_person_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_person = {
.is_query_only = false,
.delete_record = __ctsvc_db_person_delete_record,
.get_all_records = __ctsvc_db_person_get_all_records,
.get_records_with_query = __ctsvc_db_person_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_person_insert_records,
- .update_records = NULL,//__ctsvc_db_person_update_records,
- .delete_records = NULL,//__ctsvc_db_person_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_person_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_person_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
CTS_ERR("Can not insert person record directly");
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-static int __ctsvc_db_person_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_person_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"LEFT JOIN "CTS_TABLE_CONTACTS" "
"ON (name_contact_id = contacts.contact_id AND contacts.deleted = 0) "
"WHERE persons.person_id = %d",
- ctsvc_get_display_column(), ctsvc_get_sort_name_column(), id);
+ ctsvc_get_display_column(zone_name), ctsvc_get_sort_name_column(zone_name), id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
- if( 1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ if (1 /*CTS_TRUE*/ != ret) {
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
ret = ctsvc_db_person_create_record_from_stmt(stmt, &record);
ctsvc_stmt_finalize(stmt);
- if(CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_db_person_create_record_from_stmt() Failed(%d)", ret);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_db_person_create_record_from_stmt() Fail(%d)", ret);
return ret;
}
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_person_update_record( contacts_record_h record )
+static int __ctsvc_db_person_update_record(const char *zone_name, contacts_record_h record)
{
int ret, i, len;
int person_id;
RETV_IF(NULL == person, CONTACTS_ERROR_INVALID_PARAMETER);
RETV_IF(person->person_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER);
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT person_id FROM "CTS_TABLE_PERSONS" WHERE person_id = %d", person->person_id);
- ret = ctsvc_query_get_first_int_result(query, &person_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &person_id);
if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_query_get_first_int_result Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
if (ctsvc_record_check_property_flag((ctsvc_record_s *)person, _contacts_person.display_contact_id, CTSVC_PROPERTY_FLAG_DIRTY)) {
- // check name_contact_id validation
+ /* check name_contact_id validation */
char *temp;
char check_query[CTS_SQL_MIN_LEN] = {0};
snprintf(check_query, sizeof(check_query), "SELECT contact_id, %s FROM "CTS_TABLE_CONTACTS
" WHERE person_id = %d AND contact_id = %d AND deleted = 0",
- ctsvc_get_display_column(), person->person_id, person->name_contact_id);
- ret = ctsvc_query_prepare(check_query, &stmt);
+ ctsvc_get_display_column(zone_name), person->person_id, person->name_contact_id);
+ ret = ctsvc_query_prepare(zone_name, check_query, &stmt);
if (NULL == stmt) {
- CTS_ERR("ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
- if ( 1 != ret) {
- if ( CONTACTS_ERROR_NONE == ret) {
+ if (1 != ret) {
+ if (CONTACTS_ERROR_NONE == ret) {
CTS_ERR("Invalid parameter : the name_contact_id(%d) is not linked with person_id(%d)",
person->name_contact_id, person->person_id);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
else {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
}
ctsvc_stmt_finalize(stmt);
}
- // update favorite
+ /* update favorite */
index_favorite = CTSVC_PROPERTY_PERSON_IS_FAVORITE & 0x000000FF;
if (person->base.properties_flags &&
- CTSVC_PROPERTY_FLAG_DIRTY == person->base.properties_flags[index_favorite]) {
- ret = ctsvc_db_person_set_favorite(person->person_id, person->is_favorite, true);
+ ctsvc_record_check_property_flag((ctsvc_record_s *)person, index_favorite, CTSVC_PROPERTY_FLAG_DIRTY)) {
+ ret = ctsvc_db_person_set_favorite(zone_name, person->person_id, person->is_favorite, true);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_db_person_set_favorite() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_db_person_set_favorite() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- person->base.properties_flags[index_favorite] = 0;
- ctsvc_set_contact_noti();
+ person->base.properties_flags[index_favorite] &= 0xFFFFFFFD; /* remove dirty bit */
+ ctsvc_set_contact_noti(zone_name);
}
do {
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
if (NULL == set || '\0' == *set)
break;
- snprintf(query_set, sizeof(query_set), "%s, changed_ver=%d", set, ctsvc_get_next_ver());
+ len = snprintf(query_set, sizeof(query_set), "%s, changed_ver=%d", set, ctsvc_get_next_ver(zone_name));
+
snprintf(query, sizeof(query), "UPDATE %s SET %s WHERE person_id = %d", CTS_TABLE_PERSONS, query_set, person->person_id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
break;
}
}
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
break;
}
} while (0);
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
CONTACTS_FREE(set);
if (bind_text) {
return ret;
}
- len = snprintf(contact_query, sizeof(contact_query), "UPDATE "CTS_TABLE_CONTACTS" SET changed_ver=%d ", ctsvc_get_next_ver());
+ len = snprintf(contact_query, sizeof(contact_query), "UPDATE "CTS_TABLE_CONTACTS" SET changed_ver=%d ", ctsvc_get_next_ver(zone_name));
if (ctsvc_record_check_property_flag((ctsvc_record_s *)person, _contacts_person.ringtone_path, CTSVC_PROPERTY_FLAG_DIRTY))
len += snprintf(contact_query + len, sizeof(contact_query) - len, ", ringtone_path=? ");
if (ctsvc_record_check_property_flag((ctsvc_record_s *)person, _contacts_person.vibration, CTSVC_PROPERTY_FLAG_DIRTY))
len += snprintf(contact_query + len, sizeof(contact_query) - len, ", message_alert=? ");
snprintf(contact_query+len, sizeof(contact_query)-len, " WHERE person_id=%d AND deleted = 0", person->person_id);
- ret = ctsvc_query_prepare(contact_query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, contact_query, &stmt);
if (NULL == stmt) {
- CTS_ERR("ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
CONTACTS_FREE(set);
if (bind_text) {
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
CONTACTS_FREE(set);
if (bind_text) {
g_slist_free(bind_text);
}
- // update person display_name
+ /* update person display_name */
if (display_name) {
char *temp = NULL;
person->display_name = SAFE_STRDUP(display_name);
person->display_name_index = strdup(temp);
free(temp);
- // TODO : update name primary_default??
+ /* TODO : update name primary_default?? */
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
#ifdef _CONTACTS_IPC_SERVER
- ctsvc_change_subject_add_changed_person_id(CONTACTS_CHANGE_UPDATED, person->person_id);
+ ctsvc_change_subject_add_changed_person_id(zone_name, CONTACTS_CHANGE_UPDATED, person->person_id);
#endif
- ret = ctsvc_end_trans(true);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_person_delete_record( int id )
+static int __ctsvc_db_person_delete_record(const char *zone_name, int id)
{
int ret, rel_changed;
int person_id;
int *addressbook_ids = NULL;
int count;
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "DB error : ctsvc_begin_trans() Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT person_id FROM "CTS_TABLE_PERSONS" WHERE person_id = %d", id);
- ret = ctsvc_query_get_first_int_result(query, &person_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &person_id);
if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_query_get_first_int_result Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- version = ctsvc_get_next_ver();
+ version = ctsvc_get_next_ver(zone_name);
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_GROUPS" SET member_changed_ver=%d "
"WHERE group_id IN (SELECT distinct group_id "
"ON C.contact_id=R.contact_id AND R.deleted = 0 AND C.deleted = 0 "
"WHERE person_id = %d)",
version, id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- rel_changed = ctsvc_db_change();
+ rel_changed = ctsvc_db_change(zone_name);
- ret = ctsvc_get_write_permitted_addressbook_ids(&addressbook_ids, &count);
+ ret = ctsvc_get_write_permitted_addressbook_ids(zone_name, &addressbook_ids, &count);
if (CONTACTS_ERROR_INTERNAL == ret) {
- CTS_ERR("ctsvc_get_write_permitted_addressbook_ids() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_get_write_permitted_addressbook_ids() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (addressbook_ids && count > 0) {
+ if (addressbook_ids && 0 < count) {
int i;
int len = snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_CONTACTS" SET deleted = 1, person_id = 0, changed_ver = %d "
version, id);
for (i=0;i<count;i++) {
- if(i == 0)
+ if (i == 0)
len += snprintf(query+len, sizeof(query) + len, "addressbook_id = %d ", addressbook_ids[i]);
else
len += snprintf(query+len, sizeof(query) + len, "OR addressbook_id = %d ", addressbook_ids[i]);
}
- len += snprintf(query+len, sizeof(query)-len, " ) ");
+ len += snprintf(query+len, sizeof(query)-len, ") ");
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
free(addressbook_ids);
return ret;
}
}
free(addressbook_ids);
- // access control logic should be enabled
+ /* access control logic should be enabled */
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_CONTACTS" SET person_id = 0, changed_ver = %d WHERE person_id = %d",
version, id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- // images are deleted by db trigger callback function in ctsvc_db_image_delete_callback
+ /*
+ * images are deleted by db trigger callback function
+ * in ctsvc_db_image_delete_callback
+ */
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_PERSONS" WHERE person_id = %d", id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_contact_noti();
- ctsvc_set_person_noti();
- if (rel_changed > 0)
- ctsvc_set_group_rel_noti();
+ ctsvc_set_contact_noti(zone_name);
+ ctsvc_set_person_noti(zone_name);
+ if (0 < rel_changed)
+ ctsvc_set_group_rel_noti(zone_name);
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(zone_name, true);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_person_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_person_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int ret;
int len;
"has_email, "
"is_favorite "
"FROM "CTSVC_DB_VIEW_PERSON,
- ctsvc_get_display_column(), ctsvc_get_sort_name_column());
+ ctsvc_get_display_column(zone_name), ctsvc_get_sort_name_column(zone_name));
- len += snprintf(query+len, sizeof(query)-len, " ORDER BY %s", ctsvc_get_sort_column());
+ len += snprintf(query+len, sizeof(query)-len, " ORDER BY %s", ctsvc_get_sort_column(zone_name));
if (0 != limit) {
len += snprintf(query+len, sizeof(query)-len, " LIMIT %d", limit);
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
}
ret = ctsvc_db_person_create_record_from_stmt(stmt, &record);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_person_create_record_from_stmt() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_db_person_create_record_from_stmt() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_person_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_person_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
person = (ctsvc_person_s*)record;
if (0 == s_query->projection_count)
field_count = s_query->property_count;
- else
- {
+ else {
field_count = s_query->projection_count;
- if( CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, s_query->projection, s_query->projection_count, s_query->property_count) )
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, s_query->projection, s_query->projection_count, s_query->property_count)) {
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_PERSON_DISPLAY_NAME:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(person->display_name);
person->display_name = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(person->display_name_index);
person->display_name_index = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID:
break;
case CTSVC_PROPERTY_PERSON_RINGTONE:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(person->ringtone_path);
person->ringtone_path = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL:
temp = ctsvc_stmt_get_text(stmt, i);
if (temp && *temp) {
snprintf(full_path, sizeof(full_path), "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, temp);
+ free(person->image_thumbnail_path);
person->image_thumbnail_path = strdup(full_path);
}
break;
break;
case CTSVC_PROPERTY_PERSON_ADDRESSBOOK_IDS:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(person->addressbook_ids);
person->addressbook_ids = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PERSON_VIBRATION:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(person->vibration);
person->vibration = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PERSON_STATUS:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(person->status);
person->status = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PERSON_MESSAGE_ALERT:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(person->message_alert);
person->message_alert = SAFE_STRDUP(temp);
break;
default:
return CONTACTS_ERROR_NONE;
}
-#if 0
-static int __ctsvc_db_person_insert_records(const contacts_list_h in_list, int **ids)
-{
- return CONTACTS_ERROR_NONE;
-}
-
-static int __ctsvc_db_person_update_records(const contacts_list_h in_list)
-{
- return CONTACTS_ERROR_NONE;
-}
-
-static int __ctsvc_db_person_delete_records(int ids[], int count)
-{
- return CONTACTS_ERROR_NONE;
-}
-#endif
* limitations under the License.
*
*/
-#include <vconf.h>
-#include <vconf-keys.h>
-
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_db_plugin_person_helper.h"
#include "ctsvc_localize.h"
#include "ctsvc_localize_utils.h"
#include "ctsvc_normalize.h"
#include "ctsvc_db_init.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_query.h"
#include "ctsvc_record.h"
#include "ctsvc_notification.h"
person = (ctsvc_person_s*)*record;
int i;
- for(i=0;i<projection_count;i++) {
+ for (i=0;i<projection_count;i++) {
char *temp;
int property_id = projection[i];
break;
case CTSVC_PROPERTY_PERSON_DISPLAY_NAME:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(person->display_name);
person->display_name = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(person->display_name_index);
person->display_name_index = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID:
break;
case CTSVC_PROPERTY_PERSON_RINGTONE:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(person->ringtone_path);
person->ringtone_path = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL:
temp = ctsvc_stmt_get_text(stmt, i);
if (temp && *temp) {
snprintf(full_path, sizeof(full_path), "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, temp);
+ free(person->image_thumbnail_path);
person->image_thumbnail_path = strdup(full_path);
}
break;
case CTSVC_PROPERTY_PERSON_VIBRATION:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(person->vibration);
person->vibration = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PERSON_MESSAGE_ALERT:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(person->message_alert);
person->message_alert = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PERSON_STATUS:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(person->status);
person->status = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PERSON_IS_FAVORITE:
break;
case CTSVC_PROPERTY_PERSON_ADDRESSBOOK_IDS:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(person->addressbook_ids);
person->addressbook_ids = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PERSON_FAVORITE_PRIORITY:
{
- // TODO: Fixme (BS)
+ /* TODO: Fixme (BS) */
int value = ctsvc_stmt_get_int(stmt, i);
- value++; // fix warning
+ value++; /* fix warning */
}
break;
- // ASSERT_NOT_REACHED("Invalid parameter : property_id(0x%0x) is not supported in projection value(person)", property_id);
- // return CONTACTS_ERROR_INVALID_PARAMETER;
default:
ASSERT_NOT_REACHED("Invalid parameter : property_id(0x%0x) is not supported in value(person)", property_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
ctsvc_query_s *s_query = (ctsvc_query_s *)query;
- if (0 == s_query->projection_count)
- {
- unsigned int *projection = malloc(sizeof(unsigned int)*s_query->property_count);
- RETVM_IF(NULL == projection, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
+ if (0 == s_query->projection_count) {
int i;
- for(i=0;i<s_query->property_count;i++)
- {
+ unsigned int *projection = malloc(sizeof(unsigned int)*s_query->property_count);
+ if (NULL == projection) {
+ CTS_ERR("malloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+
+ for (i=0;i<s_query->property_count;i++) {
projection[i] = s_query->properties[i].property_id;
}
i = 0;
ret = contacts_record_create(_contacts_person._uri, record);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
person = (ctsvc_person_s *)*record;
person->person_id = ctsvc_stmt_get_int(stmt, i++);
return src+pos;
}
-int ctsvc_db_person_set_favorite(int person_id, bool set, bool propagate)
+int ctsvc_db_person_set_favorite(const char *zone_name, int person_id, bool set, bool propagate)
{
int ret;
double prio = 0.0;
snprintf(query, sizeof(query),
"SELECT MAX(favorite_prio) FROM "CTS_TABLE_FAVORITES);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ == ret) {
prio = ctsvc_stmt_get_dbl(stmt, 0);
}
else if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
"DELETE FROM "CTS_TABLE_FAVORITES" WHERE person_id = %d", person_id);
}
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_CONTACTS" SET is_favorite = %d "
"WHERE person_id=%d AND deleted = 0", set?1:0, person_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
return ret;
}
}
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_insert_person(contacts_record_h record)
+int ctsvc_db_insert_person(const char *zone_name, contacts_record_h record)
{
int ret, index;
cts_stmt stmt = NULL;
"WHERE contact_id=%d "
"ORDER BY timestamp DESC LIMIT 1",
CTS_TABLE_ACTIVITIES, contact->id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
if (1 == ctsvc_stmt_step(stmt))
status = SAFE_STRDUP(ctsvc_stmt_get_text(stmt, 0));
ctsvc_stmt_finalize(stmt);
- version = ctsvc_get_next_ver();
+ version = ctsvc_get_next_ver(zone_name);
snprintf(query, sizeof(query),
"INSERT INTO "CTS_TABLE_PERSONS"(name_contact_id, created_ver, changed_ver, "
"has_phonenumber, has_email, ringtone_path, vibration, message_alert, status, "
contact->id, version, version,
contact->has_phonenumber, contact->has_email, contact->addressbook_id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
free(status);
return ret;
}
- if(contact->ringtone_path)
+ if (contact->ringtone_path)
ctsvc_stmt_bind_text(stmt, 1, contact->ringtone_path);
- if(contact->vibration)
+ if (contact->vibration)
ctsvc_stmt_bind_text(stmt, 2, contact->vibration);
- if(contact->message_alert)
+ if (contact->message_alert)
ctsvc_stmt_bind_text(stmt, 3, contact->message_alert);
- if(status)
+ if (status)
ctsvc_stmt_bind_text(stmt, 4, status);
- if(contact->image_thumbnail_path)
+ if (contact->image_thumbnail_path)
ctsvc_stmt_bind_text(stmt, 5, __ctsvc_get_image_filename(contact->image_thumbnail_path));
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
free(status);
return ret;
}
- index = ctsvc_db_get_last_insert_id();
+ index = ctsvc_db_get_last_insert_id(zone_name);
ctsvc_stmt_finalize(stmt);
"UPDATE "CTS_TABLE_DATA" SET is_primary_default = 1 "
"WHERE is_default = 1 AND contact_id = %d AND is_my_profile = 0", contact->id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec Failed(%d)", ret);
+ CTS_ERR("ctsvc_query_exec Fail(%d)", ret);
free(status);
return ret;
}
- // set favorite
+ /* set favorite */
if (contact->is_favorite) {
- ret = ctsvc_db_person_set_favorite(index, contact->is_favorite, false);
+ ret = ctsvc_db_person_set_favorite(zone_name, index, contact->is_favorite, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_db_person_set_favorite() Failed(%d)", ret);
+ CTS_ERR("ctsvc_db_person_set_favorite() Fail(%d)", ret);
return ret;
}
}
free(status);
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
#ifdef _CONTACTS_IPC_SERVER
- ctsvc_change_subject_add_changed_person_id(CONTACTS_CHANGE_INSERTED, index);
+ ctsvc_change_subject_add_changed_person_id(zone_name, CONTACTS_CHANGE_INSERTED, index);
#endif
return index;
}
-static inline int __ctsvc_db_update_person_default(int person_id, int datatype)
+static inline int __ctsvc_db_update_person_default(const char *zone_name, int person_id, int datatype)
{
int ret, data_id;
cts_stmt stmt = NULL;
"WHERE C.person_id=%d AND D.datatype=%d AND is_primary_default=1 AND D.is_my_profile = 0",
person_id, datatype);
- ret = ctsvc_query_get_first_int_result(query, &data_id);
- if (CONTACTS_ERROR_NO_DATA == ret ) {
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &data_id);
+ if (CONTACTS_ERROR_NO_DATA == ret) {
snprintf(query, sizeof(query),
"SELECT D.id, D.data3 FROM "CTS_TABLE_CONTACTS" C, "CTS_TABLE_DATA" D "
"ON C.contact_id = D.contact_id AND C.deleted = 0 "
"WHERE C.person_id=%d AND D.datatype=%d AND D.is_default=1 AND D.is_my_profile = 0 ORDER BY D.id",
person_id, datatype);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 == ret) {
"UPDATE "CTS_TABLE_DATA" SET is_primary_default=1 WHERE id=%d"
,data_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec Failed(%d)", ret);
+ CTS_ERR("ctsvc_query_exec Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
if (image_thumbnail_path) {
snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_PERSONS" SET image_thumbnail_path=? WHERE person_id=%d", person_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ctsvc_stmt_bind_text(stmt, 1, image_thumbnail_path);
ret = ctsvc_stmt_step(stmt);
ctsvc_stmt_finalize(stmt);
free(image_thumbnail_path);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step Fail(%d)", ret);
return ret;
}
}
return CONTACTS_ERROR_NONE;
}
-static bool __ctsvc_get_has_column(int person_id, const char *culumn)
+static bool __ctsvc_get_has_column(const char *zone_name, int person_id, const char *culumn)
{
int ret;
int contact_count = 0;
"WHERE person_id=%d AND %s=1 AND deleted = 0",
person_id, culumn);
- ret = ctsvc_query_get_first_int_result(query, &contact_count);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &contact_count);
RETV_IF(CONTACTS_ERROR_NONE != ret, false);
if (contact_count)
return false;
}
-static int __ctsvc_get_thumbnail_contact_id(int person_id)
+static int __ctsvc_get_thumbnail_contact_id(const char *zone_name, int person_id)
{
int ret;
int contact_id = 0;
"ON C.contact_id = D.contact_id AND C.deleted = 0 "
"WHERE C.person_id=%d AND D.datatype=%d AND is_primary_default=1 AND D.is_my_profile = 0",
person_id, CTSVC_DATA_IMAGE);
- ret = ctsvc_query_get_first_int_result(query, &contact_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &contact_id);
RETV_IF(CONTACTS_ERROR_NONE != ret, -1);
return contact_id;
}
-int ctsvc_db_update_person(contacts_record_h record)
+int ctsvc_db_update_person(const char *zone_name, contacts_record_h record)
{
int ret, i=1, len=0;
cts_stmt stmt = NULL;
int person_id = 0;
int is_favorite = 0;
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
- __ctsvc_db_update_person_default(contact->person_id, CTSVC_DATA_NUMBER);
- __ctsvc_db_update_person_default(contact->person_id, CTSVC_DATA_EMAIL);
- __ctsvc_db_update_person_default(contact->person_id, CTSVC_DATA_IMAGE);
+ __ctsvc_db_update_person_default(zone_name, contact->person_id, CTSVC_DATA_NUMBER);
+ __ctsvc_db_update_person_default(zone_name, contact->person_id, CTSVC_DATA_EMAIL);
+ __ctsvc_db_update_person_default(zone_name, contact->person_id, CTSVC_DATA_IMAGE);
- has_phonenumber = __ctsvc_get_has_column(contact->person_id, "has_phonenumber");
- has_email = __ctsvc_get_has_column(contact->person_id, "has_email");
- thumbnail_contact_id = __ctsvc_get_thumbnail_contact_id(contact->person_id);
+ has_phonenumber = __ctsvc_get_has_column(zone_name, contact->person_id, "has_phonenumber");
+ has_email = __ctsvc_get_has_column(zone_name, contact->person_id, "has_email");
+ thumbnail_contact_id = __ctsvc_get_thumbnail_contact_id(zone_name, contact->person_id);
len = snprintf(query, sizeof(query),
"UPDATE "CTS_TABLE_PERSONS" SET changed_ver=%d, has_phonenumber=%d, has_email=%d ",
- ctsvc_get_next_ver(), has_phonenumber, has_email);
+ ctsvc_get_next_ver(zone_name), has_phonenumber, has_email);
if (ctsvc_record_check_property_flag((ctsvc_record_s *)record, _contacts_contact.ringtone_path, CTSVC_PROPERTY_FLAG_DIRTY))
len += snprintf(query+len, sizeof(query)-len, ", ringtone_path=?");
snprintf(query+len, sizeof(query)-len,
" WHERE person_id=%d", contact->person_id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ctsvc_stmt_finalize(stmt);
- // update favorite
+ /* update favorite */
snprintf(query, sizeof(query),
"SELECT is_favorite FROM "CTS_TABLE_CONTACTS" WHERE contact_id =%d ", contact->id);
- ret = ctsvc_query_get_first_int_result(query, &is_favorite);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &is_favorite);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_query_get_first_int_result() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_get_first_int_result() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
snprintf(query, sizeof(query),
"SELECT person_id FROM "CTS_TABLE_FAVORITES" WHERE person_id =%d ", contact->person_id);
- ret = ctsvc_query_get_first_int_result(query, &person_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &person_id);
if (CONTACTS_ERROR_NO_DATA == ret && is_favorite) {
- ret = ctsvc_db_person_set_favorite(contact->person_id, true, false);
+ ret = ctsvc_db_person_set_favorite(zone_name, contact->person_id, true, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_db_person_set_favorite() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_db_person_set_favorite() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
}
- else if (CONTACTS_ERROR_NONE == ret && !is_favorite) {
+ else if (CONTACTS_ERROR_NONE == ret && false == is_favorite) {
snprintf(query, sizeof(query),
"SELECT person_id FROM "CTS_TABLE_CONTACTS" WHERE person_id =%d AND is_favorite = 1", contact->person_id);
- ret = ctsvc_query_get_first_int_result(query, &person_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &person_id);
if (CONTACTS_ERROR_NO_DATA == ret) {
- ret = ctsvc_db_person_set_favorite(contact->person_id, false, false);
+ ret = ctsvc_db_person_set_favorite(zone_name, contact->person_id, false, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_db_person_set_favorite() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_db_person_set_favorite() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
}
else if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_get_first_int_result() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_get_first_int_result() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
}
else if (ret < CONTACTS_ERROR_NONE && CONTACTS_ERROR_NO_DATA != ret) {
- CTS_ERR("ctsvc_query_get_first_int_result() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_get_first_int_result() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
#ifdef _CONTACTS_IPC_SERVER
- ctsvc_change_subject_add_changed_person_id(CONTACTS_CHANGE_UPDATED, contact->person_id);
+ ctsvc_change_subject_add_changed_person_id(zone_name, CONTACTS_CHANGE_UPDATED, contact->person_id);
#endif
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-// This function will return group letter of the person
+/* This function will return group letter of the person */
void ctsvc_db_normalize_str_callback(sqlite3_context * context,
int argc, sqlite3_value ** argv)
{
char *dest = NULL;
ret = ctsvc_normalize_index(display_name, &dest);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("ctsvc_normalize_index() Failed(%d)", ret);
+ CTS_ERR("ctsvc_normalize_index() Fail(%d)", ret);
sqlite3_result_null(context);
return;
}
#define __CTSVC_DB_PLUGIN_PERSON_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
#define ADDRESSBOOK_ID_DELIM " "
-int ctsvc_db_insert_person(contacts_record_h contact);
-int ctsvc_db_update_person(contacts_record_h contact);
+int ctsvc_db_insert_person(const char *zone_name, contacts_record_h contact);
+int ctsvc_db_update_person(const char *zone_name, contacts_record_h contact);
int ctsvc_db_person_create_record_from_stmt(cts_stmt stmt, contacts_record_h *record);
int ctsvc_db_person_create_record_from_stmt_with_query(cts_stmt stmt, contacts_query_h query, contacts_record_h *record);
int ctsvc_db_person_create_record_from_stmt_with_projection(cts_stmt stmt, unsigned int *projection, int projection_count, contacts_record_h *record);
void ctsvc_db_normalize_str_callback(sqlite3_context * context, int argc, sqlite3_value ** argv);
-int ctsvc_db_person_set_favorite(int person_id, bool set, bool propagate);
+int ctsvc_db_person_set_favorite(const char *zone_name, int person_id, bool set, bool propagate);
-#endif // __CTSVC_DB_PLUGIN_PERSON_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_PERSON_HELPER_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_normalize.h"
#include "ctsvc_number_utils.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_list.h"
#include "ctsvc_record.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_init.h"
#include "ctsvc_notification.h"
-#include "ctsvc_setting.h"
+#include "ctsvc_server_setting.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_localize_utils.h"
-#include "ctsvc_phonelog.h"
+#include "ctsvc_server_phonelog.h"
#ifdef _CONTACTS_IPC_SERVER
#include "ctsvc_server_change_subject.h"
-#ifdef ENABLE_SIM_FEATURE
#include "ctsvc_server_sim.h"
-#include "ctsvc_server_utils.h"
-#endif // ENABLE_SIM_FEATURE
-#endif
+#endif /* _CONTACTS_IPC_SERVER */
-static int __ctsvc_db_phonelog_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_phonelog_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_phonelog_update_record( contacts_record_h record );
-static int __ctsvc_db_phonelog_delete_record( int id );
-static int __ctsvc_db_phonelog_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_phonelog_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_phonelog_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_phonelog_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_phonelog_delete_records( int ids[], int count);
+static int __ctsvc_db_phonelog_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_phonelog_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_phonelog_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_phonelog_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_phonelog_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_phonelog_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_phonelog = {
.is_query_only = false,
.delete_record = __ctsvc_db_phonelog_delete_record,
.get_all_records = __ctsvc_db_phonelog_get_all_records,
.get_records_with_query = __ctsvc_db_phonelog_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_phonelog_insert_records,
- .update_records = NULL,//__ctsvc_db_phonelog_update_records,
- .delete_records = NULL,//__ctsvc_db_phonelog_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
ctsvc_phonelog_s *phonelog;
ret = contacts_record_create(_contacts_phone_log._uri, record);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
phonelog = (ctsvc_phonelog_s*)*record;
i = 0;
temp = ctsvc_stmt_get_text(stmt, i++);
phonelog->extra_data2 = SAFE_STRDUP(temp);
#ifdef _CONTACTS_IPC_SERVER
-#ifdef ENABLE_SIM_FEATURE
phonelog->sim_slot_no = ctsvc_server_sim_get_sim_slot_no_by_info_id(ctsvc_stmt_get_int(stmt, i++));
-#endif // ENABLE_SIM_FEATURE
-#endif
+#endif /* _CONTACTS_IPC_SERVER */
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_phonelog_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_phonelog_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"SELECT id, number, person_id, log_type, log_time, data1, data2, sim_id "
"FROM "CTS_TABLE_PHONELOGS" WHERE id = %d", id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_db_phonelog_value_set(ALL) Failed(%d)", ret);
+ CTS_ERR("__ctsvc_db_phonelog_value_set(ALL) Fail(%d)", ret);
return ret;
}
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_phonelog_update_record( contacts_record_h record )
+static int __ctsvc_db_phonelog_update_record(const char *zone_name, contacts_record_h record)
{
int phonelog_id;
char query[CTS_SQL_MIN_LEN] = {0};
"Invalid parameter : the type is can not updated(%d)", phonelog->log_type);
RETVM_IF(CTSVC_PROPERTY_FLAG_DIRTY != (phonelog->base.property_flag & CTSVC_PROPERTY_FLAG_DIRTY), CONTACTS_ERROR_NONE, "No update");
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_PHONELOGS" WHERE id = %d", phonelog->id);
- ret = ctsvc_query_get_first_int_result(query, &phonelog_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &phonelog_id);
if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_query_get_first_int_result Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
do {
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_PHONELOGS, phonelog->id))) break;
+ if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(zone_name, set, bind_text, CTS_TABLE_PHONELOGS, phonelog->id))) break;
- if (ctsvc_db_change()) {
- ctsvc_set_phonelog_noti();
+ if (ctsvc_db_change(zone_name)) {
+ ctsvc_set_phonelog_noti(zone_name);
#ifdef _CONTACTS_IPC_SERVER
- ctsvc_change_subject_add_changed_phone_log_id(CONTACTS_CHANGE_UPDATED, phonelog->id);
+ ctsvc_change_subject_add_changed_phone_log_id(zone_name, CONTACTS_CHANGE_UPDATED, phonelog->id);
#endif
}
} while (0);
g_slist_free(bind_text);
}
- ret = ctsvc_end_trans(true);
- RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ RETVM_IF(ret < CONTACTS_ERROR_NONE, ret, "DB error : ctsvc_end_trans() Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_phonelog_delete_record( int id )
+static int __ctsvc_db_phonelog_delete_record(const char *zone_name, int id)
{
int ret;
int phonelog_id;
char query[CTS_SQL_MAX_LEN] = {0};
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_PHONELOGS" WHERE id = %d", id);
- ret = ctsvc_query_get_first_int_result(query, &phonelog_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &phonelog_id);
if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("ctsvc_query_get_first_int_result Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
snprintf(query, sizeof(query), "DELETE FROM %s WHERE id = %d",
CTS_TABLE_PHONELOGS, id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_phonelog_noti();
+ ctsvc_set_phonelog_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_phonelog_get_all_records( int offset, int limit,
- contacts_list_h* out_list )
+static int __ctsvc_db_phonelog_get_all_records(const char *zone_name, int offset, int limit,
+ contacts_list_h* out_list)
{
int ret;
int len;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_phonelog_get_records_with_query( contacts_query_h query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_phonelog_get_records_with_query(const char *zone_name, contacts_query_h query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
phonelog = (ctsvc_phonelog_s*)record;
if (0 == s_query->projection_count)
field_count = s_query->property_count;
- else
- {
+ else {
field_count = s_query->projection_count;
- if( CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, s_query->projection, s_query->projection_count, s_query->property_count) )
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, s_query->projection, s_query->projection_count, s_query->property_count)) {
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_PHONELOG_ADDRESS:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(phonelog->address);
phonelog->address = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PHONELOG_LOG_TIME:
break;
case CTSVC_PROPERTY_PHONELOG_EXTRA_DATA2:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(phonelog->extra_data2);
phonelog->extra_data2 = SAFE_STRDUP(temp);
break;
-#ifdef ENABLE_SIM_FEATURE
case CTSVC_PROPERTY_PHONELOG_SIM_SLOT_NO:
phonelog->sim_slot_no = ctsvc_server_sim_get_sim_slot_no_by_info_id(ctsvc_stmt_get_int(stmt, i));
break;
-#endif // ENABLE_SIM_FEATURE
default:
break;
}
return CONTACTS_ERROR_NONE;
}
-//static int __ctsvc_db_phonelog_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_phonelog_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_phonelog_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
-
-static int __ctsvc_db_phonelog_increase_outgoing_count(ctsvc_phonelog_s *phonelog)
+static int __ctsvc_db_phonelog_increase_outgoing_count(const char *zone_name, ctsvc_phonelog_s *phonelog, int log_id)
{
int ret;
int id;
"SELECT person_id FROM %s WHERE person_id = %d and usage_type = %d ",
CTS_TABLE_CONTACT_STAT, phonelog->person_id, type);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
if (CONTACTS_ERROR_NO_DATA == ret) {
snprintf(query, sizeof(query),
"INSERT INTO %s(person_id, usage_type, times_used) VALUES(%d, %d, 1)",
CTS_TABLE_CONTACT_STAT, phonelog->person_id, type);
}
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_exec() Fail(%d)", ret);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_phonelog_insert(ctsvc_phonelog_s *phonelog, int *id)
+static int __ctsvc_db_phonelog_insert(const char *zone_name, ctsvc_phonelog_s *phonelog, int *id)
{
int ret;
cts_stmt stmt = NULL;
"VALUES(?, ?, ?, ?, ?, %d, %d, %d, ?, ?)",
phonelog->log_type, phonelog->log_time, phonelog->extra_data1);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
if (phonelog->address) {
ctsvc_stmt_bind_text(stmt, 1, phonelog->address);
char minmatch[sizeof(normal_num) + 1];
ctsvc_stmt_bind_copy_text(stmt, 2, normal_num, strlen(normal_num));
ret = ctsvc_get_minmatch_number(normal_num, minmatch, sizeof(minmatch), ctsvc_get_phonenumber_min_match_digit());
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_get_minmatch_number() Fail(%d)", ret);
ctsvc_stmt_bind_copy_text(stmt, 3, minmatch, strlen(minmatch));
}
}
if (phonelog->extra_data2)
ctsvc_stmt_bind_text(stmt, 6, phonelog->extra_data2);
-#ifdef ENABLE_SIM_FEATURE
- if (phonelog->sim_slot_no >= 0) {
+ if (0 <= phonelog->sim_slot_no) {
int sim_info_id;
sim_info_id = ctsvc_server_sim_get_info_id_by_sim_slot_no(phonelog->sim_slot_no);
- if (sim_info_id > 0)
+ if (0 < sim_info_id)
ctsvc_stmt_bind_int(stmt, 7, sim_info_id);
}
else
-#endif // ENABLE_SIM_FEATURE
ctsvc_stmt_bind_int(stmt, 7, -1);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
if (id)
- *id = ctsvc_db_get_last_insert_id();
+ *id = ctsvc_db_get_last_insert_id(zone_name);
ctsvc_stmt_finalize(stmt);
- // update phonelog
- ctsvc_db_phone_log_update_person_id(phonelog->address, phonelog->person_id, -1, false);
+ /* update phonelog */
+ ctsvc_db_phone_log_update_person_id(zone_name, phonelog->address, phonelog->person_id, -1, false);
- ctsvc_set_phonelog_noti();
+ ctsvc_set_phonelog_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_phonelog_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_phonelog_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
ctsvc_phonelog_s *phonelog = (ctsvc_phonelog_s *)record;
RETVM_IF(phonelog->id, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : The phone_log has ID(%d)", phonelog->id);
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
- ret = __ctsvc_db_phonelog_insert(phonelog, id);
+ ret = __ctsvc_db_phonelog_insert(zone_name, phonelog, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_db_phonelog_insert() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("__ctsvc_db_phonelog_insert() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
if (0 < phonelog->person_id) {
- ret = __ctsvc_db_phonelog_increase_outgoing_count(phonelog);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "__ctsvc_db_phonelog_increase_outgoing_count() Failed(%d)", ret);
+ ret = __ctsvc_db_phonelog_increase_outgoing_count(zone_name, phonelog, *id);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "__ctsvc_db_phonelog_increase_outgoing_count() Fail(%d)", ret);
}
#ifdef _CONTACTS_IPC_SERVER
- // add id for subscribe
- ctsvc_change_subject_add_changed_phone_log_id(CONTACTS_CHANGE_INSERTED, *id);
+ /* add id for subscribe */
+ ctsvc_change_subject_add_changed_phone_log_id(zone_name, CONTACTS_CHANGE_INSERTED, *id);
#endif
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(zone_name, true);
if (ret < CONTACTS_ERROR_NONE) {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
return CONTACTS_ERROR_NONE;
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_db_plugin_contact_helper.h"
#include "ctsvc_list.h"
#include "ctsvc_notification.h"
-static int __ctsvc_db_profile_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_profile_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_profile_update_record( contacts_record_h record );
-static int __ctsvc_db_profile_delete_record( int id );
-static int __ctsvc_db_profile_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_profile_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_profile_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_profile_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_profile_delete_records( int ids[], int count);
+static int __ctsvc_db_profile_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_profile_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_profile_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_profile_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_profile_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_profile_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_profile = {
.is_query_only = false,
.delete_record = __ctsvc_db_profile_delete_record,
.get_all_records = __ctsvc_db_profile_get_all_records,
.get_records_with_query = __ctsvc_db_profile_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_profile_insert_records,
- .update_records = NULL,//__ctsvc_db_profile_update_records,
- .delete_records = NULL,//__ctsvc_db_profile_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_profile_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_profile_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int addressbook_id;
RETVM_IF(NULL == profile->text, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : profile text is NULL");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", profile->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_ERR("No data : contact_id (%d) is not exist", profile->contact_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this profile record : addressbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_profile_insert(record, profile->contact_id, false, id);
+ ret = ctsvc_db_profile_insert(zone_name, record, profile->contact_id, false, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(profile->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, profile->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_profile_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_profile_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"WHERE id = %d AND datatype = %d ",
id, CTSVC_DATA_PROFILE);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_profile_update_record( contacts_record_h record )
+static int __ctsvc_db_profile_update_record(const char *zone_name, contacts_record_h record)
{
int ret;
int addressbook_id;
ctsvc_profile_s *profile = (ctsvc_profile_s *)record;
RETVM_IF(NULL == profile->text, CONTACTS_ERROR_INVALID_PARAMETER, "profile text is empty");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", profile->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : contact_id (%d) is not exist", profile->contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this profile record : addressbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_profile_update(record, false);
+ ret = ctsvc_db_profile_update(zone_name, record, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("Update record Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("Update record Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(profile->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, profile->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_profile_delete_record( int id )
+static int __ctsvc_db_profile_delete_record(const char *zone_name, int id)
{
int ret;
int contact_id;
cts_stmt stmt = NULL;
int addressbook_id;
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT contact_id, addressbook_id FROM "CTSVC_DB_VIEW_CONTACT " "
"WHERE contact_id = (SELECT contact_id FROM "CTS_TABLE_DATA" WHERE id = %d)", id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
CTS_ERR("DB error : ctsvc_query_prepare Fail(%d", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
CTS_ERR("The id(%d) is Invalid(%d)", id, ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
addressbook_id = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this profile record : addressbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_profile_delete(id, false);
+ ret = ctsvc_db_profile_delete(zone_name, id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_profile_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_profile_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int len;
int ret;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB : ctsvc_stmt_step fail(%d)", ret);
+ CTS_ERR("DB : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_profile_get_records_with_query( contacts_query_h query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_profile_get_records_with_query(const char *zone_name, contacts_query_h query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ret = ctsvc_record_set_projection_flags(record, s_query->projection,
s_query->projection_count, s_query->property_count);
- if(CONTACTS_ERROR_NONE != ret)
+ if (CONTACTS_ERROR_NONE != ret)
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_PROFILE_UID:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(profile->uid);
profile->uid = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PROFILE_TEXT:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(profile->text);
profile->text = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PROFILE_ORDER:
break;
case CTSVC_PROPERTY_PROFILE_SERVICE_OPERATION:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(profile->service_operation);
profile->service_operation = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PROFILE_MIME:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(profile->mime);
profile->mime = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PROFILE_APP_ID:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(profile->app_id);
profile->app_id = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PROFILE_URI:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(profile->uri);
profile->uri = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PROFILE_CATEGORY:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(profile->category);
profile->category = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_PROFILE_EXTRA_DATA:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(profile->extra_data);
profile->extra_data = SAFE_STRDUP(temp);
break;
default:
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-
-//static int __ctsvc_db_profile_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_profile_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_profile_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_plugin_profile_helper.h"
ctsvc_profile_s *profile;
ret = contacts_record_create(_contacts_profile._uri, (contacts_record_h *)&profile);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
profile->id = ctsvc_stmt_get_int(stmt, start_count++);
profile->contact_id = ctsvc_stmt_get_int(stmt, start_count++);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_profile_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id)
+int ctsvc_db_profile_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id)
{
int ret;
cts_stmt stmt = NULL;
"VALUES(%d, %d, %d, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
contact_id, is_my_profile, CTSVC_DATA_PROFILE);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
__ctsvc_profile_bind_stmt(stmt, profile, 1);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
- //profile->id = ctsvc_db_get_last_insert_id();
+ /* profile->id = ctsvc_db_get_last_insert_id(zone_name); */
if (id)
- *id = ctsvc_db_get_last_insert_id();
+ *id = ctsvc_db_get_last_insert_id(zone_name);
ctsvc_stmt_finalize(stmt);
- if (!is_my_profile)
- ctsvc_set_profile_noti();
+ if (false == is_my_profile)
+ ctsvc_set_profile_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_profile_update(contacts_record_h record, bool is_my_profile)
+int ctsvc_db_profile_update(const char *zone_name, contacts_record_h record, bool is_my_profile)
{
int id;
int ret = CONTACTS_ERROR_NONE;
ctsvc_profile_s *profile = (ctsvc_profile_s*)record;
char query[CTS_SQL_MAX_LEN] = {0};
- RETVM_IF(!profile->id, CONTACTS_ERROR_INVALID_PARAMETER, "profile of contact has no ID.");
+ RETVM_IF(0 == profile->id, CONTACTS_ERROR_INVALID_PARAMETER, "profile of contact has no ID.");
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE id = %d", profile->id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
RETV_IF(ret != CONTACTS_ERROR_NONE, ret);
RETVM_IF(CTSVC_PROPERTY_FLAG_DIRTY != (profile->base.property_flag & CTSVC_PROPERTY_FLAG_DIRTY), CONTACTS_ERROR_NONE, "No update");
do {
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_DATA, profile->id))) break;
- if (!is_my_profile)
- ctsvc_set_profile_noti();
+ if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(zone_name, set, bind_text, CTS_TABLE_DATA, profile->id))) break;
+ if (false == is_my_profile)
+ ctsvc_set_profile_noti(zone_name);
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
}
-int ctsvc_db_profile_delete(int id, bool is_my_profile)
+int ctsvc_db_profile_delete(const char *zone_name, int id, bool is_my_profile)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_DATA" WHERE id = %d AND datatype = %d",
id, CTSVC_DATA_PROFILE);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Fail(%d)", ret);
- if (!is_my_profile)
- ctsvc_set_profile_noti();
+ if (false == is_my_profile)
+ ctsvc_set_profile_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
#define __CTSVC_DB_PLUGIN_PROFILE_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
-int ctsvc_db_profile_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id);
-int ctsvc_db_profile_update(contacts_record_h record, bool is_my_profile);
-int ctsvc_db_profile_delete(int id, bool is_my_profile);
+int ctsvc_db_profile_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id);
+int ctsvc_db_profile_update(const char *zone_name, contacts_record_h record, bool is_my_profile);
+int ctsvc_db_profile_delete(const char *zone_name, int id, bool is_my_profile);
int ctsvc_db_profile_get_value_from_stmt(cts_stmt stmt, contacts_record_h *record, int start_count);
-#endif // __CTSVC_DB_PLUGIN_PROFILE_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_PROFILE_HELPER_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_db_plugin_relationship_helper.h"
#include "ctsvc_notification.h"
-static int __ctsvc_db_relationship_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_relationship_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_relationship_update_record( contacts_record_h record );
-static int __ctsvc_db_relationship_delete_record( int id );
-static int __ctsvc_db_relationship_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_relationship_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_relationship_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_relationship_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_relationship_delete_records( int ids[], int count);
+static int __ctsvc_db_relationship_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_relationship_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_relationship_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_relationship_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_relationship_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_relationship_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_relationship = {
.is_query_only = false,
.delete_record = __ctsvc_db_relationship_delete_record,
.get_all_records = __ctsvc_db_relationship_get_all_records,
.get_records_with_query = __ctsvc_db_relationship_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_relationship_insert_records,
- .update_records = NULL,//__ctsvc_db_relationship_update_records,
- .delete_records = NULL,//__ctsvc_db_relationship_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_relationship_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_relationship_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int addressbook_id;
RETVM_IF(NULL == relationship->name, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : relationship name is NULL");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", relationship->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_ERR("No data : contact_id (%d) is not exist", relationship->contact_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this relationship record : addressbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_relationship_insert(record, relationship->contact_id, false, id);
+ ret = ctsvc_db_relationship_insert(zone_name, record, relationship->contact_id, false, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(relationship->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, relationship->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_relationship_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_relationship_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"WHERE id = %d AND datatype = %d ",
id, CTSVC_DATA_RELATIONSHIP);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_relationship_update_record( contacts_record_h record )
+static int __ctsvc_db_relationship_update_record(const char *zone_name, contacts_record_h record)
{
int ret;
int addressbook_id;
ctsvc_relationship_s *relationship = (ctsvc_relationship_s *)record;
RETVM_IF(NULL == relationship->name, CONTACTS_ERROR_INVALID_PARAMETER, "name is empty");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", relationship->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : contact_id (%d) is not exist", relationship->contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this relationship record : addressbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_relationship_update(record, false);
+ ret = ctsvc_db_relationship_update(zone_name, record, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("Update record Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("Update record Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(relationship->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, relationship->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_relationship_delete_record( int id )
+static int __ctsvc_db_relationship_delete_record(const char *zone_name, int id)
{
int ret;
int contact_id;
cts_stmt stmt = NULL;
int addressbook_id;
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT contact_id, addressbook_id FROM "CTSVC_DB_VIEW_CONTACT " "
"WHERE contact_id = (SELECT contact_id FROM "CTS_TABLE_DATA" WHERE id = %d)", id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
CTS_ERR("The id(%d) is Invalid(%d)", id, ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
addressbook_id = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this relationship record : addressbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_relationship_delete(id, false);
+ ret = ctsvc_db_relationship_delete(zone_name, id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_relationship_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_relationship_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int len;
int ret;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB : ctsvc_stmt_step fail(%d)", ret);
+ CTS_ERR("DB : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_relationship_get_records_with_query( contacts_query_h query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_relationship_get_records_with_query(const char *zone_name, contacts_query_h query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ret = ctsvc_record_set_projection_flags(record, s_query->projection,
s_query->projection_count, s_query->property_count);
- if(CONTACTS_ERROR_NONE != ret)
+ if (CONTACTS_ERROR_NONE != ret)
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_RELATIONSHIP_LABEL:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(relationship->label);
relationship->label = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_RELATIONSHIP_NAME:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(relationship->name);
relationship->name = SAFE_STRDUP(temp);
break;
default:
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-
-//static int __ctsvc_db_relationship_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_relationship_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_relationship_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_plugin_relationship_helper.h"
ctsvc_relationship_s *relationship;
ret = contacts_record_create(_contacts_relationship._uri, (contacts_record_h *)&relationship);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
relationship->id = ctsvc_stmt_get_int(stmt, start_count++);
relationship->contact_id = ctsvc_stmt_get_int(stmt, start_count++);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_relationship_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id)
+int ctsvc_db_relationship_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id)
{
int ret;
cts_stmt stmt = NULL;
char query[CTS_SQL_MAX_LEN] = {0};
ctsvc_relationship_s *relationship = (ctsvc_relationship_s *)record;
- // These check should be done in client side
+ /* These check should be done in client side */
RETV_IF(NULL == relationship->name, CONTACTS_ERROR_NONE);
RETVM_IF(contact_id <= 0, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : contact_id(%d) is mandatory field to insert relationship record", relationship->contact_id);
"VALUES(%d, %d, %d, %d, ?, ?)",
contact_id, is_my_profile, CTSVC_DATA_RELATIONSHIP, relationship->type);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
__ctsvc_relationship_bind_stmt(stmt, relationship, 1);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
- //relationship->id = ctsvc_db_get_last_insert_id();
+ /* relationship->id = ctsvc_db_get_last_insert_id(zone_name); */
if (id)
- *id = ctsvc_db_get_last_insert_id();
+ *id = ctsvc_db_get_last_insert_id(zone_name);
ctsvc_stmt_finalize(stmt);
- if (!is_my_profile)
- ctsvc_set_relationship_noti();
+ if (false == is_my_profile)
+ ctsvc_set_relationship_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_relationship_update(contacts_record_h record, bool is_my_profile)
+int ctsvc_db_relationship_update(const char *zone_name, contacts_record_h record, bool is_my_profile)
{
int id;
int ret = CONTACTS_ERROR_NONE;
ctsvc_relationship_s *relationship = (ctsvc_relationship_s*)record;
char query[CTS_SQL_MIN_LEN] = {0};
- RETVM_IF(!relationship->id, CONTACTS_ERROR_INVALID_PARAMETER, "relationship of contact has no ID.");
+ RETVM_IF(0 == relationship->id, CONTACTS_ERROR_INVALID_PARAMETER, "relationship of contact has no ID.");
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE id = %d", relationship->id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
RETV_IF(ret != CONTACTS_ERROR_NONE, ret);
RETVM_IF(CTSVC_PROPERTY_FLAG_DIRTY != (relationship->base.property_flag & CTSVC_PROPERTY_FLAG_DIRTY), CONTACTS_ERROR_NONE, "No update");
do {
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_DATA, relationship->id))) break;
- if (!is_my_profile)
- ctsvc_set_relationship_noti();
+ if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(zone_name, set, bind_text, CTS_TABLE_DATA, relationship->id))) break;
+ if (false == is_my_profile)
+ ctsvc_set_relationship_noti(zone_name);
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
}
-int ctsvc_db_relationship_delete(int id, bool is_my_profile)
+int ctsvc_db_relationship_delete(const char *zone_name, int id, bool is_my_profile)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_DATA" WHERE id = %d AND datatype = %d",
id, CTSVC_DATA_RELATIONSHIP);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Fail(%d)", ret);
- if (!is_my_profile)
- ctsvc_set_relationship_noti();
+ if (false == is_my_profile)
+ ctsvc_set_relationship_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
#define __CTSVC_DB_PLUGIN_RELATIONSHIP_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
-int ctsvc_db_relationship_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id);
-int ctsvc_db_relationship_update(contacts_record_h record, bool is_my_profile);
-int ctsvc_db_relationship_delete(int id, bool is_my_profile);
+int ctsvc_db_relationship_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id);
+int ctsvc_db_relationship_update(const char *zone_name, contacts_record_h record, bool is_my_profile);
+int ctsvc_db_relationship_delete(const char *zone_name, int id, bool is_my_profile);
int ctsvc_db_relationship_get_value_from_stmt(cts_stmt stmt, contacts_record_h *record, int start_count);
-#endif // __CTSVC_DB_PLUGIN_RELATIONSHIP_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_RELATIONSHIP_HELPER_H__ */
\ No newline at end of file
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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 "contacts.h"
+#include "ctsvc_internal.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
+#include "ctsvc_list.h"
+#include "ctsvc_db_plugin_sdn.h"
+#include "ctsvc_db_init.h"
+#include "ctsvc_db_query.h"
+#include "ctsvc_record.h"
+#include "ctsvc_notification.h"
+#include "ctsvc_server_utils.h"
+
+static int __ctsvc_db_sdn_get_record(const char *zone_name, int id, contacts_record_h* record);
+static int __ctsvc_db_sdn_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_sdn_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
+
+ctsvc_db_plugin_info_s ctsvc_db_plugin_sdn = {
+ .is_query_only = false,
+ .insert_record = NULL,
+ .get_record = __ctsvc_db_sdn_get_record,
+ .update_record = NULL,
+ .delete_record = NULL,
+ .get_all_records = __ctsvc_db_sdn_get_all_records,
+ .get_records_with_query = __ctsvc_db_sdn_get_records_with_query,
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
+ .get_count = NULL,
+ .get_count_with_query = NULL,
+ .replace_record = NULL,
+ .replace_records = NULL,
+};
+
+static int __ctsvc_db_sdn_value_set(cts_stmt stmt, contacts_record_h *record)
+{
+ int i;
+ int ret;
+ char *temp;
+ ctsvc_sdn_s *sdn;
+
+ ret = contacts_record_create(_contacts_sdn._uri, record);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
+ sdn = (ctsvc_sdn_s*)*record;
+
+ i = 0;
+ sdn->id = ctsvc_stmt_get_int(stmt, i++);
+ temp = ctsvc_stmt_get_text(stmt, i++);
+ sdn->name = SAFE_STRDUP(temp);
+ temp = ctsvc_stmt_get_text(stmt, i++);
+ sdn->number = SAFE_STRDUP(temp);
+ sdn->sim_slot_no = ctsvc_stmt_get_int(stmt, i++);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+static int __ctsvc_db_sdn_get_record(const char *zone_name, int id, contacts_record_h* out_record)
+{
+ RETVM_IF(false == ctsvc_server_have_telephony_feature(), CONTACTS_ERROR_NOT_SUPPORTED, "Telephony feature disabled");
+
+ int ret;
+ cts_stmt stmt = NULL;
+ char query[CTS_SQL_MAX_LEN] = {0};
+ contacts_record_h record;
+
+ RETV_IF(NULL == out_record, CONTACTS_ERROR_INVALID_PARAMETER);
+ *out_record = NULL;
+
+ snprintf(query, sizeof(query),
+ "SELECT id, name, number, sim_slot_no FROM "CTS_TABLE_SDN" WHERE id = %d", id);
+
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
+
+ ret = ctsvc_stmt_step(stmt);
+ if (1 /*CTS_TRUE*/ != ret) {
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
+ ctsvc_stmt_finalize(stmt);
+ if (CONTACTS_ERROR_NONE == ret)
+ return CONTACTS_ERROR_NO_DATA;
+ else
+ return ret;
+ }
+
+ ret = __ctsvc_db_sdn_value_set(stmt, &record);
+
+ ctsvc_stmt_finalize(stmt);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("__ctsvc_db_sdn_value_set(ALL) Fail(%d)", ret);
+ return ret;
+ }
+
+ *out_record = record;
+
+ return CONTACTS_ERROR_NONE;
+}
+
+static int __ctsvc_db_sdn_get_all_records(const char *zone_name, int offset, int limit,
+ contacts_list_h* out_list)
+{
+ RETVM_IF(false == ctsvc_server_have_telephony_feature(), CONTACTS_ERROR_NOT_SUPPORTED, "Telephony feature disabled");
+
+ int ret;
+ int len;
+ cts_stmt stmt;
+ char query[CTS_SQL_MAX_LEN] = {0};
+ contacts_list_h list;
+
+ len = snprintf(query, sizeof(query),
+ "SELECT id, name, number, sim_slot_no FROM "CTS_TABLE_SDN);
+
+ if (0 != limit) {
+ len += snprintf(query+len, sizeof(query)-len, " LIMIT %d", limit);
+ if (0 < offset)
+ len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
+ }
+
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
+
+ contacts_list_create(&list);
+ while ((ret = ctsvc_stmt_step(stmt))) {
+ contacts_record_h record;
+ if (1 != ret) {
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
+ ctsvc_stmt_finalize(stmt);
+ contacts_list_destroy(list, true);
+ return ret;
+ }
+ __ctsvc_db_sdn_value_set(stmt, &record);
+
+ ctsvc_list_prepend(list, record);
+ }
+ ctsvc_stmt_finalize(stmt);
+ ctsvc_list_reverse(list);
+
+ *out_list = (contacts_list_h)list;
+ return CONTACTS_ERROR_NONE;
+}
+
+static int __ctsvc_db_sdn_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list)
+{
+ RETVM_IF(false == ctsvc_server_have_telephony_feature(), CONTACTS_ERROR_NOT_SUPPORTED, "Telephony feature disabled");
+
+ int ret;
+ int i;
+ int field_count;
+ ctsvc_query_s *s_query;
+ cts_stmt stmt;
+ contacts_list_h list;
+ ctsvc_sdn_s *sdn;
+
+ RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
+ s_query = (ctsvc_query_s *)query;
+
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
+
+ contacts_list_create(&list);
+ while ((ret = ctsvc_stmt_step(stmt))) {
+ contacts_record_h record;
+ if (1 != ret) {
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
+ ctsvc_stmt_finalize(stmt);
+ contacts_list_destroy(list, true);
+ return ret;
+ }
+
+ contacts_record_create(_contacts_sdn._uri, &record);
+ sdn = (ctsvc_sdn_s*)record;
+ if (0 == s_query->projection_count)
+ field_count = s_query->property_count;
+ else {
+ field_count = s_query->projection_count;
+
+ if (CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, s_query->projection, s_query->projection_count, s_query->property_count)) {
+ ASSERT_NOT_REACHED("To set projection is failed.\n");
+ }
+ }
+
+ for (i=0;i<field_count;i++) {
+ char *temp;
+ int property_id;
+ if (0 == s_query->projection_count)
+ property_id = s_query->properties[i].property_id;
+ else
+ property_id = s_query->projection[i];
+
+ switch(property_id) {
+ case CTSVC_PROPERTY_SDN_ID:
+ sdn->id = ctsvc_stmt_get_int(stmt, i);
+ break;
+ case CTSVC_PROPERTY_SDN_NAME:
+ temp = ctsvc_stmt_get_text(stmt, i);
+ free(sdn->name);
+ sdn->name = SAFE_STRDUP(temp);
+ break;
+ case CTSVC_PROPERTY_SDN_NUMBER:
+ temp = ctsvc_stmt_get_text(stmt, i);
+ free(sdn->number);
+ sdn->number = SAFE_STRDUP(temp);
+ break;
+ case CTSVC_PROPERTY_SDN_SIM_SLOT_NO:
+ sdn->sim_slot_no = ctsvc_stmt_get_int(stmt, i);
+ break;
+ default:
+ break;
+ }
+ }
+ ctsvc_list_prepend(list, record);
+ }
+ ctsvc_stmt_finalize(stmt);
+ ctsvc_list_reverse(list);
+
+ *out_list = (contacts_list_h)list;
+
+ return CONTACTS_ERROR_NONE;
+}
+
#define __CTSVC_DB_PLUGIN_SDN_H__
-#endif // __CTSVC_DB_PLUGIN_SDN_H__
+#endif /* __CTSVC_DB_PLUGIN_SDN_H__ */
\ No newline at end of file
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_schema.h"
#include "ctsvc_db_init.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_list.h"
#include "ctsvc_db_plugin_person_helper.h"
#include "ctsvc_db_plugin_contact_helper.h"
#include "ctsvc_notification.h"
#include "ctsvc_db_access_control.h"
-static int __ctsvc_db_simple_contact_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_simple_contact_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_simple_contact_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
+static int __ctsvc_db_simple_contact_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_simple_contact_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_simple_contact_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_simple_contact = {
.is_query_only = false,
char full_path[CTSVC_IMG_FULL_PATH_SIZE_MAX] = {0};
ret = contacts_record_create(_contacts_simple_contact._uri, record);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
contact = (ctsvc_simple_contact_s*)*record;
i = 0;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_simple_contact_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_simple_contact_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"display_name_source, image_thumbnail_path, "
"ringtone_path, vibration, message_alert, uid, is_favorite, has_phonenumber, has_email "
"FROM "CTS_TABLE_CONTACTS" WHERE contact_id = %d AND deleted = 0",
- ctsvc_get_display_column(), id);
+ ctsvc_get_display_column(zone_name), id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_db_simple_contact_value_set(ALL) Failed(%d)", ret);
+ CTS_ERR("__ctsvc_db_simple_contact_value_set(ALL) Fail(%d)", ret);
return ret;
}
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_simple_contact_get_all_records( int offset, int limit,
- contacts_list_h* out_list )
+static int __ctsvc_db_simple_contact_get_all_records(const char *zone_name, int offset, int limit,
+ contacts_list_h* out_list)
{
int ret;
int len;
"SELECT contact_id, addressbook_id, person_id, changed_time, "
"%s, display_name_source, image_thumbnail_path, "
"ringtone_path, vibration, message_alert, uid, is_favorite, has_phonenumber, has_email "
- "FROM "CTS_TABLE_CONTACTS" WHERE deleted = 0", ctsvc_get_display_column());
+ "FROM "CTS_TABLE_CONTACTS" WHERE deleted = 0", ctsvc_get_display_column(zone_name));
if (0 != limit) {
len += snprintf(query+len, sizeof(query)-len, " LIMIT %d", limit);
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_simple_contact_get_records_with_query( contacts_query_h query,
- int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_simple_contact_get_records_with_query(const char *zone_name, contacts_query_h query,
+ int offset, int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
contact = (ctsvc_simple_contact_s*)record;
if (0 == s_query->projection_count)
field_count = s_query->property_count;
- else
- {
+ else {
field_count = s_query->projection_count;
- if( CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, s_query->projection, s_query->projection_count, s_query->property_count) )
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, s_query->projection, s_query->projection_count, s_query->property_count)) {
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_CONTACT_DISPLAY_NAME:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(contact->display_name);
contact->display_name = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID:
break;
case CTSVC_PROPERTY_CONTACT_RINGTONE:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(contact->ringtone_path);
contact->ringtone_path = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL:
temp = ctsvc_stmt_get_text(stmt, i);
if (temp && *temp) {
snprintf(full_path, sizeof(full_path), "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, temp);
+ free(contact->image_thumbnail_path);
contact->image_thumbnail_path = strdup(full_path);
}
break;
break;
case CTSVC_PROPERTY_CONTACT_UID:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(contact->uid);
contact->uid = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_CONTACT_VIBRATION:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(contact->vibration);
contact->vibration = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_CONTACT_MESSAGE_ALERT:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(contact->message_alert);
contact->message_alert = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_CONTACT_CHANGED_TIME:
return CONTACTS_ERROR_NONE;
}
-
-//static int __ctsvc_db_simple_contact_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_simple_contact_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_simple_contact_delete_records(int ids[], int count) { return CONTACTS_ERROR_NONE; }
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_list.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_record.h"
#include "ctsvc_notification.h"
-static int __ctsvc_db_speeddial_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_speeddial_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_speeddial_update_record( contacts_record_h record );
-static int __ctsvc_db_speeddial_delete_record( int id );
-static int __ctsvc_db_speeddial_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_speeddial_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_speeddial_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_speeddial_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_speeddial_delete_records( int ids[], int count);
+static int __ctsvc_db_speeddial_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_speeddial_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_speeddial_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_speeddial_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_speeddial_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_speeddial_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_speeddial = {
.is_query_only = false,
.delete_record = __ctsvc_db_speeddial_delete_record,
.get_all_records = __ctsvc_db_speeddial_get_all_records,
.get_records_with_query = __ctsvc_db_speeddial_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_speeddial_insert_records,
- .update_records = NULL,//__ctsvc_db_speeddial_update_records,
- .delete_records = NULL,//__ctsvc_db_speeddial_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_speeddial_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_speeddial_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int number_id = 0;
char query[CTS_SQL_MAX_LEN] = {0};
ctsvc_speeddial_s *speeddial = (ctsvc_speeddial_s*)record;
- ret = ctsvc_begin_trans();
- RETVM_IF(ret, ret, "ctsvc_begin_trans() Failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(ret, ret, "ctsvc_begin_trans(zone_name) Fail(%d)", ret);
- // check number_id validation
+ /* check number_id validation */
snprintf(query, sizeof(query),
"SELECT data.id FROM "CTS_TABLE_DATA", "CTS_TABLE_CONTACTS" "
"ON "CTS_TABLE_DATA".contact_id = "CTS_TABLE_CONTACTS".contact_id "
"AND contacts.deleted = 0 AND is_my_profile = 0 AND datatype = %d "
"WHERE id = %d ",
CTSVC_DATA_NUMBER, speeddial->number_id);
- ret = ctsvc_query_get_first_int_result(query, &number_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &number_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_get_first_int_result() Failed(%d) : number_id is invalid", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_get_first_int_result() Fail(%d) : number_id is invalid", ret);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
"INSERT INTO "CTS_TABLE_SPEEDDIALS"(speed_number, number_id) VALUES(%d, %d)",
speeddial->dial_number, speeddial->number_id);
- ret = ctsvc_query_exec(query);
+ ret = ctsvc_query_exec(zone_name, query);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_exec() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_change();
+ ret = ctsvc_db_change(zone_name);
if (0 < ret) {
if (id)
*id = speeddial->dial_number;
- ctsvc_set_speed_noti();
+ ctsvc_set_speed_noti(zone_name);
}
else {
CTS_ERR("already exist");
}
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(zone_name, true);
if (ret < CONTACTS_ERROR_NONE)
return ret;
else
ctsvc_speeddial_s *speeddial;
ret = contacts_record_create(_contacts_speeddial._uri, record);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
speeddial = (ctsvc_speeddial_s*)*record;
i = 0;
temp = ctsvc_stmt_get_text(stmt, i++);
speeddial->number = SAFE_STRDUP(temp);
speeddial->dial_number = ctsvc_stmt_get_int(stmt, i++);
- speeddial->id = speeddial->dial_number; // dial_number is an unique key
+ speeddial->id = speeddial->dial_number; /* dial_number is an unique key */
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_speeddial_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_speeddial_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"type, label, number, speed_number "
"FROM "CTSVC_DB_VIEW_SPEEDIDAL " "
"WHERE speed_number = %d",
- ctsvc_get_display_column(), id);
+ ctsvc_get_display_column(zone_name), id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_db_speeddial_value_set(ALL) Failed(%d)", ret);
+ CTS_ERR("__ctsvc_db_speeddial_value_set(ALL) Fail(%d)", ret);
return ret;
}
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_speeddial_update_record( contacts_record_h record )
+static int __ctsvc_db_speeddial_update_record(const char *zone_name, contacts_record_h record)
{
int ret;
int number_id;
"Invalid parameter : dial number (%d)", speeddial->dial_number);
RETVM_IF (speeddial->number_id < 0, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : number id (%d)", speeddial->number_id);
- ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE != ret, CONTACTS_ERROR_DB, "DB error : ctsvc_begin_trans() Fail(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, CONTACTS_ERROR_DB, "DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
- // check number_id validation
+ /* check number_id validation */
snprintf(query, sizeof(query),
"SELECT data.id FROM "CTS_TABLE_DATA", "CTS_TABLE_CONTACTS" "
"ON "CTS_TABLE_DATA".contact_id = "CTS_TABLE_CONTACTS".contact_id "
"AND contacts.deleted = 0 AND is_my_profile = 0 AND datatype = %d "
"WHERE id = %d ",
CTSVC_DATA_NUMBER, speeddial->number_id);
- ret = ctsvc_query_get_first_int_result(query, &number_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &number_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_query_get_first_int_result() Failed(%d) : number_id is invalid", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("ctsvc_query_get_first_int_result() Fail(%d) : number_id is invalid", ret);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
snprintf(query, sizeof(query),
"SELECT speed_number FROM "CTS_TABLE_SPEEDDIALS" WHERE speed_number = %d", speeddial->dial_number);
- ret = ctsvc_query_get_first_int_result(query, &speeddial_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &speeddial_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_query_get_first_int_result() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_get_first_int_result() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
snprintf(query, sizeof(query), "UPDATE "CTS_TABLE_SPEEDDIALS" "
"SET number_id = %d WHERE speed_number = %d",
speeddial->number_id, speeddial->dial_number);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_change();
+ ret = ctsvc_db_change(zone_name);
ctsvc_stmt_finalize(stmt);
if (0 < ret) {
- ctsvc_set_speed_noti();
- ret = ctsvc_end_trans(true);
+ ctsvc_set_speed_noti(zone_name);
+ ret = ctsvc_end_trans(zone_name, true);
}
else {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
ret = CONTACTS_ERROR_NO_DATA;
}
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_speeddial_delete_record( int id )
+static int __ctsvc_db_speeddial_delete_record(const char *zone_name, int id)
{
int ret;
int speeddial_id;
cts_stmt stmt;
char query[CTS_SQL_MIN_LEN] = {0};
- ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE != ret, CONTACTS_ERROR_DB, "DB error : ctsvc_begin_trans() Fail(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, CONTACTS_ERROR_DB, "DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
snprintf(query, sizeof(query),
"SELECT speed_number FROM "CTS_TABLE_SPEEDDIALS" WHERE speed_number = %d", id);
- ret = ctsvc_query_get_first_int_result(query, &speeddial_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &speeddial_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("DB error : ctsvc_query_get_first_int_result() Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
snprintf(query, sizeof(query), "DELETE FROM %s WHERE speed_number = %d",
CTS_TABLE_SPEEDDIALS, id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_change();
+ ret = ctsvc_db_change(zone_name);
ctsvc_stmt_finalize(stmt);
if (0 < ret) {
- ctsvc_set_speed_noti();
- ret = ctsvc_end_trans(true);
+ ctsvc_set_speed_noti(zone_name);
+ ret = ctsvc_end_trans(zone_name, true);
}
else {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
ret = CONTACTS_ERROR_NO_DATA;
}
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_speeddial_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_speeddial_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int ret;
int len;
len = snprintf(query, sizeof(query),
"SELECT person_id, %s, image_thumbnail_path, number_id, "
"type, label, number, speed_number "
- "FROM "CTSVC_DB_VIEW_SPEEDIDAL " ", ctsvc_get_display_column());
+ "FROM "CTSVC_DB_VIEW_SPEEDIDAL " ", ctsvc_get_display_column(zone_name));
if (0 != limit) {
len += snprintf(query+len, sizeof(query)-len, " LIMIT %d", limit);
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_speeddial_get_records_with_query( contacts_query_h query,
- int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_speeddial_get_records_with_query(const char *zone_name, contacts_query_h query,
+ int offset, int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt is failed(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
speeddial = (ctsvc_speeddial_s*)record;
if (0 == s_query->projection_count)
field_count = s_query->property_count;
- else
- {
+ else {
field_count = s_query->projection_count;
- if( CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, s_query->projection, s_query->projection_count, s_query->property_count) )
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, s_query->projection, s_query->projection_count, s_query->property_count)) {
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
switch(property_id) {
case CTSVC_PROPERTY_SPEEDDIAL_DIAL_NUMBER:
speeddial->dial_number = ctsvc_stmt_get_int(stmt, i);
- speeddial->id = speeddial->dial_number; // dial_number is an unique key
+ speeddial->id = speeddial->dial_number; /* dial_number is an unique key */
break;
case CTSVC_PROPERTY_SPEEDDIAL_NUMBER_ID:
speeddial->number_id = ctsvc_stmt_get_int(stmt, i);
break;
case CTSVC_PROPERTY_SPEEDDIAL_NUMBER:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(speeddial->number);
speeddial->number = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_SPEEDDIAL_NUMBER_LABEL:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(speeddial->label);
speeddial->label = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_SPEEDDIAL_NUMBER_TYPE:
break;
case CTSVC_PROPERTY_SPEEDDIAL_DISPLAY_NAME:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(speeddial->display_name);
speeddial->display_name = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_SPEEDDIAL_IMAGE_THUMBNAIL:
temp = ctsvc_stmt_get_text(stmt, i);
if (temp) {
snprintf(full_path, sizeof(full_path), "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, temp);
+ free(speeddial->image_thumbnail_path);
speeddial->image_thumbnail_path = strdup(full_path);
}
break;
return CONTACTS_ERROR_NONE;
}
-
-//static int __ctsvc_db_speeddial_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_speeddial_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_speeddial_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_plugin_contact_helper.h"
#include "ctsvc_db_plugin_url_helper.h"
#include "ctsvc_notification.h"
#include "ctsvc_db_access_control.h"
-static int __ctsvc_db_url_insert_record( contacts_record_h record, int *id );
-static int __ctsvc_db_url_get_record( int id, contacts_record_h* out_record );
-static int __ctsvc_db_url_update_record( contacts_record_h record );
-static int __ctsvc_db_url_delete_record( int id );
-static int __ctsvc_db_url_get_all_records( int offset, int limit, contacts_list_h* out_list );
-static int __ctsvc_db_url_get_records_with_query( contacts_query_h query, int offset, int limit, contacts_list_h* out_list );
-//static int __ctsvc_db_url_insert_records(const contacts_list_h in_list, int **ids);
-//static int __ctsvc_db_url_update_records(const contacts_list_h in_list);
-//static int __ctsvc_db_url_delete_records( int ids[], int count);
+static int __ctsvc_db_url_insert_record(const char *zone_name, contacts_record_h record, int *id);
+static int __ctsvc_db_url_get_record(const char *zone_name, int id, contacts_record_h* out_record);
+static int __ctsvc_db_url_update_record(const char *zone_name, contacts_record_h record);
+static int __ctsvc_db_url_delete_record(const char *zone_name, int id);
+static int __ctsvc_db_url_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list);
+static int __ctsvc_db_url_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
ctsvc_db_plugin_info_s ctsvc_db_plugin_url = {
.is_query_only = false,
.delete_record = __ctsvc_db_url_delete_record,
.get_all_records = __ctsvc_db_url_get_all_records,
.get_records_with_query = __ctsvc_db_url_get_records_with_query,
- .insert_records = NULL,//__ctsvc_db_url_insert_records,
- .update_records = NULL,//__ctsvc_db_url_update_records,
- .delete_records = NULL,//__ctsvc_db_url_delete_records
+ .insert_records = NULL,
+ .update_records = NULL,
+ .delete_records = NULL,
.get_count = NULL,
.get_count_with_query = NULL,
.replace_record = NULL,
.replace_records = NULL,
};
-static int __ctsvc_db_url_insert_record( contacts_record_h record, int *id )
+static int __ctsvc_db_url_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
int ret;
int addressbook_id;
RETVM_IF(NULL == url->url, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : url is NULL");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", url->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_ERR("No data : contact_id (%d) is not exist", url->contact_id);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this url record : addressbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_url_insert(record, url->contact_id, false, id);
+ ret = ctsvc_db_url_insert(zone_name, record, url->contact_id, false, id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(url->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, url->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_url_get_record( int id, contacts_record_h* out_record )
+static int __ctsvc_db_url_get_record(const char *zone_name, int id, contacts_record_h* out_record)
{
int ret;
cts_stmt stmt = NULL;
"WHERE id = %d AND datatype = %d ",
id, CTSVC_DATA_URL);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (1 /*CTS_TRUE*/ != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_url_update_record( contacts_record_h record )
+static int __ctsvc_db_url_update_record(const char *zone_name, contacts_record_h record)
{
int ret;
int addressbook_id;
ctsvc_url_s *url = (ctsvc_url_s *)record;
RETVM_IF(NULL == url->url, CONTACTS_ERROR_INVALID_PARAMETER, "url is empty");
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT addressbook_id FROM "CTSVC_DB_VIEW_CONTACT" WHERE contact_id = %d", url->contact_id);
- ret = ctsvc_query_get_first_int_result(query, &addressbook_id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &addressbook_id);
if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("No data : contact_id (%d) is not exist", url->contact_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to update this url record : addressbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_url_update(record, false);
+ ret = ctsvc_db_url_update(zone_name, record, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("Update record Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("Update record Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(url->contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, url->contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_url_delete_record( int id )
+static int __ctsvc_db_url_delete_record(const char *zone_name, int id)
{
int ret;
int contact_id;
cts_stmt stmt = NULL;
int addressbook_id;
- ret = ctsvc_begin_trans();
+ ret = ctsvc_begin_trans(zone_name);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
return ret;
}
snprintf(query, sizeof(query),
"SELECT contact_id, addressbook_id FROM "CTSVC_DB_VIEW_CONTACT " "
"WHERE contact_id = (SELECT contact_id FROM "CTS_TABLE_DATA" WHERE id = %d)", id);
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
if (NULL == stmt) {
CTS_ERR("DB error : ctsvc_query_prepare Fail(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
ret = ctsvc_stmt_step(stmt);
if (1 != ret) {
CTS_ERR("The id(%d) is Invalid(%d)", id, ret);
ctsvc_stmt_finalize(stmt);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
if (CONTACTS_ERROR_NONE == ret)
return CONTACTS_ERROR_NO_DATA;
else
addressbook_id = ctsvc_stmt_get_int(stmt, 1);
ctsvc_stmt_finalize(stmt);
- if (false == ctsvc_have_ab_write_permission(addressbook_id)) {
+ if (false == ctsvc_have_ab_write_permission(zone_name, addressbook_id)) {
CTS_ERR("Does not have permission to delete this url record : addressbook_id(%d)", addressbook_id);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return CONTACTS_ERROR_PERMISSION_DENIED;
}
- ret = ctsvc_db_url_delete(id, false);
+ ret = ctsvc_db_url_delete(zone_name, id, false);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_begin_trans() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_begin_trans(zone_name) Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = ctsvc_db_contact_update_changed_time(contact_id);
+ ret = ctsvc_db_contact_update_changed_time(zone_name, contact_id);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Failed(%d)", ret);
- ctsvc_end_trans(false);
+ CTS_ERR("DB error : ctsvc_db_contact_update_changed_time() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ctsvc_set_person_noti();
+ ctsvc_set_person_noti(zone_name);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
else
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_url_get_all_records( int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_url_get_all_records(const char *zone_name, int offset, int limit, contacts_list_h* out_list)
{
int len;
int ret;
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB : ctsvc_stmt_step fail(%d)", ret);
+ CTS_ERR("DB : ctsvc_stmt_step Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_url_get_records_with_query( contacts_query_h query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_url_get_records_with_query(const char *zone_name, contacts_query_h query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s *)query;
- ret = ctsvc_db_make_get_records_query_stmt(s_query, offset, limit, &stmt);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt fail(%d)", ret);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, s_query, offset, limit, &stmt);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_db_make_get_records_query_stmt Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 /*CTS_TRUE */ != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ret = ctsvc_record_set_projection_flags(record, s_query->projection,
s_query->projection_count, s_query->property_count);
- if(CONTACTS_ERROR_NONE != ret)
+ if (CONTACTS_ERROR_NONE != ret)
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
char *temp;
int property_id;
if (0 == s_query->projection_count)
break;
case CTSVC_PROPERTY_URL_LABEL:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(url->label);
url->label = SAFE_STRDUP(temp);
break;
case CTSVC_PROPERTY_URL_URL:
temp = ctsvc_stmt_get_text(stmt, i);
+ free(url->url);
url->url = SAFE_STRDUP(temp);
break;
default:
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-
-//static int __ctsvc_db_url_insert_records(const contacts_list_h in_list, int **ids) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_url_update_records(const contacts_list_h in_list) { return CONTACTS_ERROR_NONE; }
-//static int __ctsvc_db_url_delete_records( int ids[], int count) { return CONTACTS_ERROR_NONE; }
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
#include "ctsvc_db_init.h"
#include "ctsvc_db_query.h"
#include "ctsvc_db_plugin_contact_helper.h"
ctsvc_url_s *url;
ret = contacts_record_create(_contacts_url._uri, (contacts_record_h *)&url);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create is failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "contacts_record_create Fail(%d)", ret);
url->id = ctsvc_stmt_get_int(stmt, start_count++);
url->contact_id = ctsvc_stmt_get_int(stmt, start_count++);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_url_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id)
+int ctsvc_db_url_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id)
{
int ret;
cts_stmt stmt = NULL;
"VALUES(%d, %d, %d, %d, ?, ?)",
contact_id, is_my_profile, CTSVC_DATA_URL, url->type);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
if (url->label)
ctsvc_stmt_bind_text(stmt, 1, url->label);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
- //url->id = ctsvc_db_get_last_insert_id();
+ /* url->id = ctsvc_db_get_last_insert_id(zone_name); */
if (id)
- *id = ctsvc_db_get_last_insert_id();
+ *id = ctsvc_db_get_last_insert_id(zone_name);
ctsvc_stmt_finalize(stmt);
- if (!is_my_profile)
- ctsvc_set_url_noti();
+ if (false == is_my_profile)
+ ctsvc_set_url_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
-int ctsvc_db_url_update(contacts_record_h record, bool is_my_profile)
+int ctsvc_db_url_update(const char *zone_name, contacts_record_h record, bool is_my_profile)
{
int id;
int ret = CONTACTS_ERROR_NONE;
GSList *cursor = NULL;
char query[CTS_SQL_MAX_LEN] = {0};
- RETVM_IF(!url->id, CONTACTS_ERROR_INVALID_PARAMETER, "url of contact has no ID.");
+ RETVM_IF(0 == url->id, CONTACTS_ERROR_INVALID_PARAMETER, "url of contact has no ID.");
RETVM_IF(CTSVC_PROPERTY_FLAG_DIRTY != (url->base.property_flag & CTSVC_PROPERTY_FLAG_DIRTY), CONTACTS_ERROR_NONE, "No update");
snprintf(query, sizeof(query),
"SELECT id FROM "CTS_TABLE_DATA" WHERE id = %d", url->id);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
RETV_IF(ret != CONTACTS_ERROR_NONE, ret);
do {
if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_create_set_query(record, &set, &bind_text))) break;
- if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(set, bind_text, CTS_TABLE_DATA, url->id))) break;
- if (!is_my_profile)
- ctsvc_set_url_noti();
+ if (CONTACTS_ERROR_NONE != (ret = ctsvc_db_update_record_with_set_query(zone_name, set, bind_text, CTS_TABLE_DATA, url->id))) break;
+ if (false == is_my_profile)
+ ctsvc_set_url_noti(zone_name);
} while (0);
CTSVC_RECORD_RESET_PROPERTY_FLAGS((ctsvc_record_s *)record);
return ret;
}
-int ctsvc_db_url_delete(int id, bool is_my_profile)
+int ctsvc_db_url_delete(const char *zone_name, int id, bool is_my_profile)
{
int ret;
char query[CTS_SQL_MIN_LEN] = {0};
snprintf(query, sizeof(query), "DELETE FROM "CTS_TABLE_DATA" WHERE id = %d AND datatype = %d",
id, CTSVC_DATA_URL);
- ret = ctsvc_query_exec(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Failed(%d)", ret);
+ ret = ctsvc_query_exec(zone_name, query);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_exec() Fail(%d)", ret);
- if (!is_my_profile)
- ctsvc_set_url_noti();
+ if (false == is_my_profile)
+ ctsvc_set_url_noti(zone_name);
return CONTACTS_ERROR_NONE;
}
#define __CTSVC_DB_PLUGIN_URL_HELPER_H__
#include "contacts.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_sqlite.h"
-int ctsvc_db_url_insert(contacts_record_h record, int contact_id, bool is_my_profile, int *id);
-int ctsvc_db_url_update(contacts_record_h record, bool is_my_profile);
-int ctsvc_db_url_delete(int id, bool is_my_profile);
+int ctsvc_db_url_insert(const char *zone_name, contacts_record_h record, int contact_id, bool is_my_profile, int *id);
+int ctsvc_db_url_update(const char *zone_name, contacts_record_h record, bool is_my_profile);
+int ctsvc_db_url_delete(const char *zone_name, int id, bool is_my_profile);
int ctsvc_db_url_get_value_from_stmt(cts_stmt stmt, contacts_record_h *record, int start_count);
-#endif // __CTSVC_DB_PLUGIN_URL_HELPER_H__
+#endif /* __CTSVC_DB_PLUGIN_URL_HELPER_H__ */
\ No newline at end of file
#include "contacts_internal.h"
#include "ctsvc_internal.h"
-#include "ctsvc_sqlite.h"
-#include "ctsvc_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_schema.h"
#include "ctsvc_list.h"
#include "ctsvc_record.h"
-#include "ctsvc_utils.h"
+#include "ctsvc_db_utils.h"
#include "ctsvc_normalize.h"
#include "ctsvc_number_utils.h"
#include "ctsvc_db_init.h"
#include "ctsvc_inotify.h"
#include "ctsvc_localize.h"
#include "ctsvc_localize_utils.h"
-#include "ctsvc_setting.h"
+#include "ctsvc_server_setting.h"
#include "ctsvc_db_access_control.h"
#include "ctsvc_db_plugin_person_helper.h"
#include "ctsvc_db_plugin_group_helper.h"
#include "ctsvc_db_plugin_company_helper.h"
+#include "ctsvc_db_query.h"
+
#ifdef _CONTACTS_IPC_SERVER
-#ifdef ENABLE_SIM_FEATURE
#include "ctsvc_server_sim.h"
-#endif // ENABLE_SIM_FEATURE
#include "ctsvc_server_change_subject.h"
-#endif
+#endif /* _CONTACTS_IPC_SERVER */
-// It is used to sort search results
+/* It is used to sort search results */
const char *hangul_syllable[19][3] = {
- {"ㄱ", "가", "깋"}, // AC00, AE3B
- {"ㄲ", "까", "낗"}, // AE3C, B097
- {"ㄴ", "나", "닣"}, // B098, B2E3
- {"ㄷ", "다", "딯"}, // B2E4, B52F
- {"ㄸ", "따", "띻"}, // B530, B77B
- {"ㄹ", "라", "맇"}, // B77C, B9C7
- {"ㅁ", "마", "밓"}, // B9C8, BC13
- {"ㅂ", "바", "빟"}, // BC14, BE5F
- {"ㅃ", "빠", "삫"}, // BE60, C0AB
- {"ㅅ", "사", "싷"}, // C0AC, C2F7
- {"ㅆ", "싸", "앃"}, // C2F8, C543
- {"ㅇ", "아", "잏"}, // C544, C78F
- {"ㅈ", "자", "짛"}, // C790, C9DB
- {"ㅉ", "짜", "찧"}, // C9DC, CC27
- {"ㅊ", "차", "칳"}, // CC28, CE73
- {"ㅋ", "카", "킿"}, // CE74, D0AF
- {"ㅌ", "타", "팋"}, // D0C0, D30B
- {"ㅍ", "파", "핗"}, // D30C, D557
- {"ㅎ", "하", "힣"}, // D558, D7A3
+ {"ㄱ", "가", "깋"}, /* AC00, AE3B */
+ {"ㄲ", "까", "낗"}, /* AE3C, B097 */
+ {"ㄴ", "나", "닣"}, /* B098, B2E3 */
+ {"ㄷ", "다", "딯"}, /* B2E4, B52F */
+ {"ㄸ", "따", "띻"}, /* B530, B77B */
+ {"ㄹ", "라", "맇"}, /* B77C, B9C7 */
+ {"ㅁ", "마", "밓"}, /* B9C8, BC13 */
+ {"ㅂ", "바", "빟"}, /* BC14, BE5F */
+ {"ㅃ", "빠", "삫"}, /* BE60, C0AB */
+ {"ㅅ", "사", "싷"}, /* C0AC, C2F7 */
+ {"ㅆ", "싸", "앃"}, /* C2F8, C543 */
+ {"ㅇ", "아", "잏"}, /* C544, C78F */
+ {"ㅈ", "자", "짛"}, /* C790, C9DB */
+ {"ㅉ", "짜", "찧"}, /* C9DC, CC27 */
+ {"ㅊ", "차", "칳"}, /* CC28, CE73 */
+ {"ㅋ", "카", "킿"}, /* CE74, D0AF */
+ {"ㅌ", "타", "팋"}, /* D0C0, D30B */
+ {"ㅍ", "파", "핗"}, /* D30C, D557 */
+ {"ㅎ", "하", "힣"}, /* D558, D7A3 */
};
typedef enum {
QUERY_PROJECTION,
}db_query_property_type_e;
-static contacts_db_status_e __db_status = CONTACTS_DB_STATUS_NORMAL;
+static GHashTable *ctsvc_db_status_table = NULL;
-static const char * __ctsvc_db_get_property_field_name(const property_info_s *properties,
+static const char * __ctsvc_db_get_property_field_name(const char *zone_name, const property_info_s *properties,
int count, db_query_property_type_e property_type, unsigned int property_id)
{
int i;
else if (property_id == CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX) {
if (property_type != QUERY_PROJECTION)
return NULL;
- const char* temp = ctsvc_get_display_column();
- // snprintf(temp, sizeof(temp), "_NORMALIZE_INDEX_(%s)", ctsvc_get_display_column());
+ const char* temp = ctsvc_get_display_column(zone_name);
+ // snprintf(temp, sizeof(temp), "_NORMALIZE_INDEX_(%s)", ctsvc_get_display_column(zone_name));
return "_NORMALIZE_INDEX_"temp;
}
*/
else
- return ctsvc_get_display_column();
+ return ctsvc_get_display_column(zone_name);
}
}
return NULL;
}
-// return data type of the property
-// bool / int / long long int / char string / double / child record
+/*
+ * return data type of the property
+ * bool / int / long long int / char string / double / child record
+ */
static inline int __ctsvc_db_get_property_type(const property_info_s *properties,
int count, unsigned int property_id)
{
return -1;
}
-static inline int __ctsvc_db_create_int_condition(ctsvc_composite_filter_s *com_filter,
- ctsvc_attribute_filter_s *filter, char **condition )
+static inline int __ctsvc_db_create_int_condition(const char *zone_name, ctsvc_composite_filter_s *com_filter,
+ ctsvc_attribute_filter_s *filter, char **condition)
{
const char *field_name;
char out_cond[CTS_SQL_MAX_LEN] = {0};
- field_name = __ctsvc_db_get_property_field_name(com_filter->properties,
+ field_name = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, filter->property_id);
RETVM_IF(NULL == field_name, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property id(%d)", filter->property_id);
#ifdef _CONTACTS_IPC_SERVER
-#ifdef ENABLE_SIM_FEATURE
if (filter->property_id == CTSVC_PROPERTY_PHONELOG_SIM_SLOT_NO) {
- // get real sim info id by SIM slot number 0/1
+ /* get real sim info id by SIM slot number 0/1 */
int sim_info_id = ctsvc_server_sim_get_info_id_by_sim_slot_no(filter->value.i);
- if (sim_info_id > 0) {
+ if (0 < sim_info_id) {
snprintf(out_cond, sizeof(out_cond), "%s = %d", field_name, sim_info_id);
*condition = strdup(out_cond);
return CONTACTS_ERROR_NONE;
}
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-#endif // ENABLE_SIM_FEATURE
-#endif
+#endif /* _CONTACTS_IPC_SERVER */
switch(filter->match) {
case CONTACTS_MATCH_EQUAL:
return CONTACTS_ERROR_NONE;
}
-static inline int __ctsvc_db_create_double_condition(ctsvc_composite_filter_s *com_filter,
- ctsvc_attribute_filter_s *filter, char **condition )
+static inline int __ctsvc_db_create_double_condition(const char *zone_name, ctsvc_composite_filter_s *com_filter,
+ ctsvc_attribute_filter_s *filter, char **condition)
{
const char *field_name;
char out_cond[CTS_SQL_MAX_LEN] = {0};
- field_name = __ctsvc_db_get_property_field_name(com_filter->properties,
+ field_name = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, filter->property_id);
RETVM_IF(NULL == field_name, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property id(%d)", filter->property_id);
return CONTACTS_ERROR_NONE;
}
-static inline int __ctsvc_db_create_lli_condition(ctsvc_composite_filter_s *com_filter,
- ctsvc_attribute_filter_s *filter, char **condition )
+static inline int __ctsvc_db_create_lli_condition(const char *zone_name, ctsvc_composite_filter_s *com_filter,
+ ctsvc_attribute_filter_s *filter, char **condition)
{
const char *field_name;
char out_cond[CTS_SQL_MAX_LEN] = {0};
- field_name = __ctsvc_db_get_property_field_name(com_filter->properties,
+ field_name = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, filter->property_id);
RETVM_IF(NULL == field_name, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property id(%d)", filter->property_id);
if (false == with_escape)
return strdup(str);
- for(i=0;i<len;i++) {
+ for (i=0;i<len;i++) {
if (str[i] == '\'' || str[i] == '_' || str[i] == '%' || str[i] == '\\') {
temp_str[j++] = CTSVC_DB_ESCAPE_CHAR;
}
cond_len = snprintf(out_cond, sizeof(out_cond), "%s LIKE ('%%' || ? || '%%') ESCAPE '%c'", field_name, CTSVC_DB_ESCAPE_CHAR);
break;
case CONTACTS_MATCH_STARTSWITH:
- cond_len = snprintf(out_cond, sizeof(out_cond), "%s LIKE ( ? || '%%') ESCAPE '%c'", field_name, CTSVC_DB_ESCAPE_CHAR);
+ cond_len = snprintf(out_cond, sizeof(out_cond), "%s LIKE (? || '%%') ESCAPE '%c'", field_name, CTSVC_DB_ESCAPE_CHAR);
break;
case CONTACTS_MATCH_ENDSWITH:
cond_len = snprintf(out_cond, sizeof(out_cond), "%s LIKE ('%%' || ?) ESCAPE '%c'", field_name, CTSVC_DB_ESCAPE_CHAR);
return cond_len;
}
-static inline int __ctsvc_db_create_str_condition(ctsvc_composite_filter_s *com_filter,
+static inline int __ctsvc_db_create_str_condition(const char *zone_name, ctsvc_composite_filter_s *com_filter,
ctsvc_attribute_filter_s *filter, char **condition, GSList **bind_text)
{
int ret;
*condition = NULL;
- field_name = __ctsvc_db_get_property_field_name(com_filter->properties,
+ field_name = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, filter->property_id);
RETVM_IF(NULL == field_name, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property id(%d)", filter->property_id);
- // number_filter condition is only used to find exactly matched number
- // based on internal logic : _NUMBER_COMPARE_
+ /*
+ * number_filter condition is only used to find exactly matched number
+ * based on internal logic : _NUMBER_COMPARE_
+ */
if (filter->property_id == CTSVC_PROPERTY_NUMBER_NUMBER_FILTER
|| filter->property_id == CTSVC_PROPERTY_PHONELOG_ADDRESS_FILTER
|| filter->property_id == CTSVC_PROPERTY_SPEEDDIAL_NUMBER_FILTER)
filter->match = CONTACTS_MATCH_EXACTLY;
ret = __ctsvc_db_add_str_matching_rule(field_name, filter->match, &temp, &with_escape);
- RETVM_IF(ret <= 0, CONTACTS_ERROR_INVALID_PARAMETER,
- "__ctsvc_db_add_str_matching_rule Fail");
+ if (ret <= 0) {
+ free(temp);
+ CTS_ERR("__ctsvc_db_add_str_matching_rule Fail");
+ return CONTACTS_ERROR_INVALID_PARAMETER;
+ }
cond_len = snprintf(out_cond, sizeof(out_cond), "%s", temp);
free(temp);
temp = NULL;
if (filter->value.s) {
- // number filter
+ /* number filter */
if (filter->property_id == CTSVC_PROPERTY_NUMBER_NUMBER_FILTER
|| filter->property_id == CTSVC_PROPERTY_PHONELOG_ADDRESS_FILTER
|| filter->property_id == CTSVC_PROPERTY_SPEEDDIAL_NUMBER_FILTER) {
- // number filter is for matching number depends on internal rule _NUMBER_COMPARE_
- char clean_num[strlen(filter->value.s)+1+5]; // for cc
- char normal_num[strlen(filter->value.s)+1+5]; // for cc
+ /*
+ * number filter is for matching number
+ * depends on internal rule _NUMBER_COMPARE_
+ */
+ char clean_num[strlen(filter->value.s)+1+5]; /* for cc */
+ char normal_num[strlen(filter->value.s)+1+5]; /* for cc */
bool add_condition = false;
ret = ctsvc_clean_number(filter->value.s, clean_num, sizeof(clean_num), false);
if (0 < ret) {
ret = ctsvc_normalize_number(clean_num, normal_num, sizeof(normal_num), false);
+ normal_num[sizeof(normal_num) -1] = '\0';
if (0 < ret) {
- char min_match[strlen(filter->value.s)+1+5]; // for cc
+ char min_match[strlen(filter->value.s)+1+5]; /* for cc */
ret = ctsvc_get_minmatch_number(normal_num, min_match, sizeof(min_match), ctsvc_get_phonenumber_min_match_digit());
if (CONTACTS_ERROR_NONE == ret) {
- // minmatch filter is to improve performance
+ /* minmatch filter is to improve performance */
*bind_text = g_slist_append(*bind_text, __ctsvc_db_get_str_with_escape(min_match, strlen(min_match), with_escape));
- // _NUMBER_COMPARE_(noraml_num, normalized keyword)
- if (strcmp(normal_num, "+") != 0) {
+ /* _NUMBER_COMPARE_(noraml_num, normalized keyword) */
+ if (STRING_EQUAL != strcmp(normal_num, "+")) {
const char *number_field = NULL;
if (filter->property_id == CTSVC_PROPERTY_NUMBER_NUMBER_FILTER)
- number_field = __ctsvc_db_get_property_field_name(com_filter->properties,
+ number_field = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, CTSVC_PROPERTY_NUMBER_NORMALIZED_NUMBER);
else if (filter->property_id == CTSVC_PROPERTY_PHONELOG_ADDRESS_FILTER)
- number_field = __ctsvc_db_get_property_field_name(com_filter->properties,
+ number_field = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, CTSVC_PROPERTY_PHONELOG_NORMALIZED_ADDRESS);
else if (filter->property_id == CTSVC_PROPERTY_SPEEDDIAL_NUMBER_FILTER)
- number_field = __ctsvc_db_get_property_field_name(com_filter->properties,
+ number_field = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, CTSVC_PROPERTY_SPEEDDIAL_NORMALIZED_NUMBER);
if (number_field) {
}
if (add_condition == false) {
- // If fail to get normalized number then compare with original number
+ /* If fail to get normalized number then compare with original number */
const char *number_field = NULL;
if (filter->property_id == CTSVC_PROPERTY_NUMBER_NUMBER_FILTER)
- number_field = __ctsvc_db_get_property_field_name(com_filter->properties,
+ number_field = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, CTSVC_PROPERTY_NUMBER_NUMBER);
else if (filter->property_id == CTSVC_PROPERTY_PHONELOG_ADDRESS_FILTER)
- number_field = __ctsvc_db_get_property_field_name(com_filter->properties,
+ number_field = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, CTSVC_PROPERTY_PHONELOG_ADDRESS);
else if (filter->property_id == CTSVC_PROPERTY_SPEEDDIAL_NUMBER_FILTER)
- number_field = __ctsvc_db_get_property_field_name(com_filter->properties,
+ number_field = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, CTSVC_PROPERTY_SPEEDDIAL_NUMBER);
}
}
}
- // normalized number
+ /* normalized number */
else if (filter->property_id == CTSVC_PROPERTY_NUMBER_NORMALIZED_NUMBER
|| filter->property_id == CTSVC_PROPERTY_PHONELOG_NORMALIZED_ADDRESS
|| filter->property_id == CTSVC_PROPERTY_SPEEDDIAL_NORMALIZED_NUMBER) {
- char clean_num[strlen(filter->value.s)+1+5]; // for cc
+ char clean_num[strlen(filter->value.s)+1+5]; /* for cc */
ret = ctsvc_clean_number(filter->value.s, clean_num, sizeof(clean_num), false);
if (0 < ret) {
bool add_condition = true;
const char *clean_field = NULL;
- // has clean number or normalized number
+ /* has clean number or normalized number */
const char *cc = ctsvc_get_network_cc(false);
- if (cc && cc[0] == '7' && clean_num[0] == '8') { // Russia
- char normal_num[strlen(clean_num)+1+5]; // for cc
+ if (cc && cc[0] == '7' && clean_num[0] == '8') { /* Russia */
+ char normal_num[strlen(clean_num)+1+5]; /* for cc */
ret = ctsvc_normalize_number(clean_num, normal_num, sizeof(normal_num), false);
if (0 < ret)
*bind_text = g_slist_append(*bind_text, __ctsvc_db_get_str_with_escape(normal_num, strlen(normal_num), with_escape));
else
*bind_text = g_slist_append(*bind_text, __ctsvc_db_get_str_with_escape(clean_num, strlen(clean_num), with_escape));
}
- else if (strcmp(clean_num, "+") != 0) {
+ else if (STRING_EQUAL != strcmp(clean_num, "+")) {
*bind_text = g_slist_append(*bind_text, __ctsvc_db_get_str_with_escape(clean_num, strlen(clean_num), with_escape));
}
else
add_condition = false;
if (filter->property_id == CTSVC_PROPERTY_NUMBER_NORMALIZED_NUMBER)
- clean_field = __ctsvc_db_get_property_field_name(com_filter->properties,
+ clean_field = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, CTSVC_PROPERTY_NUMBER_CLEANED_NUMBER);
else if (filter->property_id == CTSVC_PROPERTY_PHONELOG_NORMALIZED_ADDRESS)
- clean_field = __ctsvc_db_get_property_field_name(com_filter->properties,
+ clean_field = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, CTSVC_PROPERTY_PHONELOG_CLEANED_ADDRESS);
else if (filter->property_id == CTSVC_PROPERTY_SPEEDDIAL_NORMALIZED_NUMBER)
- clean_field = __ctsvc_db_get_property_field_name(com_filter->properties,
+ clean_field = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, CTSVC_PROPERTY_SPEEDDIAL_CLEANED_NUMBER);
if (clean_field) {
if (add_condition)
cond_len += snprintf(out_cond+cond_len, sizeof(out_cond)-cond_len, " OR ");
ret = __ctsvc_db_add_str_matching_rule(clean_field, filter->match, &temp, &with_escape);
- RETVM_IF(ret <= 0, CONTACTS_ERROR_INVALID_PARAMETER,
- "__ctsvc_db_add_str_matching_rule Fail");
+ if (ret <= 0) {
+ free(temp);
+ CTS_ERR("__ctsvc_db_add_str_matching_rule Fail");
+ return CONTACTS_ERROR_INVALID_PARAMETER;
+ }
cond_len += snprintf(out_cond+cond_len, sizeof(out_cond)-cond_len, "%s", temp);
free(temp);
temp = NULL;
}
}
else if (ret == 0) {
- // If fail to get cleaned number then compare with original number
+ /* If fail to get cleaned number then compare with original number */
const char *number_field = NULL;
if (filter->property_id == CTSVC_PROPERTY_NUMBER_NORMALIZED_NUMBER)
- number_field = __ctsvc_db_get_property_field_name(com_filter->properties,
+ number_field = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, CTSVC_PROPERTY_NUMBER_NUMBER);
else if (filter->property_id == CTSVC_PROPERTY_PHONELOG_NORMALIZED_ADDRESS)
- number_field = __ctsvc_db_get_property_field_name(com_filter->properties,
+ number_field = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, CTSVC_PROPERTY_PHONELOG_ADDRESS);
else if (filter->property_id == CTSVC_PROPERTY_SPEEDDIAL_NORMALIZED_NUMBER)
- number_field = __ctsvc_db_get_property_field_name(com_filter->properties,
+ number_field = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, CTSVC_PROPERTY_SPEEDDIAL_NUMBER);
if (number_field) {
else
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- // cleaned number
+ /* cleaned number */
else if (filter->property_id == CTSVC_PROPERTY_NUMBER_CLEANED_NUMBER
|| filter->property_id == CTSVC_PROPERTY_PHONELOG_CLEANED_ADDRESS
|| filter->property_id == CTSVC_PROPERTY_SPEEDDIAL_CLEANED_NUMBER) {
- char clean_num[strlen(filter->value.s)+1+5]; // for cc
+ char clean_num[strlen(filter->value.s)+1+5]; /* for cc */
ret = ctsvc_clean_number(filter->value.s, clean_num, sizeof(clean_num), false);
if (0 < ret) {
*bind_text = g_slist_append(*bind_text, __ctsvc_db_get_str_with_escape(clean_num, strlen(clean_num), with_escape));
}
else if (ret == 0) {
- // If fail to get cleaned number then compare with original number
+ /* If fail to get cleaned number then compare with original number */
const char *number_field = NULL;
if (filter->property_id == CTSVC_PROPERTY_NUMBER_CLEANED_NUMBER)
- number_field = __ctsvc_db_get_property_field_name(com_filter->properties,
+ number_field = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, CTSVC_PROPERTY_NUMBER_NUMBER);
else if (filter->property_id == CTSVC_PROPERTY_PHONELOG_CLEANED_ADDRESS)
- number_field = __ctsvc_db_get_property_field_name(com_filter->properties,
+ number_field = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, CTSVC_PROPERTY_PHONELOG_ADDRESS);
else if (filter->property_id == CTSVC_PROPERTY_SPEEDDIAL_CLEANED_NUMBER)
- number_field = __ctsvc_db_get_property_field_name(com_filter->properties,
+ number_field = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, CTSVC_PROPERTY_SPEEDDIAL_NUMBER);
if (number_field) {
|| filter->property_id == CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL
|| filter->property_id == CTSVC_PROPERTY_MY_PROFILE_IMAGE_THUMBNAIL
|| filter->property_id == CTSVC_PROPERTY_IMAGE_PATH) {
- if (strncmp(filter->value.s, CTSVC_CONTACT_IMG_FULL_LOCATION, strlen(CTSVC_CONTACT_IMG_FULL_LOCATION)) == 0) {
+ if (STRING_EQUAL == strncmp(filter->value.s, CTSVC_CONTACT_IMG_FULL_LOCATION, strlen(CTSVC_CONTACT_IMG_FULL_LOCATION))) {
*bind_text = g_slist_append(*bind_text,
__ctsvc_db_get_str_with_escape(filter->value.s+strlen(CTSVC_CONTACT_IMG_FULL_LOCATION)+1,
strlen(filter->value.s)-strlen(CTSVC_CONTACT_IMG_FULL_LOCATION)-1, with_escape));
*bind_text = g_slist_append(*bind_text, __ctsvc_db_get_str_with_escape(filter->value.s, strlen(filter->value.s), with_escape));
}
else if (filter->property_id == CTSVC_PROPERTY_GROUP_IMAGE) {
- if (strncmp(filter->value.s, CTS_GROUP_IMAGE_LOCATION, strlen(CTS_GROUP_IMAGE_LOCATION)) == 0) {
+ if (STRING_EQUAL == strncmp(filter->value.s, CTS_GROUP_IMAGE_LOCATION, strlen(CTS_GROUP_IMAGE_LOCATION))) {
*bind_text = g_slist_append(*bind_text,
__ctsvc_db_get_str_with_escape(filter->value.s+strlen(CTS_GROUP_IMAGE_LOCATION)+1,
strlen(filter->value.s)-strlen(CTS_GROUP_IMAGE_LOCATION)-1, with_escape));
*bind_text = g_slist_append(*bind_text, __ctsvc_db_get_str_with_escape(filter->value.s, strlen(filter->value.s), with_escape));
}
else if (filter->property_id == CTSVC_PROPERTY_COMPANY_LOGO) {
- if (strncmp(filter->value.s, CTS_LOGO_IMAGE_LOCATION, strlen(CTS_LOGO_IMAGE_LOCATION)) == 0) {
+ if (STRING_EQUAL == strncmp(filter->value.s, CTS_LOGO_IMAGE_LOCATION, strlen(CTS_LOGO_IMAGE_LOCATION))) {
*bind_text = g_slist_append(*bind_text,
__ctsvc_db_get_str_with_escape(filter->value.s+strlen(CTS_LOGO_IMAGE_LOCATION)+1,
strlen(filter->value.s)-strlen(CTS_LOGO_IMAGE_LOCATION)-1, with_escape));
return CONTACTS_ERROR_NONE;
}
-static inline int __ctsvc_db_create_bool_condition(ctsvc_composite_filter_s *com_filter,
- ctsvc_attribute_filter_s *filter, char **condition )
+static inline int __ctsvc_db_create_bool_condition(const char *zone_name, ctsvc_composite_filter_s *com_filter,
+ ctsvc_attribute_filter_s *filter, char **condition)
{
const char *field_name;
char out_cond[CTS_SQL_MAX_LEN] = {0};
- field_name = __ctsvc_db_get_property_field_name(com_filter->properties,
+ field_name = __ctsvc_db_get_property_field_name(zone_name, com_filter->properties,
com_filter->property_count, QUERY_FILTER, filter->property_id);
RETVM_IF(NULL == field_name, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : property id(%d)", filter->property_id);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_create_attribute_condition(ctsvc_composite_filter_s *com_filter,
+static int __ctsvc_db_create_attribute_condition(const char *zone_name, ctsvc_composite_filter_s *com_filter,
ctsvc_attribute_filter_s *filter, char **condition, GSList **bind_text)
{
int ret;
switch (filter->filter_type) {
case CTSVC_FILTER_INT:
- ret = __ctsvc_db_create_int_condition(com_filter, filter, &cond);
+ ret = __ctsvc_db_create_int_condition(zone_name, com_filter, filter, &cond);
break;
case CTSVC_FILTER_BOOL:
- ret = __ctsvc_db_create_bool_condition(com_filter, filter, &cond);
+ ret = __ctsvc_db_create_bool_condition(zone_name, com_filter, filter, &cond);
break;
case CTSVC_FILTER_STR:
- ret = __ctsvc_db_create_str_condition(com_filter, filter, &cond, bind_text);
+ ret = __ctsvc_db_create_str_condition(zone_name, com_filter, filter, &cond, bind_text);
break;
case CTSVC_FILTER_LLI:
- ret = __ctsvc_db_create_lli_condition(com_filter, filter, &cond);
+ ret = __ctsvc_db_create_lli_condition(zone_name, com_filter, filter, &cond);
break;
case CTSVC_FILTER_DOUBLE:
- ret = __ctsvc_db_create_double_condition(com_filter, filter, &cond);
+ ret = __ctsvc_db_create_double_condition(zone_name, com_filter, filter, &cond);
break;
default :
CTS_ERR("The filter type is not supported (%d)", filter->filter_type);
#define CTSVC_FILTER_LENGTH 100
-// If there are too many condition, sqlite return fail SQLITE_ERROR(1).
-// Expression tree is too large (maximum depth 1000).
-// It is related to SQLITE_LIMIT_EXPR_DEPTH.
-static inline int __ctsvc_db_create_composite_condition(ctsvc_composite_filter_s *com_filter,
+/*
+ * If there are too many condition, sqlite return fail SQLITE_ERROR(1).
+ * Expression tree is too large (maximum depth 1000).
+ * It is related to SQLITE_LIMIT_EXPR_DEPTH.
+ */
+static inline int __ctsvc_db_create_composite_condition(const char *zone_name, ctsvc_composite_filter_s *com_filter,
char **condition, GSList **bind_text)
{
RETV_IF(NULL == com_filter, CONTACTS_ERROR_INVALID_PARAMETER);
GSList *ops = com_filter->filter_ops;
*condition = NULL;
- // the case : did not set filter condition after calling contacts_filter_create()
+ /* the case : did not set filter condition after calling contacts_filter_create() */
RETV_IF(NULL == filters, CONTACTS_ERROR_NONE);
cond = NULL;
filter = (ctsvc_filter_s *)filters->data;
if (filter->filter_type == CTSVC_FILTER_COMPOSITE)
- __ctsvc_db_create_composite_condition((ctsvc_composite_filter_s *)filter, &cond, bind_text);
+ __ctsvc_db_create_composite_condition(zone_name, (ctsvc_composite_filter_s *)filter, &cond, bind_text);
else
- __ctsvc_db_create_attribute_condition(com_filter, (ctsvc_attribute_filter_s*)filter, &cond, bind_text);
+ __ctsvc_db_create_attribute_condition(zone_name, com_filter, (ctsvc_attribute_filter_s*)filter, &cond, bind_text);
buf_size = CTSVC_FILTER_LENGTH;
out_cond = calloc(1, buf_size);
- RETVM_IF(NULL == out_cond, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
+ if (NULL == out_cond) {
+ CTS_ERR("calloc() Fail");
+ free(cond);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+
len = 0;
if (cond) {
temp_len = SAFE_SNPRINTF(&out_cond, &buf_size, len, "(");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&out_cond, &buf_size, len, cond);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&out_cond, &buf_size, len, ")");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
free(cond);
}
cursor_filter = filters->next;
- for(cursor_ops=ops; cursor_ops && cursor_filter; cursor_filter=cursor_filter->next, cursor_ops=cursor_ops->next) {
+ for (cursor_ops=ops; cursor_ops && cursor_filter; cursor_filter=cursor_filter->next, cursor_ops=cursor_ops->next) {
cond = NULL;
bind = NULL;
filter = (ctsvc_filter_s *)cursor_filter->data;
if (filter->filter_type == CTSVC_FILTER_COMPOSITE)
- __ctsvc_db_create_composite_condition((ctsvc_composite_filter_s *)filter, &cond, &bind);
+ __ctsvc_db_create_composite_condition(zone_name, (ctsvc_composite_filter_s *)filter, &cond, &bind);
else
- __ctsvc_db_create_attribute_condition(com_filter, (ctsvc_attribute_filter_s*)filter, &cond, &bind);
+ __ctsvc_db_create_attribute_condition(zone_name, com_filter, (ctsvc_attribute_filter_s*)filter, &cond, &bind);
if (cond) {
op = (contacts_filter_operator_e)cursor_ops->data;
temp_len = SAFE_SNPRINTF(&out_cond, &buf_size, len, " AND (");
else
temp_len = SAFE_SNPRINTF(&out_cond, &buf_size, len, " OR (");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&out_cond, &buf_size, len, cond);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&out_cond, &buf_size, len, ")");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
if (bind)
*bind_text = g_slist_concat(*bind_text, bind);
return CONTACTS_ERROR_NONE;
}
-// Make and execute 'UPDATE' sqlite statement to update record
-int ctsvc_db_update_record_with_set_query(const char *set, GSList *bind_text, const char *table, int id)
+/* Make and execute 'UPDATE' sqlite statement to update record */
+int ctsvc_db_update_record_with_set_query(const char *zone_name, const char *set, GSList *bind_text, const char *table, int id)
{
int ret = CONTACTS_ERROR_NONE;
char query[CTS_SQL_MAX_LEN] = {0};
snprintf(query, sizeof(query), "UPDATE %s SET %s WHERE id = %d", table, set, id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
if (bind_text) {
int i = 0;
}
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
return ret;
}
return ret;
}
-// make 'SET' sqlite statement to update record
+/* make 'SET' sqlite statement to update record */
int ctsvc_db_create_set_query(contacts_record_h record, char **set, GSList **bind_text)
{
ctsvc_record_s *s_record;
property_info = ctsvc_view_get_all_property_infos(s_record->view_uri, &property_info_count);
- for(i=0;i<property_info_count;i++) {
+ for (i=0;i<property_info_count;i++) {
if (ctsvc_record_check_property_flag(s_record, property_info[i].property_id, CTSVC_PROPERTY_FLAG_DIRTY)) {
field_name = property_info[i].fields;
if (NULL == field_name)
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_create_projection(const char *view_uri, const property_info_s *properties, int ids_count,
+static int __ctsvc_db_create_projection(const char *zone_name, const char *view_uri, const property_info_s *properties, int ids_count,
unsigned int *projections, int pro_count, char **projection)
{
bool first;
if (0 < pro_count) {
for (i=0;i<pro_count;i++) {
if (projections[i] == CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX) {
- snprintf(temp, sizeof(temp), "_NORMALIZE_INDEX_(%s)", ctsvc_get_sort_name_column());
+ snprintf(temp, sizeof(temp), "_NORMALIZE_INDEX_(%s)", ctsvc_get_sort_name_column(zone_name));
field_name = temp;
}
else
- field_name = __ctsvc_db_get_property_field_name(properties, ids_count, QUERY_PROJECTION, projections[i]);
+ field_name = __ctsvc_db_get_property_field_name(zone_name, properties, ids_count, QUERY_PROJECTION, projections[i]);
if (field_name) {
if (first) {
}
}
else {
- // add all properties
+ /* add all properties */
for (i=0;i<ids_count;i++) {
if (CTSVC_VIEW_DATA_TYPE_REC == (properties[i].property_id & CTSVC_VIEW_DATA_TYPE_MASK))
continue;
if (properties[i].fields)
field_name = properties[i].fields;
else if (properties[i].property_id == CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX) {
- snprintf(temp, sizeof(temp), "_NORMALIZE_INDEX_(%s)", ctsvc_get_sort_name_column());
+ snprintf(temp, sizeof(temp), "_NORMALIZE_INDEX_(%s)", ctsvc_get_sort_name_column(zone_name));
field_name = temp;
}
else
- field_name = ctsvc_get_display_column();
+ field_name = ctsvc_get_display_column(zone_name);
if (first) {
len += snprintf(out_projection+len, sizeof(out_projection)-len, "%s", field_name);
{
int i;
#ifdef ENABLE_LOG_FEATURE
- if (0 == strcmp(view_uri, _contacts_person_phone_log._uri))
+ if (STRING_EQUAL == strcmp(view_uri, _contacts_person_phone_log._uri))
return false;
-#endif // ENABLE_LOG_FEATURE
+#endif /* ENABLE_LOG_FEATURE */
for (i=0;i<count;i++) {
property_info_s *p = (property_info_s*)&(properties[i]);
#define SORT_CHECK_LEN 7
-int ctsvc_db_make_get_records_query_stmt(ctsvc_query_s *s_query, int offset, int limit, cts_stmt *stmt)
+int ctsvc_db_make_get_records_query_stmt(const char *zone_name, ctsvc_query_s *s_query, int offset, int limit, cts_stmt *stmt)
{
char *query = NULL;
char temp_str[100] = {0};
ret = ctsvc_db_get_table_name(s_query->view_uri, &table);
RETVM_IF (CONTACTS_ERROR_NONE != ret, ret, "Invalid parameter : view uri (%s)", s_query->view_uri);
- ret = __ctsvc_db_create_projection(s_query->view_uri, s_query->properties, s_query->property_count,
+ ret = __ctsvc_db_create_projection(zone_name, s_query->view_uri, s_query->properties, s_query->property_count,
s_query->projection, s_query->projection_count, &projection);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_db_create_projection is failed(%d)", ret);
+ CTS_ERR("__ctsvc_db_create_projection Fail(%d)", ret);
return ret;
}
query_size = CTS_SQL_MAX_LEN;
query = calloc(1, query_size);
- RETVM_IF(NULL == query, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
+ if (NULL == query) {
+ CTS_ERR("calloc() Fail");
+ free(projection);
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
len = 0;
if (s_query->distinct)
temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT DISTINCT ");
else
temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, projection);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " FROM ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " (");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, table);
- if (temp_len >= 0) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " )");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, ")");
+ if (0 <= temp_len) len+= temp_len;
if (s_query->filter) {
- ret = __ctsvc_db_create_composite_condition(s_query->filter, &condition, &bind_text);
+ ret = __ctsvc_db_create_composite_condition(zone_name, s_query->filter, &condition, &bind_text);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_db_create_composite_condition is failed(%d)", ret);
+ CTS_ERR("__ctsvc_db_create_composite_condition Fail(%d)", ret);
free(projection);
return ret;
}
if (condition && *condition) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " WHERE (");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, condition);
- if (temp_len >= 0) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " )");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, ")");
+ if (0 <= temp_len) len+= temp_len;
}
}
- // If the view_uri has display_name, default sortkey is display_name
+ /* If the view_uri has display_name, default sortkey is display_name */
if (__ctsvc_db_view_has_display_name(s_query->view_uri, s_query->properties, s_query->property_count))
- sortkey = ctsvc_get_sort_column();
+ sortkey = ctsvc_get_sort_column(zone_name);
if (s_query->sort_property_id) {
const char *field_name;
case CTSVC_PROPERTY_CONTACT_DISPLAY_NAME:
if (sortkey) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ORDER BY ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, sortkey);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
if (false == s_query->sort_asc) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " DESC ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
}
break;
default :
- field_name = __ctsvc_db_get_property_field_name(s_query->properties,
+ field_name = __ctsvc_db_get_property_field_name(zone_name, s_query->properties,
s_query->property_count, QUERY_SORTKEY, s_query->sort_property_id);
if (field_name) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ORDER BY ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, field_name);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
-// if (sortkey)
-// len += snprintf(query+len, sizeof(query)-len, ", %s", sortkey);
if (false == s_query->sort_asc) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " DESC ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
}
else if (sortkey) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ORDER BY ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, sortkey);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
break;
}
}
else if (sortkey) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ORDER BY ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, sortkey);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
- else if (0 == strcmp(s_query->view_uri, CTSVC_VIEW_URI_GROUP)) {
+ else if (STRING_EQUAL == strcmp(s_query->view_uri, CTSVC_VIEW_URI_GROUP)) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ORDER BY group_prio");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
if (0 != limit) {
snprintf(temp_str, sizeof(temp_str), " LIMIT %d", limit);
temp_len = SAFE_SNPRINTF(&query, &query_size, len, temp_str);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
if (0 < offset) {
snprintf(temp_str, sizeof(temp_str), " OFFSET %d", offset);
temp_len = SAFE_SNPRINTF(&query, &query_size, len, temp_str);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
}
free(condition);
free(projection);
- ret = ctsvc_query_prepare(query, stmt);
+ ret = ctsvc_query_prepare(zone_name, query, stmt);
free(query);
- if(NULL == *stmt) {
- CTS_ERR("DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ if (NULL == *stmt) {
+ CTS_ERR("DB error : ctsvc_query_prepare() Fail(%d)", ret);
for (cursor=bind_text;cursor;cursor=cursor->next)
free(cursor->data);
g_slist_free(bind_text);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_get_records_with_query_exec(ctsvc_query_s *query, int offset,
- int limit, contacts_list_h* out_list )
+static int __ctsvc_db_get_records_with_query_exec(const char *zone_name, ctsvc_query_s *query, int offset,
+ int limit, contacts_list_h* out_list)
{
int ret;
int i;
cts_stmt stmt = NULL;
contacts_list_h list = NULL;
- ret = ctsvc_db_make_get_records_query_stmt(query, offset, limit, &stmt);
+ ret = ctsvc_db_make_get_records_query_stmt(zone_name, query, offset, limit, &stmt);
RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_db_make_get_records_query_stmt(%d)", ret);
contacts_list_create(&list);
contacts_record_h record;
int field_count;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
else {
field_count = query->projection_count;
- if( CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, query->projection, query->projection_count, query->property_count) )
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, query->projection, query->projection_count, query->property_count)) {
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
int property_id;
if (0 == query->projection_count)
property_id = query->properties[i].property_id;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_get_all_records_exec(const char *view_uri, const property_info_s* properties, int ids_count,
- const char *projection, int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_get_all_records_exec(const char *zone_name, const char *view_uri, const property_info_s* properties, int ids_count,
+ const char *projection, int offset, int limit, contacts_list_h* out_list)
{
char query[CTS_SQL_MAX_LEN] = {0};
const char *table;
len += snprintf(query+len, sizeof(query)-len, " (%s)", table);
if (__ctsvc_db_view_has_display_name(view_uri, properties, ids_count)) {
- sortkey = ctsvc_get_sort_column();
+ sortkey = ctsvc_get_sort_column(zone_name);
len += snprintf(query+len, sizeof(query)-len, " ORDER BY %s", sortkey);
- } else if (0 == strcmp(view_uri, CTSVC_VIEW_URI_GROUP))
+ } else if (STRING_EQUAL == strcmp(view_uri, CTSVC_VIEW_URI_GROUP))
len += snprintf(query+len, sizeof(query)-len, " ORDER BY group_prio");
if (0 != limit) {
len += snprintf(query+len, sizeof(query)-len, " OFFSET %d", offset);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
}
contacts_record_create(view_uri, &record);
- for(i=0;i<ids_count;i++) {
+ for (i=0;i<ids_count;i++) {
type = (properties[i].property_id & CTSVC_VIEW_DATA_TYPE_MASK);
if (type == CTSVC_VIEW_DATA_TYPE_INT)
ctsvc_record_set_int(record, properties[i].property_id, ctsvc_stmt_get_int(stmt, i));
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_get_all_records( const char* view_uri, int offset, int limit, contacts_list_h* out_list )
+static int __ctsvc_db_get_all_records(const char *zone_name, const char* view_uri, int offset, int limit, contacts_list_h* out_list)
{
int ret;
unsigned int count;
char *projection;
const property_info_s *p = ctsvc_view_get_all_property_infos(view_uri, &count);
- ret = __ctsvc_db_create_projection(view_uri, p, count, NULL, 0, &projection);
- RETVM_IF (CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_db_create_projection is failed(%d)", ret);
+ ret = __ctsvc_db_create_projection(zone_name, view_uri, p, count, NULL, 0, &projection);
+ RETVM_IF (CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_db_create_projection Fail(%d)", ret);
- ret = __ctsvc_db_get_all_records_exec(view_uri, p, count, projection, offset, limit, out_list);
+ ret = __ctsvc_db_get_all_records_exec(zone_name, view_uri, p, count, projection, offset, limit, out_list);
free(projection);
return ret;
{
RETV_IF(NULL == view_uri, false);
- if (0 == strcmp(view_uri, CTSVC_VIEW_URI_PERSON)
- || 0 == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_CONTACT)
- || 0 == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_NUMBER)
- || 0 == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_EMAIL)
- || 0 == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP)
- || 0 == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_ASSIGNED)
- || 0 == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_NOT_ASSIGNED)) {
+ if (STRING_EQUAL == strcmp(view_uri, CTSVC_VIEW_URI_PERSON)
+ || STRING_EQUAL == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_CONTACT)
+ || STRING_EQUAL == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_NUMBER)
+ || STRING_EQUAL == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_EMAIL)
+ || STRING_EQUAL == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP)
+ || STRING_EQUAL == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_ASSIGNED)
+ || STRING_EQUAL == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_NOT_ASSIGNED)) {
return true;
}
return false;
return NULL;
size = strlen(keyword);
- if (strstr(keyword, " ") != NULL) {
+ if (strstr(keyword, " ")) {
int i = 0;
int j = 0;
char search_keyword[size * 2+1];
- for(i=0;i<size;i++) {
+ for (i=0;i<size;i++) {
if (j>0 && keyword[i] == ' ') {
- if (search_keyword[j-1] != ' ' )
+ if (search_keyword[j-1] != ' ')
search_keyword[j++] = '*';
}
search_keyword[j++] = keyword[i];
}
- if (j > 0 && search_keyword[j-1] != ' ')
+ if (0 < j && search_keyword[j-1] != ' ')
search_keyword[j++] = '*';
search_keyword[j] = '\0';
return strdup(search_keyword);
int temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " '");
- if (temp_len >= 0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
if (range & CONTACTS_SEARCH_RANGE_NAME) {
temp_len = SAFE_SNPRINTF(query, query_size, len, "name:");
- if (temp_len >= 0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, name);
- if (temp_len >= 0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
first = false;
}
if (range & CONTACTS_SEARCH_RANGE_NUMBER) {
if (first == false) {
temp_len = SAFE_SNPRINTF(query, query_size, len, " OR ");
- if (temp_len >= 0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
}
temp_len = SAFE_SNPRINTF(query, query_size, len, "number:");
- if (temp_len >= 0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, number);
- if (temp_len >= 0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
first = false;
}
if (range & CONTACTS_SEARCH_RANGE_DATA) {
if (first == false) {
temp_len = SAFE_SNPRINTF(query, query_size, len, " OR ");
- if (temp_len >= 0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
}
temp_len = SAFE_SNPRINTF(query, query_size, len, "data:");
- if (temp_len >= 0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, data);
- if (temp_len >= 0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
first = false;
}
temp_len = SAFE_SNPRINTF(query, query_size, len, "' ");
- if (temp_len >= 0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
return len;
}
int keyword_temp_len = 0;
int temp_len;
- if( ctsvc_is_phonenumber(src) == false || strcmp(src, "+") == 0)
- {
+ if (ctsvc_is_phonenumber(src) == false || STRING_EQUAL == strcmp(src, "+")) {
phonenumber = false;
}
if (strstr(src, "@")) {
- // If the search key is email address format, DO NOT search it from NAME
+ /* If the search key is email address format, DO NOT search it from NAME */
range &= ~CONTACTS_SEARCH_RANGE_NAME;
}
- if (strcmp(src, "+") == 0) {
+ if (STRING_EQUAL == strcmp(src, "+")) {
range &= ~CONTACTS_SEARCH_RANGE_NUMBER;
}
char* keyword = NULL;
int keyword_size = 0;
bool use_replaced_keyword = true;
- // full width characters -> half width characters (apply to only FW ASCII & some symbols)
- if ( ctsvc_get_halfwidth_string(src, &keyword, &keyword_size) != CONTACTS_ERROR_NONE ) {
+ /* full width characters -> half width characters (apply to only FW ASCII & some symbols) */
+ if (ctsvc_get_halfwidth_string(src, &keyword, &keyword_size) != CONTACTS_ERROR_NONE) {
CTS_ERR("UChar converting error : ctsvc_get_halfwidth_string() Failed");
keyword = (char*)src;
use_replaced_keyword = false;
char *search_keyword = NULL;
search_keyword = __ctsvc_db_make_search_keyword(keyword);
- RETVM_IF(NULL == search_keyword, CONTACTS_ERROR_OUT_OF_MEMORY, "__ctsvc_db_make_search_keyword() return NULL");
+ if (NULL == search_keyword) {
+ CTS_ERR("__ctsvc_db_make_search_keyword() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
if (phonenumber) {
temp_len = SAFE_SNPRINTF(query, query_size, len, "(SELECT contact_id FROM ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_SEARCH_INDEX);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " WHERE ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_SEARCH_INDEX);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " MATCH ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = __ctsvc_db_append_search_query_range(query, query_size, len,
range, search_keyword, search_keyword, search_keyword);
- if (temp_len >=0) len = temp_len;
+ if (0 <= temp_len) len = temp_len;
if (range & CONTACTS_SEARCH_RANGE_NUMBER) {
- // to find contact which has number including keyword
- // FTS can only startwiths search
+ /*
+ * to find contact which has number including keyword
+ * FTS can only startwiths search
+ */
char clean_number[SAFE_STRLEN(keyword)+1];
int err = ctsvc_clean_number(keyword, clean_number, sizeof(clean_number), false);
if (0 < err) {
const char *cc = ctsvc_get_network_cc(false);
temp_len = SAFE_SNPRINTF(query, query_size, len, " UNION SELECT contact_id FROM ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_PHONE_LOOKUP);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " WHERE number LIKE '%%");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, clean_number);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
- if (cc && cc[0] == '7' && clean_number[0] == '8') { // Russia
- char normal_num[strlen(clean_number)+1+5]; // for cc
+ if (cc && cc[0] == '7' && clean_number[0] == '8') { /* Russia */
+ char normal_num[strlen(clean_number)+1+5]; /* for cc */
int ret;
ret = ctsvc_normalize_number(clean_number, normal_num, sizeof(normal_num), false);
if (0 < ret) {
temp_len = SAFE_SNPRINTF(query, query_size, len, "%%' OR number LIKE '%%");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, normal_num);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
}
temp_len = SAFE_SNPRINTF(query, query_size, len, "%%' ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
}
}
temp_len = SAFE_SNPRINTF(query, query_size, len, ")");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
}
else {
char *normalized_name = NULL;
int lang = CTSVC_LANG_OTHERS;
- bool add_brace = false;
char *hiragana = NULL;
char *search_hiragana = NULL;
bool need_union = false;
lang = ctsvc_normalize_str(keyword, &normalized_name);
- temp_len = SAFE_SNPRINTF(query, query_size, len, "( ");
- if (temp_len >=0) len += temp_len;
+ temp_len = SAFE_SNPRINTF(query, query_size, len, "(");
+ if (0 <= temp_len) len += temp_len;
if (CTSVC_LANG_JAPANESE == lang) {
ctsvc_convert_japanese_to_hiragana(keyword, &hiragana);
if (range & CONTACTS_SEARCH_RANGE_NUMBER) {
temp_len = SAFE_SNPRINTF(query, query_size, len, "SELECT contact_id FROM ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_SEARCH_INDEX);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " WHERE ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_SEARCH_INDEX);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " MATCH ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
if (CTSVC_LANG_JAPANESE == lang) {
temp_len = __ctsvc_db_append_search_query_range(query, query_size, len,
CONTACTS_SEARCH_RANGE_NUMBER, NULL, search_hiragana, NULL);
- if (temp_len >=0) len = temp_len;
+ if (0 <= temp_len) len = temp_len;
}
else {
temp_len = __ctsvc_db_append_search_query_range(query, query_size, len,
CONTACTS_SEARCH_RANGE_NUMBER, NULL, search_keyword, NULL);
- if (temp_len >=0) len = temp_len;
+ if (0 <= temp_len) len = temp_len;
}
need_union = true;
}
if (range & CONTACTS_SEARCH_RANGE_DATA) {
if (need_union) {
temp_len = SAFE_SNPRINTF(query, query_size, len, " UNION SELECT contact_id FROM (");
- if (temp_len >=0) len += temp_len;
- add_brace = true;
+ if (0 <= temp_len) len += temp_len;
}
temp_len = SAFE_SNPRINTF(query, query_size, len, " SELECT contact_id FROM ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_SEARCH_INDEX);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " WHERE ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_SEARCH_INDEX);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " MATCH ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
if (CTSVC_LANG_JAPANESE == lang) {
temp_len = __ctsvc_db_append_search_query_range(query, query_size, len,
CONTACTS_SEARCH_RANGE_DATA, NULL, NULL, search_hiragana);
- if (temp_len >=0) len = temp_len;
+ if (0 <= temp_len) len = temp_len;
}
else {
keyword_temp_len = strlen(search_keyword);
- // replace '-' -> '_' because FTS does not support search '-'
+ /* replace '-' -> '_' because FTS does not support search '-' */
char temp_str[keyword_temp_len+1];
- for(i=0;i<keyword_temp_len;i++) {
+ for (i=0;i<keyword_temp_len;i++) {
if (search_keyword[i] == '-') {
temp_str[i] = '_';
}
temp_str[i] = '\0';
temp_len = __ctsvc_db_append_search_query_range(query, query_size, len,
CONTACTS_SEARCH_RANGE_DATA, NULL, NULL, temp_str);
- if (temp_len >=0) len = temp_len;
+ if (0 <= temp_len) len = temp_len;
}
- if (add_brace) {
+ if (need_union) {
temp_len = SAFE_SNPRINTF(query, query_size, len, ") ");
- if (temp_len >=0) len += temp_len;
- add_brace = false;
+ if (0 <= temp_len) len += temp_len;
}
need_union = true;
}
if (range & CONTACTS_SEARCH_RANGE_NAME) {
if (need_union) {
- temp_len = SAFE_SNPRINTF(query, query_size, len, " UNION SELECT contact_id FROM ");
- if (temp_len >=0) len += temp_len;
+ temp_len = SAFE_SNPRINTF(query, query_size, len, " UNION SELECT contact_id FROM (");
+ if (0 <= temp_len) len += temp_len;
}
- if (CTSVC_LANG_KOREAN == lang) { // chosung search
+ if (CTSVC_LANG_KOREAN == lang) { /* chosung search */
char *chosung = calloc(1, strlen(keyword) * 5);
char *korean_pattern = calloc(1, strlen(keyword) * 5);
char *search_chosung = NULL;
int count = 0;
- // If try to find '홍길동' by 'ㄱ동'
- // search by 'ㄱㄷ' in search_index table
- // intersect
- // search by '*ㄱ*동*' in name_lookup table
+ /*
+ * If try to find '홍길동' by 'ㄱ동'
+ * search by 'ㄱㄷ' in search_index table
+ * intersect
+ * search by '*ㄱ*동*' in name_lookup table
+ */
- count = ctsvc_get_chosung(keyword, chosung, strlen(keyword) * 5 );
- ctsvc_get_korean_search_pattern(keyword, korean_pattern, strlen(keyword) * 5 );
+ count = ctsvc_get_chosung(keyword, chosung, strlen(keyword) * 5);
+ ctsvc_get_korean_search_pattern(keyword, korean_pattern, strlen(keyword) * 5);
- if (count > 0)
+ if (0 < count)
search_chosung = __ctsvc_db_make_search_keyword(chosung);
else
search_chosung = __ctsvc_db_make_search_keyword(keyword);
- temp_len = SAFE_SNPRINTF(query, query_size, len, " (SELECT contact_id FROM ");
- if (temp_len >=0) len += temp_len;
+ temp_len = SAFE_SNPRINTF(query, query_size, len, " SELECT contact_id FROM ");
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_SEARCH_INDEX);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " WHERE ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_SEARCH_INDEX);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " MATCH ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = __ctsvc_db_append_search_query_range(query, query_size, len,
CONTACTS_SEARCH_RANGE_NAME, search_chosung, NULL, NULL);
- if (temp_len >=0) len = temp_len;
+ if (0 <= temp_len) len = temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " INTERSECT SELECT contact_id FROM ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_NAME_LOOKUP);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " WHERE name GLOB '*");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, korean_pattern);
- if (temp_len >=0) len += temp_len;
- temp_len = SAFE_SNPRINTF(query, query_size, len, "*' " );
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
+ temp_len = SAFE_SNPRINTF(query, query_size, len, "*' ");
+ if (0 <= temp_len) len += temp_len;
free(chosung);
free(korean_pattern);
free(search_chosung);
}
- else if (CTSVC_LANG_JAPANESE == lang) { // hiragana search
- temp_len = SAFE_SNPRINTF(query, query_size, len, " (SELECT contact_id FROM ");
- if (temp_len >=0) len += temp_len;
+ else if (CTSVC_LANG_JAPANESE == lang) { /* hiragana search */
+ temp_len = SAFE_SNPRINTF(query, query_size, len, " SELECT contact_id FROM ");
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_SEARCH_INDEX);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " WHERE ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_SEARCH_INDEX);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " MATCH ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = __ctsvc_db_append_search_query_range(query, query_size, len,
CONTACTS_SEARCH_RANGE_NAME, search_hiragana, NULL, NULL);
- if (temp_len >=0) len = temp_len;
+ if (0 <= temp_len) len = temp_len;
}
- else if (CONTACTS_ERROR_NONE <= lang) { // normalized string search
+ else if (CONTACTS_ERROR_NONE <= lang) { /* normalized string search */
char *search_normal_name = NULL;
search_normal_name = __ctsvc_db_make_search_keyword(normalized_name);
- temp_len = SAFE_SNPRINTF(query, query_size, len, " (SELECT contact_id FROM ");
- if (temp_len >=0) len += temp_len;
+ temp_len = SAFE_SNPRINTF(query, query_size, len, " SELECT contact_id FROM ");
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_SEARCH_INDEX);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " WHERE ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_SEARCH_INDEX);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " MATCH ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = __ctsvc_db_append_search_query_range(query, query_size, len,
CONTACTS_SEARCH_RANGE_NAME, search_normal_name, NULL, NULL);
- if (temp_len >=0) len = temp_len;
+ if (0 <= temp_len) len = temp_len;
free(search_normal_name);
}
- else { // original keyword search
- temp_len = SAFE_SNPRINTF(query, query_size, len, " (SELECT contact_id FROM ");
- if (temp_len >=0) len += temp_len;
+ else { /* original keyword search */
+ temp_len = SAFE_SNPRINTF(query, query_size, len, " SELECT contact_id FROM ");
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_SEARCH_INDEX);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " WHERE ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_SEARCH_INDEX);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " MATCH ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = __ctsvc_db_append_search_query_range(query, query_size, len,
CONTACTS_SEARCH_RANGE_NAME, search_keyword, NULL, NULL);
- if (temp_len >=0) len = temp_len;
+ if (0 <= temp_len) len = temp_len;
}
int j = 0;
keyword_temp_len = strlen(keyword);
char temp_str[keyword_temp_len*2+1];
- for(i=0;i<keyword_temp_len;i++) {
+ for (i=0;i<keyword_temp_len;i++) {
if (keyword[i] == '\'' || keyword[i] == '_' || keyword[i] == '%' || keyword[i] == '\\') {
temp_str[j++] = CTSVC_DB_ESCAPE_CHAR;
}
}
temp_str[j] = '\0';
temp_len = SAFE_SNPRINTF(query, query_size, len, " UNION SELECT contact_id FROM ");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, CTS_TABLE_NAME_LOOKUP);
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, " WHERE name LIKE '");
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, temp_str);
- if (temp_len >=0) len += temp_len;
- temp_len = SAFE_SNPRINTF(query, query_size, len, "%%' ESCAPE '\\') "); //CTSVC_DB_ESCAPE_CHAR
- if (temp_len >=0) len += temp_len;
+ if (0 <= temp_len) len += temp_len;
+ temp_len = SAFE_SNPRINTF(query, query_size, len, "%%' ESCAPE '\\' "); /* CTSVC_DB_ESCAPE_CHAR */
+ if (0 <= temp_len) len += temp_len;
+
+ if (need_union) {
+ temp_len = SAFE_SNPRINTF(query, query_size, len, ") ");
+ if (0 <= temp_len) len += temp_len;
+ }
}
free(normalized_name);
free(hiragana);
free(search_hiragana);
- temp_len = SAFE_SNPRINTF(query, query_size, len, " ) ");
- if (temp_len >=0) len += temp_len;
+ temp_len = SAFE_SNPRINTF(query, query_size, len, ") ");
+ if (0 <= temp_len) len += temp_len;
}
free(search_keyword);
- if( use_replaced_keyword )
+ if (use_replaced_keyword)
free(keyword);
return len;
return count;
}
-static int __ctsvc_db_search_records_append_sort(const char *view_uri,
+static int __ctsvc_db_search_records_append_sort(const char *zone_name, const char *view_uri,
const char *sortkey, const char *keyword, int len, char **query, int *query_size)
{
int i;
contacts_name_sorting_order_e order;
const char *field = NULL;
char *temp_keyword = NULL;
- contacts_setting_get_name_sorting_order(&order);
+ ctsvc_setting_get_name_sorting_order(zone_name, &order);
if (CONTACTS_NAME_SORTING_ORDER_FIRSTLAST == order)
field = "display_name";
if (first == false && i != 0)
temp_str_len += snprintf(temp_str+temp_str_len, sizeof(temp_str)-temp_str_len, " AND ");
if (ctsvc_is_chosung(temp)) {
- for(k=0;k<19;k++) {
- if (strcmp(hangul_syllable[k][0], temp) == 0)
+ for (k=0;k<19;k++) {
+ if (STRING_EQUAL == strcmp(hangul_syllable[k][0], temp))
break;
}
}
temp_str_len = snprintf(temp_str+temp_str_len, sizeof(temp_str)-temp_str_len,
" ELSE %d END ", j);
temp_len = SAFE_SNPRINTF(query, query_size, len, temp_str);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
else {
temp_len = SAFE_SNPRINTF(query, query_size, len, " ORDER BY ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, sortkey);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
}
else {
temp_keyword = __ctsvc_db_get_str_with_escape((char*)keyword, strlen((char*)keyword), true);
- RETVM_IF(NULL == temp_keyword, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
+ if (NULL == temp_keyword) {
+ CTS_ERR("__ctsvc_db_get_str_with_escape() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+
char temp_str[CTS_SQL_MIN_LEN + (strlen(field) + strlen(temp_keyword)) * SORT_CHECK_LEN];
snprintf(temp_str, sizeof(temp_str),
" ORDER BY "
field, temp_keyword, field, temp_keyword,
field, temp_keyword);
temp_len = SAFE_SNPRINTF(query, query_size, len, temp_str);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
free(temp_keyword);
}
- temp_len = SAFE_SNPRINTF(query, query_size, len, " , ");
- if (temp_len >= 0) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(query, query_size, len, ", ");
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, sortkey);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
else {
temp_len = SAFE_SNPRINTF(query, query_size, len, " ORDER BY ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(query, query_size, len, sortkey);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
return len;
}
-static int __ctsvc_db_search_records_exec(const char *view_uri, const property_info_s* properties,
- int ids_count, const char *projection, const char *keyword, int offset, int limit, int range, contacts_list_h* out_list )
+static int __ctsvc_db_search_records_exec(const char *zone_name, const char *view_uri, const property_info_s* properties,
+ int ids_count, const char *projection, const char *keyword, int offset, int limit, int range, contacts_list_h* out_list)
{
char *query = NULL;
char temp_query[CTS_SQL_MAX_LEN];
query_size = CTS_SQL_MAX_LEN;
query = calloc(1, query_size);
- RETVM_IF(NULL == query, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
+ if (NULL == query) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
len = 0;
- if (strcmp(keyword, "+") == 0) {
+ if (STRING_EQUAL == strcmp(keyword, "+")) {
range &= ~CONTACTS_SEARCH_RANGE_NUMBER;
}
- if (0 == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_CONTACT)
- || 0 == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP)
- || 0 == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_ASSIGNED)
- || 0 == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_NOT_ASSIGNED)) {
+ if (STRING_EQUAL == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_CONTACT)
+ || STRING_EQUAL == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP)
+ || STRING_EQUAL == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_ASSIGNED)
+ || STRING_EQUAL == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_NOT_ASSIGNED)) {
if (range & CONTACTS_SEARCH_RANGE_EMAIL) {
free(query);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, projection);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " FROM ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, table);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " WHERE contact_id IN ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = __ctsvc_db_append_search_query(keyword, &query, &query_size, len, range);
- if (temp_len >= 0) len = temp_len;
+ if (0 <= temp_len) len = temp_len;
}
- else if (0 == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_NUMBER)) {
- bool need_union = false;
+ else if (STRING_EQUAL == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_NUMBER)) {
+ bool need_or = false;
if (range & CONTACTS_SEARCH_RANGE_DATA || range & CONTACTS_SEARCH_RANGE_EMAIL) {
free(query);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, projection);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " FROM (");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " SELECT * FROM ");
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, table);
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " WHERE ");
+ if (0 <= temp_len) len+= temp_len;
- if (range & CONTACTS_SEARCH_RANGE_NUMBER) {
- char clean_num[strlen(keyword)+1+5]; // for cc
- // Original number can include '-' or special character. So search by cleaned_number
- // If contact has 010 1234 5678 (normalized number is +cc 10 1234 5678),
- // then the contack should be searched by keyword +cc 10 1234 5678
+ if ((range & CONTACTS_SEARCH_RANGE_NUMBER) && ctsvc_is_phonenumber(keyword)) {
+ char clean_num[strlen(keyword)+1+5]; /* for cc */
+
+ /*
+ * Original number can include '-' or special character. So search by cleaned_number
+ * If contact has 010 1234 5678 (normalized number is +cc 10 1234 5678),
+ * then the contact should be searched by keyword +cc 10 1234 5678
+ */
ret = ctsvc_clean_number(keyword, clean_num, sizeof(clean_num), false);
if (0 < ret) {
const char *cc = ctsvc_get_network_cc(false);
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " SELECT * FROM ");
- if (temp_len >= 0) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, table);
- if (temp_len >= 0) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " WHERE normalized_number LIKE '%%");
- if (temp_len >= 0) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, "(normalized_number LIKE '%%");
+ if (0 <= temp_len) len+= temp_len;
- if (cc && cc[0] == '7' && clean_num[0] == '8') { // Russia
- char normal_num[strlen(clean_num)+1+5]; // for cc
+ if (cc && cc[0] == '7' && clean_num[0] == '8') { /* Russia */
+ char normal_num[strlen(clean_num)+1+5]; /* for cc */
ret = ctsvc_normalize_number(clean_num, normal_num, sizeof(normal_num), false);
if (0 < ret) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, normal_num);
}
else
temp_len = SAFE_SNPRINTF(&query, &query_size, len, clean_num);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, "%%' OR cleaned_number LIKE '%%");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, clean_num);
- if (temp_len >= 0) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, "%%' ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, "%%')");
+ if (0 <= temp_len) len+= temp_len;
}
else {
char *temp_keyword = __ctsvc_db_get_str_with_escape((char*)keyword, strlen((char*)keyword), true);
if (NULL == temp_keyword) {
- CTS_ERR("__ctsvc_db_get_str_with_escape() return NULL");
+ CTS_ERR("__ctsvc_db_get_str_with_escape() Fail");
free(query);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " SELECT * FROM ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, table);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " WHERE number LIKE '%%");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, temp_keyword);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, "%%' ESCAPE '\\'");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
free(temp_keyword);
}
- need_union = true;
+ need_or = true;
}
if (range & CONTACTS_SEARCH_RANGE_NAME) {
- if (need_union) {
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " UNION ");
- if (temp_len >= 0) len+= temp_len;
+ if (need_or) {
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " OR ");
+ if (0 <= temp_len) len+= temp_len;
}
snprintf(temp_query, sizeof(temp_query),
- "SELECT "CTSVC_DB_VIEW_PERSON_CONTACT".*, "
- "temp_data.* "
- "FROM "CTSVC_DB_VIEW_PERSON_CONTACT" "
- "JOIN (SELECT id number_id, "
- "contact_id, "
- "data1 type, "
- "is_primary_default, "
- "data2 label, "
- "data3 number, "
- "data4 minmatch, "
- "data5 normalized_number, "
- "data6 cleaned_number "
- "FROM "CTS_TABLE_DATA" WHERE datatype = %d AND is_my_profile = 0) temp_data "
- "ON temp_data.contact_id = "CTSVC_DB_VIEW_PERSON_CONTACT".contact_id ",
- CTSVC_DATA_NUMBER);
+ "person_id IN (SELECT person_id "
+ "FROM "CTS_TABLE_CONTACTS" WHERE deleted = 0 AND contact_id ");
temp_len = SAFE_SNPRINTF(&query, &query_size, len, temp_query);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
- // search contact from search_index table by name and join the results
- // FTS can support to serach with multiple words
- // If contact display_name is 'abc def', then the contact should be searched by 'def'
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " JOIN ");
- if (temp_len >= 0) len+= temp_len;
+ /*
+ * search contact from search_index table by name and join the results
+ * FTS can support to serach with multiple words
+ * If contact display_name is 'abc def', then the contact should be searched by 'def'
+ */
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " IN ");
+ if (0 <= temp_len) len+= temp_len;
temp_len = __ctsvc_db_append_search_query(keyword, &query, &query_size, len, CONTACTS_SEARCH_RANGE_NAME);
- if (temp_len >= 0) len = temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " temp_search_index ON ");
- if (temp_len >= 0) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, CTSVC_DB_VIEW_PERSON_CONTACT);
- if (temp_len >= 0) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, ".name_contact_id = temp_search_index.contact_id ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len = temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, ") ");
+ if (0 <= temp_len) len+= temp_len;
}
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ) ");
- if (temp_len >= 0) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, ") ");
+ if (0 <= temp_len) len+= temp_len;
}
- else if (0 == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_EMAIL)) {
- bool need_union = false;
+ else if (STRING_EQUAL == strcmp(view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_EMAIL)) {
+ bool need_or = false;
if (range & CONTACTS_SEARCH_RANGE_NUMBER || range & CONTACTS_SEARCH_RANGE_DATA) {
free(query);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, projection);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " FROM (");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
if (range & CONTACTS_SEARCH_RANGE_EMAIL) {
- // search contact which has email address started with keyword
+ /* search contact which has email address started with keyword */
char *temp_keyword = __ctsvc_db_get_str_with_escape((char*)keyword, strlen((char*)keyword), true);
if (NULL == temp_keyword) {
- CTS_ERR("__ctsvc_db_get_str_with_escape() return NULL");
+ CTS_ERR("__ctsvc_db_get_str_with_escape() Fail");
free(query);
return CONTACTS_ERROR_OUT_OF_MEMORY;
}
temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT * FROM ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, table);
- if (temp_len >= 0) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " WHERE email LIKE '");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " WHERE (email LIKE '");
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, temp_keyword);
- if (temp_len >= 0) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, "%%' ESCAPE '\\'");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, "%%' ESCAPE '\\')");
+ if (0 <= temp_len) len+= temp_len;
free(temp_keyword);
- need_union = true;
+ need_or = true;
}
if (range & CONTACTS_SEARCH_RANGE_NAME) {
- if (need_union) {
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " UNION ");
- if (temp_len >= 0) len+= temp_len;
+ if (need_or) {
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " OR ");
+ if (0 <= temp_len) len+= temp_len;
}
snprintf(temp_query, sizeof(temp_query),
- "SELECT "CTSVC_DB_VIEW_PERSON_CONTACT".*, "
- "temp_data.* "
- "FROM "CTSVC_DB_VIEW_PERSON_CONTACT" "
- "JOIN (SELECT id email_id, "
- "contact_id, "
- "data1 type, "
- "is_primary_default, "
- "data2 label, "
- "data3 email "
- "FROM "CTS_TABLE_DATA" WHERE datatype = %d AND is_my_profile = 0) temp_data "
- "ON temp_data.contact_id = "CTSVC_DB_VIEW_PERSON_CONTACT".contact_id",
- CTSVC_DATA_EMAIL);
+ "person_id IN (SELECT person_id "
+ "FROM "CTS_TABLE_CONTACTS" WHERE deleted = 0 AND contact_id ");
temp_len = SAFE_SNPRINTF(&query, &query_size, len, temp_query);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " JOIN ");
- if (temp_len >= 0) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " IN ");
+ if (0 <= temp_len) len+= temp_len;
temp_len = __ctsvc_db_append_search_query(keyword, &query, &query_size, len, CONTACTS_SEARCH_RANGE_NAME);
- if (temp_len >= 0) len = temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " temp_search_index ON ");
- if (temp_len >= 0) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, CTSVC_DB_VIEW_PERSON_CONTACT);
- if (temp_len >= 0) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, ".name_contact_id = temp_search_index.contact_id ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len = temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, ") ");
+ if (0 <= temp_len) len+= temp_len;
}
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ) ");
- if (temp_len >= 0) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, ") ");
+ if (0 <= temp_len) len+= temp_len;
}
- else { // CTSVC_VIEW_URI_PERSON
+ else { /* CTSVC_VIEW_URI_PERSON */
if (range & CONTACTS_SEARCH_RANGE_EMAIL) {
free(query);
return CONTACTS_ERROR_INVALID_PARAMETER;
"WHERE deleted = 0 AND contact_id IN ",
projection, table);
temp_len = SAFE_SNPRINTF(&query, &query_size, len, temp_query);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = __ctsvc_db_append_search_query(keyword, &query, &query_size, len, range);
- if (temp_len >= 0) len = temp_len;
+ if (0 <= temp_len) len = temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, "GROUP BY person_id_in_contact) temp_contacts ON ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, table);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, ".person_id = temp_contacts.person_id_in_contact");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
if (__ctsvc_db_view_has_display_name(view_uri, properties, ids_count))
- sortkey = ctsvc_get_sort_column();
+ sortkey = ctsvc_get_sort_column(zone_name);
if (sortkey) {
- len = __ctsvc_db_search_records_append_sort(view_uri, sortkey, keyword, len , &query, &query_size);
+ len = __ctsvc_db_search_records_append_sort(zone_name, view_uri, sortkey, keyword, len, &query, &query_size);
}
- else if (0 == strcmp(view_uri, CTSVC_VIEW_URI_GROUP)) {
+ else if (STRING_EQUAL == strcmp(view_uri, CTSVC_VIEW_URI_GROUP)) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ORDER BY group_prio");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
if (0 != limit) {
snprintf(temp_query, sizeof(temp_query), " LIMIT %d", limit);
temp_len = SAFE_SNPRINTF(&query, &query_size, len, temp_query);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
if (0 < offset) {
snprintf(temp_query, sizeof(temp_query), " OFFSET %d", offset);
temp_len = SAFE_SNPRINTF(&query, &query_size, len, temp_query);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
}
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
free(query);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
r_type = ctsvc_view_get_record_type(view_uri);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
}
- if( r_type == CTSVC_RECORD_PERSON )
- {
+ if (r_type == CTSVC_RECORD_PERSON) {
unsigned int *project = malloc(sizeof(unsigned int)*ids_count);
- for(i=0;i<ids_count;i++)
- {
+ for (i=0;i<ids_count;i++) {
project[i] = properties[i].property_id;
}
free(project);
- if( CONTACTS_ERROR_NONE != ret )
- {
- CTS_ERR("DB error : make record Failed(%d)", ret);
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("DB error : make record Fail(%d)", ret);
}
}
else {
contacts_record_create(view_uri, &record);
- for(i=0;i<ids_count;i++) {
+ for (i=0;i<ids_count;i++) {
type = (properties[i].property_id & CTSVC_VIEW_DATA_TYPE_MASK);
if (type == CTSVC_VIEW_DATA_TYPE_INT)
ctsvc_record_set_int(record, properties[i].property_id, ctsvc_stmt_get_int(stmt, i));
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_search_records(const char* view_uri, const char *keyword,
+static int __ctsvc_db_search_records(const char *zone_name, const char* view_uri, const char *keyword,
int offset, int limit, contacts_list_h* out_list)
{
int ret;
"Invalid parameter : can not keyword search");
p = ctsvc_view_get_all_property_infos(view_uri, &count);
- ret = __ctsvc_db_create_projection(view_uri, p, count, NULL, 0, &projection);
- RETVM_IF (CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_db_create_projection is failed(%d)", ret);
+ ret = __ctsvc_db_create_projection(zone_name, view_uri, p, count, NULL, 0, &projection);
+ RETVM_IF (CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_db_create_projection Fail(%d)", ret);
- ret = __ctsvc_db_search_records_exec(view_uri, p, count, projection, keyword, offset, limit, range, out_list);
+ ret = __ctsvc_db_search_records_exec(zone_name, view_uri, p, count, projection, keyword, offset, limit, range, out_list);
free(projection);
return ret;
}
-static int __ctsvc_db_search_records_with_range(const char* view_uri, const char *keyword,
+static int __ctsvc_db_search_records_with_range(const char *zone_name, const char* view_uri, const char *keyword,
int offset, int limit, int range, contacts_list_h* out_list)
{
int ret;
"Invalid parameter : can not keyword search");
p = ctsvc_view_get_all_property_infos(view_uri, &count);
- ret = __ctsvc_db_create_projection(view_uri, p, count, NULL, 0, &projection);
- RETVM_IF (CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_db_create_projection is failed(%d)", ret);
+ ret = __ctsvc_db_create_projection(zone_name, view_uri, p, count, NULL, 0, &projection);
+ RETVM_IF (CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_db_create_projection Fail(%d)", ret);
- ret = __ctsvc_db_search_records_exec(view_uri, p, count, projection, keyword, offset, limit, range, out_list);
+ ret = __ctsvc_db_search_records_exec(zone_name, view_uri, p, count, projection, keyword, offset, limit, range, out_list);
free(projection);
return ret;
}
-static inline int __ctsvc_db_search_records_with_query_exec(ctsvc_query_s *s_query, const char *projection,
- const char *condition, GSList *bind, const char *keyword, int offset, int limit, contacts_list_h * out_list )
+static inline int __ctsvc_db_search_records_with_query_exec(const char *zone_name, ctsvc_query_s *s_query, const char *projection,
+ const char *condition, GSList *bind, const char *keyword, int offset, int limit, contacts_list_h * out_list)
{
char *query = NULL;
int query_size;
int ret;
int i;
int type;
+ bool person_contact_query = false;
GSList *cursor;
cts_stmt stmt = NULL;
contacts_list_h list = NULL;
query_size = CTS_SQL_MAX_LEN;
query = calloc(1, query_size);
- RETVM_IF(NULL == query, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NULL");
+ if (NULL == query) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+
len = 0;
if (s_query->distinct)
temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT DISTINCT ");
else
temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, projection);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " FROM ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
- if (0 == strcmp(s_query->view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_CONTACT)
- || 0 == strcmp(s_query->view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP)
- || 0 == strcmp(s_query->view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_ASSIGNED)
- || 0 == strcmp(s_query->view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_NOT_ASSIGNED)) {
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, table);
- if (temp_len >= 0) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " WHERE ");
- if (temp_len >= 0) len+= temp_len;
+ if (STRING_EQUAL == strcmp(s_query->view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_CONTACT)
+ || STRING_EQUAL == strcmp(s_query->view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP)
+ || STRING_EQUAL == strcmp(s_query->view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_ASSIGNED)
+ || STRING_EQUAL == strcmp(s_query->view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP_NOT_ASSIGNED)) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, table);
- if (temp_len >= 0) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, ".contact_id IN ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " WHERE person_id IN ");
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ( SELECT person_id FROM ");
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, CTS_TABLE_CONTACTS);
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " WHERE deleted = 0 AND contact_id IN ");
+ if (0 <= temp_len) len+= temp_len;
+ person_contact_query = true;
}
- else if (0 == strcmp(s_query->view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_NUMBER)
- || 0 == strcmp(s_query->view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_EMAIL)) {
+ else if (STRING_EQUAL == strcmp(s_query->view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_NUMBER)
+ || STRING_EQUAL == strcmp(s_query->view_uri, CTSVC_VIEW_URI_READ_ONLY_PERSON_EMAIL)) {
free(query);
return CONTACTS_ERROR_INVALID_PARAMETER;
}
- else { // CTSVC_VIEW_URI_PERSON
+ else { /* CTSVC_VIEW_URI_PERSON */
temp_len = SAFE_SNPRINTF(&query, &query_size, len, table);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, ", "
"(SELECT contact_id, person_id person_id_in_contact, addressbook_id FROM ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, CTS_TABLE_CONTACTS);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " WHERE deleted = 0) temp_contacts ON ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, table);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, ".person_id = temp_contacts.person_id_in_contact WHERE temp_contacts.contact_id IN ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
temp_len = __ctsvc_db_append_search_query(keyword, &query, &query_size, len, range);
- if (temp_len >= 0) len = temp_len;
+ if (0 <= temp_len) len = temp_len;
+
+ if (person_contact_query) {
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ) ");
+ if (0 <= temp_len) len+= temp_len;
+ }
if (condition && *condition) {
- len += snprintf(query+len, sizeof(query)-len, " AND (%s)", condition);
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " AND (");
- if (temp_len >= 0) len+= temp_len;
+ if (person_contact_query) {
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " AND contact_id IN (");
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " SELECT contact_id FROM ");
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, table);
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " WHERE ");
+ if (0 <= temp_len) len+= temp_len;
+ }
+ else {
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " AND (");
+ if (0 <= temp_len) len+= temp_len;
+ }
temp_len = SAFE_SNPRINTF(&query, &query_size, len, condition);
- if (temp_len >= 0) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " )");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, ")");
+ if (0 <= temp_len) len+= temp_len;
}
if (__ctsvc_db_view_has_display_name(s_query->view_uri, s_query->properties, s_query->property_count))
- sortkey = ctsvc_get_sort_column();
+ sortkey = ctsvc_get_sort_column(zone_name);
if (s_query->sort_property_id) {
const char *field_name;
case CTSVC_PROPERTY_CONTACT_DISPLAY_NAME:
if (sortkey) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ORDER BY ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, sortkey);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
if (false == s_query->sort_asc) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " DESC ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
}
break;
default :
- field_name = __ctsvc_db_get_property_field_name(s_query->properties,
+ field_name = __ctsvc_db_get_property_field_name(zone_name, s_query->properties,
s_query->property_count, QUERY_SORTKEY, s_query->sort_property_id);
if (field_name) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ORDER BY ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, field_name);
- if (temp_len >= 0) len+= temp_len;
-// if (sortkey)
-// len += snprintf(query+len, sizeof(query)-len, ", %s", sortkey);
+ if (0 <= temp_len) len+= temp_len;
if (false == s_query->sort_asc) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " DESC ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
}
else if (sortkey) {
len += snprintf(query+len, sizeof(query)-len, " ORDER BY %s", sortkey);
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ORDER BY ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, sortkey);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
break;
}
}
else if (sortkey) {
- len = __ctsvc_db_search_records_append_sort(s_query->view_uri, sortkey, keyword, len, &query, &query_size);
+ len = __ctsvc_db_search_records_append_sort(zone_name, s_query->view_uri, sortkey, keyword, len, &query, &query_size);
}
- else if (0 == strcmp(s_query->view_uri, CTSVC_VIEW_URI_GROUP)) {
+ else if (STRING_EQUAL == strcmp(s_query->view_uri, CTSVC_VIEW_URI_GROUP)) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ORDER BY group_prio");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
if (0 != limit) {
char temp_str[20] = {0};
snprintf(temp_str, sizeof(temp_str), " LIMIT %d", limit);
temp_len = SAFE_SNPRINTF(&query, &query_size, len, temp_str);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
if (0 < offset) {
snprintf(temp_str, sizeof(temp_str), " OFFSET %d", offset);
temp_len = SAFE_SNPRINTF(&query, &query_size, len, temp_str);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
}
}
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
free(query);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
i = 1;
len = g_slist_length(bind);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
}
- if( ctsvc_view_get_record_type(s_query->view_uri) == CTSVC_RECORD_PERSON ) {
+ if (ctsvc_view_get_record_type(s_query->view_uri) == CTSVC_RECORD_PERSON) {
unsigned int ids_count;
unsigned int *project;
if (0 == s_query->projection_count)
project = malloc(sizeof(unsigned int)*ids_count);
- for(i=0;i<ids_count;i++) {
+ for (i=0;i<ids_count;i++) {
if (0 == s_query->projection_count)
project[i] = s_query->properties[i].property_id;
else
ret = ctsvc_db_person_create_record_from_stmt_with_projection(stmt, project, ids_count, &record);
free(project);
- if( CONTACTS_ERROR_NONE != ret )
- CTS_ERR("DB error : make record Failed(%d)", ret);
+ if (CONTACTS_ERROR_NONE != ret)
+ CTS_ERR("DB error : make record Fail(%d)", ret);
}
else {
contacts_record_create(s_query->view_uri, (contacts_record_h*)&record);
int field_count;
if (0 == s_query->projection_count)
field_count = s_query->property_count;
- else
- {
+ else {
field_count = s_query->projection_count;
- if( CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, s_query->projection, s_query->projection_count, s_query->property_count) )
- {
+ if (CONTACTS_ERROR_NONE != ctsvc_record_set_projection_flags(record, s_query->projection, s_query->projection_count, s_query->property_count)) {
ASSERT_NOT_REACHED("To set projection is failed.\n");
}
}
- for(i=0;i<field_count;i++) {
+ for (i=0;i<field_count;i++) {
int property_id;
if (0 == s_query->projection_count)
else
property_id = s_query->projection[i];
- type = __ctsvc_db_get_property_type(s_query->properties, s_query->property_count, s_query->projection[i]);
+ type = __ctsvc_db_get_property_type(s_query->properties, s_query->property_count, property_id);
if (type == CTSVC_VIEW_DATA_TYPE_INT)
ctsvc_record_set_int(record,property_id, ctsvc_stmt_get_int(stmt, i));
else if (type == CTSVC_VIEW_DATA_TYPE_STR)
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_search_records_with_query( contacts_query_h query, const char *keyword,
+static int __ctsvc_db_search_records_with_query(const char *zone_name, contacts_query_h query, const char *keyword,
int offset, int limit, contacts_list_h* out_list)
{
int ret;
RETVM_IF(false == can_keyword_search, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : can not keyword search");
- ret = __ctsvc_db_create_projection(s_query->view_uri, s_query->properties, s_query->property_count,
+ ret = __ctsvc_db_create_projection(zone_name, s_query->view_uri, s_query->properties, s_query->property_count,
s_query->projection, s_query->projection_count, &projection);
- RETVM_IF (CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_db_create_projection is failed(%d)", ret);
+ RETVM_IF (CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_db_create_projection Fail(%d)", ret);
if (s_query->filter) {
- ret = __ctsvc_db_create_composite_condition(s_query->filter, &condition, &bind_text);
+ ret = __ctsvc_db_create_composite_condition(zone_name, s_query->filter, &condition, &bind_text);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_db_create_composite_condition is failed(%d)", ret);
+ CTS_ERR("__ctsvc_db_create_composite_condition Fail(%d)", ret);
free(projection);
return ret;
}
}
- ret = __ctsvc_db_search_records_with_query_exec(s_query, projection, condition, bind_text, keyword, offset, limit, out_list);
+ ret = __ctsvc_db_search_records_with_query_exec(zone_name, s_query, projection, condition, bind_text, keyword, offset, limit, out_list);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_db_search_records_with_query_exec is failed(%d)", ret);
+ CTS_ERR("__ctsvc_db_search_records_with_query_exec Fail(%d)", ret);
for (cursor=bind_text;cursor;cursor=cursor->next)
free(cursor->data);
g_slist_free(bind_text);
void *user_data;
}ctsvc_bulk_info_s;
-static int __ctsvc_db_insert_records(contacts_list_h list, int **ids)
+static int __ctsvc_db_insert_records(const char *zone_name, contacts_list_h list, int **ids)
{
int ret;
int index;
ret = contacts_list_get_count(list, &count);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("contacts_list_get_count() failed(%d)", ret);
+ CTS_ERR("contacts_list_get_count() Fail(%d)", ret);
return ret;
}
- ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_begin_trans is failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_begin_trans Fail(%d)", ret);
id = calloc(count, sizeof(int));
index = 0;
do {
ret = contacts_list_get_current_record_p(list, &record);
- if( CONTACTS_ERROR_NONE != ret) {
+ if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("contacts_list_get_current_record_p is faild(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
free(id);
return ret;
}
- ret = contacts_db_insert_record(record, &id[index++]);
- if( ret != CONTACTS_ERROR_NONE ) {
+ ret = ctsvc_db_insert_record(zone_name, record, &id[index++]);
+ if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("contacts_db_insert_record is faild(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
free(id);
return ret;
}
- }while (CONTACTS_ERROR_NONE == contacts_list_next(list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(list));
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
free(id);
return ret;
}
return CONTACTS_ERROR_NONE;
}
-#ifdef _CONTACTS_NATIVE
-static gboolean __ctsvc_db_insert_idler(void *data)
-{
- int ret;
- ctsvc_bulk_info_s *info = data;
- contacts_db_insert_result_cb cb;
-
- ret = __ctsvc_db_insert_records(info->list, &info->ids);
-
- if (info->cb) {
- cb = info->cb;
- if( CONTACTS_ERROR_NONE != ret) {
- cb(ret, NULL, 0, info->user_data);
- }
- else {
- int count = 0;
- contacts_list_get_count(info->list, &count);
- cb(ret, info->ids, count, info->user_data);
- }
- }
- contacts_list_destroy(info->list, true);
- free(info->ids);
- free(info);
- return false;
-}
-#endif
-
-static int __ctsvc_db_delete_records(const char* view_uri, int ids[], int count)
+static int __ctsvc_db_delete_records(const char *zone_name, const char* view_uri, int ids[], int count)
{
int ret = CONTACTS_ERROR_NONE;
int index;
- ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_begin_trans is failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_begin_trans Fail(%d)", ret);
index = 0;
do {
- ret = contacts_db_delete_record(view_uri, ids[index++]);
+ ret = ctsvc_db_delete_record(zone_name, view_uri, ids[index++]);
if (CONTACTS_ERROR_NO_DATA == ret) {
CTS_DBG("the record is not exist : %d", ret);
continue;
}
- else if( ret != CONTACTS_ERROR_NONE ) {
+ else if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("contacts_db_delete_record is faild(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- } while(index < count);
+ } while (index < count);
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
return CONTACTS_ERROR_NONE;
}
-#ifdef _CONTACTS_NATIVE
-static gboolean __ctsvc_db_delete_idler(void *data)
-{
- int ret;
- ctsvc_bulk_info_s *info = data;
- contacts_db_result_cb cb;
-
- ret = __ctsvc_db_delete_records(info->view_uri, info->ids, info->count);
-
- if (info->cb) {
- cb = info->cb;
- cb(ret, info->user_data);
- }
- free(info->ids);
- free(info);
- return false;
-}
-#endif
-
-static int __ctsvc_db_update_records( contacts_list_h list)
+static int __ctsvc_db_update_records(const char *zone_name, contacts_list_h list)
{
int ret = CONTACTS_ERROR_NONE;
int count;
RETVM_IF(ret != CONTACTS_ERROR_NONE, ret, "contacts_list_get_count is falied(%d)", ret);
RETVM_IF(count <= 0, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter : count is 0");
- ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_begin_trans is failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_begin_trans Fail(%d)", ret);
contacts_list_first(list);
do {
ret = contacts_list_get_current_record_p(list, &record);
- if( CONTACTS_ERROR_NONE != ret) {
+ if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("contacts_list_get_current_record_p is faild(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = contacts_db_update_record(record);
- if( ret != CONTACTS_ERROR_NONE ) {
- CTS_ERR("contacts_db_update_record is faild(%d)", ret);
- ctsvc_end_trans(false);
+ ret = ctsvc_db_update_record(zone_name, record);
+ if (ret != CONTACTS_ERROR_NONE) {
+ CTS_ERR("ctsvc_db_update_record() Fail(%d)", ret);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(list));
- ret = ctsvc_end_trans(true);
- if (ret < CONTACTS_ERROR_NONE)
- {
- CTS_ERR("DB error : ctsvc_end_trans() Failed(%d)", ret);
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(list));
+ ret = ctsvc_end_trans(zone_name, true);
+ if (ret < CONTACTS_ERROR_NONE) {
+ CTS_ERR("DB error : ctsvc_end_trans() Fail(%d)", ret);
return ret;
}
return CONTACTS_ERROR_NONE;
}
-#ifdef _CONTACTS_NATIVE
-static gboolean __ctsvc_db_update_idler(void *data)
-{
- int ret;
- ctsvc_bulk_info_s *info = data;
- contacts_db_result_cb cb;
-
- ret = __ctsvc_db_update_records(info->list);
-
- if (info->cb) {
- cb = info->cb;
- cb(ret, info->user_data);
- }
- contacts_list_destroy(info->list, true);
- free(info);
- return false;
-}
-#endif
-
-static int __ctsvc_db_get_count_exec(const char *view_uri, const property_info_s* properties, int ids_count,
- const char *projection, int *out_count )
+static int __ctsvc_db_get_count_exec(const char *zone_name, const char *view_uri, const property_info_s* properties, int ids_count,
+ const char *projection, int *out_count)
{
char query[CTS_SQL_MAX_LEN] = {0};
const char *table;
len += snprintf(query+len, sizeof(query)-len, " (%s)", table);
- len += snprintf(query+len, sizeof(query)-len, " ) ");
+ len += snprintf(query+len, sizeof(query)-len, ") ");
- ret = ctsvc_query_get_first_int_result(query, out_count);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret , "DB error : ctsvc_query_get_first_int_result() Failed(%d)", ret);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, out_count);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_get_first_int_result() Fail(%d)", ret);
return ret;
}
-static int __ctsvc_db_get_count( const char* view_uri, int *out_count)
+static int __ctsvc_db_get_count(const char *zone_name, const char* view_uri, int *out_count)
{
int ret;
unsigned int count;
char *projection;
const property_info_s *p = ctsvc_view_get_all_property_infos(view_uri, &count);
- ret = __ctsvc_db_create_projection(view_uri, p, count, NULL, 0, &projection);
- RETVM_IF (CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_db_create_projection is failed(%d)", ret);
+ ret = __ctsvc_db_create_projection(zone_name, view_uri, p, count, NULL, 0, &projection);
+ RETVM_IF (CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_db_create_projection Fail(%d)", ret);
- __ctsvc_db_get_count_exec(view_uri, p, count, projection, out_count);
+ __ctsvc_db_get_count_exec(zone_name, view_uri, p, count, projection, out_count);
free(projection);
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_get_count_with_query_exec(ctsvc_query_s *s_query, const char *projection,
- const char *condition, GSList *bind_text, int *out_count )
+static int __ctsvc_db_get_count_with_query_exec(const char *zone_name, ctsvc_query_s *s_query, const char *projection,
+ const char *condition, GSList *bind_text, int *out_count)
{
char *query = NULL;
int query_size;
query_size = CTS_SQL_MAX_LEN;
query = calloc(1, query_size);
- RETVM_IF(NULL == query, CONTACTS_ERROR_OUT_OF_MEMORY, "calloc() return NUL");
+ if (NULL == query) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+
len = 0;
if (s_query->distinct) {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT COUNT(*) FROM (SELECT DISTINCT ");
else {
temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT COUNT(*) FROM (SELECT ");
}
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, projection);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, " FROM ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ( ");
- if (temp_len >= 0) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " (");
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, table);
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ) ");
- if (temp_len >= 0) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, ") ");
+ if (0 <= temp_len) len+= temp_len;
if (condition && *condition) {
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " WHERE ( ");
- if (temp_len >= 0) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, " WHERE (");
+ if (0 <= temp_len) len+= temp_len;
temp_len = SAFE_SNPRINTF(&query, &query_size, len, condition);
- if (temp_len >= 0) len+= temp_len;
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ) ");
- if (temp_len >= 0) len+= temp_len;
+ if (0 <= temp_len) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, ") ");
+ if (0 <= temp_len) len+= temp_len;
}
- temp_len = SAFE_SNPRINTF(&query, &query_size, len, " ) ");
- if (temp_len >= 0) len+= temp_len;
+ temp_len = SAFE_SNPRINTF(&query, &query_size, len, ") ");
+ if (0 <= temp_len) len+= temp_len;
if (bind_text) {
cts_stmt stmt;
GSList *cursor;
int i;
- ret = ctsvc_query_prepare(query, &stmt);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
free(query);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
for (cursor=bind_text, i=1; cursor;cursor=cursor->next, i++)
ctsvc_stmt_bind_copy_text(stmt, i, cursor->data, strlen(cursor->data));
- ret = ctsvc_stmt_get_first_int_result(stmt, out_count);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret , "DB error : ctsvc_stmt_get_first_int_result() Failed(%d)", ret);
+ ret = ctsvc_stmt_get_first_int_result(zone_name, stmt, out_count);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_stmt_get_first_int_result() Fail(%d)", ret);
}
else {
- ret = ctsvc_query_get_first_int_result(query, out_count);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, out_count);
free(query);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret , "DB error : ctsvc_query_get_first_int_result() Failed(%d)", ret);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_get_first_int_result() Fail(%d)", ret);
}
return ret;
}
-static int __ctsvc_db_get_count_with_query( contacts_query_h query, int *out_count)
+static int __ctsvc_db_get_count_with_query(const char *zone_name, contacts_query_h query, int *out_count)
{
int ret;
char *condition = NULL;
s_query = (ctsvc_query_s *)query;
if (s_query->filter) {
- ret = __ctsvc_db_create_composite_condition(s_query->filter, &condition, &bind_text);
- RETVM_IF (CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_db_create_composite_condition is failed(%d)", ret);
+ ret = __ctsvc_db_create_composite_condition(zone_name, s_query->filter, &condition, &bind_text);
+ RETVM_IF (CONTACTS_ERROR_NONE != ret, ret, "__ctsvc_db_create_composite_condition Fail(%d)", ret);
}
- ret = __ctsvc_db_create_projection(s_query->view_uri, s_query->properties, s_query->property_count,
+ ret = __ctsvc_db_create_projection(zone_name, s_query->view_uri, s_query->properties, s_query->property_count,
s_query->projection, s_query->projection_count, &projection);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("__ctsvc_db_create_projection is failed(%d)", ret);
+ CTS_ERR("__ctsvc_db_create_projection Fail(%d)", ret);
for (cursor=bind_text;cursor;cursor=cursor->next)
free(cursor->data);
g_slist_free(bind_text);
return ret;
}
- ret = __ctsvc_db_get_count_with_query_exec(s_query, projection, condition, bind_text, out_count);
+ ret = __ctsvc_db_get_count_with_query_exec(zone_name, s_query, projection, condition, bind_text, out_count);
for (cursor=bind_text;cursor;cursor=cursor->next)
free(cursor->data);
g_slist_free(bind_text);
return ret;
}
-API int contacts_db_get_records_with_query( contacts_query_h query, int offset, int limit,
- contacts_list_h* out_list )
+int ctsvc_db_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit,
+ contacts_list_h* out_list)
{
int ret = CONTACTS_ERROR_NONE;
ctsvc_db_plugin_info_s* plugin_info = NULL;
RETV_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER);
s_query = (ctsvc_query_s*)query;
- RETVM_IF(!ctsvc_have_permission(ctsvc_required_read_permission(s_query->view_uri)),
+ RETVM_IF(false == ctsvc_have_permission(zone_name, ctsvc_required_read_permission(s_query->view_uri)),
CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied : read(%s)", s_query->view_uri);
- if (( plugin_info = ctsvc_db_get_plugin_info(ctsvc_view_get_record_type(s_query->view_uri)))){
- if( plugin_info->get_records_with_query ) {
- ret = plugin_info->get_records_with_query( query, offset, limit, out_list );
+ if ((plugin_info = ctsvc_db_get_plugin_info(ctsvc_view_get_record_type(s_query->view_uri)))) {
+ if (plugin_info->get_records_with_query) {
+ ret = plugin_info->get_records_with_query(zone_name, query, offset, limit, out_list);
return ret;
}
}
- return __ctsvc_db_get_records_with_query_exec(s_query, offset, limit, out_list);
+ return __ctsvc_db_get_records_with_query_exec(zone_name, s_query, offset, limit, out_list);
}
-static int __ctsvc_db_get_contact_changes(const char* view_uri, int addressbook_id,
+static int __ctsvc_db_get_contact_changes(const char *zone_name, const char* view_uri, int addressbook_id,
int version, contacts_list_h* out_list, int* out_current_version)
{
int ret;
"AND "CTS_TABLE_CONTACTS".addressbook_id = "CTS_TABLE_ADDRESSBOOKS".addressbook_id",
CONTACTS_CHANGE_UPDATED, version,
CONTACTS_CHANGE_DELETED, version, version,
- CONTACTS_CHANGE_DELETED, version ,version);
+ CONTACTS_CHANGE_DELETED, version,version);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
ctsvc_updated_info_s *update_info;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ctsvc_list_reverse(list);
snprintf(query, sizeof(query), "SELECT ver FROM "CTS_TABLE_VERSION);
- ret = ctsvc_query_get_first_int_result(query, out_current_version);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret , "DB error : ctsvc_query_get_first_int_result() Failed(%d)", ret);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, out_current_version);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_get_first_int_result() Fail(%d)", ret);
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_get_group_changes(const char* view_uri, int addressbook_id,
+static int __ctsvc_db_get_group_changes(const char *zone_name, const char* view_uri, int addressbook_id,
int version, contacts_list_h* out_list, int* out_current_version)
{
int ret;
CONTACTS_CHANGE_DELETED, CTS_TABLE_GROUP_DELETEDS, version, version);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
ctsvc_updated_info_s *update_info;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ctsvc_list_reverse(list);
snprintf(query, sizeof(query), "SELECT ver FROM "CTS_TABLE_VERSION);
- ret = ctsvc_query_get_first_int_result(query, out_current_version);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret , "DB error : ctsvc_query_get_first_int_result() Failed(%d)", ret);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, out_current_version);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_get_first_int_result() Fail(%d)", ret);
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_get_group_relations_changes(const char* view_uri, int addressbook_id,
+static int __ctsvc_db_get_group_relations_changes(const char *zone_name, const char* view_uri, int addressbook_id,
int version, contacts_list_h* out_list, int* out_current_version)
{
int len;
"SELECT * FROM (%s) WHERE addressbook_id = %d ", temp_query, addressbook_id);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ctsvc_list_reverse(list);
snprintf(query, sizeof(query), "SELECT ver FROM "CTS_TABLE_VERSION);
- ret = ctsvc_query_get_first_int_result(query, out_current_version);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret , "DB error : ctsvc_query_get_first_int_result() Failed(%d)", ret);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, out_current_version);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_get_first_int_result() Fail(%d)", ret);
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_get_group_member_changes(const char* view_uri, int addressbook_id,
+static int __ctsvc_db_get_group_member_changes(const char *zone_name, const char* view_uri, int addressbook_id,
int version, contacts_list_h* out_list, int* out_current_version)
{
int len;
if (0 <= addressbook_id)
len += snprintf(query+len, sizeof(query)-len, " AND addressbook_id = %d ", addressbook_id);
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ctsvc_list_reverse(list);
snprintf(query, sizeof(query), "SELECT ver FROM "CTS_TABLE_VERSION);
- ret = ctsvc_query_get_first_int_result(query, out_current_version);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret , "DB error : ctsvc_query_get_first_int_result() Failed(%d)", ret);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, out_current_version);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_get_first_int_result() Fail(%d)", ret);
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-static int __ctsvc_db_get_my_profile_changes(const char* view_uri, int addressbook_id,
+static int __ctsvc_db_get_my_profile_changes(const char *zone_name, const char* view_uri, int addressbook_id,
int version, contacts_list_h* out_list, int* out_current_version)
{
int ret;
CONTACTS_CHANGE_DELETED, CTS_TABLE_MY_PROFILES, version);
}
- ret = ctsvc_query_prepare(query, &stmt);
- RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Failed(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "DB error : ctsvc_query_prepare() Fail(%d)", ret);
contacts_list_create(&list);
while ((ret = ctsvc_stmt_step(stmt))) {
contacts_record_h record;
if (1 != ret) {
- CTS_ERR("DB error : ctsvc_stmt_step() Failed(%d)", ret);
+ CTS_ERR("DB error : ctsvc_stmt_step() Fail(%d)", ret);
ctsvc_stmt_finalize(stmt);
contacts_list_destroy(list, true);
return ret;
ctsvc_list_reverse(list);
snprintf(query, sizeof(query), "SELECT ver FROM "CTS_TABLE_VERSION);
- ret = ctsvc_query_get_first_int_result(query, out_current_version);
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret , "DB error : ctsvc_query_get_first_int_result() Failed(%d)", ret);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, out_current_version);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "DB error : ctsvc_query_get_first_int_result() Fail(%d)", ret);
*out_list = list;
return CONTACTS_ERROR_NONE;
}
-API int contacts_db_get_changes_by_version( const char* view_uri, int addressbook_id,
- int version, contacts_list_h* out_list, int* out_current_version )
+int ctsvc_db_get_changes_by_version(const char *zone_name, const char* view_uri, int addressbook_id,
+ int version, contacts_list_h* out_list, int* out_current_version)
{
int ret;
RETV_IF(version < 0, CONTACTS_ERROR_INVALID_PARAMETER);
*out_list = NULL;
RETV_IF(NULL == out_current_version, CONTACTS_ERROR_INVALID_PARAMETER);
*out_current_version = 0;
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_READ),
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_READ),
CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied : read (%s)", view_uri);
- if (0 == strcmp(view_uri, _contacts_contact_updated_info._uri)) {
- ret = __ctsvc_db_get_contact_changes(view_uri, addressbook_id,
+ if (STRING_EQUAL == strcmp(view_uri, _contacts_contact_updated_info._uri)) {
+ ret = __ctsvc_db_get_contact_changes(zone_name, view_uri, addressbook_id,
version, out_list, out_current_version);
return ret;
}
- else if (0 == strcmp(view_uri, _contacts_group_updated_info._uri)) {
- ret = __ctsvc_db_get_group_changes(view_uri, addressbook_id,
+ else if (STRING_EQUAL == strcmp(view_uri, _contacts_group_updated_info._uri)) {
+ ret = __ctsvc_db_get_group_changes(zone_name, view_uri, addressbook_id,
version, out_list, out_current_version);
return ret;
}
- else if (0 == strcmp(view_uri, _contacts_group_member_updated_info._uri)) {
- ret = __ctsvc_db_get_group_member_changes(view_uri, addressbook_id,
+ else if (STRING_EQUAL == strcmp(view_uri, _contacts_group_member_updated_info._uri)) {
+ ret = __ctsvc_db_get_group_member_changes(zone_name, view_uri, addressbook_id,
version, out_list, out_current_version);
return ret;
}
- else if (0 == strcmp(view_uri, _contacts_grouprel_updated_info._uri)) {
- ret = __ctsvc_db_get_group_relations_changes(view_uri, addressbook_id,
+ else if (STRING_EQUAL == strcmp(view_uri, _contacts_grouprel_updated_info._uri)) {
+ ret = __ctsvc_db_get_group_relations_changes(zone_name, view_uri, addressbook_id,
version, out_list, out_current_version);
return ret;
}
- else if (0 == strcmp(view_uri, _contacts_my_profile_updated_info._uri)) {
- ret = __ctsvc_db_get_my_profile_changes(view_uri, addressbook_id,
+ else if (STRING_EQUAL == strcmp(view_uri, _contacts_my_profile_updated_info._uri)) {
+ ret = __ctsvc_db_get_my_profile_changes(zone_name, view_uri, addressbook_id,
version, out_list, out_current_version);
return ret;
}
return CONTACTS_ERROR_INVALID_PARAMETER;
}
-API int contacts_db_get_current_version( int* out_current_version )
+int ctsvc_db_get_current_version(const char *zone_name, int* out_current_version)
{
RETVM_IF(NULL == out_current_version, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_READ) && !ctsvc_have_permission(CTSVC_PERMISSION_PHONELOG_READ),
+ RETVM_IF(false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_CONTACT_READ) && false == ctsvc_have_permission(zone_name, CTSVC_PERMISSION_PHONELOG_READ),
CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied : read (contact)");
- return ctsvc_get_current_version(out_current_version);
+ return ctsvc_get_current_version(zone_name, out_current_version);
}
-API int contacts_db_search_records(const char* view_uri, const char *keyword,
+int ctsvc_db_search_records(const char *zone_name, const char* view_uri, const char *keyword,
int offset, int limit, contacts_list_h* out_list)
{
RETV_IF(NULL == out_list, CONTACTS_ERROR_INVALID_PARAMETER);
*out_list = NULL;
RETVM_IF(NULL == view_uri, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- RETVM_IF(!ctsvc_have_permission(ctsvc_required_read_permission(view_uri)),
+ RETVM_IF(false == ctsvc_have_permission(zone_name, ctsvc_required_read_permission(view_uri)),
CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied : read(%s)", view_uri);
- return __ctsvc_db_search_records(view_uri, keyword, offset, limit, out_list);
+ return __ctsvc_db_search_records(zone_name, view_uri, keyword, offset, limit, out_list);
}
-API int contacts_db_search_records_with_range(const char* view_uri, const char *keyword,
+int ctsvc_db_search_records_with_range(const char *zone_name, const char* view_uri, const char *keyword,
int offset, int limit, int range, contacts_list_h* out_list)
{
RETV_IF(NULL == out_list, CONTACTS_ERROR_INVALID_PARAMETER);
*out_list = NULL;
RETVM_IF(range == 0, CONTACTS_ERROR_INVALID_PARAMETER, "range is 0");
RETVM_IF(NULL == view_uri, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- RETVM_IF(!ctsvc_have_permission(ctsvc_required_read_permission(view_uri)),
+ RETVM_IF(false == ctsvc_have_permission(zone_name, ctsvc_required_read_permission(view_uri)),
CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied : read(%s)", view_uri);
- return __ctsvc_db_search_records_with_range(view_uri, keyword, offset, limit, range, out_list);
+ return __ctsvc_db_search_records_with_range(zone_name, view_uri, keyword, offset, limit, range, out_list);
}
-API int contacts_db_search_records_with_query( contacts_query_h query, const char *keyword,
+int ctsvc_db_search_records_with_query(const char *zone_name, contacts_query_h query, const char *keyword,
int offset, int limit, contacts_list_h* out_list)
{
RETV_IF(NULL == out_list, CONTACTS_ERROR_INVALID_PARAMETER);
*out_list = NULL;
RETVM_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- RETVM_IF(!ctsvc_have_permission(ctsvc_required_read_permission(((ctsvc_query_s*)query)->view_uri)),
+ RETVM_IF(false == ctsvc_have_permission(zone_name, ctsvc_required_read_permission(((ctsvc_query_s*)query)->view_uri)),
CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied : read (%s)", ((ctsvc_query_s*)query)->view_uri);
- return __ctsvc_db_search_records_with_query(query, keyword, offset, limit, out_list);
+ return __ctsvc_db_search_records_with_query(zone_name, query, keyword, offset, limit, out_list);
}
-API int contacts_db_get_count( const char* view_uri, int *out_count)
+int ctsvc_db_get_count(const char *zone_name, const char* view_uri, int *out_count)
{
int ret;
ctsvc_db_plugin_info_s* plugin_info = NULL;
RETV_IF(NULL == out_count, CONTACTS_ERROR_INVALID_PARAMETER);
*out_count = 0;
RETVM_IF(NULL == view_uri, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- RETVM_IF(!ctsvc_have_permission(ctsvc_required_read_permission(view_uri)),
+ RETVM_IF(false == ctsvc_have_permission(zone_name, ctsvc_required_read_permission(view_uri)),
CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied : read (%s)", view_uri);
- if (( plugin_info = ctsvc_db_get_plugin_info(ctsvc_view_get_record_type(view_uri)))){
- if( plugin_info->get_count ) {
- ret = plugin_info->get_count(out_count);
+ if ((plugin_info = ctsvc_db_get_plugin_info(ctsvc_view_get_record_type(view_uri)))) {
+ if (plugin_info->get_count) {
+ ret = plugin_info->get_count(zone_name, out_count);
return ret;
}
}
- return __ctsvc_db_get_count( view_uri, out_count );
+ return __ctsvc_db_get_count(zone_name, view_uri, out_count);
}
-API int contacts_db_get_count_with_query( contacts_query_h query, int *out_count)
+int ctsvc_db_get_count_with_query(const char *zone_name, contacts_query_h query, int *out_count)
{
int ret = CONTACTS_ERROR_NONE;
ctsvc_record_type_e type = CTSVC_RECORD_INVALID;
RETVM_IF(NULL == query, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
s_query = (ctsvc_query_s*)query;
- RETVM_IF(!ctsvc_have_permission(ctsvc_required_read_permission(s_query->view_uri)),
+ RETVM_IF(false == ctsvc_have_permission(zone_name, ctsvc_required_read_permission(s_query->view_uri)),
CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied : read (%s)", s_query->view_uri);
type = ctsvc_view_get_record_type(s_query->view_uri);
plugin_info = ctsvc_db_get_plugin_info(type);
- if (plugin_info){
- if(plugin_info->get_count_with_query ) {
- ret = plugin_info->get_count_with_query( query, out_count );
+ if (plugin_info) {
+ if (plugin_info->get_count_with_query) {
+ ret = plugin_info->get_count_with_query(zone_name, query, out_count);
return ret;
}
}
- return __ctsvc_db_get_count_with_query( query, out_count );
+ return __ctsvc_db_get_count_with_query(zone_name, query, out_count);
}
-API int contacts_db_insert_record(contacts_record_h record, int *id )
+int ctsvc_db_insert_record(const char *zone_name, contacts_record_h record, int *id)
{
ctsvc_db_plugin_info_s* plugin_info = NULL;
plugin_info = ctsvc_db_get_plugin_info(((ctsvc_record_s*)record)->r_type);
RETVM_IF(NULL == plugin_info, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
RETVM_IF(NULL == plugin_info->insert_record, CONTACTS_ERROR_INVALID_PARAMETER, "Not permitted");
- RETVM_IF(!ctsvc_have_permission(ctsvc_required_write_permission(((ctsvc_record_s*)record)->view_uri)),
+ RETVM_IF(false == ctsvc_have_permission(zone_name, ctsvc_required_write_permission(((ctsvc_record_s*)record)->view_uri)),
CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied : write (%s)", ((ctsvc_record_s*)record)->view_uri);
- return plugin_info->insert_record(record, id);
+ return plugin_info->insert_record(zone_name, record, id);
}
-API int contacts_db_update_record(contacts_record_h record)
+int ctsvc_db_update_record(const char *zone_name, contacts_record_h record)
{
ctsvc_db_plugin_info_s* plugin_info = NULL;
plugin_info = ctsvc_db_get_plugin_info(((ctsvc_record_s*)record)->r_type);
RETVM_IF(NULL == plugin_info, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
RETVM_IF(NULL == plugin_info->update_record, CONTACTS_ERROR_INVALID_PARAMETER, "Not permitted");
- RETVM_IF(!ctsvc_have_permission(ctsvc_required_write_permission(((ctsvc_record_s*)record)->view_uri)),
+ RETVM_IF(false == ctsvc_have_permission(zone_name, ctsvc_required_write_permission(((ctsvc_record_s*)record)->view_uri)),
CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied : write (%s)", ((ctsvc_record_s*)record)->view_uri);
- return plugin_info->update_record(record);
+ return plugin_info->update_record(zone_name, record);
}
-API int contacts_db_delete_record(const char* view_uri, int id)
+int ctsvc_db_delete_record(const char *zone_name, const char* view_uri, int id)
{
ctsvc_record_type_e type = CTSVC_RECORD_INVALID;
ctsvc_db_plugin_info_s* plugin_info = NULL;
plugin_info = ctsvc_db_get_plugin_info(type);
RETVM_IF(NULL == plugin_info, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
RETVM_IF(NULL == plugin_info->delete_record, CONTACTS_ERROR_INVALID_PARAMETER, "Not permitted");
- RETVM_IF(!ctsvc_have_permission(ctsvc_required_write_permission(view_uri)),
+ RETVM_IF(false == ctsvc_have_permission(zone_name, ctsvc_required_write_permission(view_uri)),
CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied : write (%s)", view_uri);
- return plugin_info->delete_record(id);
+ return plugin_info->delete_record(zone_name, id);
}
-API int contacts_db_get_record(const char* view_uri, int id, contacts_record_h* out_record )
+int ctsvc_db_get_record(const char *zone_name, const char* view_uri, int id, contacts_record_h* out_record)
{
ctsvc_record_type_e type = CTSVC_RECORD_INVALID;
ctsvc_db_plugin_info_s* plugin_info = NULL;
RETVM_IF(NULL == plugin_info, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
RETVM_IF(NULL == plugin_info->get_record, CONTACTS_ERROR_INVALID_PARAMETER, "Not permitted");
- RETVM_IF(!ctsvc_have_permission(ctsvc_required_read_permission(view_uri)),
+ RETVM_IF(false == ctsvc_have_permission(zone_name, ctsvc_required_read_permission(view_uri)),
CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied : read (%s)", view_uri);
- return plugin_info->get_record(id, out_record);
+ return plugin_info->get_record(zone_name, id, out_record);
}
-API int contacts_db_replace_record( contacts_record_h record, int id )
+int ctsvc_db_replace_record(const char *zone_name, contacts_record_h record, int id)
{
ctsvc_db_plugin_info_s* plugin_info = NULL;
plugin_info = ctsvc_db_get_plugin_info(((ctsvc_record_s*)record)->r_type);
RETVM_IF(NULL == plugin_info, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
RETVM_IF(NULL == plugin_info->replace_record, CONTACTS_ERROR_INVALID_PARAMETER, "Not permitted");
- RETVM_IF(!ctsvc_have_permission(ctsvc_required_write_permission(((ctsvc_record_s*)record)->view_uri)),
+ RETVM_IF(false == ctsvc_have_permission(zone_name, ctsvc_required_write_permission(((ctsvc_record_s*)record)->view_uri)),
CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied : write (%s)", ((ctsvc_record_s*)record)->view_uri);
- return plugin_info->replace_record(record, id);
+ return plugin_info->replace_record(zone_name, record, id);
}
-API int contacts_db_get_all_records(const char* view_uri, int offset, int limit, contacts_list_h* out_list )
+int ctsvc_db_get_all_records(const char *zone_name, const char* view_uri, int offset, int limit, contacts_list_h* out_list)
{
int ret = CONTACTS_ERROR_NONE;
ctsvc_record_type_e type = CTSVC_RECORD_INVALID;
RETV_IF(NULL == out_list, CONTACTS_ERROR_INVALID_PARAMETER);
*out_list = NULL;
RETVM_IF(NULL == view_uri, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- RETVM_IF(!ctsvc_have_permission(ctsvc_required_read_permission(view_uri)),
+ RETVM_IF(false == ctsvc_have_permission(zone_name, ctsvc_required_read_permission(view_uri)),
CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied : read (%s)", view_uri);
type = ctsvc_view_get_record_type(view_uri);
plugin_info = ctsvc_db_get_plugin_info(type);
- if (plugin_info){
- if( plugin_info->get_all_records ) {
- ret = plugin_info->get_all_records(offset, limit, out_list);
+ if (plugin_info) {
+ if (plugin_info->get_all_records) {
+ ret = plugin_info->get_all_records(zone_name, offset, limit, out_list);
return ret;
}
}
- return __ctsvc_db_get_all_records( view_uri, offset, limit, out_list );
+ return __ctsvc_db_get_all_records(zone_name, view_uri, offset, limit, out_list);
}
-int ctsvc_db_insert_records(contacts_list_h list, int **ids, int *count)
+int ctsvc_db_insert_records(const char *zone_name, contacts_list_h list, int **ids, int *count)
{
int ret = CONTACTS_ERROR_NONE;
ctsvc_db_plugin_info_s* plugin_info = NULL;
if (count)
contacts_list_get_count(list, count);
- if (( plugin_info = ctsvc_db_get_plugin_info(((ctsvc_list_s*)list)->l_type))) {
- if( plugin_info->insert_records ) {
- ret = plugin_info->insert_records( list, ids );
+ if ((plugin_info = ctsvc_db_get_plugin_info(((ctsvc_list_s*)list)->l_type))) {
+ if (plugin_info->insert_records) {
+ ret = plugin_info->insert_records(zone_name, list, ids);
return ret;
}
}
- return __ctsvc_db_insert_records(list, ids);
-}
-
-API int contacts_db_insert_records_async( contacts_list_h list,
- contacts_db_insert_result_cb callback, void *user_data)
-{
- RETVM_IF(NULL == list, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
-
-#ifdef _CONTACTS_NATIVE
- if (callback) {
- ctsvc_bulk_info_s *info;
- info = (ctsvc_bulk_info_s *)calloc(1, sizeof(ctsvc_bulk_info_s));
- ctsvc_list_clone(list, &info->list);
- info->cb = callback;
- info->user_data = user_data;
- g_idle_add(__ctsvc_db_insert_idler, info); // should be changed after ipc implementation
- return CONTACTS_ERROR_NONE;
- }
-#endif
- return ctsvc_db_insert_records(list, NULL, NULL);
+ return __ctsvc_db_insert_records(zone_name, list, ids);
}
-int ctsvc_db_update_records(contacts_list_h list)
+int ctsvc_db_update_records(const char *zone_name, contacts_list_h list)
{
int ret = CONTACTS_ERROR_NONE;
ctsvc_db_plugin_info_s* plugin_info = NULL;
RETVM_IF(NULL == list, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- if (( plugin_info = ctsvc_db_get_plugin_info(((ctsvc_list_s*)list)->l_type))){
- if( plugin_info->update_records ) {
- ret = plugin_info->update_records( list );
+ if ((plugin_info = ctsvc_db_get_plugin_info(((ctsvc_list_s*)list)->l_type))) {
+ if (plugin_info->update_records) {
+ ret = plugin_info->update_records(zone_name, list);
return ret;
}
}
- return __ctsvc_db_update_records(list);
+ return __ctsvc_db_update_records(zone_name, list);
}
-API int contacts_db_update_records_async( contacts_list_h list,
- contacts_db_result_cb callback, void *user_data)
-{
- RETVM_IF(NULL == list, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
-
-#ifdef _CONTACTS_NATIVE
- if (callback) {
- ctsvc_bulk_info_s *info;
- info = (ctsvc_bulk_info_s *)calloc(1, sizeof(ctsvc_bulk_info_s));
- ctsvc_list_clone(list, &info->list);
- info->cb = callback;
- info->user_data = user_data;
- g_idle_add(__ctsvc_db_update_idler, info); // should be changed after ipc implementation
- return CONTACTS_ERROR_NONE;
- }
-#endif
- return ctsvc_db_update_records(list);
-}
-
-int ctsvc_db_delete_records(const char* view_uri, int* ids, int count)
+int ctsvc_db_delete_records(const char *zone_name, const char* view_uri, int* ids, int count)
{
int ret = CONTACTS_ERROR_NONE;
ctsvc_db_plugin_info_s* plugin_info = NULL;
RETV_IF(NULL == ids, CONTACTS_ERROR_INVALID_PARAMETER);
- if (( plugin_info = ctsvc_db_get_plugin_info(ctsvc_view_get_record_type(view_uri)))){
- if( plugin_info->delete_records ) {
- ret = plugin_info->delete_records( ids, count );
+ if ((plugin_info = ctsvc_db_get_plugin_info(ctsvc_view_get_record_type(view_uri)))) {
+ if (plugin_info->delete_records) {
+ ret = plugin_info->delete_records(zone_name, ids, count);
return ret;
}
}
- return __ctsvc_db_delete_records(view_uri, ids, count);
-}
-
-API int contacts_db_delete_records_async( const char* view_uri, int* ids, int count,
- contacts_db_result_cb callback, void *user_data)
-{
- RETVM_IF(NULL == view_uri, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- RETVM_IF(NULL == ids, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
-
-#ifdef _CONTACTS_NATIVE
- if (callback) {
- ctsvc_bulk_info_s *info;
- info = (ctsvc_bulk_info_s *)calloc(1, sizeof(ctsvc_bulk_info_s));
- info->ids = calloc(count, sizeof(int));
- memcpy(info->ids, ids, sizeof(int)*count);
- info->view_uri = view_uri;
- info->count = count;
- info->cb = callback;
- info->user_data = user_data;
- g_idle_add(__ctsvc_db_delete_idler, info); // should be changed after ipc implementation
- return CONTACTS_ERROR_NONE;
- }
-#endif
- return ctsvc_db_delete_records(view_uri, ids, count);
+ return __ctsvc_db_delete_records(zone_name, view_uri, ids, count);
}
-static int __ctsvc_db_replace_records( contacts_list_h list, int ids[], int count)
+static int __ctsvc_db_replace_records(const char *zone_name, contacts_list_h list, int ids[], int count)
{
int ret = CONTACTS_ERROR_NONE;
int record_count;
RETVM_IF(record_count != count, CONTACTS_ERROR_INVALID_PARAMETER,
"Invalid parameter : list count and ids count are not matched");
- ret = ctsvc_begin_trans();
- RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_begin_trans is failed(%d)", ret);
+ ret = ctsvc_begin_trans(zone_name);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_begin_trans Fail(%d)", ret);
contacts_list_first(list);
i = 0;
do {
ret = contacts_list_get_current_record_p(list, &record);
- if( CONTACTS_ERROR_NONE != ret) {
+ if (CONTACTS_ERROR_NONE != ret) {
CTS_ERR("contacts_list_get_current_record_p is faild(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- ret = contacts_db_replace_record(record, ids[i++]);
- if( ret != CONTACTS_ERROR_NONE ) {
+ ret = ctsvc_db_replace_record(zone_name, record, ids[i++]);
+ if (ret != CONTACTS_ERROR_NONE) {
CTS_ERR("contacts_db_replace_record is faild(%d)", ret);
- ctsvc_end_trans(false);
+ ctsvc_end_trans(zone_name, false);
return ret;
}
- }while(CONTACTS_ERROR_NONE == contacts_list_next(list));
+ } while (CONTACTS_ERROR_NONE == contacts_list_next(list));
- ret = ctsvc_end_trans(true);
+ ret = ctsvc_end_trans(zone_name, true);
return ret;
}
-#ifdef _CONTACTS_NATIVE
-static gboolean __ctsvc_db_replace_idler(void *data)
-{
- int ret;
- ctsvc_bulk_info_s *info = data;
- contacts_db_result_cb cb;
-
- ret = __ctsvc_db_replace_records(info->list, info->ids, info->count);
-
- if (info->cb) {
- cb = info->cb;
- cb(ret, info->user_data);
- }
- contacts_list_destroy(info->list, true);
- free(info->ids);
- free(info);
- return false;
-}
-#endif
-
-int ctsvc_db_replace_records(contacts_list_h list, int ids[], unsigned int count)
+int ctsvc_db_replace_records(const char *zone_name, contacts_list_h list, int ids[], unsigned int count)
{
int ret = CONTACTS_ERROR_NONE;
ctsvc_db_plugin_info_s* plugin_info = NULL;
RETVM_IF(NULL == list, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
RETVM_IF(NULL == ids, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- if (( plugin_info = ctsvc_db_get_plugin_info(((ctsvc_list_s*)list)->l_type))){
- if( plugin_info->replace_records ) {
- ret = plugin_info->replace_records( list, ids, count );
+ if ((plugin_info = ctsvc_db_get_plugin_info(((ctsvc_list_s*)list)->l_type))) {
+ if (plugin_info->replace_records) {
+ ret = plugin_info->replace_records(zone_name, list, ids, count);
return ret;
}
}
- return __ctsvc_db_replace_records(list, ids, count);
-}
-
-API int contacts_db_replace_records_async( contacts_list_h list, int ids[], int count,
- contacts_db_result_cb callback, void *user_data )
-{
- RETVM_IF(NULL == list, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- RETVM_IF(NULL == ids, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
-
-#ifdef _CONTACTS_NATIVE
- if (callback) {
- ctsvc_bulk_info_s *info;
- info = (ctsvc_bulk_info_s *)calloc(1, sizeof(ctsvc_bulk_info_s));
- ctsvc_list_clone(list, &info->list);
- info->ids = calloc(count, sizeof(int));
- memcpy(info->ids, ids, sizeof(int)*count);
- info->count = count;
- info->cb = callback;
- info->user_data = user_data;
- g_idle_add(__ctsvc_db_replace_idler, info); // should be changed after ipc implementation
- return CONTACTS_ERROR_NONE;
- }
-#endif
- return ctsvc_db_replace_records(list, ids, count);
-}
-
-API int contacts_db_insert_records( contacts_list_h record_list, int **ids, int *count)
-{
- return ctsvc_db_insert_records(record_list, ids, count);
-}
-
-API int contacts_db_update_records( contacts_list_h record_list)
-{
- return ctsvc_db_update_records(record_list);
-}
-
-API int contacts_db_delete_records(const char* view_uri, int record_id_array[], int count)
-{
- return ctsvc_db_delete_records(view_uri, record_id_array, count);
-}
-
-API int contacts_db_replace_records( contacts_list_h list, int record_id_array[], int count )
-{
- return ctsvc_db_replace_records(list, record_id_array, count);
+ return __ctsvc_db_replace_records(zone_name, list, ids, count);
}
-API int contacts_db_get_last_change_version(int* last_version)
+int ctsvc_db_get_status(const char *zone_name, contacts_db_status_e *status)
{
- int ret = CONTACTS_ERROR_NONE;
+ if (NULL == ctsvc_db_status_table)
+ ctsvc_db_status_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
- RETVM_IF(NULL == last_version, CONTACTS_ERROR_INVALID_PARAMETER, "Invalid parameter");
- RETVM_IF(!ctsvc_have_permission(CTSVC_PERMISSION_CONTACT_READ) && !ctsvc_have_permission(CTSVC_PERMISSION_PHONELOG_READ),
- CONTACTS_ERROR_PERMISSION_DENIED, "Permission denied : read (contact)");
- *last_version = ctsvc_get_transaction_ver();
- return ret;
-}
+ *status = GPOINTER_TO_INT(g_hash_table_lookup(ctsvc_db_status_table, zone_name));
-API int contacts_db_get_status(contacts_db_status_e *status)
-{
- *status = __db_status;
return CONTACTS_ERROR_NONE;
}
-void ctsvc_db_set_status(contacts_db_status_e status)
+void ctsvc_db_set_status(const char *zone_name, contacts_db_status_e status)
{
- __db_status = status;
+ if (NULL == ctsvc_db_status_table)
+ ctsvc_db_status_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
-#ifdef _CONTACTS_IPC_SERVER
- ctsvc_change_subject_publish_status(status);
-#endif
- return;
+ g_hash_table_replace(ctsvc_db_status_table, g_strdup(zone_name), GINT_TO_POINTER(status));
+
+ ctsvc_change_subject_publish_status(zone_name, status);
}
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Dohyung Jin <dh.jin@samsung.com>
+ * Jongwon Lee <gogosing.lee@samsung.com>
+ * Donghee Ye <donghee.ye@samsung.com>
+ *
+ * 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.
+ *
+ */
+
+#ifndef __CTSVC_DB_QUERY_H__
+#define __CTSVC_DB_QUERY_H__
+
+#include "contacts.h"
+#include "contacts_db_status.h"
+#include "ctsvc_struct.h"
+#include "ctsvc_db_sqlite.h"
+
+int ctsvc_db_insert_record(const char *zone_name, contacts_record_h record, int *id);
+int ctsvc_db_get_record(const char *zone_name, const char* view_uri, int id, contacts_record_h* out_record);
+int ctsvc_db_update_record(const char *zone_name, contacts_record_h record);
+int ctsvc_db_delete_record(const char *zone_name, const char* view_uri, int id);
+int ctsvc_db_replace_record(const char *zone_name, contacts_record_h record, int id);
+int ctsvc_db_get_all_records(const char *zone_name, const char* view_uri, int offset, int limit, contacts_list_h* out_list);
+int ctsvc_db_get_records_with_query(const char *zone_name, contacts_query_h query, int offset, int limit, contacts_list_h* out_list);
+int ctsvc_db_get_count(const char *zone_name, const char* view_uri, int *out_count);
+int ctsvc_db_get_count_with_query(const char *zone_name, contacts_query_h query, int *out_count);
+int ctsvc_db_get_changes_by_version(const char *zone_name, const char* view_uri, int addressbook_id, int version, contacts_list_h* out_list, int* out_current_version);
+int ctsvc_db_get_current_version(const char *zone_name, int* out_current_version);
+int ctsvc_db_search_records(const char *zone_name, const char* view_uri, const char *keyword, int offset, int limit, contacts_list_h* out_list);
+int ctsvc_db_search_records_with_range(const char *zone_name, const char* view_uri, const char *keyword, int offset, int limit, int range, contacts_list_h* out_list);
+int ctsvc_db_search_records_with_query(const char *zone_name, contacts_query_h query, const char *keyword, int offset, int limit, contacts_list_h* out_list);
+int ctsvc_db_get_status(const char *zone_name, contacts_db_status_e *status);
+int ctsvc_db_insert_records_with_vcard(const char *zone_name, const char* vcard_stream, int **record_id_array, int *count);
+int ctsvc_db_replace_records_with_vcard(const char *zone_name, const char* vcard_stream, int *record_id_array, int count);
+
+
+int ctsvc_db_insert_records(const char *zone_name, contacts_list_h list, int **ids, int *count);
+int ctsvc_db_update_records(const char *zone_name, contacts_list_h list);
+int ctsvc_db_delete_records(const char *zone_name, const char* view_uri, int* ids, int count);
+int ctsvc_db_replace_records(const char *zone_name, contacts_list_h list, int ids[], unsigned int count);
+
+int ctsvc_db_make_get_records_query_stmt(const char *zone_name, ctsvc_query_s *s_query, int offset, int limit, cts_stmt *stmt);
+int ctsvc_db_create_set_query(contacts_record_h record, char **set, GSList **bind_text);
+int ctsvc_db_update_record_with_set_query(const char *zone_name, const char *set, GSList *bind_text, const char *table, int id);
+
+void ctsvc_db_set_status(const char *zone_name, contacts_db_status_e status);
+
+#endif /* __CTSVC_DB_QUERY_H__ */
+
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_SCHEMA_H__
-#define __TIZEN_SOCIAL_CTSVC_SCHEMA_H__
+#ifndef __CTSVC_DB_SCHEMA_H__
+#define __CTSVC_DB_SCHEMA_H__
#define CTSVC_DB_PATH "/opt/usr/dbspace/.contacts-svc.db"
#define CTSVC_DB_JOURNAL_PATH "/opt/usr/dbspace/.contacts-svc.db-journal"
-// For Security
+/* For Security */
#define CTS_SECURITY_FILE_GROUP 5000
#define CTS_SECURITY_DEFAULT_PERMISSION 0660
#define CTS_SECURITY_DIR_DEFAULT_PERMISSION 0770
#define CTS_SCHEMA_TABLE_TOTAL 10
-// DB Tables
+/* DB Tables */
#define CTS_TABLE_PERSONS "persons"
#define CTS_TABLE_CONTACTS "contacts"
#define CTS_TABLE_GROUPS "groups"
#define CTS_TABLE_ADDRESSBOOKS "addressbooks"
-#define CTS_TABLE_DATA "data" // This is the data table for contact all fields
+#define CTS_TABLE_DATA "data" /* This is the data table for contact all fields */
#define CTS_TABLE_FAVORITES "favorites"
#define CTS_TABLE_PHONELOGS "phonelogs"
#define CTS_TABLE_PHONELOG_ACC "phonelog_accumulation"
#define CTS_TABLE_ACTIVITIES "activities"
#define CTS_TABLE_ACTIVITY_PHOTOS "activity_photos"
-// DB views /////////////////////////////////////////////////////////////////////
-#define CTSVC_DB_VIEW_PERSON "view_person"
-#define CTSVC_DB_VIEW_CONTACT "view_contact"
-#define CTSVC_DB_VIEW_MY_PROFILE "view_my_profile"
-
-#define CTSVC_DB_VIEW_NAME "view_name"
-#define CTSVC_DB_VIEW_NUMBER "view_number"
-#define CTSVC_DB_VIEW_EMAIL "view_email"
-#define CTSVC_DB_VIEW_ADDRESS "view_address"
-#define CTSVC_DB_VIEW_URL "view_url"
-#define CTSVC_DB_VIEW_EVENT "view_event"
-#define CTSVC_DB_VIEW_RELATIONSHIP "view_relationship"
-#define CTSVC_DB_VIEW_IMAGE "view_image"
-#define CTSVC_DB_VIEW_COMPANY "view_company"
-#define CTSVC_DB_VIEW_GROUP_RELATION "view_group_relation"
-#define CTSVC_DB_VIEW_NICKNAME "view_nickname"
-#define CTSVC_DB_VIEW_MESSENGER "view_messenger"
-#define CTSVC_DB_VIEW_NOTE "view_note"
-#define CTSVC_DB_VIEW_PROFILE "view_profile"
-#define CTSVC_DB_VIEW_EXTENSION "view_extension"
-
-#define CTSVC_DB_VIEW_ACTIVITY "view_activity"
-#define CTSVC_DB_VIEW_ACTIVITY_PHOTOS "view_activity_photos"
-#define CTSVC_DB_VIEW_SPEEDIDAL "view_speeddial"
-
-//#define CTSVC_DB_VIEW_GROUPS_UPDATED_INFO "view_group_changes"
-//#define CTSVC_DB_VIEW_GROUPS_MEMBER_UPDATED_INFO "view_group_member_changes"
-//#define CTSVC_DB_VIEW_CONTACTS_UPDATED_INFO "view_contacts_changes"
-
-#define CTSVC_DB_VIEW_PERSON_CONTACT "view_person_contact"
-#define CTSVC_DB_VIEW_PERSON_NUMBER "view_person_contact_number"
-#define CTSVC_DB_VIEW_PERSON_EMAIL "view_person_contact_email"
-#define CTSVC_DB_VIEW_PERSON_GROUP "view_person_contact_group"
-#define CTSVC_DB_VIEW_PERSON_GROUP_ASSIGNED "view_person_contact_group_assigned"
-#define CTSVC_DB_VIEW_PERSON_GROUP_NOT_ASSIGNED "view_person_contact_group_not_assigned"
-
-#define CTSVC_DB_VIEW_PERSON_PHONELOG "view_person_contact_phonelog"
-#define CTSVC_DB_VIEW_PERSON_USAGE "view_person_usage"
-
-#define CTSVC_DB_VIEW_CONTACT_NUMBER "view_contact_number"
-#define CTSVC_DB_VIEW_CONTACT_EMAIL "view_contact_email"
-#define CTSVC_DB_VIEW_CONTACT_GROUP "view_contact_group"
-
-#define CTSVC_DB_VIEW_CONTACT_ACTIVITY "view_contact_activity"
-
-/////////////////////////////////////////////////////////////////////////////////
+/* DB views */
+#define CTSVC_DB_VIEW_PERSON "view_person"
+#define CTSVC_DB_VIEW_CONTACT "view_contact"
+#define CTSVC_DB_VIEW_MY_PROFILE "view_my_profile"
+
+#define CTSVC_DB_VIEW_NAME "view_name"
+#define CTSVC_DB_VIEW_NUMBER "view_number"
+#define CTSVC_DB_VIEW_EMAIL "view_email"
+#define CTSVC_DB_VIEW_ADDRESS "view_address"
+#define CTSVC_DB_VIEW_URL "view_url"
+#define CTSVC_DB_VIEW_EVENT "view_event"
+#define CTSVC_DB_VIEW_RELATIONSHIP "view_relationship"
+#define CTSVC_DB_VIEW_IMAGE "view_image"
+#define CTSVC_DB_VIEW_COMPANY "view_company"
+#define CTSVC_DB_VIEW_GROUP_RELATION "view_group_relation"
+#define CTSVC_DB_VIEW_NICKNAME "view_nickname"
+#define CTSVC_DB_VIEW_MESSENGER "view_messenger"
+#define CTSVC_DB_VIEW_NOTE "view_note"
+#define CTSVC_DB_VIEW_PROFILE "view_profile"
+#define CTSVC_DB_VIEW_EXTENSION "view_extension"
+
+#define CTSVC_DB_VIEW_ACTIVITY "view_activity"
+#define CTSVC_DB_VIEW_ACTIVITY_PHOTOS "view_activity_photos"
+#define CTSVC_DB_VIEW_SPEEDIDAL "view_speeddial"
+
+/* #define CTSVC_DB_VIEW_GROUPS_UPDATED_INFO "view_group_changes" */
+/* #define CTSVC_DB_VIEW_GROUPS_MEMBER_UPDATED_INFO "view_group_member_changes" */
+/* #define CTSVC_DB_VIEW_CONTACTS_UPDATED_INFO "view_contacts_changes" */
+
+#define CTSVC_DB_VIEW_PERSON_CONTACT "view_person_contact"
+#define CTSVC_DB_VIEW_PERSON_NUMBER "view_person_contact_number"
+#define CTSVC_DB_VIEW_PERSON_EMAIL "view_person_contact_email"
+#define CTSVC_DB_VIEW_PERSON_GROUP "view_person_contact_group"
+#define CTSVC_DB_VIEW_PERSON_GROUP_ASSIGNED "view_person_contact_group_assigned"
+#define CTSVC_DB_VIEW_PERSON_GROUP_NOT_ASSIGNED "view_person_contact_group_not_assigned"
+
+#define CTSVC_DB_VIEW_PERSON_PHONELOG "view_person_contact_phonelog"
+#define CTSVC_DB_VIEW_PERSON_USAGE "view_person_usage"
+
+#define CTSVC_DB_VIEW_CONTACT_NUMBER "view_contact_number"
+#define CTSVC_DB_VIEW_CONTACT_EMAIL "view_contact_email"
+#define CTSVC_DB_VIEW_CONTACT_GROUP "view_contact_group"
+
+#define CTSVC_DB_VIEW_CONTACT_ACTIVITY "view_contact_activity"
+
#define CTS_SCHEMA_DATA_NAME_LANG_INFO "data1"
#define CTS_SCHEMA_DATA_NAME_LOOKUP "data7"
#define CTS_SCHEMA_REVERSE_SORTKEY "reverse_sortkey"
-#endif /* __TIZEN_SOCIAL_CTSVC_SCHEMA_H__ */
+#endif /* __CTSVC_DB_SCHEMA_H__ */
#include "contacts.h"
#include "ctsvc_internal.h"
-#include "ctsvc_schema.h"
-#include "ctsvc_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_zone.h"
#include "ctsvc_notification.h"
#include "ctsvc_number_utils.h"
#include "ctsvc_db_plugin_group_helper.h"
#ifdef ENABLE_LOG_FEATURE
-#include "ctsvc_phonelog.h"
-#endif // ENABLE_LOG_FEATURE
-#include "ctsvc_person.h"
+#include "ctsvc_server_phonelog.h"
+#endif /* ENABLE_LOG_FEATURE */
+#include "ctsvc_server_person.h"
#define CTSVC_QUERY_RETRY_TIME 4
#define CTSVC_QUERY_RETRY_INTERVAL 50*1000
-static __thread sqlite3 *ctsvc_db = NULL;
+static __thread GHashTable *ctsvc_db_table = NULL;
-int ctsvc_db_open(void) {
+int ctsvc_db_open(const char *zone_name)
+{
CTS_FN_CALL;
int ret;
- if (!ctsvc_db) {
- ret = db_util_open(CTSVC_DB_PATH, &ctsvc_db, 0);
+ sqlite3 *ctsvc_db = NULL;
+ if (NULL == ctsvc_db_table)
+ ctsvc_db_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
+ else
+ ctsvc_db = g_hash_table_lookup(ctsvc_db_table, zone_name);
+
+ if (NULL == ctsvc_db) {
+ char db_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, db_path, sizeof(db_path));
+ snprintf(db_path+len, sizeof(db_path)-len, "%s", CTSVC_DB_PATH);
+
+ ret = db_util_open(db_path, &ctsvc_db, 0);
RETVM_IF(SQLITE_OK != ret, CONTACTS_ERROR_DB /*CTS_ERR_DB_NOT_OPENED*/,
- "DB error : db_util_open() Failed(%d)", ret);
- ret = sqlite3_create_function(ctsvc_db, "_DATA_DELETE_", 2, SQLITE_UTF8, NULL,
+ "DB error : db_util_open() Fail(%d)", ret);
+
+ g_hash_table_replace(ctsvc_db_table, g_strdup(zone_name), ctsvc_db);
+
+ ret = sqlite3_create_function(ctsvc_db, "_DATA_DELETE_", 2, SQLITE_UTF8, strdup(zone_name),
ctsvc_db_data_delete_callback, NULL, NULL);
RETVM_IF(SQLITE_OK != ret, CONTACTS_ERROR_DB,
- "sqlite3_create_function() Failed(%d)", ret);
- ret = sqlite3_create_function(ctsvc_db, "_DATA_IMAGE_DELETE_", 1, SQLITE_UTF8, NULL,
+ "sqlite3_create_function() Fail(%d)", ret);
+ ret = sqlite3_create_function(ctsvc_db, "_DATA_IMAGE_DELETE_", 1, SQLITE_UTF8, strdup(zone_name),
ctsvc_db_image_delete_callback, NULL, NULL);
RETVM_IF(SQLITE_OK != ret, CONTACTS_ERROR_DB,
- "sqlite3_create_function() Failed(%d)", ret);
- ret = sqlite3_create_function(ctsvc_db, "_DATA_COMPANY_DELETE_", 1, SQLITE_UTF8, NULL,
+ "sqlite3_create_function() Fail(%d)", ret);
+ ret = sqlite3_create_function(ctsvc_db, "_DATA_COMPANY_DELETE_", 1, SQLITE_UTF8, strdup(zone_name),
ctsvc_db_company_delete_callback, NULL, NULL);
RETVM_IF(SQLITE_OK != ret, CONTACTS_ERROR_DB,
- "sqlite3_create_function() Failed(%d)", ret);
+ "sqlite3_create_function() Fail(%d)", ret);
ret = sqlite3_create_function(ctsvc_db, "_NORMALIZE_INDEX_", 2, SQLITE_UTF8, NULL,
ctsvc_db_normalize_str_callback, NULL, NULL);
RETVM_IF(SQLITE_OK != ret, CONTACTS_ERROR_DB,
- "sqlite3_create_function() Failed(%d)", ret);
+ "sqlite3_create_function() Fail(%d)", ret);
#ifdef ENABLE_LOG_FEATURE
- ret = sqlite3_create_function(ctsvc_db, "_PHONE_LOG_DELETE_", 1, SQLITE_UTF8, NULL,
+ ret = sqlite3_create_function(ctsvc_db, "_PHONE_LOG_DELETE_", 1, SQLITE_UTF8, strdup(zone_name),
ctsvc_db_phone_log_delete_callback, NULL, NULL);
RETVM_IF(SQLITE_OK != ret, CONTACTS_ERROR_DB,
- "sqlite3_create_function() Failed(%d)", ret);
-#endif // ENABLE_LOG_FEATURE
- ret = sqlite3_create_function(ctsvc_db, "_PERSON_DELETE_", 1, SQLITE_UTF8, NULL,
+ "sqlite3_create_function() Fail(%d)", ret);
+#endif /* ENABLE_LOG_FEATURE */
+ ret = sqlite3_create_function(ctsvc_db, "_PERSON_DELETE_", 1, SQLITE_UTF8, strdup(zone_name),
ctsvc_db_person_delete_callback, NULL, NULL);
RETVM_IF(SQLITE_OK != ret, CONTACTS_ERROR_DB,
- "sqlite3_create_function() Failed(%d)", ret);
- ret = sqlite3_create_function(ctsvc_db, "_GROUP_DELETE_", 1, SQLITE_UTF8, NULL,
+ "sqlite3_create_function() Fail(%d)", ret);
+ ret = sqlite3_create_function(ctsvc_db, "_GROUP_DELETE_", 1, SQLITE_UTF8, strdup(zone_name),
ctsvc_db_group_delete_callback, NULL, NULL);
RETVM_IF(SQLITE_OK != ret, CONTACTS_ERROR_DB,
- "sqlite3_create_function() Failed(%d)", ret);
+ "sqlite3_create_function() Fail(%d)", ret);
ret = sqlite3_create_function(ctsvc_db, "_NUMBER_COMPARE_", 4, SQLITE_UTF8, NULL,
ctsvc_db_phone_number_equal_callback, NULL, NULL);
RETVM_IF(SQLITE_OK != ret, CONTACTS_ERROR_DB,
- "sqlite3_create_function() Failed(%d)", ret);
+ "sqlite3_create_function() Fail(%d)", ret);
}
return CONTACTS_ERROR_NONE /*CTS_SUCCESS*/;
}
-int ctsvc_db_close(void) {
+int ctsvc_db_close(const char *zone_name)
+{
int ret = 0;
+ RETV_IF(NULL == ctsvc_db_table, CONTACTS_ERROR_NONE);
+ sqlite3 *ctsvc_db = NULL;
+ ctsvc_db = g_hash_table_lookup(ctsvc_db_table, zone_name);
+
if (ctsvc_db) {
+ g_hash_table_remove(ctsvc_db_table, zone_name);
ret = db_util_close(ctsvc_db);
- WARN_IF(SQLITE_OK != ret, "db_util_close() Failed(%d)", ret);
+ WARN_IF(SQLITE_OK != ret, "db_util_close() Fail(%d)", ret);
ctsvc_db = NULL;
CTS_DBG("The database disconnected really.");
}
return CONTACTS_ERROR_NONE /*CTS_SUCCESS*/;
}
-int ctsvc_db_change(void) {
+int ctsvc_db_change(const char *zone_name)
+{
+ RETVM_IF(NULL == ctsvc_db_table, CONTACTS_ERROR_DB, "ctsvc_db_table is NULL");
+ sqlite3 *ctsvc_db = NULL;
+ ctsvc_db = g_hash_table_lookup(ctsvc_db_table, zone_name);
+ RETVM_IF(NULL == ctsvc_db, CONTACTS_ERROR_DB /*CTS_ERR_DB_NOT_OPENED*/, "DB error : Database is not opended");
+
return sqlite3_changes(ctsvc_db);
}
-int ctsvc_db_get_last_insert_id(void) {
+int ctsvc_db_get_last_insert_id(const char *zone_name)
+{
+ RETVM_IF(NULL == ctsvc_db_table, CONTACTS_ERROR_DB, "ctsvc_db_table is NULL");
+ sqlite3 *ctsvc_db = NULL;
+ ctsvc_db = g_hash_table_lookup(ctsvc_db_table, zone_name);
+ RETVM_IF(NULL == ctsvc_db, CONTACTS_ERROR_DB /*CTS_ERR_DB_NOT_OPENED*/, "DB error : Database is not opended");
+
return sqlite3_last_insert_rowid(ctsvc_db);
}
-int ctsvc_db_get_next_id(const char *table) {
+int ctsvc_db_get_next_id(const char *zone_name, const char *table)
+{
int id;
int ret;
char query[CTS_SQL_MAX_LEN] = { 0 };
snprintf(query, sizeof(query), "SELECT seq FROM %s WHERE name = '%s'",
CTS_SCHEMA_SQLITE_SEQ, table);
- ret = ctsvc_query_get_first_int_result(query, &id);
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &id);
if (ret != CONTACTS_ERROR_NONE /*CTS_SUCCESS*/) {
if (CONTACTS_ERROR_NO_DATA /*CONTACTS_ERR_DB_RECORD_NOT_FOUND*/ == ret)
return 1;
}
}
-int ctsvc_query_get_first_int_result(const char *query, int *result) {
+int ctsvc_query_get_first_int_result(const char *zone_name, const char *query, int *result)
+{
int ret;
struct timeval from, now, diff;
bool retry = false;
cts_stmt stmt = NULL;
+
+ RETVM_IF(NULL == ctsvc_db_table, CONTACTS_ERROR_DB, "ctsvc_db_table is NULL");
+
+ sqlite3 *ctsvc_db = g_hash_table_lookup(ctsvc_db_table, zone_name);
RETVM_IF(NULL == ctsvc_db, CONTACTS_ERROR_DB /*CTS_ERR_DB_NOT_OPENED*/, "DB error : Database is not opended");
gettimeofday(&from, NULL);
do {
ret = sqlite3_prepare_v2(ctsvc_db, query, strlen(query), &stmt, NULL);
if (ret != SQLITE_OK)
- CTS_ERR("DB error : sqlite3_prepare_v2() Failed(%d, %s)", ret, sqlite3_errmsg(ctsvc_db));
+ CTS_ERR("DB error : sqlite3_prepare_v2() Fail(%d, %s)", ret, sqlite3_errmsg(ctsvc_db));
if (ret == SQLITE_BUSY || ret == SQLITE_LOCKED) {
gettimeofday(&now, NULL);
usleep(CTSVC_QUERY_RETRY_INTERVAL);
} else
retry = false;
- }while(retry);
+ } while (retry);
if (SQLITE_OK != ret) {
- CTS_ERR("DB error : sqlite3_prepare_v2() Failed(%s)", sqlite3_errmsg(ctsvc_db));
+ CTS_ERR("DB error : sqlite3_prepare_v2() Fail(%s)", sqlite3_errmsg(ctsvc_db));
if (ret == SQLITE_BUSY || ret == SQLITE_LOCKED)
return CONTACTS_ERROR_DB_LOCKED;
else
do {
ret = sqlite3_step(stmt);
if (ret != SQLITE_ROW && SQLITE_DONE != ret)
- CTS_ERR("DB error : sqlite3_step() Failed(%d, %s, %d)", ret, sqlite3_errmsg(ctsvc_db),
+ CTS_ERR("DB error : sqlite3_step() Fail(%d, %s, %d)", ret, sqlite3_errmsg(ctsvc_db),
sqlite3_extended_errcode(ctsvc_db));
if (ret == SQLITE_BUSY || ret == SQLITE_LOCKED) {
}
else
retry = false;
- }while(retry);
+ } while (retry);
if (SQLITE_ROW != ret) {
sqlite3_finalize(stmt);
ret, sqlite3_errmsg(ctsvc_db));
return CONTACTS_ERROR_NO_DATA /*CONTACTS_ERR_DB_RECORD_NOT_FOUND*/;
}
- CTS_ERR("sqlite3_step() Failed(%d, %s, %d)", ret, sqlite3_errmsg(ctsvc_db),
+ CTS_ERR("sqlite3_step() Fail(%d, %s, %d)", ret, sqlite3_errmsg(ctsvc_db),
sqlite3_extended_errcode(ctsvc_db));
if (ret == SQLITE_BUSY || ret == SQLITE_LOCKED)
return CONTACTS_ERROR_DB_LOCKED;
return CONTACTS_ERROR_NONE;
}
-int ctsvc_query_exec(const char *query) {
+int ctsvc_query_exec(const char *zone_name, const char *query)
+{
int ret;
cts_stmt stmt = NULL;
char *err_msg = NULL;
- RETVM_IF(NULL == ctsvc_db, CONTACTS_ERROR_DB, "DB error : Database is not opended");
+ RETVM_IF(NULL == ctsvc_db_table, CONTACTS_ERROR_DB, "ctsvc_db_table is NULL");
+ sqlite3 *ctsvc_db = g_hash_table_lookup(ctsvc_db_table, zone_name);
+ RETVM_IF(NULL == ctsvc_db, CONTACTS_ERROR_DB /*CTS_ERR_DB_NOT_OPENED*/, "DB error : Database is not opended");
- ret = ctsvc_query_prepare((char*)query, &stmt);
- RETVM_IF(NULL == stmt, ret, "ctsvc_query_prepare fail(%d)", ret);
+ ret = ctsvc_query_prepare(zone_name, (char*)query, &stmt);
+ RETVM_IF(NULL == stmt, ret, "ctsvc_query_prepare Fail(%d)", ret);
ret = ctsvc_stmt_step(stmt);
if (CONTACTS_ERROR_NONE != ret) {
- CTS_ERR("ctsvc_stmt_step() Failed(%d, %s)", ret, err_msg);
+ CTS_ERR("ctsvc_stmt_step() Fail(%d, %s)", ret, err_msg);
}
ctsvc_stmt_finalize(stmt);
return ret;
}
-int ctsvc_query_prepare(char *query, cts_stmt *stmt) {
+int ctsvc_query_prepare(const char *zone_name, char *query, cts_stmt *stmt)
+{
int ret = -1;
struct timeval from, now, diff;
bool retry = false;
*stmt = NULL;
+ RETVM_IF(NULL == ctsvc_db_table, CONTACTS_ERROR_DB, "ctsvc_db_table is NULL");
+ sqlite3 *ctsvc_db = g_hash_table_lookup(ctsvc_db_table, zone_name);
RETVM_IF(NULL == ctsvc_db, CONTACTS_ERROR_DB, "DB error : Database is not opened");
gettimeofday(&from, NULL);
ret = sqlite3_prepare_v2(ctsvc_db, query, strlen(query), stmt, NULL);
if (ret != SQLITE_OK)
- CTS_ERR("DB error : sqlite3_prepare_v2() Failed(%d, %s)", ret, sqlite3_errmsg(ctsvc_db));
+ CTS_ERR("DB error : sqlite3_prepare_v2() Fail(%d, %s)", ret, sqlite3_errmsg(ctsvc_db));
if (ret == SQLITE_BUSY || ret == SQLITE_LOCKED) {
gettimeofday(&now, NULL);
usleep(CTSVC_QUERY_RETRY_INTERVAL);
} else
retry = false;
- }while(retry);
+ } while (retry);
if (ret == SQLITE_BUSY || ret == SQLITE_LOCKED)
return CONTACTS_ERROR_DB_LOCKED;
return CONTACTS_ERROR_DB;
}
-int ctsvc_stmt_get_first_int_result(cts_stmt stmt, int *result) {
+int ctsvc_stmt_get_first_int_result(const char *zone_name, cts_stmt stmt, int *result)
+{
int ret;
struct timeval from, now, diff;
bool retry = false;
- RETVM_IF(NULL == ctsvc_db, CONTACTS_ERROR_DB /*CTS_ERR_DB_NOT_OPENED*/, "DB error : Database is not opened");
+
+ RETVM_IF(NULL == ctsvc_db_table, CONTACTS_ERROR_DB, "ctsvc_db_table is NULL");
+ sqlite3 *ctsvc_db = g_hash_table_lookup(ctsvc_db_table, zone_name);
+ RETVM_IF(NULL == ctsvc_db, CONTACTS_ERROR_DB, "DB error : Database is not opened");
gettimeofday(&from, NULL);
do {
ret = sqlite3_step(stmt);
if (SQLITE_ROW != ret && SQLITE_DONE != ret)
- CTS_ERR("sqlite3_step() Failed(%d, %s, %d)", ret, sqlite3_errmsg(ctsvc_db),
+ CTS_ERR("sqlite3_step() Fail(%d, %s, %d)", ret, sqlite3_errmsg(ctsvc_db),
sqlite3_extended_errcode(ctsvc_db));
if (ret == SQLITE_BUSY || ret == SQLITE_LOCKED) {
}
else
retry = false;
- }while(retry);
+ } while (retry);
if (SQLITE_ROW != ret) {
- CTS_ERR("sqlite3_step() Failed(%d, %s, %d)", ret, sqlite3_errmsg(ctsvc_db),
+ CTS_ERR("sqlite3_step() Fail(%d, %s, %d)", ret, sqlite3_errmsg(ctsvc_db),
sqlite3_extended_errcode(ctsvc_db));
sqlite3_finalize(stmt);
if (SQLITE_DONE == ret)
return CONTACTS_ERROR_NONE;
}
-int ctsvc_stmt_step(cts_stmt stmt) {
+int ctsvc_stmt_step(cts_stmt stmt)
+{
int ret = CONTACTS_ERROR_NONE;
struct timeval from, now, diff;
bool retry = false;
ret = sqlite3_step(stmt);
if (ret != SQLITE_ROW && ret != SQLITE_DONE)
- CTS_ERR("DB error : sqlite3_step() Failed(%d, %s, %d)", ret,
- sqlite3_errmsg(ctsvc_db), sqlite3_extended_errcode(ctsvc_db));
+ CTS_ERR("DB error : sqlite3_step() Fail(%d)", ret);
if (ret == SQLITE_BUSY || ret == SQLITE_LOCKED) {
gettimeofday(&now, NULL);
}
else
retry = false;
- }while(retry);
+ } while (retry);
switch (ret) {
case SQLITE_BUSY:
ret = CONTACTS_ERROR_DB;
break;
default:
- CTS_ERR("sqlite3_step() Failed(%d)", ret);
+ CTS_ERR("sqlite3_step() Fail(%d)", ret);
ret = CONTACTS_ERROR_DB;
break;
}
return ret;
}
-void ctsvc_stmt_reset(cts_stmt stmt) {
+void ctsvc_stmt_reset(cts_stmt stmt)
+{
sqlite3_reset(stmt);
sqlite3_clear_bindings(stmt);
}
-void ctsvc_stmt_finalize(cts_stmt stmt) {
+void ctsvc_stmt_finalize(cts_stmt stmt)
+{
int ret;
if (NULL == stmt)
return;
ret = sqlite3_finalize(stmt);
- WARN_IF(ret != SQLITE_OK, "sqlite3_finalize Failed(%d, %s, %d)",
- ret, sqlite3_errmsg(ctsvc_db), sqlite3_extended_errcode(ctsvc_db));
+ WARN_IF(ret != SQLITE_OK, "sqlite3_finalize Fail(%d)", ret);
}
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_SQLITE_H__
-#define __TIZEN_SOCIAL_CTSVC_SQLITE_H__
+#ifndef __CTSVC_DB_SQLITE_H__
+#define __CTSVC_DB_SQLITE_H__
#include <sqlite3.h>
-#define CTS_SQL_MAX_LEN 2048 //normal string length
-#define CTS_SQL_MIN_LEN 1024 //short sql string length
+#define CTS_SQL_MAX_LEN 2048 /* normal string length */
+#define CTS_SQL_MIN_LEN 1024 /* short sql string length */
typedef sqlite3_stmt* cts_stmt;
-int ctsvc_db_open(void);
-int ctsvc_db_close(void);
-int ctsvc_db_change();
-int ctsvc_db_get_last_insert_id(void);
-int ctsvc_db_get_next_id(const char *table);
+int ctsvc_db_open(const char *zone_name);
+int ctsvc_db_close(const char *zone_name);
+int ctsvc_db_change(const char *zone_name);
+int ctsvc_db_get_last_insert_id(const char *zone_name);
+int ctsvc_db_get_next_id(const char *zone_name, const char *table);
-int ctsvc_query_get_first_int_result(const char *query, int *result);
-int ctsvc_query_exec(const char *query);
-int ctsvc_query_prepare(char *query, cts_stmt *stmt);
+int ctsvc_query_get_first_int_result(const char *zone_name, const char *query, int *result);
+int ctsvc_query_exec(const char *zone_name, const char *query);
+int ctsvc_query_prepare(const char *zone_name, char *query, cts_stmt *stmt);
int ctsvc_stmt_step(cts_stmt stmt);
void ctsvc_stmt_reset(cts_stmt stmt);
void ctsvc_stmt_finalize(cts_stmt stmt);
-int ctsvc_stmt_get_first_int_result(cts_stmt stmt, int *result);
+int ctsvc_stmt_get_first_int_result(const char *zone_name, cts_stmt stmt, int *result);
static inline double ctsvc_stmt_get_dbl(cts_stmt stmt, int pos) {
return sqlite3_bind_text(stmt, pos, str, strlen(str), SQLITE_STATIC);
}
static inline int ctsvc_stmt_bind_copy_text(cts_stmt stmt, int pos,
- const char *str, int strlen){
+ const char *str, int strlen) {
return sqlite3_bind_text(stmt, pos, str, strlen, SQLITE_TRANSIENT);
}
int ctsvc_stmt_bind_copy_text(cts_stmt stmt, int pos, const char *str, int strlen);
-#endif //__TIZEN_SOCIAL_CTSVC_SQLITE_H__
+#endif /* __CTSVC_DB_SQLITE_H__ */
\ No newline at end of file
--- /dev/null
+/*
+ * Contacts Service
+ *
+ * Copyright (c) 2010 - 2012 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 <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <dirent.h>
+#include <sys/stat.h>
+#include <sys/vfs.h>
+#include <image_util.h>
+#include <image_util_internal.h>
+#include <unicode/ulocdata.h>
+#include <unicode/uset.h>
+#include <unicode/ustring.h>
+#include <libexif/exif-data.h>
+
+#include "contacts.h"
+#include "ctsvc_internal.h"
+#include "ctsvc_db_utils.h"
+#include "ctsvc_mutex.h"
+#include "ctsvc_db_sqlite.h"
+#include "ctsvc_db_schema.h"
+#include "ctsvc_notification.h"
+#include "ctsvc_struct.h"
+#include "ctsvc_normalize.h"
+#include "ctsvc_localize.h"
+#include "ctsvc_localize_utils.h"
+#include "ctsvc_server_setting.h"
+#include "ctsvc_zone.h"
+
+#ifdef _CONTACTS_IPC_SERVER
+#include "ctsvc_server_change_subject.h"
+#endif
+
+static __thread GHashTable *ctsvc_transaction_table = NULL;
+
+struct ctsvc_transaction_s {
+ int count;
+ int ver;
+ bool version_up;
+};
+
+struct image_transform{
+ int ret;
+ uint64_t size;
+ void *buffer;
+ GCond cond;
+ GMutex mutex;
+};
+
+#define CTS_SECURITY_IMAGE_PERMISSION 0440
+#define CTS_IMAGE_ENCODE_QUALITY 50
+#define CTS_IMAGE_MAX_SIZE 1080
+#define CTS_COMMIT_TRY_MAX 500000 /* For 3second */
+#define CTS_IMAGE_TRANSFORM_WAIT_TIME 1000 * G_TIME_SPAN_MILLISECOND /* 1 sec */
+
+int ctsvc_begin_trans(const char *zone_name)
+{
+ int ret = -1, progress;
+
+ struct ctsvc_transaction_s *transaction = NULL;
+
+ if (NULL == ctsvc_transaction_table)
+ ctsvc_transaction_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
+ else
+ transaction = g_hash_table_lookup(ctsvc_transaction_table, zone_name);
+
+ if (NULL == transaction) {
+ transaction = calloc(1, sizeof(struct ctsvc_transaction_s));
+ if (NULL == transaction) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+ g_hash_table_replace(ctsvc_transaction_table, g_strdup(zone_name), transaction);
+ }
+
+ if (transaction->count <= 0) {
+ ret = ctsvc_query_exec(zone_name, "BEGIN IMMEDIATE TRANSACTION");
+ progress = 100000;
+ while (CONTACTS_ERROR_DB == ret && progress < CTS_COMMIT_TRY_MAX) {
+ usleep(progress);
+ ret = ctsvc_query_exec(zone_name, "BEGIN IMMEDIATE TRANSACTION");
+ progress *= 2;
+ }
+ if (CONTACTS_ERROR_NONE != ret) {
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ return ret;
+ }
+
+ transaction->count = 0;
+
+ const char *query = "SELECT ver FROM "CTS_TABLE_VERSION;
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &(transaction->ver));
+ transaction->version_up = false;
+ }
+ transaction->count++;
+ INFO("transaction->count : %d.", transaction->count);
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_end_trans(const char *zone_name, bool is_success)
+{
+ int ret = -1, progress;
+ char query[CTS_SQL_MIN_LEN] = {0};
+ struct ctsvc_transaction_s *transaction = NULL;
+
+ if (NULL == ctsvc_transaction_table)
+ ctsvc_transaction_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
+ else
+ transaction = g_hash_table_lookup(ctsvc_transaction_table, zone_name);
+
+ if (NULL == transaction) {
+ transaction = calloc(1, sizeof(struct ctsvc_transaction_s));
+ if (NULL == transaction) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+ g_hash_table_replace(ctsvc_transaction_table, g_strdup(zone_name), transaction);
+ }
+
+ transaction->count--;
+ INFO("%s, transaction->count : %d", is_success?"True": "False", transaction->count);
+
+ if (0 != transaction->count) {
+ CTS_DBG("contact transaction->count : %d.", transaction->count);
+ return CONTACTS_ERROR_NONE;
+ }
+
+ if (false == is_success) {
+ ctsvc_nofitication_cancel(zone_name);
+ ctsvc_change_subject_clear_changed_info(zone_name);
+ ret = ctsvc_query_exec(zone_name, "ROLLBACK TRANSACTION");
+ return CONTACTS_ERROR_NONE;
+ }
+
+ if (transaction->version_up) {
+ transaction->ver++;
+ snprintf(query, sizeof(query), "UPDATE %s SET ver = %d",
+ CTS_TABLE_VERSION, transaction->ver);
+ ret = ctsvc_query_exec(zone_name, query);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_query_exec(version up) Fail(%d)", ret);
+ }
+
+ INFO("start commit");
+ progress = 100000;
+ ret = ctsvc_query_exec(zone_name, "COMMIT TRANSACTION");
+ while (CONTACTS_ERROR_DB == ret && progress<CTS_COMMIT_TRY_MAX) {
+ usleep(progress);
+ ret = ctsvc_query_exec(zone_name, "COMMIT TRANSACTION");
+ progress *= 2;
+ }
+ INFO("%s", (CONTACTS_ERROR_NONE == ret)?"commit": "rollback");
+
+ if (CONTACTS_ERROR_NONE != ret) {
+ int tmp_ret;
+ CTS_ERR("ctsvc_query_exec() Fail(%d)", ret);
+ ctsvc_nofitication_cancel(zone_name);
+ ctsvc_change_subject_clear_changed_info(zone_name);
+ tmp_ret = ctsvc_query_exec(zone_name, "ROLLBACK TRANSACTION");
+ WARN_IF(CONTACTS_ERROR_NONE != tmp_ret, "ctsvc_query_exec(ROLLBACK) Fail(%d)", tmp_ret);
+ return ret;
+ }
+
+ ctsvc_notification_send(zone_name);
+ ctsvc_change_subject_publish_changed_info(zone_name);
+
+ CTS_DBG("Transaction shut down! : (%d)\n", transaction->ver);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+const char* ctsvc_get_display_column(const char *zone_name)
+{
+ contacts_name_display_order_e order;
+
+ ctsvc_setting_get_name_display_order(zone_name, &order);
+ if (CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST == order)
+ return "display_name";
+ else
+ return "reverse_display_name";
+}
+
+const char* ctsvc_get_sort_name_column(const char *zone_name)
+{
+ contacts_name_sorting_order_e order;
+
+ ctsvc_setting_get_name_sorting_order(zone_name, &order);
+ if (CONTACTS_NAME_SORTING_ORDER_FIRSTLAST == order)
+ return "sort_name, display_name_language";
+ else
+ return "reverse_sort_name, reverse_display_name_language";
+}
+
+const char* ctsvc_get_sort_column(const char *zone_name)
+{
+ contacts_name_sorting_order_e order;
+
+ ctsvc_setting_get_name_sorting_order(zone_name, &order);
+ if (CONTACTS_NAME_SORTING_ORDER_FIRSTLAST == order)
+ return "display_name_language, sortkey";
+ else
+ return "reverse_display_name_language, reverse_sortkey";
+}
+
+void ctsvc_utils_make_image_file_name(int parent_id, int id, char *src_img, char *dest, int dest_size)
+{
+ char *ext;
+ char *temp;
+ char *lower_ext;
+
+ ext = strrchr(src_img, '.');
+ if (NULL == ext || strchr(ext, '/'))
+ ext = "";
+
+ lower_ext = strdup(ext);
+ if (NULL == lower_ext) {
+ CTS_ERR("strdup() Fail");
+ return;
+ }
+ temp = lower_ext;
+ while (*temp) {
+ *temp = tolower(*temp);
+ temp++;
+ }
+
+ if (0 < parent_id)
+ snprintf(dest, dest_size, "%d_%d%s", parent_id, id, lower_ext);
+ else
+ snprintf(dest, dest_size, "%d%s", id, ext);
+ free(lower_ext);
+}
+
+static inline bool ctsvc_check_available_image_space(void) {
+ int ret;
+ struct statfs buf;
+ long long size;
+ ret = statfs(CTSVC_IMG_FULL_LOCATION, &buf);
+
+ RETVM_IF(ret!=0, false, "statfs Fail(%d)", ret);
+
+ size = (long long)buf.f_bavail * (buf.f_bsize);
+
+ if (1024*1024 < size) /* if available space to copy a image is larger than 1M */
+ return true;
+ return false;
+}
+
+static image_util_rotation_e _ctsvc_image_get_rotation_info(const char *path)
+{
+ ExifData *ed = NULL;
+ ExifEntry *entry;
+ image_util_rotation_e rotation = IMAGE_UTIL_ROTATION_NONE;
+ int orientation = 0;
+
+ ed = exif_data_new_from_file(path);
+ if (ed == NULL) {
+ CTS_ERR("exif_data_new_from_file : ExifData is NULL");
+ return IMAGE_UTIL_ROTATION_NONE;
+ }
+
+ entry = exif_data_get_entry(ed, EXIF_TAG_ORIENTATION);
+ if (entry) {
+ ExifByteOrder mByteOrder = exif_data_get_byte_order(ed);
+ orientation = (int)exif_get_short(entry->data, mByteOrder);
+ if (orientation < 0 || 8 < orientation)
+ orientation = 0;
+ }
+
+ if (ed)
+ exif_data_unref(ed);
+
+ switch(orientation) {
+ case 1: /* Top-left */
+ rotation = IMAGE_UTIL_ROTATION_NONE;
+ break;
+ case 2: /* Top-right */
+ rotation = IMAGE_UTIL_ROTATION_FLIP_HORZ;
+ break;
+ case 3: /* Bottom-right */
+ rotation = IMAGE_UTIL_ROTATION_180;
+ break;
+ case 4: /* Bottom-left */
+ rotation = IMAGE_UTIL_ROTATION_FLIP_VERT;
+ break;
+ case 6: /* Right-top */
+ rotation = IMAGE_UTIL_ROTATION_90;
+ break;
+ case 8: /* Left-bottom */
+ rotation = IMAGE_UTIL_ROTATION_270;
+ break;
+ case 5: /* Left-top */
+ case 7: /* Right-bottom */
+ case 0:
+ default:
+ break;
+ };
+
+ return rotation;
+}
+
+
+typedef struct {
+ const char *src;
+ const char *dest;
+ int ret;
+}image_info;
+
+static int _ctsvc_image_get_mimetype(image_util_colorspace_e colorspace,
+ int *p_mimetype)
+{
+ media_format_mimetype_e mimetype;
+ switch (colorspace) {
+ case IMAGE_UTIL_COLORSPACE_YUV422:
+ mimetype = MEDIA_FORMAT_422P;
+ break;
+ case IMAGE_UTIL_COLORSPACE_NV12:
+ mimetype = MEDIA_FORMAT_NV12;
+ break;
+ case IMAGE_UTIL_COLORSPACE_UYVY:
+ mimetype = MEDIA_FORMAT_UYVY;
+ break;
+ case IMAGE_UTIL_COLORSPACE_YUYV:
+ mimetype = MEDIA_FORMAT_YUYV;
+ break;
+ case IMAGE_UTIL_COLORSPACE_RGB565:
+ mimetype = MEDIA_FORMAT_RGB565;
+ break;
+ case IMAGE_UTIL_COLORSPACE_RGB888:
+ mimetype = MEDIA_FORMAT_RGB888;
+ break;
+ case IMAGE_UTIL_COLORSPACE_ARGB8888:
+ mimetype = MEDIA_FORMAT_ARGB;
+ break;
+ case IMAGE_UTIL_COLORSPACE_RGBA8888:
+ mimetype = MEDIA_FORMAT_RGBA;
+ break;
+ case IMAGE_UTIL_COLORSPACE_NV21:
+ mimetype = MEDIA_FORMAT_NV21;
+ break;
+ case IMAGE_UTIL_COLORSPACE_NV16:
+ mimetype = MEDIA_FORMAT_NV16;
+ break;
+ case IMAGE_UTIL_COLORSPACE_BGRA8888: /* not supported */
+ case IMAGE_UTIL_COLORSPACE_BGRX8888: /* not supported */
+ case IMAGE_UTIL_COLORSPACE_NV61: /* not supported */
+ case IMAGE_UTIL_COLORSPACE_YV12: /* not supported */
+ case IMAGE_UTIL_COLORSPACE_I420: /* not supported */
+ default:
+ return CONTACTS_ERROR_INVALID_PARAMETER;
+ }
+ *p_mimetype = mimetype;
+ return CONTACTS_ERROR_NONE;
+}
+
+static media_format_h _ctsvc_image_create_media_format(int mimetype, int width,
+ int height)
+{
+ int ret;
+ media_format_h fmt = NULL;
+
+ ret = media_format_create(&fmt);
+ if (MEDIA_FORMAT_ERROR_NONE != ret) {
+ CTS_ERR("media_format_create() Fail(%d)", ret);
+ return NULL;
+ }
+
+ ret = media_format_set_video_mime(fmt, mimetype);
+ if (MEDIA_FORMAT_ERROR_NONE != ret) {
+ CTS_ERR("media_format_set_video_mime() Fail(%d)", ret);
+ media_format_unref(fmt);
+ return NULL;
+ }
+
+ ret = media_format_set_video_width(fmt, width);
+ if (MEDIA_FORMAT_ERROR_NONE != ret) {
+ CTS_ERR("media_format_set_video_width() Fail(%d)", ret);
+ media_format_unref(fmt);
+ return NULL;
+ }
+
+ ret = media_format_set_video_height(fmt, height);
+ if (MEDIA_FORMAT_ERROR_NONE != ret) {
+ CTS_ERR("media_format_set_video_height() Fail(%d)", ret);
+ media_format_unref(fmt);
+ return NULL;
+ }
+
+ ret = media_format_set_video_avg_bps(fmt, 2000000); /* image_util guide */
+ if (MEDIA_FORMAT_ERROR_NONE != ret) {
+ CTS_ERR("media_format_set_video_avg_bps() Fail(%d)", ret);
+ media_format_unref(fmt);
+ return NULL;
+ }
+
+ ret = media_format_set_video_max_bps(fmt, 15000000); /* image_util guide */
+ if (MEDIA_FORMAT_ERROR_NONE != ret) {
+ CTS_ERR("media_format_set_video_max_bps() Fail(%d)", ret);
+ media_format_unref(fmt);
+ return NULL;
+ }
+
+ return fmt;
+}
+
+static int _ctsvc_image_packet_create_alloc_finalize_cb(media_packet_h packet,
+ int error_code, void *user_data)
+{
+ return MEDIA_PACKET_FINALIZE;
+}
+
+static media_packet_h _ctsvc_image_create_media_packet(media_format_h fmt,
+ void *buffer, unsigned int buffer_size)
+{
+ int ret;
+ void *mp_buffer = NULL;
+ media_packet_h packet = NULL;
+ uint64_t mp_buffer_size = 0;
+
+ RETV_IF(NULL == fmt, NULL);
+ RETV_IF(NULL == buffer, NULL);
+
+ ret = media_packet_create_alloc(fmt, _ctsvc_image_packet_create_alloc_finalize_cb,
+ NULL, &packet);
+ if (MEDIA_PACKET_ERROR_NONE != ret) {
+ CTS_ERR("media_packet_create_alloc() Fail(%d)", ret);
+ return NULL;
+ }
+
+ ret = media_packet_get_buffer_size(packet, &mp_buffer_size);
+ if (MEDIA_PACKET_ERROR_NONE != ret) {
+ CTS_ERR("media_packet_get_buffer_size() Fail(%d)", ret);
+ media_packet_destroy(packet);
+ return NULL;
+ }
+
+ ret = media_packet_get_buffer_data_ptr(packet, &mp_buffer);
+ if (MEDIA_PACKET_ERROR_NONE != ret) {
+ CTS_ERR("media_packet_get_buffer_data_ptr() Fail(%d)", ret);
+ media_packet_destroy(packet);
+ return NULL;
+ }
+
+ if (mp_buffer)
+ memcpy(mp_buffer, buffer, (int)buffer_size);
+
+ return packet;
+}
+
+static void _ctsvc_image_transform_completed_cb(media_packet_h *dst,
+ image_util_error_e error, void *user_data)
+{
+ int ret;
+ uint64_t size = 0;
+ void *buffer = 0;
+ struct image_transform *info = user_data;
+
+ if (NULL == info) {
+ media_packet_destroy(*dst);
+ return;
+ }
+
+ if (IMAGE_UTIL_ERROR_NONE == error) {
+ ret = media_packet_get_buffer_size(*dst, &size);
+ if (MEDIA_PACKET_ERROR_NONE != ret) {
+ CTS_ERR("media_packet_get_buffer_size() Fail(%d)", ret);
+ info->ret = CONTACTS_ERROR_SYSTEM;
+ media_packet_destroy(*dst);
+ g_mutex_lock(&info->mutex);
+ g_cond_signal(&info->cond);
+ g_mutex_unlock(&info->mutex);
+ return;
+ }
+
+ ret = media_packet_get_buffer_data_ptr(*dst, &buffer);
+ if (MEDIA_PACKET_ERROR_NONE != ret) {
+ CTS_ERR("media_packet_get_buffer_data_ptr() Fail(%d)", ret);
+ info->ret = CONTACTS_ERROR_SYSTEM;
+ media_packet_destroy(*dst);
+ g_mutex_lock(&info->mutex);
+ g_cond_signal(&info->cond);
+ g_mutex_unlock(&info->mutex);
+ return;
+ }
+
+ info->buffer = calloc(1, (int)size);
+ if (NULL == info->buffer) {
+ CTS_ERR("calloc() Fail");
+ info->ret = CONTACTS_ERROR_SYSTEM;
+ media_packet_destroy(*dst);
+ g_mutex_lock(&info->mutex);
+ g_cond_signal(&info->cond);
+ g_mutex_unlock(&info->mutex);
+ return;
+ }
+ memcpy(info->buffer, buffer, (int)size);
+ info->size = size;
+ info->ret = CONTACTS_ERROR_NONE;
+ }
+ else {
+ CTS_ERR("transform_run() Fail(%d)", error);
+ info->ret = CONTACTS_ERROR_SYSTEM;
+ }
+ media_packet_destroy(*dst);
+ g_mutex_lock(&info->mutex);
+ g_cond_signal(&info->cond);
+ g_mutex_unlock(&info->mutex);
+}
+
+static int _ctsvc_image_util_transform_run(transformation_h transform,
+ media_packet_h packet, void **p_buffer, uint64_t *p_size)
+{
+ gint64 end_time;
+ struct image_transform *info = NULL;
+
+ RETV_IF(NULL == transform, CONTACTS_ERROR_INVALID_PARAMETER);
+ RETV_IF(NULL == packet, CONTACTS_ERROR_INVALID_PARAMETER);
+
+ info = calloc(1, sizeof(struct image_transform));
+ if (NULL == info) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+
+ g_cond_init(&info->cond);
+ g_mutex_init(&info->mutex);
+
+ g_mutex_lock(&info->mutex);
+ image_util_transform_run(transform, packet, _ctsvc_image_transform_completed_cb, info);
+
+ end_time = g_get_monotonic_time() + CTS_IMAGE_TRANSFORM_WAIT_TIME;
+ if (!g_cond_wait_until(&info->cond, &info->mutex, end_time)) {
+ /* timeout has passed */
+ CTS_ERR("g_cond_wait_until() return FALSE");
+ info->ret = CONTACTS_ERROR_SYSTEM;
+ }
+ g_mutex_unlock(&info->mutex);
+ g_mutex_clear(&info->mutex);
+ g_cond_clear(&info->cond);
+
+ if (CONTACTS_ERROR_NONE != info->ret) {
+ CTS_ERR("image_util_transform_run() Fail(%d)", info->ret);
+ free(info->buffer);
+ free(info);
+ return CONTACTS_ERROR_SYSTEM;
+ }
+
+ *p_size = info->size;
+ *p_buffer = info->buffer;
+ free(info);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+static int _ctsvc_image_rotate(media_packet_h packet, image_util_rotation_e rotation,
+ void **p_buffer, uint64_t *p_size)
+{
+ int ret;
+ transformation_h transform = NULL;
+
+ ret = image_util_transform_create(&transform);
+ if (IMAGE_UTIL_ERROR_NONE != ret) {
+ CTS_ERR("image_util_transform_create() Fail(%d)", ret);
+ return CONTACTS_ERROR_SYSTEM;
+ }
+
+ ret = image_util_transform_set_rotation(transform, rotation);
+ if (IMAGE_UTIL_ERROR_NONE != ret) {
+ CTS_ERR("image_util_transform_set_rotation() Fail(%d)", ret);
+ image_util_transform_destroy(transform);
+ return CONTACTS_ERROR_SYSTEM;
+ }
+
+ ret = _ctsvc_image_util_transform_run(transform, packet, p_buffer, p_size);
+
+ image_util_transform_destroy(transform);
+ return ret;
+}
+
+static int _ctsvc_image_resize(media_packet_h packet, int width, int height,
+ void **p_buffer, uint64_t *p_size)
+{
+ int ret;
+ transformation_h transform = NULL;
+
+ ret = image_util_transform_create(&transform);
+ if (IMAGE_UTIL_ERROR_NONE != ret) {
+ CTS_ERR("image_util_transform_create() Fail(%d)", ret);
+ return CONTACTS_ERROR_SYSTEM;
+ }
+
+ ret = image_util_transform_set_resolution(transform, width, height);
+ if (IMAGE_UTIL_ERROR_NONE != ret) {
+ CTS_ERR("image_util_transform_set_resolution() Fail(%d)", ret);
+ image_util_transform_destroy(transform);
+ return CONTACTS_ERROR_SYSTEM;
+ }
+
+ ret = _ctsvc_image_util_transform_run(transform, packet, p_buffer, p_size);
+
+ image_util_transform_destroy(transform);
+
+ return ret;
+}
+
+static bool _ctsvc_image_util_supported_jpeg_colorspace_cb(
+ image_util_colorspace_e colorspace, void *user_data)
+{
+ int width = 0;
+ int height = 0;
+ int dest_fd = 0;
+ int mimetype = 0;
+ uint64_t size = 0;
+ void *buffer = NULL;
+ void *buffer_temp = NULL;
+ int ret;
+ image_util_rotation_e rotation;
+ image_info *info = user_data;
+
+ ret = _ctsvc_image_get_mimetype(colorspace, &mimetype);
+ if (CONTACTS_ERROR_NONE != ret) {
+ info->ret = CONTACTS_ERROR_SYSTEM;
+ return true;
+ }
+
+ ret = image_util_decode_jpeg(info->src, colorspace, (unsigned char **)&buffer, &width,
+ &height, (unsigned int *)&size);
+ if (IMAGE_UTIL_ERROR_NONE != ret) {
+ info->ret = CONTACTS_ERROR_SYSTEM;
+ return true;
+ }
+
+ rotation = _ctsvc_image_get_rotation_info(info->src);
+ if (IMAGE_UTIL_ROTATION_NONE != rotation) { /* need rotate */
+ media_format_h fmt;
+ media_packet_h packet;
+
+ fmt = _ctsvc_image_create_media_format(mimetype, width, height);
+ if (NULL == fmt) {
+ CTS_ERR("_ctsvc_image_create_media_format() Fail");
+ info->ret = CONTACTS_ERROR_SYSTEM;
+ free(buffer);
+ return false;
+ }
+
+ packet = _ctsvc_image_create_media_packet(fmt, buffer, (unsigned int)size);
+ if (NULL == packet) {
+ CTS_ERR("_ctsvc_image_create_media_packet() Fail");
+ media_format_unref(fmt);
+ info->ret = CONTACTS_ERROR_SYSTEM;
+ free(buffer);
+ return false;
+ }
+
+ ret = _ctsvc_image_rotate(packet, rotation, &buffer_temp, &size);
+
+ media_packet_destroy(packet);
+ media_format_unref(fmt);
+
+ if (CONTACTS_ERROR_NONE != ret) {
+ free(buffer);
+ info->ret = CONTACTS_ERROR_SYSTEM;
+ return false;
+ }
+
+ if (rotation == IMAGE_UTIL_ROTATION_90 || rotation == IMAGE_UTIL_ROTATION_270) {
+ int temp = width;
+ width = height;
+ height = temp;
+ }
+ free(buffer);
+ buffer = buffer_temp;
+ }
+
+ if (CTS_IMAGE_MAX_SIZE < width || CTS_IMAGE_MAX_SIZE < height) { /* need resize */
+ int resized_width;
+ int resized_height;
+ media_format_h fmt;
+ media_packet_h packet;
+
+ /* set resize */
+ if (width>height) {
+ resized_width = CTS_IMAGE_MAX_SIZE;
+ resized_height = height * CTS_IMAGE_MAX_SIZE / width;
+ }
+ else {
+ resized_height = CTS_IMAGE_MAX_SIZE;
+ resized_width = width * CTS_IMAGE_MAX_SIZE / height;
+ }
+
+ if (resized_height % 8)
+ resized_height += (8 - (resized_height % 8));
+
+ if (resized_width % 8)
+ resized_width += (8 - (resized_width % 8));
+
+ fmt = _ctsvc_image_create_media_format(mimetype, width, height);
+ if (NULL == fmt) {
+ CTS_ERR("_ctsvc_image_create_media_format() Fail");
+ info->ret = CONTACTS_ERROR_SYSTEM;
+ free(buffer);
+ return false;
+ }
+
+ packet = _ctsvc_image_create_media_packet(fmt, buffer, (unsigned int)size);
+ if (NULL == packet) {
+ CTS_ERR("_ctsvc_image_create_media_packet() Fail");
+ media_format_unref(fmt);
+ info->ret = CONTACTS_ERROR_SYSTEM;
+ free(buffer);
+ return false;
+ }
+
+ ret = _ctsvc_image_resize(packet, resized_width, resized_height, &buffer_temp,
+ &size);
+
+ media_packet_destroy(packet);
+ media_format_unref(fmt);
+
+ if (CONTACTS_ERROR_NONE != ret) {
+ free(buffer);
+ info->ret = -1;
+ return false;
+ }
+ free(buffer);
+ buffer = buffer_temp;
+
+ width = resized_width;
+ height = resized_height;
+ }
+
+ ret = image_util_encode_jpeg(buffer, width, height, colorspace,
+ CTS_IMAGE_ENCODE_QUALITY, info->dest);
+ free(buffer);
+ if (IMAGE_UTIL_ERROR_NONE != ret) {
+ CTS_ERR("image_util_encode_jpeg Fail(%d)", ret);
+ info->ret = CONTACTS_ERROR_SYSTEM;
+ return false;
+ }
+
+ dest_fd = open(info->dest, O_RDONLY);
+ if (dest_fd < 0) {
+ CTS_ERR("System : Open Fail(%d)", errno);
+ info->ret = CONTACTS_ERROR_SYSTEM;
+ return false;
+ }
+
+ ret = fchown(dest_fd, getuid(), CTS_SECURITY_FILE_GROUP);
+ if (0 != ret) {
+ CTS_ERR("fchown Fail(%d)", errno);
+ info->ret = CONTACTS_ERROR_SYSTEM;
+ close(dest_fd);
+ return false;
+ }
+
+ ret = fchmod(dest_fd, CTS_SECURITY_IMAGE_PERMISSION);
+ if (0 != ret) {
+ CTS_ERR("fchmod Fail(%d)", errno);
+ info->ret = CONTACTS_ERROR_SYSTEM;
+ close(dest_fd);
+ return false;
+ }
+ close(dest_fd);
+
+ info->ret = CONTACTS_ERROR_NONE;
+ return false;
+}
+
+static int _ctsvc_image_encode(const char *src, const char *dest)
+{
+ int ret;
+ image_info info = {.src = src, .dest = dest, ret = CONTACTS_ERROR_SYSTEM};
+
+ ret = image_util_foreach_supported_jpeg_colorspace(
+ _ctsvc_image_util_supported_jpeg_colorspace_cb, &info);
+
+ if (IMAGE_UTIL_ERROR_NONE != ret)
+ return CONTACTS_ERROR_SYSTEM;
+
+ return info.ret;
+}
+
+#define CTSVC_COPY_SIZE_MAX 4096
+int ctsvc_utils_copy_image(const char *zone_name, const char *dir_path, const char *src_path, const char *file_name)
+{
+ int ret;
+ int size;
+ int src_fd, dest_fd;
+ char buf[CTSVC_COPY_SIZE_MAX] = {0};
+
+ if (NULL == file_name || *file_name == '\0')
+ return CONTACTS_ERROR_INVALID_PARAMETER;
+
+ char dir_full_path[CTSVC_PATH_MAX_LEN] = {0};
+ int len = ctsvc_zone_get_root_path(zone_name, dir_full_path, sizeof(dir_full_path));
+ snprintf(dir_full_path+len, sizeof(dir_full_path)-len, "/%s", dir_path);
+
+ char src_full_path[CTSVC_PATH_MAX_LEN] = {0};
+ len = ctsvc_zone_get_root_path(zone_name, src_full_path, sizeof(src_full_path));
+ snprintf(src_full_path+len, sizeof(src_full_path)-len, "/%s", src_path);
+
+ char dest[strlen(dir_full_path) + strlen(file_name) + 2];
+ snprintf(dest, sizeof(dest), "%s/%s", dir_full_path, file_name);
+
+ if (false == ctsvc_check_available_image_space())
+ return CONTACTS_ERROR_FILE_NO_SPACE;
+
+ ret = _ctsvc_image_encode(src_full_path, dest);
+ if (CONTACTS_ERROR_NONE == ret) {
+ return ret;
+ }
+ else
+ CTS_ERR("_ctsvc_image_encode Fail(%d)", ret);
+
+ src_fd = open(src_full_path, O_RDONLY);
+ RETVM_IF(src_fd < 0, CONTACTS_ERROR_SYSTEM, "System : Open(src_path:%s) Fail(%d)", src_full_path, errno);
+ dest_fd = open(dest, O_WRONLY|O_CREAT|O_TRUNC, 0660);
+ if (dest_fd < 0) {
+ CTS_ERR("Open Fail(%d)", errno);
+ close(src_fd);
+ return CONTACTS_ERROR_SYSTEM;
+ }
+
+ while (0 < (size = read(src_fd, buf, CTSVC_COPY_SIZE_MAX))) {
+ ret = write(dest_fd, buf, size);
+ if (ret <= 0) {
+ if (EINTR == errno)
+ continue;
+ else {
+ CTS_ERR("write() Fail(%d)", errno);
+ if (ENOSPC == errno)
+ ret = CONTACTS_ERROR_FILE_NO_SPACE; /* No space */
+ else
+ ret = CONTACTS_ERROR_SYSTEM; /* IO error */
+ close(src_fd);
+ close(dest_fd);
+ unlink(dest);
+ return ret;
+ }
+ }
+ }
+
+ ret = fchown(dest_fd, getuid(), CTS_SECURITY_FILE_GROUP);
+ if (0 != ret) {
+ CTS_ERR("fchown() Fail(%d)", ret);
+ }
+ ret = fchmod(dest_fd, CTS_SECURITY_IMAGE_PERMISSION);
+ if (0 != ret) {
+ CTS_ERR("fchmod() Fail(%d)", ret);
+ }
+ close(src_fd);
+ close(dest_fd);
+
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_get_next_ver(const char *zone_name)
+{
+ const char *query;
+ int version;
+ int ret;
+
+ struct ctsvc_transaction_s *transaction = NULL;
+
+ if (NULL == ctsvc_transaction_table)
+ ctsvc_transaction_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
+ else
+ transaction = g_hash_table_lookup(ctsvc_transaction_table, zone_name);
+
+ if (NULL == transaction) {
+ transaction = calloc(1, sizeof(struct ctsvc_transaction_s));
+ if (NULL == transaction) {
+ CTS_ERR("calloc() Fail");
+ return -1;
+ }
+ g_hash_table_replace(ctsvc_transaction_table, g_strdup(zone_name), transaction);
+ }
+
+ if (0 < transaction->count) {
+ transaction->version_up = true;
+ return transaction->ver + 1;
+ }
+
+ query = "SELECT ver FROM "CTS_TABLE_VERSION;
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &version);
+
+ /* In this case, contacts-service already works abnormally. */
+ if (CONTACTS_ERROR_NONE != ret)
+ CTS_ERR("ctsvc_query_get_first_int_result : get version error(%d)", ret);
+
+ return (1 + version);
+}
+
+int ctsvc_get_current_version(const char *zone_name, int* out_current_version)
+{
+ struct ctsvc_transaction_s *transaction = NULL;
+
+ if (NULL == ctsvc_transaction_table)
+ ctsvc_transaction_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
+ else
+ transaction = g_hash_table_lookup(ctsvc_transaction_table, zone_name);
+
+ if (NULL == transaction) {
+ transaction = calloc(1, sizeof(struct ctsvc_transaction_s));
+ if (NULL == transaction) {
+ CTS_ERR("calloc() Fail");
+ return CONTACTS_ERROR_OUT_OF_MEMORY;
+ }
+ g_hash_table_replace(ctsvc_transaction_table, g_strdup(zone_name), transaction);
+ }
+
+ if (transaction->count <= 0) {
+ int ret;
+ int version = 0;
+ const char *query = "SELECT ver FROM "CTS_TABLE_VERSION;
+ ret = ctsvc_query_get_first_int_result(zone_name, query, &version);
+ RETVM_IF(CONTACTS_ERROR_NONE != ret, ret, "ctsvc_query_get_first_int_result() Fail(%d)", ret);
+ *out_current_version = version;
+ }
+ else
+ *out_current_version = transaction->ver;
+ return CONTACTS_ERROR_NONE;
+}
+
+int ctsvc_get_transaction_ver(const char *zone_name)
+{
+ struct ctsvc_transaction_s *transaction = NULL;
+
+ if (NULL == ctsvc_transaction_table)
+ ctsvc_transaction_table = g_hash_table_new_full(g_str_hash, g_str_equal, free, NULL);
+ else
+ transaction = g_hash_table_lookup(ctsvc_transaction_table, zone_name);
+
+ if (NULL == transaction) {
+ transaction = calloc(1, sizeof(struct ctsvc_transaction_s));
+ if (NULL == transaction) {
+ CTS_ERR("calloc() Fail");
+ return -1;
+ }
+ g_hash_table_replace(ctsvc_transaction_table, g_strdup(zone_name), transaction);
+ }
+
+ return transaction->ver;
+}
+
+int SAFE_SNPRINTF(char **buf, int *buf_size, int len, const char *src)
+{
+ int remain;
+ int temp_len;
+
+ if (len < 0)
+ return -1;
+
+ remain = *buf_size - len;
+ if (strlen(src) + 1 < remain) {
+ temp_len = snprintf((*buf)+len, remain, "%s", src);
+ return temp_len;
+ }
+ else {
+ char *temp;
+ while (1) {
+ temp = realloc(*buf, *buf_size*2);
+ if (NULL == temp)
+ return -1;
+ *buf = temp;
+ *buf_size = *buf_size * 2;
+ remain = *buf_size - len;
+ if (strlen(src) + 1 < remain)
+ break;
+ }
+ temp_len = snprintf((*buf)+len, remain, "%s", src);
+ return temp_len;
+ }
+}
+
*
*/
-#ifndef __TIZEN_SOCIAL_CTSVC_UTILS_H__
-#define __TIZEN_SOCIAL_CTSVC_UTILS_H__
+#ifndef __CTSVC_DB_UTILS_H__
+#define __CTSVC_DB_UTILS_H__
-const char* ctsvc_get_display_column(void);
-const char* ctsvc_get_sort_column(void);
-const char* ctsvc_get_sort_name_column(void);
+const char* ctsvc_get_display_column(const char *zone_name);
+const char* ctsvc_get_sort_column(const char *zone_name);
+const char* ctsvc_get_sort_name_column(const char *zone_name);
-int ctsvc_begin_trans(void);
-int ctsvc_end_trans(bool is_success);
-int ctsvc_get_next_ver(void);
-int ctsvc_get_current_version( int* out_current_version );
-int ctsvc_get_transaction_ver(void);
+int ctsvc_begin_trans(const char *zone_name);
+int ctsvc_end_trans(const char *zone_name, bool is_success);
+int ctsvc_get_next_ver(const char *zone_name);
+int ctsvc_get_current_version(const char *zone_name, int* out_current_version);
+int ctsvc_get_transaction_ver(const char *zone_name);
-int ctsvc_utils_copy_image(const char *dir, const char *src, const char *file);
+int ctsvc_utils_copy_image(const char *zone_name, const char *dir, const char *src, const char *file);
void ctsvc_utils_make_image_file_name(int parent_id, int id, char *src_img, char *dest, int dest_size);
int SAFE_SNPRINTF(char **buf, int *buf_size, int len, const char *src);
-#endif /* __TIZEN_SOCIAL_CTSVC_UTILS_H__ */
+#endif /* __CTSVC_DB_UTILS_H__ */