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    Source Name: dmMetaDataNode.cc
203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    General Description: Implementation of the DMMetaDataNode class
223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby==================================================================================================*/
243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <limits.h>
263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dm_uri_utils.h"
273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmStringUtil.h"
283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmMetaDataNode.h"
293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xpl_Logger.h"
303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMMetaDataNode::DMMetaDataNode()
323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Init();
343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMConstraints *
383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMMetaDataNode::GetConstraints() const
393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( m_nNumConstraints )
413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      return (DMConstraints*)&m_oConstraints;
423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else
433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      return NULL;
443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyvoid DMMetaDataNode::Init()
473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_psName = NULL;
493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_szID = NULL;
503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_wAccessType = SYNCML_DM_GET_ACCESS_TYPE | SYNCML_DM_EXEC_ACCESS_TYPE;
513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_nNodeFormat = SYNCML_DM_FORMAT_INVALID;
523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_nMimeType = SYNCML_DM_DDF_MIME_TYPE_TEXTPLAIN;
533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_nNumConstraints = 0;
543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_nMaxChildrenMultiNodes = 0;
553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_bIsHasMultiChildren = FALSE;
563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_bIsMultiNode = FALSE;
573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_bStoresPD = FALSE;
583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_bPluginNode = FALSE;
593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_bOPiDataParent = FALSE;
603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef LOB_SUPPORT
613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_bESN = FALSE;
623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_bProgressBarNeeded = FALSE;
633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyvoid
683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMMetaDataNode::CheckHasMultiNode(DMMetaDataBuffer oBuffer)
693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    UINT16 nodeType;
723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    oBuffer.SetOffset(oBuffer.ReadUINT32() + sizeof(UINT32));
753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    nodeType = oBuffer.ReadUINT16();
763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( (nodeType & 0x80) == 0x80 )
773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        m_bIsHasMultiChildren = TRUE;
783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMMetaDataNode::Read(DMMetaDataBuffer oBuffer,
843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                  BOOLEAN bReadConstraints)
853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T ret_status = SYNCML_DM_SUCCESS;
883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    UINT16 nodeType;
893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Init();
913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_psName = oBuffer.ReadString();
933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    nodeType = oBuffer.ReadUINT16();
943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( (nodeType & nodeMultiNode) == nodeMultiNode)
953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        m_bIsMultiNode = TRUE;
963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef LOB_SUPPORT
983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( (nodeType & nodeESN) == nodeESN)
993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        m_bESN = TRUE;
1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( (nodeType & nodeProgressBar) == nodeProgressBar)
1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        m_bProgressBarNeeded = TRUE;
1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_nNodeFormat = (UINT8)(nodeType & nodeTypeMask );
1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( (nodeType & nodeHasID) != 0 )
1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      m_szID = oBuffer.ReadString();
1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_bPluginNode = ((nodeType & nodePluginNode) != 0);
1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_bStoresPD = ((nodeType & nodeStoresPD) != 0);
1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_wAccessType = oBuffer.ReadUINT8();
1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_nMimeType = oBuffer.ReadUINT8();
1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_nNumChildren = oBuffer.ReadUINT16();
1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_nOffsetChildren = oBuffer.GetOffset();
1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( m_nNumChildren == 1 )
1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        CheckHasMultiNode(oBuffer);
1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   if ( bReadConstraints )
1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   {
1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        oBuffer.IncOffset(m_nNumChildren*sizeof(UINT32));
1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        m_nNumConstraints = oBuffer.ReadUINT8();
1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        ret_status = m_oConstraints.Read(&oBuffer, m_nNumConstraints, nodeType);
1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   }
1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   return ret_status;
1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMMetaDataNode::SetChildrenOffset(DMMetaDataBuffer * pBuffer,
1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                                  UINT8 index)
1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( index > m_nNumChildren )
1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_SUCCESS;
1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pBuffer->SetOffset(m_nOffsetChildren + index*sizeof(UINT32));
1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    UINT32 offset = pBuffer->ReadUINT32();
1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pBuffer->SetOffset(offset);
1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMMetaDataNode::GetMaxMultiNodeChildren(DMMetaDataBuffer oBuffer)
1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T ret_status = SYNCML_DM_SUCCESS;
1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( m_bIsHasMultiChildren )
1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        oBuffer.SetOffset(m_nOffsetChildren);
1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        UINT32 offset = oBuffer.ReadUINT32();
1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        oBuffer.SetOffset(offset);
1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMMetaDataNode oChildren;
1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMConstraints * pConstraints = NULL;
1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        ret_status = oChildren.Read(oBuffer,TRUE);
1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( ret_status != SYNCML_DM_SUCCESS )
1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return ret_status;
1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        m_bOPiDataParent = oChildren.m_bStoresPD;
1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        pConstraints = oChildren.GetConstraints();
1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( pConstraints )
1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby           m_nMaxChildrenMultiNodes = pConstraints->m_nMaxMultiNodes;
1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   }
1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   return ret_status;
1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
1773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMMetaDataNode::ReadName(DMMetaDataBuffer oBuffer)
1783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T ret_status = SYNCML_DM_SUCCESS;
1813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Init();
1833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_psName = oBuffer.ReadString();
1843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return ret_status;
1853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN
1893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMMetaDataNode::VerifyAccessType(SYNCML_DM_ACCESS_TYPE_T accessType) const
1903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_LOG_DM_TMN_Debug(("DMMetaDataNode::VerifyAccessType: node m_wAccesstype is:%x, passed accessType is %x\n", m_wAccessType,accessType));
1923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return ( (m_wAccessType & accessType) == accessType );
1933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN DMMetaDataNode::VerifyMimeType(CPCHAR mimeType) const
1963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return TRUE;
1983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyvoid DMMetaDataNode::GetMimeType(DMString & strType)
2023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    strType = "text/plain";
2043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyvoid DMMetaDataNode::SetAccessType(SYNCML_DM_ACCESS_TYPE_T accessType)
2073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_wAccessType = accessType;
2093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN DMMetaDataNode::IsLocal()
2143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return ( (m_wAccessType & SYNCML_DM_LOCAL_ACCESS_TYPE) ==  SYNCML_DM_LOCAL_ACCESS_TYPE );
2163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN DMMetaDataNode::IsLeaf()
2203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( m_nNodeFormat  != SYNCML_DM_FORMAT_NODE &&
2223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         m_nNodeFormat  != SYNCML_DM_FORMAT_NODE_PDATA )
2233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         return TRUE;
2243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else
2253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return FALSE;
2263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DMMetaDataNode::SetPath(CPCHAR szPath)
2293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( m_oPath.assign(szPath) == NULL )
2313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_DEVICE_FULL;
2323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
2333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DMMetaDataNode::AllocatePath(UINT32 size)
2363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     if ( m_oPath.allocate(size) == NULL )
2383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_DEVICE_FULL;
2393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     return  SetPath(".");
2403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DMMetaDataNode::AppendSegment()
2433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     m_oPath.append((UINT8*)"/", 1);
2453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     m_oPath.append((UINT8*)m_psName,DmStrlen(m_psName));
2463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     return SYNCML_DM_SUCCESS;
2473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN
2503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMMetaDataNode::VerifyChildrenMultiNodesCount(UINT16 count,
2513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                                                   BOOLEAN& bOPiDataParent ) const
2523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    bOPiDataParent = m_bOPiDataParent;
2543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( m_nMaxChildrenMultiNodes > 0 )
2553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
2563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return ( (count < m_nMaxChildrenMultiNodes) );
2573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else
2593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return TRUE;
2603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN
2633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMMetaDataNode::VerifyOPINode( CPCHAR& szID,
2643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                               SYNCML_DM_ACCESS_TYPE_T&  wAccessType,
2653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                              SYNCML_DM_FORMAT_T& nNodeFormat )  const
2663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  szID = m_szID;
2683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  wAccessType = m_wAccessType;
2693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  nNodeFormat = m_nNodeFormat;
2703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return m_bPluginNode;
2723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
273