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: dmSubscriptionItem.cc
203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    General Description: Implementation of the DMSubscriptionItem class
223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby==================================================================================================*/
243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmSubscriptionItem.h"
263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dm_uri_utils.h"
273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmdefs.h"
283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmtoken.h"
293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xpl_Logger.h"
303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xpl_dm_Manager.h"
313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dm_tree_class.H"
323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMSubscriptionItem::DMSubscriptionItem(CPCHAR szPath ) : DMConfigItem (szPath )
343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_eAction = SYNCML_DM_EVENT_NONE;
363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_nType = SYNCML_DM_EVENT_NODE;
373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMSubscriptionItem::Set(const DmtEventSubscription & pItem)
433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return DmtEventSubscription::Set(pItem.GetAction(),
453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                   pItem.GetType(),
463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                   pItem.GetTopic(),
473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                   pItem.GetPrincipals(TRUE),
483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                   pItem.GetPrincipals(FALSE));
493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMSubscriptionItem::Set(CPCHAR szPath,
553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                          CPCHAR szConfig,
563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                          const DMMap<INT32, DMString>& aDict)
573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T dm_stat = SYNCML_DM_SUCCESS;
593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_LOG_DM_TMN_Debug(("Parse subscription=%s for path =%s\n", szConfig,szPath));
613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    dm_stat = DMConfigItem::Set(szPath);
623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( dm_stat != SYNCML_DM_SUCCESS )
633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return dm_stat;
643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMToken oParser(FALSE,szConfig,'&');
673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    CPCHAR pCommand = NULL;
683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    while ( (pCommand = oParser.nextSegment()) != NULL )
703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        SYNCML_DM_EVENT_ACTION_T nAction = SYNCML_DM_EVENT_NONE;
733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        SYNCML_DM_EVENT_TYPE_T nType = SYNCML_DM_EVENT_NODE;
743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( DmStrcmp(pCommand,"A") == 0 )
773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            nAction = SYNCML_DM_EVENT_ADD;
783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        else if ( DmStrcmp(pCommand,"D") ==0  )
793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            nAction = SYNCML_DM_EVENT_DELETE;
803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        else if ( DmStrcmp(pCommand,"I") == 0 )
813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            nAction = SYNCML_DM_EVENT_INDIRECT;
823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        else if ( DmStrcmp(pCommand,"R") == 0 )
833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            nAction = SYNCML_DM_EVENT_REPLACE | SYNCML_DM_EVENT_RENAME;
843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        else if (DmStrcmp(pCommand,"N") == 0 )
853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            nType = SYNCML_DM_EVENT_NODE;
863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        else if ( DmStrcmp(pCommand,"C") == 0 )
873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            nType = SYNCML_DM_EVENT_CUMULATIVE;
883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        else if ( DmStrcmp(pCommand,"F") == 0 )
893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            nType = SYNCML_DM_EVENT_DETAIL;
903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        else
913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            dm_stat = ParseSegment(pCommand,aDict);
933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            if ( dm_stat != SYNCML_DM_SUCCESS )
943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                return dm_stat;
953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            continue;
963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        m_eAction |= nAction;
993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        m_nType = nType;
1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return SYNCML_DM_SUCCESS;
1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMSubscriptionItem::ParseSegment(CPCHAR szSegment,
1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                             const DMMap<INT32, DMString>& aDict)
1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMParser oParser(szSegment,'=');
1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    CPCHAR pKeyWord = oParser.nextSegment();
1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    CPCHAR pValue = oParser.nextSegment();
1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( pKeyWord == NULL || pValue == NULL )
1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( DmStrcmp(pKeyWord,"P") == 0 )
1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        ParsePrincipal(pValue,TRUE,aDict);
1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else
1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( DmStrcmp(pKeyWord,"S") == 0 )
1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            ParsePrincipal(pValue,FALSE,aDict);
1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        else
1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            if ( DmStrcmp(pKeyWord,"T") == 0 )
1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                m_strTopic = pValue;
1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   return SYNCML_DM_SUCCESS;
1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMSubscriptionItem::ParsePrincipal(CPCHAR szSegment,
1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                              BOOLEAN bIsIgnore,
1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                              const DMMap<INT32, DMString>& aDict )
1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMToken oParser(FALSE,szSegment,'+');
1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    CPCHAR pSegment = NULL;
1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    while ( (pSegment = oParser.nextSegment()) != NULL )
1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMString strPrincipal;
1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( aDict.lookup(DmAtoi(pSegment), strPrincipal) )
1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            if ( bIsIgnore ==  TRUE )
1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                m_aIgnorePrincipals.push_back(DmtPrincipal(strPrincipal));
1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            else
1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                m_aNotifyPrincipals.push_back(DmtPrincipal(strPrincipal));
1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         }
1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        else
1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            XPL_LOG_DM_TMN_Error(("event file format error - unknown id %s\n \n", pSegment));
1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return SYNCML_DM_FAIL;
1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMSubscriptionItem::Serialize( DMFileHandler& dmf,
1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                        const DMMap<DMString, INT32>& aDict )
1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_EVENT_ACTION_T nAction[4] = {SYNCML_DM_EVENT_ADD,
1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                                            SYNCML_DM_EVENT_DELETE,
1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                                            SYNCML_DM_EVENT_REPLACE,
1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                                            SYNCML_DM_EVENT_INDIRECT};
1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_EVENT_TYPE_T  nType[3] = {  SYNCML_DM_EVENT_NODE,
1763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                                                SYNCML_DM_EVENT_CUMULATIVE,
1773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                                                SYNCML_DM_EVENT_DETAIL};
1783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    CPCHAR szEvent[4] = {"A", "D", "R", "I"};
1813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    CPCHAR szEventDetail[3] = { "N", "C", "F"};
1823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    UINT8 index;
1833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T dm_stat =SYNCML_DM_SUCCESS;
1853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    dm_stat = DMConfigItem::Serialize(dmf);
1863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( dm_stat != SYNCML_DM_SUCCESS )
1873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return dm_stat;
1883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMString str = "";
1903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for (index = 0; index < DIM(nAction); index++ )
1913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( IsEnabled(nAction[index],NULL) )
1933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            AttachProperty( str, '&', szEvent[index] );
1943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for (index = 0; index <  DIM(nType); index++ )
1963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( m_nType == nType[index] )
1983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
1993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            AttachProperty( str, '&', szEventDetail[index] );
2003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            break;
2013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
2023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMString strProperty;
2053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( m_strTopic != NULL )
2063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
2073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        strProperty = "T=" + m_strTopic;
2083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        AttachProperty(str, '&', strProperty);
2093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( m_aIgnorePrincipals.size() )
2123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
2133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMConfigItem::CreateProperty( m_aIgnorePrincipals, "P=",aDict,strProperty);
2143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        AttachProperty(str, '&', strProperty);
2153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( m_aNotifyPrincipals.size() )
2183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
2193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMConfigItem::CreateProperty( m_aNotifyPrincipals, "S=",aDict,strProperty);
2203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        AttachProperty(str, '&', strProperty);
2213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( str.empty() )
2243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_SUCCESS;
2253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( dmf.write(str.c_str(), str.length()) != SYNCML_DM_SUCCESS ||
2273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         dmf.write( "\n", 1 )!= SYNCML_DM_SUCCESS )
2283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_IO_FAILURE;
2293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
2313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyvoid DMSubscriptionItem::UpdateDictionary( DMMap<DMString, INT32>& aDict )
2353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  DMVector<DmtPrincipal> aPrincipals;
2373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  INT32 iDummy = 0;
2383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  INT32 index=0;
2393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  for (index=0; index<m_aIgnorePrincipals.size(); index++)
2413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  {
2423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( !aDict.lookup( m_aIgnorePrincipals[index].getName(), iDummy ) ){
2433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      aDict.put( m_aIgnorePrincipals[index].getName(), aDict.size() + 1);
2443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
2463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  for (index=0; index<m_aNotifyPrincipals.size(); index++)
2483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  {
2493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( !aDict.lookup(m_aNotifyPrincipals[index].getName(), iDummy ) ){
2503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      aDict.put( m_aNotifyPrincipals[index].getName(), aDict.size() + 1);
2513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
2533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
254