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