applicationmanagement/server/src/nsmldmuri.cpp
author hgs
Fri, 17 Sep 2010 19:58:05 +0530
changeset 62 03849bd79877
parent 47 d316aecb87fd
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     1
/*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     2
 * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     3
 * All rights reserved.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     8
 *
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     9
 * Initial Contributors:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    11
 *
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    12
 * Contributors:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    13
 *
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    14
 * Description:  DM tree etc.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    15
 *
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    16
 */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    17
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    18
#include "nsmldmuri.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    19
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    20
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    21
//  NSmlDmURI
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    22
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    23
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    24
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    25
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    26
// TPtrC8 NSmlDmURI::ParentURI(const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    27
// returns parent uri, i.e. removes last uri segment
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    28
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    29
TPtrC8 NSmlDmURI::ParentURI(const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    30
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    31
    TBool onlyOneSeg = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    32
    TInt i;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    33
    for (i=aURI.Length()-1; i>=0; i--)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    34
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    35
        if (aURI[i]==KNSmlDMUriSeparator)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    36
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    37
            onlyOneSeg = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    38
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    39
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    40
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    41
    if (onlyOneSeg)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    42
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    43
        return KNSmlDmRootUri();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    44
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    45
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    46
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    47
        return aURI.Left(i);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    48
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    49
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    50
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    51
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    52
// TPtrC8 NSmlDmURI::LastURISeg(const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    53
// Returns only the last uri segemnt
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    54
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    55
TPtrC8 NSmlDmURI::LastURISeg(const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    56
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    57
    TInt i;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    58
    for (i=aURI.Length()-1; i>=0; i--)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    59
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    60
        if (aURI[i]==KNSmlDMUriSeparator)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    61
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    62
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    63
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    64
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    65
    if (i==0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    66
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    67
        return aURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    68
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    69
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    70
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    71
        return aURI.Mid(i+1);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    72
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    73
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    74
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    75
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    76
// TPtrC8 NSmlDmURI::RemoveDotSlash(const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    77
// return uri without dot and slash in start
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    78
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    79
TPtrC8 NSmlDmURI::RemoveDotSlash(const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    80
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    81
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    82
    TInt offset = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    83
    TInt endSlash = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    84
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    85
    if (aURI.Find(KNSmlDmUriDotSlash)==0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    86
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    87
        offset = 2;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    88
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    89
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    90
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    91
        return aURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    92
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    93
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    94
    if (aURI.Length()>2&&aURI[aURI.Length()-1]==KNSmlDMUriSeparator)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    95
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    96
        endSlash = 1;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    97
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    98
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    99
    return aURI.Mid(offset, aURI.Length()-endSlash-offset);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   100
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   101
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   102
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   103
// TPtrC8 NSmlDmURI::RemoveProp(const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   104
// removes property from the uri
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   105
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   106
TPtrC8 NSmlDmURI::RemoveProp(const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   107
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   108
    TInt offset = aURI.Find(KNSmlDmQuestionMark);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   109
    if (offset!=KErrNotFound)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   110
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   111
        return aURI.Left(offset);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   112
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   113
    return aURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   114
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   115
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   116
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   117
// TPtrC8 NSmlDmURI::RemoveLastSeg(const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   118
// Removes last uri segment
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   119
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   120
TPtrC8 NSmlDmURI::RemoveLastSeg(const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   121
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   122
    TInt i;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   123
    for (i=aURI.Length()-1; i>=0; i--)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   124
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   125
        if (aURI[i]==KNSmlDMUriSeparator)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   126
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   127
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   128
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   129
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   130
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   131
    if (i>0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   132
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   133
        return aURI.Left(i);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   134
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   135
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   136
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   137
        return KNullDesC8();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   138
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   139
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   140
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   141
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   142
// TPtrC8 NSmlDmURI::URISeg(const TDesC8& aURI,TInt aLocation,TInt aSegCount=1)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   143
// Returns the aLocation:th URI segment
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   144
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   145
/*TPtrC8 NSmlDmURI::URISeg(const TDesC8& aURI, TInt aLocation, TInt aSegCount/*=1*///)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   146
    /*{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   147
    TInt i, start;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   148
    if (aLocation < 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   149
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   150
        return aURI.Mid(0, 0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   151
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   152
    if (aLocation > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   153
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   154
        for (start=0, i=0; (start<aURI.Length()) && (i<aLocation); start++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   155
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   156
            if (aURI[start]=='/')
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   157
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   158
                i++;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   159
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   160
            if (i==aLocation)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   161
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   162
                break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   163
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   164
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   165
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   166
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   167
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   168
        start=-1;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   169
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   170
    // empty segment
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   171
    if (start+1 >= aURI.Length())
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   172
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   173
        return aURI.Mid(0, 0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   174
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   175
    // start points to beginning of segment
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   176
    for (i=start+1; i<aURI.Length(); i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   177
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   178
        if (aURI[i]=='/')
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   179
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   180
            aSegCount--;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   181
            if (aSegCount == 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   182
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   183
                break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   184
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   185
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   186
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   187
    // i points to end of segment   
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   188
    return aURI.Mid(start+1, i-start-1);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   189
    }*/
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   190
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   191
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   192
// TInt NSmlDmURI::NumOfURISegs(const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   193
// Returns the num of uri segs
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   194
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   195
TInt NSmlDmURI::NumOfURISegs(const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   196
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   197
    TInt numOfURISegs = 1;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   198
    for (TInt i=0; i<aURI.Length(); i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   199
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   200
        if (aURI[i]==KNSmlDMUriSeparator)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   201
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   202
            numOfURISegs++;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   203
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   204
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   205
    return numOfURISegs;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   206
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   207