Change label of DBs to System::Shared
[platform/core/security/privacy-manager.git] / capi / src / privacy_info.c
1 /*
2  * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License. 
15  */
16
17 #include <stdlib.h>
18 #include <privacy_manager.h>
19 #include <privacy_info.h>
20 #include <privacy_manager_client.h>
21 #include <privacy_manager_client_types.h>
22 #include <privacy_info_client.h>
23 #include <privacy_manager_types_private.h>
24
25 static int _privacy_info_convert_error(int error)
26 {
27         int ret = PRIV_MGR_ERROR_SUCCESS;
28
29         switch (error) 
30         {
31         case PRIV_MGR_ERROR_SUCCESS:
32                 ret = PRIVACY_MANAGER_ERROR_NONE;
33                 break;
34         case PRIV_MGR_ERROR_INVALID_PARAMETER:
35                 ret = PRIVACY_MANAGER_ERROR_INVALID_PARAMETER;
36                 break;
37         case PRIV_MGR_ERROR_OUT_OF_MEMORY:
38                 ret = PRIVACY_MANAGER_ERROR_OUT_OF_MEMORY;
39                 break;
40         case PRIV_MGR_ERROR_IO_ERROR:
41                 ret = PRIVACY_MANAGER_ERROR_IO_ERROR;
42                 break;
43         case PRIV_MGR_ERROR_NO_DATA:
44                 ret = PRIVACY_MANAGER_ERROR_NO_DATA;
45                 break;
46         case PRIV_MGR_ERROR_DB_ERROR:
47                 ret = PRIVACY_MANAGER_ERROR_DB_FAILED;
48                 break;
49         case PRIV_MGR_ERROR_IPC_ERROR:
50                 ret = PRIVACY_MANAGER_ERROR_IPC_FAILED;
51                 break;
52         }
53         return ret;
54 }
55
56 int privacy_info_destroy(privacy_info_h privacy_info)
57 {
58         int retval;
59         if (privacy_info == NULL)
60                 return PRIV_MGR_ERROR_INVALID_PARAMETER;
61
62         if (privacy_info->privacy_info_client)
63         {
64                 retval = privacy_info_client_s_destroy(privacy_info->privacy_info_client);
65                 if (retval != PRIV_MGR_ERROR_SUCCESS)
66                         return retval;
67         }
68
69         free (privacy_info);
70
71         return PRIV_MGR_ERROR_SUCCESS;
72 }
73
74 int privacy_info_get_privacy_id(privacy_info_h privacy_info, char **package)
75 {
76         int retval = privacy_info_client_get_privacy_id(privacy_info->privacy_info_client, package);
77
78         return _privacy_info_convert_error(retval);
79 }
80
81 int privacy_info_get_privacy_display_name(struct privacy_info_s* privacy_info, char **name)
82 {
83         int retval = privacy_info_client_get_privacy_display_name(privacy_info->privacy_info_client, name);
84
85         return  _privacy_info_convert_error(retval);
86 }
87
88 int privacy_info_get_privacy_description(struct privacy_info_s* privacy_info, char **description)
89 {
90         int retval = privacy_info_client_get_privacy_description(privacy_info->privacy_info_client, description);
91
92         return  _privacy_info_convert_error(retval);
93 }
94
95 int privacy_info_is_enabled(struct privacy_info_s* privacy_info, bool *enable)
96 {
97         int retval = privacy_info_client_is_enabled(privacy_info->privacy_info_client, enable);
98
99         return  _privacy_info_convert_error(retval);
100 }
101
102 int privacy_info_create(const char *privacy_id, privacy_info_h *privacy_info)
103 {
104         int retval;
105         privacy_info_client_s* privacy_info_client = NULL;
106         
107         retval = create_privacy_info_client_s(privacy_id, false, &privacy_info_client);
108         if  (retval != PRIV_MGR_ERROR_SUCCESS)
109                 return _privacy_info_convert_error(retval);
110
111         privacy_info_h privacy_info_temp = NULL;
112         privacy_info_temp = (struct privacy_info_s*) calloc(1, sizeof(struct privacy_info_s));
113         if (privacy_info_temp == NULL)
114         {
115                 privacy_info_client_s_destroy(privacy_info_client);
116                 return PRIVACY_MANAGER_ERROR_OUT_OF_MEMORY;
117         }
118         
119         privacy_info_temp->privacy_info_client = privacy_info_client;
120
121         *privacy_info = privacy_info_temp;
122
123         return PRIVACY_MANAGER_ERROR_NONE;
124 }
125
126 int privacy_info_clone(privacy_info_h *clone, privacy_info_h privacy_info)
127 {
128         int retval;
129         if (clone == NULL || privacy_info == NULL)
130                 return PRIVACY_MANAGER_ERROR_INVALID_PARAMETER;
131         
132         retval = privacy_info_create(privacy_info->privacy_info_client->privacy_id, clone);
133
134         return retval;
135 }