|
1 /* |
|
2 * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: Implementation of CDmAdDdf. |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 #include <utf.h> |
|
20 |
|
21 #include "dmadddf.h" |
|
22 #include "dmadeventlog.h" |
|
23 #include "dmadutil.h" |
|
24 #include "vpnlogger.h" |
|
25 |
|
26 CDmAdDdf* CDmAdDdf::NewL(MDmAdCallBack* aDmAdCallBack, CDmAdStore* aStore) |
|
27 { |
|
28 TRACE("CDmAdDdf::NewL"); |
|
29 |
|
30 CDmAdDdf* self = NewLC(aDmAdCallBack, aStore); |
|
31 CleanupStack::Pop(); |
|
32 return self; |
|
33 } |
|
34 |
|
35 CDmAdDdf* CDmAdDdf::NewLC(MDmAdCallBack* aDmAdCallBack, CDmAdStore* aStore) |
|
36 { |
|
37 CDmAdDdf* self = new (ELeave) CDmAdDdf(aDmAdCallBack, aStore); |
|
38 CleanupStack::PushL(self); |
|
39 self->ConstructL(); |
|
40 return self; |
|
41 } |
|
42 |
|
43 void CDmAdDdf::ConstructL(void) |
|
44 { |
|
45 TRACE("CDmAdDdf::ConstructL"); |
|
46 } |
|
47 |
|
48 CDmAdDdf::CDmAdDdf(MDmAdCallBack* aDmAdCallBack, CDmAdStore* aStore) : |
|
49 iCallBack(aDmAdCallBack), iStore(aStore) |
|
50 { |
|
51 TRACE("CDmAdDdf::CDmAdDdf"); |
|
52 } |
|
53 |
|
54 CDmAdDdf::~CDmAdDdf() |
|
55 { |
|
56 TRACE("CDmAdDdf::~CDmAdDdf"); |
|
57 } |
|
58 |
|
59 //=================================================================================================== |
|
60 |
|
61 void CDmAdDdf::BuildDDFVersionL(CBufBase& aDDFVersion) |
|
62 { |
|
63 TRACE("CDmAdDdf::BuildDDFVersionL"); |
|
64 aDDFVersion.InsertL(0, KDmAdDdfVersion); |
|
65 } |
|
66 |
|
67 void CDmAdDdf::BuildDDFStructureL(MSmlDmDDFObject& aDDF) |
|
68 { |
|
69 TRACE("CDmAdDdf::BuildDDFStructureL"); |
|
70 |
|
71 TSmlDmAccessTypes accessTypesExec; |
|
72 accessTypesExec.SetReplace(); // accessTypesExec.SetExec(); |
|
73 |
|
74 TSmlDmAccessTypes accessTypesGet; |
|
75 accessTypesGet.SetGet(); |
|
76 |
|
77 TSmlDmAccessTypes accessTypesAdd; |
|
78 accessTypesAdd.SetAdd(); |
|
79 |
|
80 TSmlDmAccessTypes accessTypesGetAdd; |
|
81 accessTypesGetAdd.SetGet(); |
|
82 accessTypesGetAdd.SetAdd(); |
|
83 |
|
84 TSmlDmAccessTypes accessTypesGetDelete; |
|
85 accessTypesGetDelete.SetGet(); |
|
86 accessTypesGetDelete.SetDelete(); |
|
87 |
|
88 TSmlDmAccessTypes accessTypesAll; |
|
89 accessTypesAll.SetGet(); |
|
90 accessTypesAll.SetAdd(); |
|
91 accessTypesAll.SetDelete(); |
|
92 accessTypesAll.SetReplace(); |
|
93 |
|
94 TSmlDmAccessTypes accessTypesNoDelete; |
|
95 accessTypesNoDelete.SetGet(); |
|
96 accessTypesNoDelete.SetAdd(); |
|
97 accessTypesNoDelete.SetReplace(); |
|
98 |
|
99 MSmlDmDDFObject* obj; |
|
100 MSmlDmDDFObject* objNokiaIpSecVpn; |
|
101 MSmlDmDDFObject* objIpSecVpnGeneral; |
|
102 MSmlDmDDFObject* objPolicy; |
|
103 MSmlDmDDFObject* objPolicyX; |
|
104 MSmlDmDDFObject* objAp; |
|
105 MSmlDmDDFObject* objApX; |
|
106 MSmlDmDDFObject* objApXPolicyRef; |
|
107 |
|
108 //---------------------------------------------------------------- |
|
109 |
|
110 objNokiaIpSecVpn = &TDmAdUtil::AddChildObjectL(aDDF, KDmAdNodeNokiaIpSecVpn); |
|
111 TDmAdUtil::FillNodeInfoL(*objNokiaIpSecVpn, |
|
112 accessTypesGet, |
|
113 MSmlDmDDFObject::EOne, |
|
114 MSmlDmDDFObject::EPermanent, |
|
115 MSmlDmDDFObject::ENode, |
|
116 KDmAdDescNodeNokiaIpSecVpn, |
|
117 ETrue, |
|
118 KDmAdNokiaIpSecVpnRootTypeProperty); |
|
119 |
|
120 //---------------------------------------------------------------- |
|
121 |
|
122 objIpSecVpnGeneral = &TDmAdUtil::AddChildObjectL(*objNokiaIpSecVpn, KDmAdNodeGeneral); |
|
123 TDmAdUtil::FillNodeInfoL(*objIpSecVpnGeneral, |
|
124 accessTypesGet, |
|
125 MSmlDmDDFObject::EOne, |
|
126 MSmlDmDDFObject::EPermanent, |
|
127 MSmlDmDDFObject::ENode, |
|
128 KDmAdDescNodeGeneral, |
|
129 EFalse, |
|
130 KNullDesC8); |
|
131 |
|
132 obj = &TDmAdUtil::AddChildObjectL(*objIpSecVpnGeneral, KDmAdLeafClientVersion); |
|
133 TDmAdUtil::FillNodeInfoL(*obj, |
|
134 accessTypesGet, |
|
135 MSmlDmDDFObject::EOne, |
|
136 MSmlDmDDFObject::EDynamic, |
|
137 MSmlDmDDFObject::EChr, |
|
138 KDmAdDescLeafClientVersion, |
|
139 EFalse); |
|
140 |
|
141 obj = &TDmAdUtil::AddChildObjectL(*objIpSecVpnGeneral, KDmAdLeafEventLog); |
|
142 TDmAdUtil::FillNodeInfoL(*obj, |
|
143 accessTypesGetDelete, |
|
144 MSmlDmDDFObject::EOne, |
|
145 MSmlDmDDFObject::EDynamic, |
|
146 MSmlDmDDFObject::EBin, |
|
147 KDmAdDescLeafEventLog, |
|
148 EFalse); |
|
149 |
|
150 //---------------------------------------------------------------- |
|
151 |
|
152 objPolicy = &TDmAdUtil::AddChildObjectL(*objNokiaIpSecVpn, KDmAdNodePolicy); |
|
153 TDmAdUtil::FillNodeInfoL(*objPolicy, |
|
154 accessTypesGet, |
|
155 MSmlDmDDFObject::EOne, |
|
156 MSmlDmDDFObject::EPermanent, |
|
157 MSmlDmDDFObject::ENode, |
|
158 KDmAdDescNodePolicy, |
|
159 EFalse, |
|
160 KNullDesC8); |
|
161 |
|
162 |
|
163 objPolicyX = &TDmAdUtil::AddChildObjectL(*objPolicy, KDmAdNodeRt); |
|
164 TDmAdUtil::FillNodeInfoL(*objPolicyX, |
|
165 accessTypesAll, |
|
166 MSmlDmDDFObject::EZeroOrMore, |
|
167 MSmlDmDDFObject::EDynamic, |
|
168 MSmlDmDDFObject::ENode, |
|
169 KDmAdDescNodeRt, |
|
170 EFalse, |
|
171 KNullDesC8); |
|
172 |
|
173 obj = &TDmAdUtil::AddChildObjectL(*objPolicyX, KDmAdLeafName); |
|
174 TDmAdUtil::FillNodeInfoL(*obj, |
|
175 accessTypesNoDelete, |
|
176 MSmlDmDDFObject::EOne, |
|
177 MSmlDmDDFObject::EDynamic, |
|
178 MSmlDmDDFObject::EChr, |
|
179 KDmAdDescLeafName, |
|
180 EFalse); |
|
181 |
|
182 obj = &TDmAdUtil::AddChildObjectL(*objPolicyX, KDmAdLeafId); |
|
183 TDmAdUtil::FillNodeInfoL(*obj, |
|
184 accessTypesGetAdd, |
|
185 MSmlDmDDFObject::EOne, |
|
186 MSmlDmDDFObject::EDynamic, |
|
187 MSmlDmDDFObject::EChr, |
|
188 KDmAdDescLeafId, |
|
189 EFalse); |
|
190 |
|
191 obj = &TDmAdUtil::AddChildObjectL(*objPolicyX, KDmAdLeafVersion); |
|
192 TDmAdUtil::FillNodeInfoL(*obj, |
|
193 accessTypesNoDelete, |
|
194 MSmlDmDDFObject::EZeroOrOne, |
|
195 MSmlDmDDFObject::EDynamic, |
|
196 MSmlDmDDFObject::EChr, |
|
197 KDmAdDescLeafVersion, |
|
198 EFalse); |
|
199 |
|
200 obj = &TDmAdUtil::AddChildObjectL(*objPolicyX, KDmAdLeafDescription); |
|
201 TDmAdUtil::FillNodeInfoL(*obj, |
|
202 accessTypesNoDelete, |
|
203 MSmlDmDDFObject::EZeroOrOne, |
|
204 MSmlDmDDFObject::EDynamic, |
|
205 MSmlDmDDFObject::EChr, |
|
206 KDmAdDescLeafDescription, |
|
207 EFalse); |
|
208 |
|
209 obj = &TDmAdUtil::AddChildObjectL(*objPolicyX, KDmAdLeafIssuer); |
|
210 TDmAdUtil::FillNodeInfoL(*obj, |
|
211 accessTypesNoDelete, |
|
212 MSmlDmDDFObject::EZeroOrOne, |
|
213 MSmlDmDDFObject::EDynamic, |
|
214 MSmlDmDDFObject::EChr, |
|
215 KDmAdDescLeafIssuer, |
|
216 EFalse); |
|
217 |
|
218 obj = &TDmAdUtil::AddChildObjectL(*objPolicyX, KDmAdLeafContact); |
|
219 TDmAdUtil::FillNodeInfoL(*obj, |
|
220 accessTypesNoDelete, |
|
221 MSmlDmDDFObject::EZeroOrOne, |
|
222 MSmlDmDDFObject::EDynamic, |
|
223 MSmlDmDDFObject::EChr, |
|
224 KDmAdDescLeafContact, |
|
225 EFalse); |
|
226 |
|
227 obj = &TDmAdUtil::AddChildObjectL(*objPolicyX, KDmAdLeafContent); |
|
228 TDmAdUtil::FillNodeInfoL(*obj, |
|
229 accessTypesNoDelete, |
|
230 MSmlDmDDFObject::EOne, |
|
231 MSmlDmDDFObject::EDynamic, |
|
232 MSmlDmDDFObject::EBin, |
|
233 KDmAdDescLeafContent, |
|
234 EFalse); |
|
235 |
|
236 |
|
237 //---------------------------------------------------------------- |
|
238 |
|
239 objAp = &TDmAdUtil::AddChildObjectL(*objNokiaIpSecVpn, KDmAdNodeAp); |
|
240 TDmAdUtil::FillNodeInfoL(*objAp, |
|
241 accessTypesGet, |
|
242 MSmlDmDDFObject::EOne, |
|
243 MSmlDmDDFObject::EPermanent, |
|
244 MSmlDmDDFObject::ENode, |
|
245 KDmAdDescNodeAp, |
|
246 EFalse, |
|
247 KNullDesC8); |
|
248 |
|
249 |
|
250 objApX = &TDmAdUtil::AddChildObjectL(*objAp, KDmAdNodeRt); |
|
251 TDmAdUtil::FillNodeInfoL(*objApX, |
|
252 accessTypesAll, |
|
253 MSmlDmDDFObject::EZeroOrMore, |
|
254 MSmlDmDDFObject::EDynamic, |
|
255 MSmlDmDDFObject::ENode, |
|
256 KDmAdDescNodeRt, |
|
257 EFalse, |
|
258 KNullDesC8); |
|
259 |
|
260 obj = &TDmAdUtil::AddChildObjectL(*objApX, KDmAdLeafName); |
|
261 TDmAdUtil::FillNodeInfoL(*obj, |
|
262 accessTypesNoDelete, |
|
263 MSmlDmDDFObject::EOne, |
|
264 MSmlDmDDFObject::EDynamic, |
|
265 MSmlDmDDFObject::EChr, |
|
266 KDmAdDescLeafName, |
|
267 EFalse); |
|
268 |
|
269 obj = &TDmAdUtil::AddChildObjectL(*objApX, KDmAdLeafThisRef); |
|
270 TDmAdUtil::FillNodeInfoL(*obj, |
|
271 accessTypesGet, |
|
272 MSmlDmDDFObject::EOne, |
|
273 MSmlDmDDFObject::EDynamic, |
|
274 MSmlDmDDFObject::EChr, |
|
275 KDmAdDescLeafThisRef, |
|
276 EFalse); |
|
277 |
|
278 objApXPolicyRef = &TDmAdUtil::AddChildObjectL(*objApX, KDmAdNodePolicyRef); |
|
279 TDmAdUtil::FillNodeInfoL(*objApXPolicyRef, |
|
280 accessTypesGetAdd, |
|
281 MSmlDmDDFObject::EOne, |
|
282 MSmlDmDDFObject::EDynamic, |
|
283 MSmlDmDDFObject::ENode, |
|
284 KDmAdDescNodePolicyRef, |
|
285 EFalse, |
|
286 KNullDesC8); |
|
287 |
|
288 obj = &TDmAdUtil::AddChildObjectL(*objApXPolicyRef, KDmAdLeafId); |
|
289 TDmAdUtil::FillNodeInfoL(*obj, |
|
290 accessTypesNoDelete, |
|
291 MSmlDmDDFObject::EOne, |
|
292 MSmlDmDDFObject::EDynamic, |
|
293 MSmlDmDDFObject::EChr, |
|
294 KDmAdDescLeafId, |
|
295 EFalse); |
|
296 |
|
297 obj = &TDmAdUtil::AddChildObjectL(*objApXPolicyRef, KDmAdLeafUri); |
|
298 TDmAdUtil::FillNodeInfoL(*obj, |
|
299 accessTypesGet, |
|
300 MSmlDmDDFObject::EOne, |
|
301 MSmlDmDDFObject::EDynamic, |
|
302 MSmlDmDDFObject::EChr, |
|
303 KDmAdDescLeafUri, |
|
304 EFalse); |
|
305 |
|
306 obj = &TDmAdUtil::AddChildObjectL(*objApX, KDmAdLeafConRef); |
|
307 TDmAdUtil::FillNodeInfoL(*obj, |
|
308 accessTypesNoDelete, |
|
309 MSmlDmDDFObject::EOne, |
|
310 MSmlDmDDFObject::EDynamic, |
|
311 MSmlDmDDFObject::EChr, |
|
312 KDmAdDescLeafConRef, |
|
313 EFalse); |
|
314 |
|
315 } |
|
316 |
|
317 //--------------------------------------------------------------------------------------- |
|
318 |
|
319 void CDmAdDdf::NotRtNodeAddNodeObjectL(const TDesC8& /*aUri*/, |
|
320 const TDesC8& /*aParentLuid*/, |
|
321 TInt aStatusRef) |
|
322 { |
|
323 TRACE("CDmAdDdf::NotRtNodeAddNodeObjectL"); |
|
324 iCallBack->SetStatusL(aStatusRef, KErrNone); |
|
325 } |
|
326 |
|
327 void CDmAdDdf::NotRtNodeUpdateLeafObjectL(const TDesC8& /*aUri*/, |
|
328 const TDesC8& /*aLuid*/, |
|
329 const TDesC8& /*aObject*/, |
|
330 const TDesC8& /*aType*/, |
|
331 TInt aStatusRef) |
|
332 { |
|
333 TRACE("CDmAdDdf::NotRtNodeUpdateLeafObjectL"); |
|
334 iCallBack->SetStatusL(aStatusRef, KErrNone); |
|
335 } |
|
336 |
|
337 TInt CDmAdDdf::NotRtNodeFetchLeafObjectLC(const TDesC8& aUri, |
|
338 const TDesC8& /*aLuid*/, |
|
339 const TDesC8& /*aType*/, |
|
340 CBufBase*& aObject) |
|
341 { |
|
342 TInt status = KErrNotFound; |
|
343 CBufBase* object = CBufFlat::NewL(32); |
|
344 CleanupStack::PushL(object); |
|
345 |
|
346 TPtrC8 lastSeg = TDmAdUtil::LastUriSeg(aUri); |
|
347 if (lastSeg.Compare(KDmAdLeafClientVersion) == 0) |
|
348 { |
|
349 HBufC8* version = CnvUtfConverter::ConvertFromUnicodeToUtf8L(KVersion); |
|
350 CleanupStack::PushL(version); |
|
351 object->InsertL(0, *version); |
|
352 CleanupStack::PopAndDestroy(); //version |
|
353 status = KErrNone; |
|
354 } |
|
355 else if (lastSeg.Compare(KDmAdLeafEventLog) == 0) |
|
356 { |
|
357 TDmAdEventLog::EventLogL(*object); |
|
358 status = KErrNone; |
|
359 } |
|
360 aObject = object; |
|
361 return status; |
|
362 } |
|
363 |
|
364 void CDmAdDdf::NotRtNodeDeleteObjectL(const TDesC8& aUri, |
|
365 const TDesC8& /*aLuid*/, |
|
366 TInt aStatusRef) |
|
367 { |
|
368 TRACE("CDmAdDdf::NotRtNodeDeleteObjectL"); |
|
369 |
|
370 TInt status = KErrNone; //KErrNotFound; |
|
371 TPtrC8 lastSeg = TDmAdUtil::LastUriSeg(aUri); |
|
372 if (lastSeg.Compare(KDmAdLeafEventLog) == 0) |
|
373 { |
|
374 TDmAdEventLog::DeleteLogL(); |
|
375 status = KErrNone; |
|
376 } |
|
377 iCallBack->SetStatusL(aStatusRef, status); |
|
378 } |
|
379 |
|
380 //--------------------------------------------------------------------------------------- |
|
381 |
|
382 TBool CDmAdDdf::IsNodeRtNodeL(const TDesC8& aUri) |
|
383 { |
|
384 TRACE("CDmAdDdf::IsNodeRtNodeL"); |
|
385 |
|
386 TBool ret = EFalse; |
|
387 TPtrC8 lastSeg = TDmAdUtil::LastUriSeg(aUri); |
|
388 |
|
389 if (lastSeg.Compare(KDmAdLeafEventLog) == 0) // for DeleteObjectL: In this case this method is called also when URI is leaf (not always node) |
|
390 { |
|
391 return EFalse; |
|
392 } |
|
393 |
|
394 if (lastSeg.Compare(KDmAdNodeNokiaIpSecVpn) == 0 || |
|
395 lastSeg.Compare(KDmAdNodeGeneral) == 0 || |
|
396 lastSeg.Compare(KDmAdNodePolicy) == 0 || |
|
397 lastSeg.Compare(KDmAdNodeAp) == 0 || |
|
398 lastSeg.Compare(KDmAdNodePolicyRef) == 0) |
|
399 { |
|
400 ret = EFalse; |
|
401 } |
|
402 else |
|
403 { |
|
404 if (TDmAdUtil::NumOfURISegs(aUri) < 2) |
|
405 { |
|
406 DEBUG_LOG(_L("Node not found")); |
|
407 User::Leave(KErrNotFound); |
|
408 } |
|
409 TPtrC8 prevSeg = TDmAdUtil::LastUriSeg(TDmAdUtil::RemoveLastUriSeg(aUri)); |
|
410 if (prevSeg.Compare(KDmAdNodePolicy) == 0 || |
|
411 prevSeg.Compare(KDmAdNodeAp) == 0) |
|
412 { |
|
413 ret = ETrue; |
|
414 } |
|
415 else |
|
416 { |
|
417 DEBUG_LOG(_L("Node not found")); |
|
418 User::Leave(KErrNotFound); |
|
419 } |
|
420 } |
|
421 return ret; |
|
422 } |
|
423 |
|
424 TBool CDmAdDdf::IsLeafUnderRtNodeL(const TDesC8& aUri) |
|
425 { |
|
426 TRACE("CDmAdDdf::IsLeafUnderRtNodeL"); |
|
427 |
|
428 TBool ret = EFalse; |
|
429 TPtrC8 nodeUri(TDmAdUtil::RemoveLastUriSeg(aUri)); |
|
430 ret = IsNodeRtNodeL(nodeUri); |
|
431 if (!ret) |
|
432 { |
|
433 TPtrC8 nodeUriSeg = TDmAdUtil::LastUriSeg(nodeUri); |
|
434 if (nodeUriSeg.Compare(KDmAdNodePolicyRef) == 0) |
|
435 { |
|
436 ret = ETrue; |
|
437 } |
|
438 } |
|
439 return ret; |
|
440 } |
|
441 |
|
442 TPtrC8 CDmAdDdf::RtNodeUriForLeafL(const TDesC8& aLeafUri) |
|
443 { |
|
444 TRACE("CDmAdDdf::RtNodeUriForLeafL"); |
|
445 |
|
446 TPtrC8 ret; |
|
447 TPtrC8 nodeUri(TDmAdUtil::RemoveLastUriSeg(aLeafUri)); |
|
448 TPtrC8 nodeUriSeg(TDmAdUtil::LastUriSeg(nodeUri)); |
|
449 TPtrC8 prevNodeUri(TDmAdUtil::RemoveLastUriSeg(nodeUri)); |
|
450 TPtrC8 prevNodeUriSeg(TDmAdUtil::LastUriSeg(prevNodeUri)); |
|
451 |
|
452 if (prevNodeUriSeg.Compare(KDmAdNodePolicy) == 0 || |
|
453 prevNodeUriSeg.Compare(KDmAdNodeAp) == 0) |
|
454 { |
|
455 ret.Set(nodeUri); |
|
456 } |
|
457 else if (nodeUriSeg.Compare(KDmAdNodePolicyRef) == 0) |
|
458 { |
|
459 ret.Set(prevNodeUri); |
|
460 } |
|
461 else |
|
462 { |
|
463 DEBUG_LOG(_L("Node not found")); |
|
464 User::Leave(KErrNotFound); |
|
465 } |
|
466 return ret; |
|
467 } |
|
468 |
|
469 TBool CDmAdDdf::IsTopLevelRtNode(const TDesC8& aUri) |
|
470 { |
|
471 TRACE("CDmAdDdf::IsTopLevelRtNode"); |
|
472 |
|
473 (void)aUri; |
|
474 return ETrue; |
|
475 } |
|
476 |
|
477 HBufC8* CDmAdDdf::ParentRtNodeUriForRtNodeLC(const TDesC8& /*aUri*/) |
|
478 { |
|
479 DEBUG_LOG(_L("CDmAdDdf::ParentRtNodeUriForRtNodeLC method not implemented")); |
|
480 User::Leave(KErrGeneral); |
|
481 return NULL; |
|
482 } |
|
483 |
|
484 //--------------------------------------------------------------------------------------- |
|
485 |
|
486 void CDmAdDdf::BuildChildUriListLC(const TDesC8& aUri, |
|
487 const TDesC8& aParentLuid, |
|
488 const CArrayFix<TSmlDmMappingInfo>& aPreviousUriSegmentList, |
|
489 CBufBase*& aCurrentList) |
|
490 { |
|
491 CBufBase* currentList = CBufFlat::NewL(128); |
|
492 CleanupStack::PushL(currentList); |
|
493 |
|
494 TPtrC8 lastSeg = TDmAdUtil::LastUriSeg(aUri); |
|
495 if (lastSeg.Compare(KDmAdNodeNokiaIpSecVpn) == 0) |
|
496 { |
|
497 currentList->InsertL(0, KDmAdListOfNokiaIpSecVpnChildren); |
|
498 } |
|
499 else if (lastSeg.Compare(KDmAdNodeGeneral) == 0) |
|
500 { |
|
501 currentList->InsertL(0, KDmAdListOfIpSecVpnGeneralChildren); |
|
502 } |
|
503 else if (lastSeg.Compare(KDmAdNodePolicyRef) == 0) |
|
504 { |
|
505 if (!iStore->FindRtNodeL(aParentLuid, aUri)) |
|
506 { |
|
507 DEBUG_LOG(_L("Node not found")); |
|
508 User::Leave(KErrNotFound); |
|
509 } |
|
510 currentList->InsertL(0, KDmAdListOfPolicyRefChildren); |
|
511 } |
|
512 else if (lastSeg.Compare(KDmAdNodePolicy) == 0 || |
|
513 lastSeg.Compare(KDmAdNodeAp) == 0) |
|
514 { |
|
515 TDmAdUtil::BuildRtNodeChildUriListL(iCallBack, iStore, aUri, aParentLuid, aPreviousUriSegmentList, *currentList); |
|
516 } |
|
517 else |
|
518 { |
|
519 TPtrC8 prevSeg = TDmAdUtil::LastUriSeg(TDmAdUtil::RemoveLastUriSeg(aUri)); |
|
520 if (prevSeg.Compare(KDmAdNodePolicy) == 0 || |
|
521 prevSeg.Compare(KDmAdNodeAp) == 0) |
|
522 { |
|
523 if (!iStore->FindRtNodeL(aParentLuid, aUri)) |
|
524 { |
|
525 DEBUG_LOG(_L("Node not found")); |
|
526 User::Leave(KErrNotFound); |
|
527 } |
|
528 |
|
529 if (prevSeg.Compare(KDmAdNodePolicy) == 0) |
|
530 { |
|
531 currentList->InsertL(0, KDmAdListOfPolicyXChildren); |
|
532 } |
|
533 else if (prevSeg.Compare(KDmAdNodeAp) == 0) |
|
534 { |
|
535 currentList->InsertL(0, KDmAdListOfApXChildren); |
|
536 } |
|
537 } |
|
538 else |
|
539 { |
|
540 DEBUG_LOG(_L("Node not found")); |
|
541 User::Leave(KErrNotFound); |
|
542 } |
|
543 } |
|
544 |
|
545 aCurrentList = currentList; |
|
546 } |