13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* 23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright (C) 2014 The Android Open Source Project 33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Licensed under the Apache License, Version 2.0 (the "License"); 53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * you may not use this file except in compliance with the License. 63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * You may obtain a copy of the License at 73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * http://www.apache.org/licenses/LICENSE-2.0 93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Unless required by applicable law or agreed to in writing, software 113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * distributed under the License is distributed on an "AS IS" BASIS, 123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * See the License for the specific language governing permissions and 143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * limitations under the License. 153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//------------------------------------------------------------------------ 183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// 193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// Module Name: dm_tree_node_class.cc 203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// 213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// General Description:Contains the implementations of the methods of 223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// DMNode class. 233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//------------------------------------------------------------------------ 243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmdefs.h" 263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dm_tree_node_class.H" 273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dm_tree_class.H" 283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "SyncML_DM_Archive.H" 293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// For the mime type optimization 313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#define DEFAULT_MIME_TYPE "text/plain" 323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#define DEFAULT_MIME_TYPE_INTERNAL "" 333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyclass DMTree; 353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// Constructor that sets class UID to the object while creating the object 373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMNode::DMNode(BOOLEAN bPlugin): 383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pcParentOfNode(NULL), 393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pcFirstChild(NULL), 403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pcNextSibling(NULL) 413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby bFormat = 0; 433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_nFlags = bPlugin ? enum_NodePlugin : 0; 443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby //Only root of the archive has it set. Others will be NULL. 463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby this->pArchive=NULL; 473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef DM_IGNORE_TSTAMP_AND_VERSION 483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby wTStamp = 0; 493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby wVerNo = 0; 503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif 513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//Destructor of the DMNode class 543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMNode::~DMNode() 553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby //Only root of the archive has it set. Others will be NULL. 573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (this->pArchive != NULL) 583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( this->pArchive->getRootNode() == this ) 603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby this->pArchive->setRootNode(NULL); 623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DMNode::GetName(CPCHAR pbUri, DMString& strName ) 713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strName = abNodeName; 733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DMNode::SetName(CPCHAR pbUri, CPCHAR pbNewName) 773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T sRetStatus = SYNCML_DM_SUCCESS; 793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby this->abNodeName = pbNewName; 813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return sRetStatus; 823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DMNode::GetTitle(CPCHAR pbUri, DMString& ppbTitle) 853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby ppbTitle = m_strTitle; 873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DMNode::SetTitle(CPCHAR pbUri, CPCHAR pbNewTitle) 913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_strTitle = pbNewTitle; 933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef DM_IGNORE_TSTAMP_AND_VERSION 973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DMNode::SetTStamp(CPCHAR pbUri, XPL_CLK_CLOCK_T timeStamp) 993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby wTStamp = timeStamp; 1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DMNode::SetVerNo(CPCHAR pbUri, UINT16 verNo) 1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (verNo == 0xffff) 1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby wVerNo = 0; 1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby wVerNo = verNo; 1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif 1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMNode* DMNode::GetChildByName( CPCHAR szName ) const 1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMNode *pNode = pcFirstChild; 1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby while ( pNode && pNode->abNodeName != szName ) 1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pNode = pNode->pcNextSibling; 1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return pNode; 1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMNode* DMNode::GetNextSerializeItem() 1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMNode *pItem = this; 1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby while ( pItem ) { 1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( !pItem->isPlugin() && !pItem->pArchive ) 1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return pItem; 1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pItem = pItem->pcNextSibling; 1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return NULL; 1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyvoid DMNode::ConvertPathToSkeleton( DMNode* psStartNode ) 1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMNode *pNode = pcParentOfNode; 1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby while ( pNode && pNode != psStartNode ){ 1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pNode->m_nFlags |= enum_NodeSkeleton; 1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pNode = pNode->pcParentOfNode; 1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( pNode ) 1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pNode->m_nFlags |= enum_NodeSkeleton; 1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyCPCHAR DMNode::getType() const 1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (psType_ == DEFAULT_MIME_TYPE_INTERNAL) { 1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return DEFAULT_MIME_TYPE; 1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } else { 1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return psType_.c_str(); 1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DMNode::setType(CPCHAR strType) 1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( strType ) 1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( DmStrcmp(strType,DEFAULT_MIME_TYPE) == 0 ) 1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby psType_ = DEFAULT_MIME_TYPE_INTERNAL; 1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } else { 1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby psType_ = strType; 1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( psType_ == NULL && strType[0] ) 1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_DEVICE_FULL; 1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DMNode::set(const DMGetData * pData) 1783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T res; 1803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby bFormat= pData->m_nFormat == SYNCML_DM_FORMAT_NODE_PDATA ? SYNCML_DM_FORMAT_NODE : pData->m_nFormat; 1823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby CPCHAR pMimeType = ( pData->m_oMimeType.getSize() ? pData->getType() : NULL ); 1843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby res = setType(pMimeType); 1863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( res != SYNCML_DM_SUCCESS ) 1873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return res; 1883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( pData->m_oData.getSize() && getData()) 1903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *getData() = pData->m_oData; 1923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( getData()->getBuffer() == 0 ) 1933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_DEVICE_FULL; 1943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 1963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( getData() ) 1973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby // Set boolean string value if it is omitted, otherwise size 0 1993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby // will be returned for DM API call. 2003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (!pData->m_oData.getSize() ) 2013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (bFormat == SYNCML_DM_FORMAT_BOOL) 2033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby (*getData()).assign("false"); 2053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 2073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby (*getData()).clear(); 2093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 2143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 2153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DMNode::set(CPCHAR strName, CPCHAR strTitle, const DMGetData * pData) 2183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 2193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( strName ) 2213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby abNodeName = strName; 2233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( abNodeName == NULL && strName[0] ) 2243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_DEVICE_FULL; 2253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 2273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_FAIL; 2283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( strTitle ) 2313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_strTitle = strTitle; 2333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( m_strTitle == NULL && strTitle[0] ) 2343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_DEVICE_FULL; 2353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return set(pData); 2383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 2403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DMNode::set(const DMAddNodeProp * pNodeProp) 2433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 2443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_nFlags = pNodeProp->m_nFlags; 2463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef DM_IGNORE_TSTAMP_AND_VERSION 2473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby wTStamp = pNodeProp->m_nTStamp; 2483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby wVerNo = pNodeProp->m_nVerNo; 2493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif 2503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby CPCHAR pTitle = ( pNodeProp->m_oTitle.getSize() ? pNodeProp->getTitle() : NULL ); 2523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby CPCHAR pName = ( pNodeProp->m_oName.getSize() ? pNodeProp->getName() : NULL ); 2533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( getOverlayPIData() ) 2553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby getOverlayPIData()->set_size( pNodeProp->m_oOPiData.getSize() ); 2573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( getOverlayPIData()->size() != pNodeProp->m_oOPiData.getSize() ) 2583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_DEVICE_FULL; 2593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby memcpy( getOverlayPIData()->get_data(), pNodeProp->m_oOPiData.getBuffer(), 2603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby getOverlayPIData()->size() ); 2613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return set(pName,pTitle,(DMGetData*)pNodeProp); 2643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 2663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef LOB_SUPPORT 2683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DMNode::IsESN(CPCHAR pbUri, BOOLEAN& bESN) 2693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 2703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby bESN = (m_nFlags & enum_NodeESN) != 0; 2713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 2723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 2733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif 274