3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Apache License, Version 2.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
20 #include "utility/sync_util.h"
22 #include "device-manager/mo_parser_properties.h"
24 #ifndef SYNC_AGENT_LOG
26 #define LOG_TAG "AF_MO"
29 void dm_parse_property_access_type(xmlTextReaderPtr * reader, sync_agent_dm_mo_framework_property_s * framework)
33 retm_if(framework == NULL, "sync_agent_dm_mo_framework_property_s is NULL !!");
35 // framework->accessType = 0x00;
36 framework->accessType = SYNC_AGENT_DM_MO_ACCESSTYPE_NO_SET;
39 const char *name = NULL;
42 xmlTextReaderRead(*reader);
44 node_type = xmlTextReaderNodeType(*reader);
45 name = (const char *)xmlTextReaderConstName(*reader);
47 if (node_type == XML_ELEMENT_NODE) {
48 if (!strcmp(name, "Add")) {
49 framework->accessType = framework->accessType | SYNC_AGENT_DM_MO_ACCESSTYPE_ADD;
50 } else if (!strcmp(name, "Copy")) {
51 framework->accessType = framework->accessType | SYNC_AGENT_DM_MO_ACCESSTYPE_COPY;
52 } else if (!strcmp(name, "Delete")) {
53 framework->accessType = framework->accessType | SYNC_AGENT_DM_MO_ACCESSTYPE_DELETE;
54 } else if (!strcmp(name, "Exec")) {
55 framework->accessType = framework->accessType | SYNC_AGENT_DM_MO_ACCESSTYPE_EXEC;
56 } else if (!strcmp(name, "Get")) {
57 framework->accessType = framework->accessType | SYNC_AGENT_DM_MO_ACCESSTYPE_GET;
58 } else if (!strcmp(name, "Replace")) {
59 framework->accessType = framework->accessType | SYNC_AGENT_DM_MO_ACCESSTYPE_REPLACE;
63 } while (!(node_type == XML_ELEMENT_DECL && !strcmp(name, "AccessType")));
68 void dm_parse_property_default_value(xmlTextReaderPtr * reader, sync_agent_dm_mo_framework_property_s * framework)
72 retm_if(framework == NULL, "sync_agent_dm_mo_framework_property_s is NULL !!");
75 const char *name = NULL;
76 const char *value = NULL;
79 xmlTextReaderRead(*reader);
81 node_type = xmlTextReaderNodeType(*reader);
82 name = (const char *)xmlTextReaderConstName(*reader);
83 value = (const char *)xmlTextReaderConstValue(*reader);
85 if (node_type == XML_TEXT_NODE) {
89 framework->defaultValue = strdup(value);
91 } while (!(node_type == XML_ELEMENT_DECL && !strcmp(name, "DefaultValue")) && (node_type != XML_DTD_NODE));
96 void dm_parse_property_description(xmlTextReaderPtr * reader, sync_agent_dm_mo_framework_property_s * framework)
100 retm_if(framework == NULL, "sync_agent_dm_mo_framework_property_s is NULL !!");
103 const char *name = NULL;
104 const char *value = NULL;
107 xmlTextReaderRead(*reader);
109 node_type = xmlTextReaderNodeType(*reader);
110 name = (const char *)xmlTextReaderConstName(*reader);
111 value = (const char *)xmlTextReaderConstValue(*reader);
113 if (node_type == XML_TEXT_NODE) {
118 framework->description = strdup(value);
122 } while (!(node_type == XML_ELEMENT_DECL && !strcmp(name, "Description")) && (node_type != XML_DTD_NODE));
127 void dm_parse_property_dffFormat(xmlTextReaderPtr * reader, sync_agent_dm_mo_framework_property_s * framework)
131 retm_if(framework == NULL, "sync_agent_dm_mo_framework_property_s is NULL !!");
134 xmlTextReaderRead(*reader);
136 int node_type = xmlTextReaderNodeType(*reader);
138 if (node_type == XML_ELEMENT_NODE) {
139 const char *name = (const char *)xmlTextReaderConstName(*reader);
140 if (!strcmp(name, "b64")) {
141 framework->dffFormat = SYNC_AGENT_DM_MO_FORMAT_B64;
142 } else if (!strcmp(name, "bin")) {
143 framework->dffFormat = SYNC_AGENT_DM_MO_FORMAT_BIN;
144 } else if (!strcmp(name, "bool")) {
145 framework->dffFormat = SYNC_AGENT_DM_MO_FORMAT_BOOL;
146 } else if (!strcmp(name, "chr")) {
147 framework->dffFormat = SYNC_AGENT_DM_MO_FORMAT_CHR;
148 } else if (!strcmp(name, "int")) {
149 framework->dffFormat = SYNC_AGENT_DM_MO_FORMAT_INT;
150 } else if (!strcmp(name, "node")) {
151 framework->dffFormat = SYNC_AGENT_DM_MO_FORMAT_NODE;
152 } else if (!strcmp(name, "null")) {
153 framework->dffFormat = SYNC_AGENT_DM_MO_FORMAT_NULL;
154 } else if (!strcmp(name, "xml")) {
155 framework->dffFormat = SYNC_AGENT_DM_MO_FORMAT_XML;
156 } else if (!strcmp(name, "date")) {
157 framework->dffFormat = SYNC_AGENT_DM_MO_FORMAT_DATE;
158 } else if (!strcmp(name, "time")) {
159 framework->dffFormat = SYNC_AGENT_DM_MO_FORMAT_TIME;
160 } else if (!strcmp(name, "float")) {
161 framework->dffFormat = SYNC_AGENT_DM_MO_FORMAT_FLOAT;
171 void dm_parse_property_occurrence(xmlTextReaderPtr * reader, sync_agent_dm_mo_framework_property_s * framework)
175 retm_if(framework == NULL, "sync_agent_dm_mo_framework_property_s is NULL !!");
178 const char *name = NULL;
182 xmlTextReaderRead(*reader);
184 node_type = xmlTextReaderNodeType(*reader);
185 name = (const char *)xmlTextReaderConstName(*reader);
187 if (node_type == XML_ELEMENT_NODE) {
188 if (!strcmp(name, "One")) {
189 framework->occurrence = SYNC_AGENT_DM_MO_OCCURRENCE_ONE;
190 } else if (!strcmp(name, "ZeroOrOne")) {
191 framework->occurrence = SYNC_AGENT_DM_MO_OCCURRENCE_ZEROORONE;
192 } else if (!strcmp(name, "ZeroOrMore")) {
193 framework->occurrence = SYNC_AGENT_DM_MO_OCCURRENCE_ZEROORMORE;
194 } else if (!strcmp(name, "OneOrMore")) {
195 framework->occurrence = SYNC_AGENT_DM_MO_OCCURRENCE_ONEORMORE;
196 } else if (!strcmp(name, "ZeroOrN")) {
197 framework->occurrence = SYNC_AGENT_DM_MO_OCCURRENCE_ZEROORN;
198 } else if (!strcmp(name, "OneOrN")) {
199 framework->occurrence = SYNC_AGENT_DM_MO_OCCURRENCE_ONEORN;
203 } else if (node_type == XML_TEXT_NODE && flag == 1) {
204 const char *occurrence_num = (const char *)xmlTextReaderConstValue(*reader);
205 if (occurrence_num != NULL) {
206 framework->occurrence_num = atoi(occurrence_num);
211 } while (!(node_type == XML_ELEMENT_DECL && !strcmp(name, "Occurrence")));
216 void dm_parse_property_scope(xmlTextReaderPtr * reader, sync_agent_dm_mo_framework_property_s * framework)
220 retm_if(framework == NULL, "sync_agent_dm_mo_framework_property_s is NULL !!");
223 xmlTextReaderRead(*reader);
225 int node_type = xmlTextReaderNodeType(*reader);
227 if (node_type == XML_ELEMENT_NODE) {
228 const char *name = (const char *)xmlTextReaderConstName(*reader);
229 if (!strcmp(name, "Permanent")) {
230 framework->scope = SYNC_AGENT_DM_MO_SCOPE_PERMANENT;
231 } else if (!strcmp(name, "Dynamic")) {
232 framework->scope = SYNC_AGENT_DM_MO_SCOPE_DYNAMIC;
242 void dm_parse_property_df_title(xmlTextReaderPtr * reader, sync_agent_dm_mo_framework_property_s * framework)
246 retm_if(framework == NULL, "sync_agent_dm_mo_framework_property_s is NULL !!");
249 const char *name = NULL;
250 const char *value = NULL;
253 xmlTextReaderRead(*reader);
255 node_type = xmlTextReaderNodeType(*reader);
256 name = (const char *)xmlTextReaderConstName(*reader);
257 value = (const char *)xmlTextReaderConstValue(*reader);
259 const char *baseURL = (const char *)xmlTextReaderConstBaseUri(*reader);
260 const char *localName = (const char *)xmlTextReaderConstLocalName(*reader);
261 const char *namespace = (const char *)xmlTextReaderConstNamespaceUri(*reader);
262 const char *prefix = (const char *)xmlTextReaderConstPrefix(*reader);
263 const char *xmlLang = (const char *)xmlTextReaderConstXmlLang(*reader);
265 if (node_type == XML_TEXT_NODE) {
270 framework->dfTitle = strdup(value);
276 } while (!(node_type == XML_ELEMENT_DECL && !strcmp(name, "DFTitle")) && (node_type != XML_DTD_NODE));
281 void dm_parse_property_df_type(xmlTextReaderPtr * reader, sync_agent_dm_mo_framework_property_s * framework)
285 retm_if(framework == NULL, "sync_agent_dm_mo_framework_property_s is NULL !!");
288 const char *name = NULL;
289 int start_depth = xmlTextReaderDepth(*reader);
292 xmlTextReaderRead(*reader);
293 node_type = xmlTextReaderNodeType(*reader);
294 name = (const char *)xmlTextReaderConstName(*reader);
295 int current_depth = xmlTextReaderDepth(*reader);
296 /* _DEBUG_INFO("node_type : %d, name : %s, isEmpty : %d", node_type, name, isEmpty); */
298 if (node_type == XML_ELEMENT_NODE) {
299 if (!strcmp(name, "MIME")) {
300 framework->dfType = SYNC_AGENT_DM_MO_DF_TYPE_MIME;
301 } else if (!strcmp(name, "DDFName")) {
302 framework->dfType = SYNC_AGENT_DM_MO_DF_TYPE_DDFNAME;
305 } else if (node_type == XML_TEXT_NODE && flag == 1) {
306 const char *dfType_Value = (const char *)xmlTextReaderConstValue(*reader);
307 if (dfType_Value == NULL) {
310 framework->dfType_Value = strdup(dfType_Value);
312 } else if (node_type == XML_DTD_NODE) {
313 if (start_depth == current_depth) {
317 } while (!(node_type == XML_ELEMENT_DECL && !strcmp(name, "DFType")));