applicationmanagement/omascomoadapter/src/omascomoadapter.cpp
author hgs
Fri, 17 Sep 2010 19:58:05 +0530
changeset 62 03849bd79877
parent 47 d316aecb87fd
child 67 fdbfe0a95492
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) 2009 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:  Implementation of applicationmanagement components
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
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    19
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    20
/**
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    21
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    22
 1. Remember the applications managed by Corporate Admin Role certificate
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    23
 1.1 They must be removed during rfs
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    24
 1.2 Others must be left as is (applications at least must be left)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    25
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    26
 */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    27
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    28
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    29
#define __AM_CHECKSTATE_CHANGES // uncomment to enable dynamic acl
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    30
#include <badesca.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    31
#include <fbs.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    32
#include <s32file.h> 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    33
#include "omascomoadapter.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    34
#include <implementationproxy.h> // For TImplementationProxy definition
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    35
#include <f32file.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    36
#include "nsmldmuri.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    37
#include "nsmldmiapmatcher.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    38
#include "debug.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    39
#include "amprivateCRKeys.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    40
#include <centralrepository.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    41
#include "aminstalloptions.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    42
#include <featmgr.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    43
#include <apgtask.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    44
#include <w32std.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    45
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    46
#include <SyncMLClient.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    47
#include <SyncMLClientDM.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    48
#include <e32property.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    49
#include <centralrepository.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    50
#include <DevManInternalCRKeys.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    51
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    52
#include "NSmlPrivateAPI.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    53
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    54
#include "nsmldmconst.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    55
#include "ampskeys.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    56
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    57
#include "nsmldmtreedbclient.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    58
//#include "SyncService.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    59
#include "amprivateCRKeys.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    60
#include <e32cmn.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    61
#include <SWInstDefs.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    62
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    63
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    64
#include <dmtreenode.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    65
#include <devman.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    66
#include "nsmldmuri.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    67
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    68
// Constants
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    69
_LIT8( KDeployedURI, "./SCOMO/Inventory/Deployed/" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    70
_LIT8( KDeliveredURI, "./SCOMO/Inventory/Delivered/" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    71
_LIT8( KDownloadURI, "./SCOMO/Download/" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    72
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    73
#include <nsmldmuri.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    74
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    75
// Constants
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    76
_LIT8( KDeployedURI, "SCOMO/Inventory/Deployed/" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    77
_LIT8( KDeliveredURI, "SCOMO/Inventory/Delivered/" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    78
_LIT8( KDownloadURI, "SCOMO/Download/" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    79
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    80
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    81
#ifdef __NSML_DEBUG__
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    82
#pragma message("NSml Debugging is ON!")
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    83
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    84
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    85
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    86
using namespace NApplicationManagement;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    87
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    88
_LIT8( KAMStateValueActive, "20" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    89
_LIT8( KAMStateValueInactive, "10" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    90
_LIT8( KAMStateValueDelivered, "10" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    91
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    92
_LIT8( KSisxMimeType, "x-epoc/x-sisx-app" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    93
_LIT8( KSisMimeType, "application/vnd.symbian.install" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    94
_LIT8( KPipMimeType, "application/x-pip" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    95
_LIT8( KJadMIMEType, "text/vnd.sun.j2me.app-descriptor" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    96
_LIT8( KJarMIMEType, "application/java-archive" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    97
_LIT8( KJavaMIMEType, "application/java" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    98
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    99
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   100
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   101
const TUint8 KNSmlDMAMSeparatorDef = 0x2f; //forward slash
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   102
#ifdef __AM_LASTERROR_NODE
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   103
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   104
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   105
_LIT8( KAMLastErrorURI, "./SCOMO/Ext/LastError" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   106
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   107
_LIT8( KAMLastErrorURI, "SCOMO/Ext/LastError" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   108
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   109
_LIT8( KStdError, "Error %d" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   110
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   111
#define MAPERROR(x,y,z) DefaultMapError(x,y,z)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   112
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   113
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   114
#define MAPERROR(x,y,z) DefaultMapError(x,y)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   115
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   116
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   117
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   118
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   119
// CSCOMOAdapter* CSCOMOAdapter::NewL( )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   120
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   121
CSCOMOAdapter* CSCOMOAdapter::NewL(MSmlDmCallback* aDmCallback)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   122
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   123
    RDEBUG("CSCOMOAdapter::NewL(): begin");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   124
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   125
    CSCOMOAdapter* self = NewLC(aDmCallback);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   126
    CleanupStack::Pop();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   127
    return self;
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
// CSCOMOAdapter* CSCOMOAdapter::NewLC( )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   132
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   133
CSCOMOAdapter* CSCOMOAdapter::NewLC(MSmlDmCallback* aDmCallback)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   134
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   135
    CSCOMOAdapter* self = new( ELeave ) CSCOMOAdapter( aDmCallback );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   136
    CleanupStack::PushL(self);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   137
    self->ConstructL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   138
    return self;
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
// CSCOMOAdapter::CSCOMOAdapter()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   143
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   144
CSCOMOAdapter::CSCOMOAdapter(TAny* aEcomArguments) :
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   145
    CSmlDmAdapter(aEcomArguments), iSessionOpened(EFalse), iBuffer( 8),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   146
            iInAtomic(EFalse), iUpdated(EFalse), iIsStreamedContent(EFalse)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   147
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   148
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   149
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   150
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   151
// CSCOMOAdapter::~CSCOMOAdapter()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   152
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   153
CSCOMOAdapter::~CSCOMOAdapter()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   154
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   155
    RDEBUG( "CSCOMOAdapter::~CSCOMOAdapter" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   156
    iDbSession.Close();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   157
    iManagement.Close(); // make sure we're closed
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   158
    iSessionOpened = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   159
    iBuffer.Close();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   160
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   161
    CloseStreaming(); // Ensures that no streams are left open and that the temporary file is removed
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   162
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   163
    delete iStreamedURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   164
    delete iStreamedLuid;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   165
    delete iStreamedType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   166
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   167
#ifdef __AM_LASTERROR_NODE
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   168
    delete iLastError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   169
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   170
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   171
    if (iAMdb)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   172
        delete iAMdb;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   173
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   174
    if (iUriDel)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   175
        delete iUriDel;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   176
    RDEBUG( "CSCOMOAdapter::~CSCOMOAdapter end" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   177
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   178
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   179
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   180
//  CSCOMOAdapter::DDFVersionL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   181
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   182
void CSCOMOAdapter::DDFVersionL(CBufBase& aDDFVersion)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   183
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   184
    aDDFVersion.InsertL( 0, KAMDDFVersion);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   185
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   186
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   187
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   188
//  CSCOMOAdapter::DDFStructureL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   189
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   190
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   191
void CSCOMOAdapter::DDFStructureL(MSmlDmDDFObject& aDDF)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   192
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   193
    RDEBUG( "CSCOMOAdapter::DDFStructureL(): begin" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   194
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   195
    TSmlDmAccessTypes accessTypesGet;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   196
    accessTypesGet.SetGet();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   197
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   198
    TSmlDmAccessTypes accessTypesExec;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   199
    accessTypesExec.SetExec();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   200
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   201
    TSmlDmAccessTypes accessTypesAdd;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   202
    accessTypesAdd.SetAdd();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   203
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   204
    TSmlDmAccessTypes accessTypesExecReplace = accessTypesExec;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   205
    accessTypesExecReplace.SetReplace();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   206
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   207
    TSmlDmAccessTypes accessTypesGetAdd = accessTypesGet;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   208
    accessTypesGetAdd.SetAdd();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   209
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   210
    TSmlDmAccessTypes accessTypesGetReplace = accessTypesGet;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   211
    accessTypesGetReplace.SetGet();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   212
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   213
    TSmlDmAccessTypes accessTypesGetAddReplace = accessTypesGetAdd;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   214
    accessTypesGetAddReplace.SetReplace();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   215
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   216
    TSmlDmAccessTypes accessTypesGetAddReplaceDelete =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   217
            accessTypesGetAddReplace;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   218
    accessTypesGetAddReplaceDelete.SetDelete();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   219
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   220
    TSmlDmAccessTypes accessTypesAddReplace = 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   221
	    accessTypesAdd;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   222
    accessTypesAddReplace.SetReplace();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   223
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   224
	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step1" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   225
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   226
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   227
     Node: ./SCOMO
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   228
     AM node is the common parent to all application management functionality nodes. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   229
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   230
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   231
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   232
     Access Types: Get
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   233
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   234
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   235
    //MSmlDmDDFObject& root = aDDF.AddChildObjectGroupL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   236
    MSmlDmDDFObject& am = aDDF.AddChildObjectL(KAMNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   237
    FillNodeInfoL(am, accessTypesGet, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   238
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   239
            KAMNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   240
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   241
	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 2" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   242
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   243
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   244
     Node: ./SCOMO/Inventory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   245
     This node is start node to application inventory. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   246
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   247
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   248
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   249
     Access Types: Get
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   250
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   251
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   252
    MSmlDmDDFObject& inv = am.AddChildObjectL(KAMInventoryNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   253
    FillNodeInfoL(inv, accessTypesGet, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   254
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   255
            KAMInventoryNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   256
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   257
	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 3" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   258
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   259
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   260
     Node: ./SCOMO/Inventory/Delivered
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   261
     This is node under which applications that are delivered but not installed are found.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   262
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   263
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   264
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   265
     Access Types: Get, Add
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   266
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   267
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   268
    MSmlDmDDFObject& del = inv.AddChildObjectL(KAMDeliveredNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   269
    FillNodeInfoL(del, accessTypesGetAdd, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   270
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   271
            KAMDeliveredNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   272
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   273
	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 4" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   274
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   275
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   276
     Node: ./SCOMO/Inventory/Deployed
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   277
     This is a node under which active applications are found.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   278
     The child node descriptions are same as Delivered sibling node, except that <X> cannot be created, data node does not exist and there's no InstallOpts leaf.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   279
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   280
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   281
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   282
     Access Types: Get
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   283
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   284
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   285
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   286
    MSmlDmDDFObject& ac = inv.AddChildObjectL(KAMDeployedNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   287
    FillNodeInfoL(ac, accessTypesGet, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   288
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   289
            KAMDeployedNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   290
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   291
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   292
	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 5" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   293
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   294
     Node: ./SCOMO/Inventory/Delivered/<X>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   295
     This dynamic node is placeholder applications that are in Delivered state. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   296
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   297
     Occurs: ZeroOrMore
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   298
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   299
     Access Types: Get, Add, Replace, Delete
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   300
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   301
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   302
    MSmlDmDDFObject& deldyna = del.AddChildObjectGroupL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   303
    FillNodeInfoL(deldyna, accessTypesGetAddReplaceDelete,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   304
            MSmlDmDDFObject::EZeroOrMore, MSmlDmDDFObject::EDynamic,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   305
            MSmlDmDDFObject::ENode, KAMDeliveredDynaNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   306
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   307
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   308
	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 6" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   309
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   310
     Node: ./SCOMO/Inventory/Delivered/<X>/PkgID
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   311
     This leaf node holds an identifier for an application.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   312
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   313
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   314
     Format: Chr
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   315
     Access Types: Get, Add, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   316
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   317
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   318
    MSmlDmDDFObject& delid = deldyna.AddChildObjectL(KAMPkgIDNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   319
    FillNodeInfoL(delid, accessTypesGetAddReplace, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   320
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   321
            KAMPkgIDNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   322
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   323
	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 7" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   324
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   325
     Node: ./SCOMO/Inventory/Delivered/<X>/Name
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   326
     This leaf node holds name of an application. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   327
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   328
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   329
     Format: Chr
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   330
     Access Types: Get ( + Add, Replace access within Delivered node only)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   331
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   332
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   333
    MSmlDmDDFObject& delname = deldyna.AddChildObjectL(KAMNameNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   334
    FillNodeInfoL(delname, accessTypesGetAddReplace,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   335
            MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   336
            MSmlDmDDFObject::EChr, KAMNameNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   337
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   338
    RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 8" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   339
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   340
     Node: ./SCM/Inventory/Delivered/<X>/Status
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   341
     This leaf node holds the status of the Delivered. The client updates the node value. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   342
     The values are typically error codes of Operations done on delivered node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   343
     Support: Mandatory 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   344
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   345
     Format: Int
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   346
     Access Types: Get
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   347
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   348
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   349
    MSmlDmDDFObject& delstatus = deldyna.AddChildObjectL(KAMStatusNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   350
    FillNodeInfoL(delstatus, accessTypesGet, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   351
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EInt,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   352
            KAMStatusNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   353
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   354
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   355
	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 9" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   356
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   357
     Node: ./SCOMO/Inventory/Delivered/<X>/PkgType
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   358
     This leaf node holds an identifier for an application.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   359
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   360
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   361
     Format: Chr
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   362
     Access Types: Get 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   363
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   364
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   365
    MSmlDmDDFObject& delpkgtype = deldyna.AddChildObjectL(KAMPkgTypeNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   366
    FillNodeInfoL(delpkgtype, accessTypesGetAddReplace, MSmlDmDDFObject::EZeroOrOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   367
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   368
            KAMPkgTypeNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   369
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   370
    RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 10" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   371
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   372
     Node: ./SCOMO/Inventory/Delivered/<X>/Data
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   373
     This leaf node holds the data of an application. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   374
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   375
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   376
     Format: Bin
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   377
     Access Types: Add, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   378
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   379
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   380
    MSmlDmDDFObject& delda = deldyna.AddChildObjectL(KAMDataNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   381
    FillNodeInfoNoDefaultMimeL(delda, accessTypesAddReplace,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   382
            MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   383
            MSmlDmDDFObject::EBin, KAMDataNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   384
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   385
	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 11" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   386
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   387
    delda.AddDFTypeMimeTypeL(KSisxMimeType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   388
    delda.AddDFTypeMimeTypeL(KSisMimeType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   389
    delda.AddDFTypeMimeTypeL(KPipMimeType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   390
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   391
	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 12" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   392
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   393
    FeatureManager::InitializeLibL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   394
    if (FeatureManager::FeatureSupported(KFeatureIdJavaMIDP20) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   395
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   396
	    RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 13" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   397
        delda.AddDFTypeMimeTypeL(KJadMIMEType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   398
        delda.AddDFTypeMimeTypeL(KJarMIMEType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   399
        delda.AddDFTypeMimeTypeL(KJavaMIMEType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   400
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   401
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   402
	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 14" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   403
    FeatureManager::UnInitializeLib();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   404
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   405
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   406
     Node: ./SCOMO/Inventory/Delivered/<X>/Description
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   407
     This leaf node holds the possible metadata of an application. Descriptor can be for example such a data that is required by the actual data in the Data leaf, but for some reason they cannot be bundled into same package. An example is Java JAR and JAD file combination, in which JAD file could be placed in MetaData and JAR in Data leaf.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   408
     Support: Optional
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   409
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   410
     Format: Bin
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   411
     Access Types: Add, Get, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   412
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   413
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   414
    MSmlDmDDFObject& delmd = deldyna.AddChildObjectL(KAMDescriptionNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   415
    FillNodeInfoL(delmd, accessTypesGetAddReplace,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   416
            MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   417
            MSmlDmDDFObject::EBin, KAMDescriptorNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   418
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   419
	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 15" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   420
     /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   421
     Node: ./SCOMO/Inventory/Delivered/<X>/State
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   422
     This leaf node holds state value of an application. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   423
     Support: ?
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   424
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   425
     Format: Chr
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   426
     Access Types: Get 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   427
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   428
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   429
    MSmlDmDDFObject& delstate =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   430
            deldyna.AddChildObjectL(KAMStateValueNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   431
    FillNodeInfoL(delstate, accessTypesGet, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   432
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   433
            KAMStateValueNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   434
    RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 16" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   435
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   436
     Node: ./SCOMO/Inventory/Delivered/<X>/Operations
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   437
     This is a node that allows vendors to extend functionality.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   438
     Support: Optional
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   439
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   440
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   441
     Access Types: Get, Replace, Add, Delete
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   442
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   443
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   444
    MSmlDmDDFObject& delop = deldyna.AddChildObjectL(KAMOperationsNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   445
    FillNodeInfoL(delop, accessTypesGet, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   446
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   447
            KAMOperationsNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   448
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   449
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   450
     Node: ./SCOMO/Inventory/Delivered/<X>/Operations/Install
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   451
     Exec command causes device to install a delivered application. The data inside 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   452
     exec command refers to the application to be installed. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   453
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   454
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   455
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   456
     Access Types: Exec, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   457
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   458
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   459
    MSmlDmDDFObject& loinst = delop.AddChildObjectL(KAMInstallNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   460
    FillNodeInfoL(loinst, accessTypesExecReplace, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   461
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   462
            KAMInstallNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   463
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   464
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   465
     Node: ./SCOMO/Inventory/Delivered/<X>/Operations/InstallInactive
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   466
     Exec command causes device to install a delivered application. The data inside 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   467
     exec command refers to the application to be installed. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   468
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   469
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   470
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   471
     Access Types: Exec, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   472
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   473
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   474
    MSmlDmDDFObject& loinstact =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   475
            delop.AddChildObjectL(KAMInstallInactiveNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   476
    FillNodeInfoL(loinstact, accessTypesExecReplace, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   477
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   478
            KAMInstallInactivateNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   479
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   480
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   481
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   482
     Node: ./SCOMO/Inventory/Delivered/<X>/Operations/Remove
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   483
     Exec command causes device to remove an application. The data inside exec command refers to the application to be removed. The application must be in Inactive state in order for remove to be successful.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   484
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   485
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   486
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   487
     Access Types: Exec, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   488
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   489
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   490
    MSmlDmDDFObject& lorem = delop.AddChildObjectL(KAMRemoveNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   491
    FillNodeInfoL(lorem, accessTypesExecReplace, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   492
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   493
            KAMRemoveNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   494
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   495
    /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   496
     DEPLOYED
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   497
     *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   498
    RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 17" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   499
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   500
     Node: ./SCOMO/Inventory/Deployed/<X>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   501
     This dynamic node is placeholder applications that are in Inactive state. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   502
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   503
     Occurs: ZeroOrMore
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   504
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   505
     Access Types: Get, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   506
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   507
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   508
    MSmlDmDDFObject& depldyna = ac.AddChildObjectGroupL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   509
    FillNodeInfoL(depldyna, accessTypesGetReplace,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   510
            MSmlDmDDFObject::EZeroOrMore, MSmlDmDDFObject::EDynamic,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   511
            MSmlDmDDFObject::ENode, KAMDeployedDynaNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   512
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   513
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   514
     Node: ./SCOMO/Inventory/Deployed/<X>/ID
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   515
     This leaf node holds an identifier for an application. This cannot be changed.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   516
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   517
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   518
     Format: Chr
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   519
     Access Types: Get
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   520
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   521
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   522
    MSmlDmDDFObject& deplid = depldyna.AddChildObjectL(KAMIDNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   523
    FillNodeInfoL(deplid, accessTypesGet, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   524
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   525
            KAMIDNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   526
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   527
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   528
     Node: ./SCOMO/Inventory/Deployed/<X>/Name
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   529
     This leaf node holds name of an application.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   530
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   531
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   532
     Format: Chr
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   533
     Access Types: Get, Add, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   534
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   535
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   536
    MSmlDmDDFObject& deplname = depldyna.AddChildObjectL(KAMNameNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   537
    FillNodeInfoL(deplname, accessTypesGetAddReplace,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   538
            MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   539
            MSmlDmDDFObject::EChr, KAMNameNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   540
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   541
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   542
     Node: ./SCOMO/Inventory/Deployed/<X>/Version
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   543
     This leaf node holds the version of an application.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   544
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   545
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   546
     Format: Chr
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   547
     Access Types: Get, Add, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   548
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   549
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   550
    MSmlDmDDFObject& deplver = depldyna.AddChildObjectL(KAMVersionNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   551
    FillNodeInfoL(deplver, accessTypesGetAddReplace,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   552
            MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   553
            MSmlDmDDFObject::EChr, KAMVersionNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   554
    RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 18" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   555
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   556
     Node: ./SCOMO/Inventory/Deployed/<X>/Description
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   557
     This leaf node holds the version of an application.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   558
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   559
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   560
     Format: Chr
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   561
     Access Types: Get, Add, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   562
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   563
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   564
    MSmlDmDDFObject& depldesc = depldyna.AddChildObjectL(KAMDescriptionNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   565
    FillNodeInfoL(depldesc, accessTypesGetAddReplace,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   566
            MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   567
            MSmlDmDDFObject::EChr, KAMDescriptionNodeDescription);        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   568
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   569
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   570
     Node: ./SCOMO/Inventory/Deployed/<X>/PkgIDRef
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   571
     This leaf node holds an identifier for an application. This cannot be changed.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   572
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   573
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   574
     Format: Chr
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   575
     Access Types: Get
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   576
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   577
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   578
    MSmlDmDDFObject& deplidref = depldyna.AddChildObjectL(KAMPkgIDRefNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   579
    FillNodeInfoL(deplidref, accessTypesGet, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   580
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   581
            KAMPkgIDRefNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   582
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   583
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   584
     Node: ./SCOMO/Inventory/Deployed/<X>/Status
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   585
     This leaf node holds the status of the Deployed. The client updates the node value. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   586
     The values are typically error codes of Operations done on deployed node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   587
     Support: Mandatory 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   588
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   589
     Format: Int
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   590
     Access Types: Get
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   591
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   592
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   593
    MSmlDmDDFObject& deplstatus = depldyna.AddChildObjectL(KAMStatusNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   594
    FillNodeInfoL(deplstatus, accessTypesGet, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   595
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EInt,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   596
            KAMStatusNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   597
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   598
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   599
     Node: ./SCOMO/Inventory/Deployed/<X>/State
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   600
     This leaf node holds state value of an application. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   601
     Support: ?
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   602
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   603
     Format: Chr
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   604
     Access Types: Get 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   605
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   606
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   607
    MSmlDmDDFObject& deplstate =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   608
            depldyna.AddChildObjectL(KAMStateValueNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   609
    FillNodeInfoL(deplstate, accessTypesGet, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   610
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   611
            KAMStateValueNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   612
    RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 19" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   613
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   614
     Node: ./SCOMO/Inventory/Deployed/<X>/Operations
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   615
     This is a node that allows vendors to extend functionality.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   616
     Support: Optional
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   617
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   618
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   619
     Access Types: Get, Replace, Add, Delete
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   620
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   621
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   622
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   623
    MSmlDmDDFObject& deplop = depldyna.AddChildObjectL(KAMOperationsNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   624
    FillNodeInfoL(deplop, accessTypesGet, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   625
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   626
            KAMOperationsNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   627
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   628
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   629
     Node: ./SCOMO/Inventory/Deployed/<X>/Operations/Remove
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   630
     Exec command causes device to remove an application. The data inside exec command 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   631
     refers to the application to be removed. The application must be in Inactive state 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   632
     in order for remove to be successful.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   633
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   634
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   635
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   636
     Access Types: Exec, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   637
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   638
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   639
    MSmlDmDDFObject& deplrem = deplop.AddChildObjectL(KAMRemoveNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   640
    FillNodeInfoL(deplrem, accessTypesExecReplace, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   641
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   642
            KAMRemoveNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   643
    RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 20" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   644
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   645
     Node: ./SCOMO/Inventory/Deployed/<X>/Operations/Activate
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   646
     Exec command causes device to activate an application. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   647
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   648
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   649
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   650
     Access Types: Exec, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   651
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   652
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   653
    MSmlDmDDFObject& deplac = deplop.AddChildObjectL(KAMActivateNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   654
    FillNodeInfoL(deplac, accessTypesExecReplace, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   655
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   656
            KAMActivateNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   657
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   658
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   659
     Node: ./SCOMO/Inventory/Deployed/<X>/Operations/Deactivate
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   660
     Exec command causes device to deactivate an application. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   661
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   662
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   663
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   664
     Access Types: Exec, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   665
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   666
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   667
    MSmlDmDDFObject& depldeac = deplop.AddChildObjectL(KAMDeActivateNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   668
    FillNodeInfoL(depldeac, accessTypesExecReplace, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   669
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   670
            KAMDeActivateNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   671
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   672
    /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   673
     DOWNLOAD
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   674
     *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   675
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   676
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   677
     Node: ./SCOMO/Download
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   678
     This node is a root node for application download functionality. In practice download 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   679
     works so that admin adds nodes under this node, and they are automatically moved to 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   680
     Inventory/Delivered when the download has been finished. Running get command targeting 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   681
     to this node returns a list of pending downloads. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   682
     Support: Mandatory 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   683
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   684
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   685
     Access Types: Get, Add, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   686
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   687
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   688
    MSmlDmDDFObject& dow = am.AddChildObjectL(KAMDownloadNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   689
    FillNodeInfoL(dow, accessTypesGetAddReplace, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   690
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   691
            KAMDownloadNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   692
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   693
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   694
     Node: ./SCOMO/Download/<X>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   695
     This node is a placeholder for identifier of an application that is to be downloaded. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   696
     Support: Mandatory 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   697
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   698
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   699
     Access Types: Get, Add, Replace, Delete
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   700
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   701
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   702
    MSmlDmDDFObject& dowdyna = dow.AddChildObjectGroupL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   703
    FillNodeInfoL(dowdyna, accessTypesGetAddReplaceDelete,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   704
            MSmlDmDDFObject::EZeroOrMore, MSmlDmDDFObject::EDynamic,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   705
            MSmlDmDDFObject::ENode, KAMDownloadDynaNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   706
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   707
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   708
     Node: ./SCOMO/Download/<X>/PkgID
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   709
     This leaf node holds an identifier for an application. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   710
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   711
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   712
     Format: Chr
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   713
     Access Types: Get
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   714
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   715
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   716
    MSmlDmDDFObject& dowid = dowdyna.AddChildObjectL(KAMPkgIDNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   717
    FillNodeInfoL(dowid, accessTypesGetAddReplace, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   718
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   719
            KAMPkgIDNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   720
    RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 21" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   721
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   722
     Node: ./SCOMO/Download/<X>/Name
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   723
     This leaf node holds name of an application. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   724
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   725
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   726
     Format: Chr
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   727
     Access Types: Add, Get, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   728
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   729
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   730
    MSmlDmDDFObject& downame = dowdyna.AddChildObjectL(KAMNameNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   731
    FillNodeInfoL(downame, accessTypesGetAddReplace,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   732
            MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   733
            MSmlDmDDFObject::EChr, KAMNameNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   734
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   735
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   736
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   737
     Node: ./SCOMO/Download/<X>/PkgURL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   738
     This leaf node holds the URL from which the application should be downloaded.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   739
     Support: Mandatory 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   740
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   741
     Format: Chr
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   742
     Access Types: Add, Get, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   743
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   744
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   745
    MSmlDmDDFObject& dowuri = dowdyna.AddChildObjectL(KAMURINodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   746
    FillNodeInfoL(dowuri, accessTypesGetAddReplace,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   747
            MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   748
            MSmlDmDDFObject::EChr, KAMURINodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   749
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   750
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   751
     Node: /SCOMO/Download/<X>/PkgType
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   752
     This leaf node holds an identifier for an application.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   753
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   754
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   755
     Format: Chr
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   756
     Access Types: Add, Get, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   757
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   758
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   759
    MSmlDmDDFObject& dowpkgtype = dowdyna.AddChildObjectL(KAMPkgTypeNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   760
    FillNodeInfoL(dowpkgtype, accessTypesGetAddReplace, MSmlDmDDFObject::EZeroOrOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   761
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   762
            KAMPkgTypeNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   763
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   764
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   765
     Node: ./SCOMO/Download/<X>/Status
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   766
     This leaf node holds the status of the download. The client updates the node value. The values are typically error codes of download protocol. Initially after the URI leaf is filled, this will get value 100, and will be replaced by one.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   767
     Support: Optional 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   768
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   769
     Format: Chr
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   770
     Access Types: Get
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   771
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   772
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   773
    MSmlDmDDFObject& dowstat = dowdyna.AddChildObjectL(KAMStatusNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   774
    FillNodeInfoL(dowstat, accessTypesGet, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   775
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   776
            KAMStatusNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   777
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   778
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   779
     Node: ./SCOMO/Download/<X>/Description
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   780
     This leaf node holds the version of an application. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   781
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   782
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   783
     Format: Chr
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   784
     Access Types: Add, Get, Replace
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   785
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   786
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   787
    MSmlDmDDFObject& dowver = dowdyna.AddChildObjectL(KAMDescriptionNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   788
    FillNodeInfoL(dowver, accessTypesGetAddReplace,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   789
            MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   790
            MSmlDmDDFObject::EChr, KAMDescriptionNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   791
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   792
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   793
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   794
     Node: ./SCOMO/Download/<X>/Operations
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   795
     This is a node that holds the operation nodes.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   796
     Support: Optional
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   797
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   798
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   799
     Access Types: Get, Replace, Add, Delete
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   800
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   801
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   802
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   803
    MSmlDmDDFObject& dowop = dowdyna.AddChildObjectL(KAMOperationsNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   804
    FillNodeInfoL(dowop, accessTypesGet, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   805
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   806
            KAMOperationsNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   807
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   808
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   809
     Node: ./SCOMO/Download/<X>/Operations/Download
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   810
     Exec command causes device to download an application. The dynamic node specifies the application to be downloaded. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   811
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   812
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   813
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   814
     Access Types: Exec
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   815
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   816
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   817
    MSmlDmDDFObject& dowdown =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   818
            dowop.AddChildObjectL(KAMDownloadOperationNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   819
    FillNodeInfoL(dowdown, accessTypesExecReplace, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   820
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   821
            KAMDownloadOperationNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   822
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   823
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   824
     Node: ./SCOMO/Download/<X>/Operations/DownloadInstall
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   825
     Exec command causes device to download and install an application. The dynamic node specifies the application to be downloaded. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   826
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   827
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   828
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   829
     Access Types: Exec
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   830
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   831
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   832
    MSmlDmDDFObject& dowdowni =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   833
            dowop.AddChildObjectL(KAMDownloadAndInstallNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   834
    FillNodeInfoL(dowdowni, accessTypesExec, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   835
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   836
            KAMDownloadAndInstallOperationNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   837
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   838
    /*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   839
     Node: ./SCOMO/Download/<X>/Operations/DownloadInstallInactive
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   840
     Exec command causes device to download and install and activate an application. The dynamic node specifies the application to be downloaded. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   841
     Support: Mandatory
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   842
     Occurs: One
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   843
     Format: Node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   844
     Access Types: Exec
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   845
     Values: N/A
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   846
     */
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   847
    MSmlDmDDFObject& dowdownia =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   848
            dowop.AddChildObjectL(KAMDownloadAndInstallAndInActivateNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   849
    FillNodeInfoL(dowdownia, accessTypesExec, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   850
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   851
            KAMDownloadAndInstallAndInActivateNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   852
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   853
    RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 22" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   854
#ifdef __AM_LASTERROR_NODE
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   855
    MSmlDmDDFObject& amext = am.AddChildObjectL(KAMExtNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   856
    FillNodeInfoL(amext, accessTypesGet, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   857
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   858
            KAMExtNodeDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   859
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   860
    MSmlDmDDFObject& amerr = amext.AddChildObjectL(KAMLastErrorNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   861
    FillNodeInfoL(amerr, accessTypesGet, MSmlDmDDFObject::EOne,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   862
            MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   863
            KAMLastErrorDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   864
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   865
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   866
    // Ignore generic alert error status if any otherwise adapter fails to load 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   867
    RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 23" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   868
    TRAP_IGNORE(SendPendingGenericAlertL());
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   869
	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 24" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   870
    //if (GetAdapterValue() == KAMSCOMOAdapter)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   871
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   872
		RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 25" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   873
        CheckStateChangesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   874
        SetAdapterValue(KAMDefaultValue);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   875
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   876
	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 26" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   877
    CheckAndAddPredefinedNodeL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   878
    RDEBUG( "CSCOMOAdapter::DDFStructureL(): end" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   879
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   880
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   881
void CSCOMOAdapter::SendPendingGenericAlertL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   882
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   883
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   884
    // get information of the remote DM server
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   885
    TSmlProfileId profId = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   886
    HBufC8* serverId= NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   887
    TBuf8<KMaxSizeString> scomometatype;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   888
    TBuf8<KMaxSizeString> scomometaformat;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   889
    TBuf8<KMaxSizeString> scomomark;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   890
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   891
    TBuf8<512> targetURIGet;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   892
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   893
    TUint32 internalid = KErrNone;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   894
    TInt finalresult = KErrNone;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   895
    TInt i =0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   896
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   897
    // Get all the generic alert parameters from cenrep
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   898
    // to construct generic alert message
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   899
    CRepository *repository=CRepository::NewLC ( KCRUidPrivateApplicationManagementKeys );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   900
    repository->Get(KSCOMOMetaTypeKey,scomometatype);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   901
    repository->Get(KSCOMOMetaFormatKey,scomometaformat);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   902
    repository->Get(KSCOMOMark,scomomark);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   903
    CleanupStack::PopAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   904
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   905
    // Retrive server info of current DM Session
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   906
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   907
    GetServerInfoL(profId, serverId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   908
    CleanupStack::PushL(serverId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   909
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   910
    RPointerArray<CAMDbItem> genericalerts;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   911
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   912
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   913
    // Get generic alert entry from Database for particular server ID.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   914
    TRAPD(err, iAMdb->GetEntryForServerIDL(genericalerts, *serverId));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   915
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   916
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   917
    // Send Pending generic alerts for server
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   918
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   919
    for(i=0; i<genericalerts.Count(); i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   920
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   921
    	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   922
    if (genericalerts.Count()!= 0 && err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   923
        {  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   924
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   925
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   926
       
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   927
            internalid = genericalerts[i]->iLUID;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   928
           
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   929
            // Get Target URI and Final Generic Alert result from App. Mgmt. Server 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   930
            // database.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   931
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   932
            TRAPD(err, SessionL().GetFinalResultsForGAL(internalid, finalresult,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   933
                    targetURIGet));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   934
                    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   935
            // If data in SCOMO DB is inconsistent with AM Server DB or
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   936
            // if it exceeds retry count then delete that entry from adapter
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   937
            // and server database
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   938
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   939
            if(finalresult <= KErrNone || err!=KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   940
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   941
            	iAMdb->DeleteFromDatabaseL(internalid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   942
            	User::Leave(KErrGeneral);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   943
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   944
	         
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   945
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   946
            TBuf8<6> dataresult;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   947
            dataresult.Num(finalresult);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   948
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   949
            TPtrC8 mapping(NSmlDmURI::LastURISeg(targetURIGet) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   950
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   951
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   952
            TInt retryupdate = iAMdb->GetRetryCountForLuidL(internalid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   953
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   954
            // If retryupdate in Zero then delete its entry from 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   955
            // database.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   956
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   957
            if(retryupdate == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   958
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   959
            iAMdb->DeleteFromDatabaseL(internalid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   960
            SessionL().GenericAlertSentL(internalid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   961
            User::Leave(KErrCompletion);	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   962
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   963
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   964
            // Decrement the retry count and update in database for
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   965
            // that internalid.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   966
            iAMdb->UpdateRetryCountForLuidL(internalid, --retryupdate);    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   967
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   968
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   969
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   970
            // open handle to private api
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   971
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   972
            RNSmlPrivateAPI privateAPI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   973
            privateAPI.OpenL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   974
            CleanupClosePushL(privateAPI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   975
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   976
            RArray<CNSmlDMAlertItem> iItemArray;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   977
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   978
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   979
    		CNSmlDMAlertItem* item = new (ELeave) CNSmlDMAlertItem ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   980
    		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   981
    		HBufC8 *data = HBufC8::NewL(1024);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   982
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   983
            TPtr8 ptr = data->Des();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   984
            //ptr.Append(KDataStart);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   985
            ptr.Append(KResultCodeStart);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   986
            ptr.Append(dataresult);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   987
            ptr.Append(KResultCodeEnd);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   988
            ptr.Append(KIdentifierStart);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   989
            ptr.Append(mapping);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   990
            ptr.Append(KIdentifierEnd);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   991
            //ptr.Append(KDataEnd);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   992
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   993
            HBufC8 *sourceuri = genericalerts[i]->iSourceURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   994
    		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   995
    		item->iSource = sourceuri;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   996
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   997
			HBufC8 *targeturi = targetURIGet.AllocL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   998
    		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   999
    		item->iTarget = targeturi;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1000
    		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1001
    		HBufC8 *metatype = scomometatype.AllocL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1002
    		            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1003
    		item->iMetaType = metatype;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1004
    		            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1005
    		HBufC8 *metaformat = scomometaformat.AllocL();         
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1006
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1007
    		item->iMetaFormat = metaformat;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1008
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1009
    		HBufC8 *metamark = scomomark.AllocL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1010
    		            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1011
    		item->iMetaMark = metamark;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1012
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1013
    		item->iData = data;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1014
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1015
    		iItemArray.AppendL(*item);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1016
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1017
            TRAP_IGNORE(privateAPI.AddDMGenericAlertRequestL(              
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1018
                    *genericalerts[i]->iCorrelator,iItemArray ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1019
                    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1020
                    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1021
            delete data;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1022
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1023
            delete metamark;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1024
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1025
            delete metaformat;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1026
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1027
            delete metatype;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1028
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1029
            delete targeturi;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1030
            delete item;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1031
                    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1032
            iItemArray.Reset();			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1033
			iItemArray.Close();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1034
            CleanupStack::PopAndDestroy( &privateAPI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1035
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1036
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1037
    genericalerts.ResetAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1038
    CleanupStack::PopAndDestroy(); //serverid
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1039
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1040
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1041
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1042
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1043
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1044
// CSCOMOAdapter::SessionL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1045
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1046
RApplicationManagement &CSCOMOAdapter::SessionL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1047
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1048
    if ( !iSessionOpened)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1049
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1050
        TCertInfo info;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1051
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1052
        const TUid KCentralRepositoryUid =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1053
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1054
            0x10207843
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1055
            };
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1056
        const TInt KCertKey = 0x01;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1057
        CRepository *re= NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1058
        TRAPD( errx, re = CRepository::NewL ( KCentralRepositoryUid ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1059
        if (errx == KErrNone && re)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1060
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1061
            TPckg<TCertInfo> pcert(info);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1062
            errx = re->Get(KCertKey, pcert) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1063
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1064
            RDEBUG_2("aCertInfo.iFingerprint.Length() is  %u",info.iFingerprint.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1065
            if (errx == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1066
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1067
                RDEBUG("CSCOMOAdapter::SessionL() errx == KErrNone");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1068
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1069
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1070
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1071
                if (errx != KErrNotFound)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1072
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1073
                    RDEBUG("CSCOMOAdapter::SessionL() errx != KErrNotFound");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1074
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1075
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1076
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1077
                    RDEBUG("CSCOMOAdapter::SessionL() errx == KErrNotFound");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1078
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1079
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1080
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1081
            delete re;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1082
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1083
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1084
        if (errx == KErrNotFound || !iCertRequired)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1085
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1086
            RDEBUG("CSCOMOAdapter::SessionL() calling iManagement.Connect()");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1087
            User::LeaveIfError(iManagement.Connect() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1088
            iSessionOpened = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1089
            iTrustAdded = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1090
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1091
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1092
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1093
            RDEBUG("CSCOMOAdapter::SessionL() calling iManagement.Connect( info )");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1094
            User::LeaveIfError(iManagement.Connect(info) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1095
            iSessionOpened = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1096
            iTrustAdded = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1097
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1098
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1099
    return iManagement;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1100
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1101
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1102
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1103
//  CSCOMOAdapter::UpdateLeafObjectL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1104
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1105
void CSCOMOAdapter::UpdateLeafObjectL(const TDesC8& aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1106
        const TDesC8& aLUID, const TDesC8& aObject, const TDesC8& aType,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1107
        TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1108
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1109
    RDEBUG8_4("CSCOMOAdapter::UpdateLeafObjectL(): begin, '%S', '%S' '%S'", &aURI, &aLUID, &aType );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1110
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1111
    MSmlDmAdapter::TError status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1112
    SetAdapterValue(KAMSCOMOAdapter);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1113
    _UpdateLeafObjectL(aURI, aLUID, aObject, aType, aStatusRef, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1114
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1115
    SetStatusL(aStatusRef, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1116
    if (status == EOk)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1117
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1118
        if (iInAtomic)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1119
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1120
            iBuffer.Append(TAMCommandBufferElement(aStatusRef, aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1121
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1122
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1123
    RDEBUG_2("CSCOMOAdapter::UpdateLeafObjectL(): end (%d)", status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1124
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1125
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1126
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1127
//  CSCOMOAdapter::UpdateLeafObjectL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1128
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1129
void CSCOMOAdapter::_UpdateLeafObjectL(const TDesC8& aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1130
        const TDesC8& aLUID, const TDesC8& aObject, const TDesC8& aType,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1131
        TInt /*aStatusRef*/, MSmlDmAdapter::TError& aStatus)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1132
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1133
    RDEBUG("CSCOMOAdapter::_UpdateLeafObjectL(): begin");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1134
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1135
    CheckStateChangesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1136
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1137
    TError status(EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1138
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1139
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1140
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash( aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1141
    TInt numSeqs( NSmlDmURI::NumOfURISegs( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1142
    TPtrC8 mapping( NSmlDmURI::LastURISeg( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1143
    TPtrC8 parent( NSmlDmURI::RemoveLastSeg( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1144
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1145
    TInt numSeqs(NSmlDmURI::NumOfURISegs(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1146
    TPtrC8 mapping(NSmlDmURI::LastURISeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1147
    TPtrC8 parent(NSmlDmURI::RemoveLastSeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1148
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1149
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1150
    if (mapping == KAMNameNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1151
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1152
        if (aObject.Size() > KDeploymentComponentNameMaxLength)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1153
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1154
            aStatus = ETooLargeObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1155
            return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1156
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1157
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1158
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1159
        if (mapping == KAMVersionNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1160
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1161
            if (aObject.Size() > KDeploymentComponentVersionMaxLength)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1162
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1163
                aStatus = ETooLargeObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1164
                return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1165
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1166
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1167
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1168
	if (mapping == KAMURINodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1169
	  {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1170
	   if (aObject.Size() > KMaxUrlLength)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1171
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1172
                aStatus = ETooLargeObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1173
                return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1174
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1175
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1176
	  }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1177
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1178
            if (mapping == KAMConRefNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1179
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1180
                if (aObject.Size() > KMaxConRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1181
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1182
                    aStatus = ETooLargeObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1183
                    return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1184
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1185
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1186
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1187
                if (mapping == KAMDescriptionNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1188
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1189
                    if (aObject.Size() > 512)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1190
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1191
                        aStatus = ETooLargeObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1192
                        return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1193
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1194
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1195
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1196
               if(mapping == KAMPkgIDNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1197
               {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1198
               if(aObject.Size() > 256)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1199
               {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1200
               	aStatus = ETooLargeObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1201
                        return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1202
               }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1203
               }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1204
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1205
              if(mapping == KAMPkgTypeNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1206
              {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1207
                // ADD check for PkgType MIME Type if not supported 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1208
                // error status should be sent and operation should stop
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1209
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1210
              	if(aObject.Size() >100)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1211
              	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1212
              		aStatus = ETooLargeObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1213
                        return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1214
              	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1215
              }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1216
             
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1217
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1218
    TPtrC8 grandParent(NSmlDmURI::RemoveLastSeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1219
    TPtrC8 grandParentMapping(NSmlDmURI::LastURISeg(grandParent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1220
    RApplicationManagement &session = SessionL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1221
    TDeploymentComponentState state(EDCSNone);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1222
    if (numSeqs == 4 || numSeqs == 5)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1223
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1224
        if (numSeqs == 4)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1225
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1226
            state = EDCSDownload;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1227
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1228
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1229
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1230
            if (grandParentMapping == KAMDeliveredNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1231
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1232
                state = EDCSDelivered;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1233
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1234
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1235
                if (grandParentMapping == KAMDeployedNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1236
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1237
                    state = EDCSActive;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1238
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1239
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1240
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1241
                    RDEBUG8_3( "CSCOMOAdapter::UpdateLeafObjectL(): ILLEGAL LEVEL %d NODE %S", numSeqs, &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1242
                    User::Leave(KErrArgument);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1243
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1244
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1245
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1246
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1247
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1248
        RDEBUG8_3("CSCOMOAdapter::UpdateLeafObjectL(): ILLEGAL LEVEL %d NODE %S", numSeqs, &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1249
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1250
    if (state == EDCSDelivered || state == EDCSDownload ||state == EDCSActive
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1251
            ||state == EDCSInactive)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1252
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1253
        if (aLUID != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1254
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1255
            TInt iluid(DesToIntL(aLUID) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1256
            TDeploymentComponent comp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1257
            TInt err(session.DeploymentComponent(iluid, comp) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1258
            if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1259
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1260
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1261
                // Set default component install options for particular iluid.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1262
                TPtrC8 obj;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1263
                TAMInstallOptions opts; 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1264
                TAMInstallOptionsPckg optsb(opts);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1265
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1266
                TBuf<KMaxSizeString> drive;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1267
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1268
                CRepository *rep = CRepository::NewLC(KCRUidPrivateApplicationManagementKeys );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1269
                rep->Get(KDefaultDriveForInstall,drive);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1270
                CleanupStack::PopAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1271
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1272
                //TChar KDefaultDrive = 'c';
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1273
                TChar KDefaultDrive = drive[0]; 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1274
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1275
	 			opts.iOptions.iUpgrade = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1276
     			opts.iOptions.iOptionalItems = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1277
     			opts.iOptions.iOCSP = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1278
     			opts.iOptions.iIgnoreOCSPWarnings = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1279
					
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1280
     			opts.iOptions.iUntrusted = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1281
     			opts.iOptions.iPackageInfo = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1282
     			opts.iOptions.iCapabilities = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1283
     			opts.iOptions.iKillApp = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1284
     			opts.iOptions.iOverwrite = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1285
     			opts.iOptions.iDownload = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1286
     			opts.iOptions.iDrive = KDefaultDrive;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1287
     			opts.iOptions.iLang = ELangNone;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1288
     			opts.iOptions.iUsePhoneLang = EFalse ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1289
     			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1290
     			obj.Set(optsb);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1291
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1292
                TRAP_IGNORE( session.UpdateDeploymentComponentL( iluid, EDCInstallOptions, obj ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1293
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1294
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1295
                TDeplCompAttrType fl(UpdateFlagFromMapping(mapping) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1296
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1297
                if (mapping == KAMDataNodeName || mapping
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1298
                        == KAMDescriptorNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1299
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1300
                    TInt erx(KErrNone);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1301
                    if ((mapping == KAMDataNodeName) &&(RecognizeMimeType(aType)== EFalse))
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1302
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1303
                        User::Leave(EInvalidObject);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1304
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1305
                    if (iIsStreamedContent)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1306
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1307
                        CloseStreaming();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1308
                        TRAP( erx, session.UpdateDeploymentComponentStreamedDataL( iluid, fl, aType ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1309
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1310
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1311
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1312
                        // 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1313
                        TRAP( erx, session.UpdateDeploymentComponentDataL( iluid, fl, aObject, aType ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1314
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1315
                    MAPERROR( erx, status, _L8("Update Delivered Data or metadata %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1316
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1317
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1318
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1319
                    if (fl != EDCNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1320
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1321
                        TPtrC8 obj;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1322
                        TAMInstallOptions opts;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1323
                        TAMInstallOptionsPckg optsb(opts);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1324
                        TPckgBuf<TInt> iap;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1325
                        if (fl == EDCInstallOptions)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1326
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1327
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1328
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1329
                            if (fl == EDCConRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1330
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1331
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1332
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1333
                                //CNSmlDMIAPMatcher* iapfinder = CNSmlDMIAPMatcher::NewLC( &Callback() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1334
                                //TInt i( iapfinder->IAPIdFromURIL( aObject ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1335
                                //CleanupStack::PopAndDestroy( iapfinder );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1336
                                //iap() = i;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1337
                                CArrayFix<TSmlDmMappingInfo>* mapArray = new CArrayFixFlat<TSmlDmMappingInfo>(4);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1338
                                CleanupStack::PushL(mapArray);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1339
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1340
                                Callback().GetMappingInfoListL( KNSmlDMMMSSlashIAPUri,*mapArray );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1341
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1342
                                TInt iapValue = KErrNotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1343
                                TSmlDmMappingInfo mapInfo;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1344
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1345
                                for(TInt i = 0;i<mapArray->Count();i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1346
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1347
                                    if(LastURISeg(opts.iConRef)==mapArray->At(i).iURISeg)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1348
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1349
                                        iapValue=DesToInt(mapArray->At(i).iURISegLUID);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1350
                                        break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1351
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1352
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1353
                                iap() = iapValue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1354
                                mapArray->Reset();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1355
                                CleanupStack::PopAndDestroy(); //mapArray
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1356
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1357
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1358
                                CNSmlDMIAPMatcher
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1359
                                        * iapfinder =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1360
                                                CNSmlDMIAPMatcher::NewLC( &Callback() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1361
                                TInt i(iapfinder->IAPIdFromURIL(aObject) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1362
                                CleanupStack::PopAndDestroy(iapfinder);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1363
                                iap() = i;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1364
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1365
                                obj.Set(iap);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1366
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1367
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1368
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1369
                                obj.Set(aObject);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1370
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1371
                        TRAPD( erx, session.UpdateDeploymentComponentL( iluid, fl, obj ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1372
                        ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1373
                        MAPERROR( erx, status, _L8("Update some attribute %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1374
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1375
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1376
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1377
                        status = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1378
                        RDEBUG( "CSCOMOAdapter::UpdateLeafObjectL(): Unknown Target leaf" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1379
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1380
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1381
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1382
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1383
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1384
                RDEBUG_3( "CSCOMOAdapter::UpdateLeafObjectL(): FAILED TO GET COMPONENT OF ID %d: %d" , iluid, err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1385
                status = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1386
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1387
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1388
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1389
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1390
            RDEBUG8_2( "CSCOMOAdapter::UpdateLeafObjectL(): Faild to get luid allocation and find buffered for '%S'", &parent );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1391
            status = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1392
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1393
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1394
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1395
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1396
        RDEBUG8_2( "CSCOMOAdapter::UpdateLeafObjectL(): WARNING Tried to update illegal state leaf! '%S'", &grandParentMapping );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1397
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1398
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1399
    aStatus = status;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1400
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1401
    RDEBUG("CSCOMOAdapter::_UpdateLeafObjectL(): end");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1402
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1403
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1404
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1405
// CSCOMOAdapter::UpdateLeafObjectL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1406
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1407
void CSCOMOAdapter::UpdateLeafObjectL(const TDesC8& aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1408
        const TDesC8& aLUID, RWriteStream*& aStream, const TDesC8& aType,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1409
        TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1410
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1411
    RDEBUG8_4("CSCOMOAdapter::UpdateLeafObjectL() aStream: begin, '%S', '%S' '%S'", &aURI, &aLUID, &aType );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1412
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1413
    TError status(CSmlDmAdapter::EOk);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1414
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1415
    if (iStreamedURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1416
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1417
        delete iStreamedURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1418
        iStreamedURI = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1419
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1420
    iStreamedURI = aURI.AllocL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1421
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1422
    if (iStreamedLuid)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1423
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1424
        delete iStreamedLuid;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1425
        iStreamedLuid = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1426
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1427
    iStreamedLuid = aLUID.AllocL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1428
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1429
    if (iStreamedType)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1430
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1431
        delete iStreamedType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1432
        iStreamedType = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1433
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1434
    iStreamedType = aType.AllocL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1435
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1436
    if (!iStreamOpen)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1437
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1438
        RApplicationManagement &session = SessionL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1439
        TDeplCompAttrType attrType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1440
        TPtrC8 mapping(NSmlDmURI::LastURISeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1441
        TDeplCompAttrType fl(UpdateFlagFromMapping(mapping) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1442
        if (mapping == KAMDataNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1443
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1444
            attrType = EDCData;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1445
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1446
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1447
            if (mapping == KAMDescriptorNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1448
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1449
                attrType = EDCMetaData;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1450
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1451
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1452
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1453
                RDEBUG8_2("CSCOMOAdapter::UpdateLeafObjectL(): Unknown mapping: (%S)", &mapping);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1454
                status = CSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1455
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1456
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1457
        if (status == CSmlDmAdapter::EOk)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1458
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1459
            TInt iluid(DesToIntL(aLUID) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1460
            session.DeploymentComponentTempInstFileL(iluid, iStreamFile,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1461
                    attrType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1462
            iStream.Attach(iStreamFile);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1463
            aStream = &iStream;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1464
            iStreamOpen = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1465
            iIsStreamedContent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1466
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1467
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1468
    if ( !iInAtomic)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1469
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1470
        iStatusRef = aStatusRef;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1471
        Callback().SetStatusL(aStatusRef, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1472
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1473
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1474
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1475
        iBuffer.Append(TAMCommandBufferElement(aStatusRef, aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1476
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1477
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1478
    RDEBUG("CSCOMOAdapter::UpdateLeafObjectL() aStream : end");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1479
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1480
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1481
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1482
// CSCOMOAdapter::UpdateFlagFromMapping( const TDesC8& aMapping )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1483
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1484
TDeplCompAttrType CSCOMOAdapter::UpdateFlagFromMapping(const TDesC8& aMapping)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1485
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1486
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1487
    TDeplCompAttrType res;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1488
    if (aMapping == KAMIDNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1489
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1490
        res = EDCId;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1491
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1492
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1493
        if (aMapping == KAMNameNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1494
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1495
            res = EDCName;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1496
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1497
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1498
            if (aMapping == KAMVersionNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1499
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1500
                res = EDCVersion;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1501
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1502
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1503
                if (aMapping == KAMStateValueNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1504
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1505
                    res = EDCStateValue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1506
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1507
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1508
                    if (aMapping == KAMInstallOptsNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1509
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1510
                        res = EDCInstallOptions;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1511
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1512
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1513
                        if (aMapping == KAMDescriptorNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1514
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1515
                            res = EDCMetaData;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1516
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1517
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1518
                            if (aMapping == KAMDataNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1519
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1520
                                res = EDCData;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1521
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1522
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1523
                                if (aMapping == KAMURINodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1524
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1525
                                    res = EDCDownloadURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1526
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1527
                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1528
                                    if (aMapping == KAMStatusNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1529
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1530
                                         res = EDCStatus;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1531
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1532
                                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1533
                                        if (aMapping == KAMConRefNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1534
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1535
                                            res = EDCConRef;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1536
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1537
                                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1538
                                            if (aMapping
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1539
                                                    == KAMDescriptionNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1540
                                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1541
                                                res = EDCDescriptionRef;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1542
                                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1543
                                              else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1544
                                                if(aMapping == KAMPkgIDNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1545
                                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1546
                                                	res = EDCPkgID;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1547
                                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1548
                                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1549
                                                if(aMapping == KAMPkgTypeNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1550
                                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1551
                                                	res = EDCPkgType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1552
                                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1553
                                                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1554
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1555
                                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1556
                                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1557
                                                //User::Leave( KErrArgument );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1558
                                                res = EDCNone;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1559
                                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1560
    return res;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1561
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1562
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1563
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1564
// CSCOMOAdapter::GetLuidForUserIdL( const TDesC8 &aUserId, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1565
//		const TDeploymentComponentState aState )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1566
// ------------------------------------------------------------------------------------------------	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1567
TUint32 CSCOMOAdapter::GetLuidForUserIdL(const TDesC8 &aUserId,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1568
        const TDeploymentComponentState aState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1569
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1570
    TUint32 ret( 0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1571
    if (aState != EDCSNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1572
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1573
        RElementIdArray array;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1574
        TInt err(SessionL().DeploymentComponentIdsL(array, aState) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1575
        if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1576
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1577
            CleanupClosePushL(array);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1578
            TInt count(array.Count() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1579
            for (TInt i( 0); i < count && ret == 0; i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1580
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1581
                TUint32 el = array[i];
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1582
                TDCUserId dc;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1583
                SessionL().DeploymentComponentUserIdL(el, dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1584
                if (dc == aUserId)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1585
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1586
                    ret = el;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1587
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1588
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1589
            CleanupStack::PopAndDestroy( &array);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1590
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1591
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1592
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1593
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1594
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1595
    return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1596
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1597
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1598
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1599
// CSCOMOAdapter::GetLuid2L( const TDesC8 &aDMLuid, const TDesC8 &aUserId, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1600
//		const TDeploymentComponentState aState, TError &aStatus )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1601
// ------------------------------------------------------------------------------------------------	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1602
TUint32 CSCOMOAdapter::GetLuid2L(const TDesC8 &aDMLuid,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1603
        const TDesC8 &aUserId, const TDeploymentComponentState aState,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1604
        TError &aStatus)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1605
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1606
    TUint32 ret(GetLuidL(aDMLuid, aUserId, aState) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1607
    if ( (TInt32)ret <= 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1608
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1609
        aStatus = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1610
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1611
    return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1612
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1613
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1614
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1615
// CSCOMOAdapter::GetLuidL( const TDesC8 &aDMLuid, const TDesC8 &aUserId, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1616
//		const TDeploymentComponentState aState )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1617
// ------------------------------------------------------------------------------------------------	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1618
TUint32 CSCOMOAdapter::GetLuidL(const TDesC8 &aDMLuid, const TDesC8 &aUserId,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1619
        const TDeploymentComponentState aState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1620
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1621
    TUint32 ret( 0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1622
    if (aDMLuid == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1623
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1624
        ret = GetLuidForUserIdL(aUserId, aState);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1625
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1626
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1627
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1628
        ret = DesToIntL(aDMLuid) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1629
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1630
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1631
    return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1632
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1633
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1634
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1635
// CSCOMOAdapter::DeleteObjectL( const TDesC8& aURI, const TDesC8& aLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1636
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1637
void CSCOMOAdapter::DeleteObjectL(const TDesC8& aURI, const TDesC8& aLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1638
        const TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1639
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1640
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1641
    RDEBUG8_4("CSCOMOAdapter::DeleteObjectL(): begin (%S, %S, %d)" , &aURI, &aLUID, aStatusRef );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1642
    SetAdapterValue(KAMSCOMOAdapter);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1643
    CheckStateChangesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1644
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1645
    TError ret(EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1646
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1647
#ifdef __TARM_SYMBIAN_CONVERGENCY	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1648
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1649
    TInt cnt( NSmlDmURI::NumOfURISegs( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1650
    TPtrC8 mapping( NSmlDmURI::LastURISeg( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1651
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1652
    TInt cnt(NSmlDmURI::NumOfURISegs(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1653
    TPtrC8 mapping(NSmlDmURI::LastURISeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1654
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1655
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1656
	TBuf8<KMaxFullName> temp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1657
	GetPredefinedNodeL(temp);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1658
	TInt comp = mapping.Compare( temp );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1659
		if (temp.Length() && mapping.Compare( temp ) == 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1660
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1661
            MSmlDmAdapter::TError status = MSmlDmAdapter::ENotAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1662
            Callback().SetStatusL( aStatusRef, status );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1663
            return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1664
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1665
    switch (cnt)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1666
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1667
        case 3:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1668
        case 4:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1669
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1670
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1671
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1672
            TPtrC8 which( NSmlDmURI::URISeg( uriPtrc, cnt == 4 ? 3 : 2 ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1673
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1674
            TPtrC8 which(NSmlDmURI::URISeg(aURI, cnt == 4 ? 3 : 2) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1675
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1676
            if (which == KAMDeliveredNodeName || which == KAMDownloadNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1677
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1678
                TUint32 luid(GetLuidL(aLUID, mapping, (which
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1679
                        == KAMDeliveredNodeName
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1680
                                                ? EDCSDelivered
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1681
                                                   : EDCSDownload)) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1682
                if (luid > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1683
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1684
                    TRAPD( err, SessionL().RemoveL( luid ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1685
                    ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1686
                    if (err == KErrNone || err == KErrNotFound)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1687
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1688
                        ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1689
                        Callback().SetMappingL(aURI, KNullDesC8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1690
                        if (err == KErrNone && iInAtomic)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1691
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1692
                            iBuffer.Append(TAMCommandBufferElement(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1693
                                    aStatusRef, aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1694
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1695
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1696
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1697
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1698
                        MAPERROR( err, ret, _L8("Delete %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1699
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1700
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1701
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1702
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1703
                    RDEBUG( "CSCOMOAdapter::DeleteObjectL(): WARNING Object not found" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1704
                    ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1705
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1706
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1707
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1708
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1709
                RDEBUG8_2( "CSCOMOAdapter::DeleteObjectL(): ERROR Removing node %S is not supported", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1710
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1711
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1712
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1713
        default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1714
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1715
            RDEBUG8_3( "CSCOMOAdapter::DeleteObjectL(): ILLEGAL LEVEL %d NODE %S", cnt, &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1716
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1717
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1718
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1719
    SetStatusL(aStatusRef, ret);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1720
    RDEBUG( "CSCOMOAdapter::DeleteObjectL(): end" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1721
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1722
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1723
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1724
// CSCOMOAdapter::DeactivateIfInactive( const TUint aLuidi, const TDeploymentComponentState aTargetState )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1725
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1726
void CSCOMOAdapter::DeactivateIfInactive(const TUint aLuidi,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1727
        const TDeploymentComponentState aTargetState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1728
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1729
    if (aTargetState == EDCSInactive)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1730
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1731
        RDEBUG( "CSCOMOAdapter::DeactivateIfInactive():  deactivating!" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1732
        TRAPD( derr, iManagement.DeactivateL( aLuidi ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1733
        ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1734
        if (derr != KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1735
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1736
            RDEBUG_2("CSCOMOAdapter::DeactivateIfInactive(): ERROR deactivating failed %d", derr );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1737
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1738
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1739
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1740
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1741
void CSCOMOAdapter::InstallL(TUint aLuidi, const TDesC8& aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1742
        const TDesC8& aLUID, const TDeploymentComponentState aTargetState,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1743
        TError &aRet)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1744
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1745
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1746
#ifdef __TARM_SYMBIAN_CONVERGENCY	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1747
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1748
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1749
    //nothing
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1750
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1751
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1752
    TRAPD( err, SessionL().InstallL( aLuidi, aTargetState ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1753
    ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1754
    if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1755
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1756
        // Update the mappings in client to reflect new
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1757
        //		position in the management tree ( Inactive or Active..)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1758
        RDEBUG( "CSCOMOAdapter::InstallL(): Install success!" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1759
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1760
        TPtrC8 aclmapping(URISegsUpTo(aURI, 4) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1761
        SetMappingL(aclmapping, aTargetState, aLUID);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1762
        iManagement.StateChangeComplete(aLuidi);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1763
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1764
        DeactivateIfInactive(aLuidi, aTargetState);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1765
        aRet = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1766
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1767
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1768
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1769
        RDEBUG_2( "CSCOMOAdapter::InstallL(): INSTALL FAILED '%d'" , err);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1770
        MAPERROR( err, aRet, _L8("Install %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1771
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1772
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1773
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1774
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1775
// CSCOMOAdapter::DefaultMapError( const TInt aErr, TError &aRet )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1776
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1777
void CSCOMOAdapter::DefaultMapError(const TInt aErr, TError &aRet,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1778
        const TDesC8&
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1779
#ifdef __AM_LASTERROR_NODE
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1780
        aDes
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1781
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1782
)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1783
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1784
    if (aErr == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1785
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1786
        aRet = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1787
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1788
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1789
        if (aErr == KErrNotFound)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1790
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1791
            aRet = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1792
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1793
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1794
            if (aErr == KErrArgument)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1795
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1796
                aRet = EInvalidObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1797
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1798
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1799
                if (aErr == KErrAlreadyExists)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1800
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1801
                    aRet = EAlreadyExists;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1802
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1803
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1804
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1805
                    aRet = EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1806
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1807
#ifdef __AM_LASTERROR_NODE
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1808
    TInt err = KErrNone;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1809
    TRAP( err, SetErrorL( aDes, aErr ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1810
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1811
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1812
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1813
#ifdef __AM_LASTERROR_NODE	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1814
void CSCOMOAdapter::SetErrorL(const TDesC8& aDes, const TInt aErr)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1815
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1816
    if (aDes != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1817
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1818
        SetLastErrorL(aDes, aErr);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1819
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1820
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1821
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1822
        SetLastErrorL(KStdError, aErr);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1823
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1824
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1825
#endif	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1826
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1827
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1828
// CSCOMOAdapter::ExecuteCommandL( const TDesC8& aURI, const TDesC8& aLUID, const TDesC8& aArgument, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1829
//	const TDesC8& aType, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1830
//	TInt aStatusRef )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1831
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1832
TDownloadTarget CSCOMOAdapter::DownloadTargetL(const TDesC8& aCommand)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1833
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1834
    if (aCommand == KAMDownloadOperationNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1835
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1836
        return EDeliver;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1837
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1838
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1839
        if (aCommand == KAMDownloadAndInstallNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1840
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1841
            return EInstallAndActivate;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1842
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1843
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1844
            if (aCommand == KAMDownloadAndInstallAndInActivateNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1845
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1846
                return EInstall;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1847
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1848
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1849
    RDEBUG8_2( "CSCOMOAdapter::DownloadTargetL(): ASKED OPERATION NOT SUPPORTED Download '%S'", &aCommand );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1850
    User::Leave(KErrArgument);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1851
    // NOTE! will not ever come here! Only to get rid of compiler warning !!
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1852
    return EDeliver;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1853
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1854
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1855
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1856
// CSCOMOAdapter::ExecuteCommandL( const TDesC8& aURI, const TDesC8& aLUID, const TDesC8& aArgument, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1857
//	const TDesC8& aType, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1858
//	TInt aStatusRef )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1859
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1860
void CSCOMOAdapter::ExecuteCommandL(const TDesC8& aURI, const TDesC8& aLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1861
        const TDesC8& aArgument, const TDesC8& /*aType*/, TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1862
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1863
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1864
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1865
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1866
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1867
    //nothing
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1868
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1869
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1870
    RDEBUG8_3("CSCOMOAdapter::ExecuteCommandL(): begin, '%S', '%S'", &aURI, &aLUID );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1871
    SetAdapterValue(KAMSCOMOAdapter);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1872
    CheckStateChangesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1873
    TError ret(EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1874
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1875
    if (aLUID == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1876
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1877
        RDEBUG("CSCOMOAdapter::ExecuteCommandL(): WARNING no valid luid provided" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1878
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1879
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1880
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1881
    TInt cnt( NSmlDmURI::NumOfURISegs( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1882
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1883
    TInt cnt(NSmlDmURI::NumOfURISegs(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1884
#endif	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1885
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1886
    TPtrC8 mapping(NSmlDmURI::LastURISeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1887
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1888
    const TInt KDownloadMappingURILoc = 3;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1889
    switch (cnt)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1890
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1891
        case 5:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1892
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1893
            TUint32 iluid(GetLuidL(aLUID, NSmlDmURI::URISeg(aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1894
                    KDownloadMappingURILoc), EDCSDownload) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1895
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1896
            // Track the Newly added delivered  node to make sure that this reference
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1897
            // of delivered node is removed from Tree DB.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1898
            // This delivered node is removed only if Execute command is successful
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1899
            // by either adding Install, Install& activate etc.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1900
            // This Fix would be applicable in case of DM 1.2. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1901
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1902
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1903
            TPtrC8 urival(URISegsUpTo(aURI, KDownloadMappingURILoc));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1904
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1905
            if (iUriDel)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1906
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1907
                delete iUriDel;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1908
                iUriDel = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1909
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1910
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1911
            iUriDel = urival.AllocL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1912
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1913
            RDEBUG_2("CSCOMOAdapter::ExecuteCommandL(): luid is %d", iluid );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1914
            if (iluid > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1915
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1916
                TDownloadTarget target = DownloadTargetL(mapping);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1917
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1918
                TRAPD( errx, SessionL().StartDownloadL( iluid, target ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1919
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1920
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1921
                //Check If Sync is supported. Default is ASyncReporting.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1922
                //If ASyncSupported is 0 mean Sync reporting is supported.  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1923
                TInt ASyncSupported = -1;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1924
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1925
                CRepository *repository=CRepository::NewLC ( KCRUidPrivateApplicationManagementKeys );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1926
                repository->Get(KAsyncEnabled,ASyncSupported);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1927
                CleanupStack::PopAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1928
                    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1929
				if(errx == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1930
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1931
                if (ASyncSupported)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1932
                    ASyncReportL(iluid, aArgument, target, aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1933
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1934
                    SyncReportL(iluid, aArgument, target, aURI, ret);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1935
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1936
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1937
                if (target == EInstall || target == EInstallAndActivate)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1938
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1939
                    TInt err(iDbSession.RemoveMappingInfoL(KAMAdapterImplUid,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1940
                            *iUriDel, iluid) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1941
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1942
                if (errx == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1943
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1944
                    RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): StartDownloadL Successful " );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1945
                    if (ASyncSupported)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1946
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1947
                       
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1948
                       ret = EAcceptedForProcessing;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1949
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1950
                        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1951
                    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1952
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1953
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1954
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1955
                    RDEBUG_2( "CSCOMOAdapter::ExecuteCommandL(): StartDownloadL FAILED '%d'", errx );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1956
                    if (errx == KErrNotFound)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1957
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1958
                        ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1959
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1960
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1961
                        if (errx == KErrArgument)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1962
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1963
                            ret = EInvalidObject ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1964
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1965
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1966
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1967
                            ret = EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1968
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1969
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1970
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1971
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1972
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1973
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1974
                ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1975
                RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 5 Not found node" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1976
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1977
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1978
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1979
        case 6:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1980
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1981
            const TInt KInventoryMappingURILoc = 4;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1982
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1983
            // Track the Newly added delivered  node to make sure that this reference
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1984
            // of delivered node is removed from Tree DB.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1985
            // This delivered node is removed only if Execute command is successful
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1986
            // by either adding Install, Install& activate etc.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1987
            // This Fix would be applicable in case of DM 1.2. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1988
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1989
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1990
            TPtrC8 urival(URISegsUpTo(aURI, KInventoryMappingURILoc));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1991
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1992
            if (iUriDel)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1993
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1994
                delete iUriDel;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1995
                iUriDel = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1996
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1997
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1998
            iUriDel = urival.AllocL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1999
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2000
            if (mapping == KAMInstallNodeName || mapping
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2001
                    == KAMInstallInactiveNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2002
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2003
                TUint32 iluid(GetLuidL(aLUID, NSmlDmURI::URISeg(aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2004
                        KInventoryMappingURILoc), EDCSDelivered) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2005
                if (iluid > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2006
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2007
                    TDeploymentComponentState targetstate = ((mapping
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2008
                            == KAMInstallNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2009
                                                   ? EDCSActive
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2010
                                                      : EDCSInactive);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2011
                    InstallL(iluid, aURI, aLUID, targetstate, ret);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2012
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2013
                    TInt err(iDbSession.RemoveMappingInfoL(KAMAdapterImplUid,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2014
                            *iUriDel, iluid) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2015
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2016
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2017
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2018
                    ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2019
                    RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 install Not found node" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2020
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2021
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2022
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2023
                if (mapping == KAMRemoveNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2024
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2025
                    TPtrC8 parent( NSmlDmURI::RemoveLastSeg( urival ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2026
                    TPtrC8 ParentMapping( NSmlDmURI::LastURISeg( parent ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2027
                    TUint32 iluid(0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2028
                    if ( ParentMapping == KAMDeliveredNodeName )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2029
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2030
                        iluid = GetLuidL(aLUID, NSmlDmURI::URISeg(aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2031
                                                    KInventoryMappingURILoc), EDCSDelivered) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2032
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2033
                    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2034
                    else if ( ParentMapping == KAMDeployedNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2035
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2036
                        iluid = GetLuidL(aLUID, NSmlDmURI::URISeg(aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2037
                                KInventoryMappingURILoc), EDCSActive) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2038
                        if ( (TInt32)iluid <= 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2039
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2040
                            iluid = GetLuidL(aLUID, NSmlDmURI::URISeg(aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2041
                                    KInventoryMappingURILoc), EDCSInactive) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2042
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2043
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2044
                    if (iluid > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2045
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2046
                        TRAPD( err, SessionL().RemoveL( iluid ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2047
                        ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2048
                        if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2049
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2050
                            RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): Remove success!" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2051
                            TPtrC8 aclmapping(URISegsUpTo(aURI, 4) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2052
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2053
                            // "Nullify" the mapping for argument
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2054
                           err = iDbSession.RemoveMappingInfoL(KAMAdapterImplUid, aclmapping);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2055
                            if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2056
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2057
                                ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2058
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2059
                            if (iInAtomic)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2060
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2061
                                iBuffer.Append(TAMCommandBufferElement(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2062
                                        aStatusRef, aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2063
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2064
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2065
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2066
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2067
                            RDEBUG_2( "CSCOMOAdapter::ExecuteCommandL(): Remove FAILED '%d'", err);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2068
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2069
                            if (err == SwiUI::KSWInstErrUserCancel)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2070
                                ret = EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2071
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2072
                                MAPERROR( err, ret, _L8("Execute Remove %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2073
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2074
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2075
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2076
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2077
                        ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2078
                        RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 remove Not found node" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2079
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2080
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2081
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2082
                            if (mapping == KAMActivateNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2083
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2084
                                //DBG_ARGS8( "CSCOMOAdapter::ExecuteCommandL(): Activating " );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2085
                                TUint32 iluid(GetLuidL(aLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2086
                                        NSmlDmURI::URISeg(aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2087
                                                KInventoryMappingURILoc),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2088
                                        EDCSActive) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2089
                                if ( (TInt32)iluid <= 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2090
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2091
                                    iluid = GetLuidL(aLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2092
                                            NSmlDmURI::URISeg(aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2093
                                                    KInventoryMappingURILoc),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2094
                                            EDCSInactive) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2095
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2096
                                if (iluid > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2097
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2098
                                    TRAP_IGNORE( SessionL().ActivateL( iluid ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2099
                                    ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2100
								
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2101
                                    //MAPERROR( erx, ret, _L8("Activate %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2102
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2103
                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2104
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2105
                                    ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2106
                                    RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 Activate Not found node" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2107
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2108
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2109
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2110
                                if (mapping == KAMDeActivateNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2111
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2112
                                    //DBG_ARGS8( "CSCOMOAdapter::ExecuteCommandL(): Inactivating " );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2113
                                    TUint32 iluid(GetLuidL(aLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2114
                                            NSmlDmURI::URISeg(aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2115
                                                    KInventoryMappingURILoc),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2116
                                            EDCSActive) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2117
                                    if ( (TInt32)iluid <= 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2118
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2119
                                        iluid
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2120
                                                = GetLuidL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2121
                                                        aLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2122
                                                        NSmlDmURI::URISeg(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2123
                                                                aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2124
                                                                KInventoryMappingURILoc),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2125
                                                        EDCSInactive) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2126
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2127
                                    if (iluid > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2128
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2129
                                        TRAP_IGNORE(SessionL().DeactivateL( iluid ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2130
                                        ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2131
										ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2132
                                        //MAPERROR( erx, ret,_L8("Dectivate %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2133
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2134
                                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2135
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2136
                                        ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2137
                                        RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 DeActivate Not found node" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2138
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2139
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2140
                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2141
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2142
                                    RDEBUG8_2( "CSCOMOAdapter::ExecuteCommandL(): ASKED NOT SUPPORTED OPERATION '%S'", &mapping );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2143
                                    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2144
                                    ret = EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2145
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2146
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2147
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2148
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2149
        default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2150
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2151
            RDEBUG8_3( "CSCOMOAdapter::ExecuteCommandL(): ILLEGAL LEVEL %d NODE %S", cnt, &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2152
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2153
            ret = EInvalidObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2154
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2155
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2156
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2157
    SetStatusL(aStatusRef, ret) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2158
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2159
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2160
void CSCOMOAdapter::ASyncReportL(TUint32 aLuid, const TDesC8& aArgument,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2161
        const TDownloadTarget aTarget,const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2162
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2163
    // while sending generic alert
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2164
    // adapter uses entry stored in database and constructs generic alert
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2165
    // using SyncML framework API.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2166
    TInt index = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2167
	// Default max retry count is 5. It is also cenep configurable
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2168
	// Cenrep configuration responsible can change the max retry 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2169
	// count
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2170
    TInt retrycount = 5;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2171
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2172
    CRepository *repository = CRepository::NewLC ( KCRUidPrivateApplicationManagementKeys );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2173
    repository->Get(KMaxRetryCount,retrycount);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2174
    CleanupStack::PopAndDestroy(); //repository
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2175
      
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2176
    TSmlProfileId profId = KErrNotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2177
    HBufC8* serverId= NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2178
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2179
    //Retrive Server Information
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2180
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2181
    GetServerInfoL(profId, serverId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2182
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2183
    CleanupStack::PushL(serverId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2184
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2185
    //Add Download entry to database
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2186
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2187
    iAMdb->SaveToDatabaseL(index, aLuid, profId, retrycount, aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2188
           *serverId, aArgument);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2189
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2190
    CleanupStack::PopAndDestroy(serverId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2191
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2192
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2193
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2194
void CSCOMOAdapter::SyncReportL(TUint32 aLuid, const TDesC8& aArgument,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2195
        const TDownloadTarget aTarget,const TDesC8& aURI, TError &aRet )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2196
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2197
    TInt status = KStatusSuccess;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2198
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2199
    RProperty counter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2200
    TInt r=counter.Attach(KUidPSApplicationManagementKeys, KSyncNotifier,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2201
            EOwnerThread);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2202
    User::LeaveIfError(r);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2203
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2204
    /*CSyncService *syncService = CSyncService::NewL(NULL, KDevManServiceStart);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2205
    if (syncService)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2206
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2207
        syncService->EnableProgressNoteL(EFalse);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2208
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2209
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2210
    delete syncService;*/
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2211
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2212
    // wait for the previously attached ‘counter’ property to be updated
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2213
    TRequestStatus s;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2214
    counter.Subscribe(s);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2215
    User::WaitForRequest(s);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2216
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2217
    CRepository *repository = CRepository::NewLC ( KCRUidPrivateApplicationManagementKeys );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2218
    repository->Get(KAMSyncStatus,status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2219
    CleanupStack::PopAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2220
                		   
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2221
		switch(status)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2222
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2223
			case KStatusUserCancelled:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2224
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2225
				aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2226
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2227
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2228
			               
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2229
			case KStatusDowloadFailedOOM:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2230
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2231
				aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2232
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2233
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2234
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2235
			case KStatusAlternateDownldAuthFail:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2236
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2237
			    aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2238
			    break;	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2239
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2240
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2241
			case KStatusDownloadFailed:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2242
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2243
				aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2244
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2245
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2246
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2247
			case KStatusPkgValidationFailed:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2248
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2249
				aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2250
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2251
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2252
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2253
			case KStatusInstallFailedOOM:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2254
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2255
				aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2256
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2257
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2258
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2259
			case KStatusInstallFailed:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2260
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2261
				aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2262
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2263
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2264
		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2265
		  case KStatusUnSupportedEnvironment:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2266
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2267
				aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2268
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2269
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2270
			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2271
			case KStatusAltDowldUnavailable:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2272
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2273
				aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2274
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2275
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2276
		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2277
			default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2278
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2279
			    aRet = MSmlDmAdapter::EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2280
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2281
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2282
		}                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2283
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2284
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2285
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2286
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2287
void CSCOMOAdapter::GetServerInfoL(TSmlProfileId& aProfId, HBufC8*& aServerId) const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2288
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2289
    // Open session
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2290
    RSyncMLSession session;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2291
    session.OpenL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2292
    CleanupClosePushL(session);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2293
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2294
    // get current job's id (and usage type)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2295
    TSmlJobId jobId = KErrNotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2296
    TSmlUsageType type = ESmlDevMan;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2297
    session.CurrentJobL(jobId, type);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2298
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2299
    // open currently running job
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2300
    RSyncMLDevManJob dmJob;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2301
    dmJob.OpenL(session, jobId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2302
    CleanupClosePushL(dmJob);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2303
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2304
    // get job's profile id
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2305
    aProfId = dmJob.Profile();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2306
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2307
    // open profile using id in read-only mode
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2308
    RSyncMLDevManProfile dmProf;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2309
    dmProf.OpenL(session, aProfId, ESmlOpenRead);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2310
    CleanupClosePushL(dmProf);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2311
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2312
    // get profile's server id
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2313
    aServerId = dmProf.ServerId().AllocL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2314
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2315
    // close handles
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2316
    CleanupStack::PopAndDestroy( &dmProf);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2317
    CleanupStack::PopAndDestroy( &dmJob);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2318
    CleanupStack::PopAndDestroy( &session);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2319
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2320
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2321
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2322
// CSCOMOAdapter::UpdateL( 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2323
// 	const TUint aLuidi, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2324
// 	const TDesC8& aURI, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2325
// 	const TDesC8& aSourceLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2326
// 	const TDeploymentComponentState aTargetState,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2327
// 	TError &aRet
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2328
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2329
void CSCOMOAdapter::UpdateL(const TUint aLuidi, const TDesC8& aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2330
        const TDesC8& aSourceLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2331
        const TDeploymentComponentState aTargetState, TError &aRet)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2332
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2333
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2334
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2335
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2336
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2337
    //nothing
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2338
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2339
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2340
    CBufBase *delivered = CBufFlat::NewL( 128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2341
    CleanupStack::PushL(delivered);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2342
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2343
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2344
    TPtrC8 aclmapping( NSmlDmURI::URISeg( uriPtrc, 4 ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2345
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2346
    TPtrC8 aclmapping(NSmlDmURI::URISeg(aURI, 4) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2347
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2348
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2349
    HBufC8 *targetURI = HBufC8::NewLC(KDeployedURI().Length() + aclmapping.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2350
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2351
    TPtr8 targetPtr(targetURI->Des() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2352
    targetPtr.Copy(KDeployedURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2353
    targetPtr.Append(aclmapping);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2354
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2355
    HBufC8 *deployed = Callback().GetLuidAllocL(targetPtr) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2356
    CleanupStack::PushL(deployed);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2357
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2358
    //DBG_ARGS8( "CSCOMOAdapter::UpdateL(): Updating '%S' luid: '%S'" ), &targetPtr, &(*deployed));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2359
    if ( *deployed == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2360
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2361
        //DBG_ARGS8( "CSCOMOAdapter::UpdateL(): Failed to find to update target '%S'" ), &targetPtr );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2362
        aRet = EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2363
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2364
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2365
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2366
        // Found delivered & active or inactive components! Do update!
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2367
        TInt depluid(DesToIntL( *deployed ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2368
        TRAPD( erx, SessionL().UpdateL( aLuidi, depluid ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2369
        ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2370
        MAPERROR( erx, aRet,_L8("Update %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2371
        if (erx == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2372
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2373
            SetMappingLC(aclmapping, aTargetState, aSourceLUID, targetURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2374
            DeactivateIfInactive(aLuidi, aTargetState);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2375
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2376
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2377
    CleanupStack::PopAndDestroy(deployed) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2378
    CleanupStack::PopAndDestroy(targetURI) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2379
    CleanupStack::PopAndDestroy(delivered) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2380
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2381
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2382
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2383
//  CSCOMOAdapter::CheckStateL( const TDeploymentComponent &aComp, const TDesC8& aURI
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2384
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2385
TBool CSCOMOAdapter::CheckStateL(const TDeploymentComponent &aComp,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2386
        const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2387
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2388
	TBool ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2389
	if ((aComp.iState ==  EDCSDelivered) || (aComp.iState == EDCSActive) || ( aComp.iState == EDCSInactive) || (aComp.iState == EDCSDownload))
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2390
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2391
        // Check for map & __TARM_SYMBIAN_CONVERGENCY also ?
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2392
        ret = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2393
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2394
	else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2395
	    ret = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2396
	return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2397
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2398
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2399
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2400
//  CSCOMOAdapter::StateL( const TDeploymentComponent &aComp, const TDesC8& aURI
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2401
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2402
TDeploymentComponentState CSCOMOAdapter::StateL(const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2403
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2404
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2405
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2406
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2407
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2408
    //nothing
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2409
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2410
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2411
    TDeploymentComponentState ret(EDCSNone);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2412
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2413
    TInt cnt( NSmlDmURI::NumOfURISegs( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2414
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2415
    TInt cnt(NSmlDmURI::NumOfURISegs(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2416
#endif	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2417
    if (cnt > 2)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2418
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2419
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2420
        TPtrC8 map( NSmlDmURI::URISeg( uriPtrc, 2 ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2421
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2422
        TPtrC8 map(NSmlDmURI::URISeg(aURI, 2) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2423
#endif	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2424
        if (map == KAMInventoryNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2425
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2426
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2427
            TPtrC8 map( NSmlDmURI::URISeg( uriPtrc, 2 ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2428
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2429
            TPtrC8 map(NSmlDmURI::URISeg(aURI, 2) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2430
#endif	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2431
            map.Set(NSmlDmURI::URISeg(aURI, 3) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2432
            if (map == KAMDeployedNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2433
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2434
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2435
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2436
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2437
                if (map == KAMDeliveredNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2438
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2439
                    ret = EDCSDelivered;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2440
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2441
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2442
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2443
                    User::Leave(KErrArgument);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2444
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2445
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2446
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2447
            if (map == KAMDownloadNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2448
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2449
                ret = EDCSDownload;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2450
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2451
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2452
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2453
                User::Leave(KErrArgument);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2454
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2455
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2456
    return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2457
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2458
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2459
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2460
//  CSCOMOAdapter::CheckStateL( const TDesC8& aURI, const TDesC8& aLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2461
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2462
TBool CSCOMOAdapter::CheckStateL(const TDesC8& aURI, const TDesC8& aLUID)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2463
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2464
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2465
    TUint32 iluid(DesToIntL(aLUID) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2466
    TDeploymentComponent comp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2467
    TInt err(SessionL().DeploymentComponent(iluid, comp) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2468
    TBool ret(EFalse);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2469
    if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2470
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2471
        ret = CheckStateL(comp, aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2472
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2473
    return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2474
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2475
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2476
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2477
//  CSCOMOAdapter::InstallOptionsDataL(const TUint32 iluid, const TDeplCompAttrType& aDataType, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2478
//		CBufBase &aBuf, CBufBase *aRaw/*= NULL*/)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2479
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2480
void CSCOMOAdapter::InstallOptionsDataL(const TUint32 iluid,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2481
        const TDeplCompAttrType& aDataType, CBufBase &aBuf, CBufBase *aRaw/*= NULL*/)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2482
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2483
    TAMInstallOptionsPckgBuf iop;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2484
    TBool pushed(EFalse);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2485
    if ( !aRaw)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2486
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2487
        aRaw = CBufFlat::NewL(32);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2488
        CleanupStack::PushL(aRaw);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2489
        pushed = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2490
        SessionL().DeploymentComponentDataL(iluid, aDataType, *aRaw);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2491
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2492
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2493
    iop.Copy(aRaw->Ptr( 0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2494
    if (pushed)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2495
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2496
        CleanupStack::PopAndDestroy(aRaw);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2497
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2498
    InstallOptionsParser::SerializeOptionsL(iop(), aBuf);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2499
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2500
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2501
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2502
//  CSCOMOAdapter::GetComponentDataL( const TDesC8& parent, const TDesC8& mapping, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2503
//		const TUint32 iluid, CBufBase *currentList, CBufBase *currentMime, TError &status )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2504
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2505
void CSCOMOAdapter::GetComponentDataL(const TDesC8& parent,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2506
        const TDesC8& mapping, const TUint32 iluid, CBufBase &currentList,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2507
        CBufBase &currentMime, TError &status)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2508
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2509
    TDeploymentComponent comp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2510
    TInt err(SessionL().DeploymentComponent(iluid, comp) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2511
    if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2512
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2513
        RDEBUG_3( "CSCOMOAdapter::GetComponentDataL(): DeploymentComponent response: %d, state: %d", err, comp.iState );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2514
        if (CheckStateL(comp, parent) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2515
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2516
            if (mapping == KAMPkgIDNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2517
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2518
                currentList.InsertL( 0, comp.iPkgID);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2519
                status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2520
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2521
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2522
                if (mapping == KAMNameNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2523
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2524
                    currentList.InsertL( 0, comp.iName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2525
                    status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2526
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2527
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2528
                    if (mapping == KAMVersionNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2529
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2530
                        currentList.InsertL( 0, comp.iVersion);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2531
                        status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2532
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2533
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2534
                   if(mapping == KAMIDNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2535
                   {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2536
                   	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2537
                        currentList.InsertL( 0, comp.iId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2538
                        status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2539
                        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2540
                   }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2541
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2542
                   if(mapping == KAMPkgIDRefNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2543
                   {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2544
                   	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2545
                        currentList.InsertL( 0, comp.iPkgIDRef);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2546
                        status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2547
                        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2548
                   }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2549
				else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2550
                   if(mapping == KAMPkgIDNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2551
                   {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2552
                   	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2553
                        currentList.InsertL( 0, comp.iPkgID);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2554
                        status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2555
                        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2556
                   }               
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2557
				else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2558
                   if(mapping == KAMPkgTypeNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2559
                   {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2560
                   	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2561
                        currentList.InsertL( 0, comp.iPkgType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2562
                        status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2563
                        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2564
                   }             
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2565
                else 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2566
                   if ( mapping == KAMStatusNodeName )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2567
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2568
                TDeplCompAttrType dataType( UpdateFlagFromMapping( mapping ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2569
                SessionL().DeploymentComponentDataL( iluid, dataType, currentList );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2570
                status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2571
                }			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2572
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2573
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2574
                        if (mapping == KAMDescriptionNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2575
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2576
                            currentList.InsertL(0, comp.iDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2577
                            status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2578
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2579
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2580
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2581
                            TDeplCompAttrType
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2582
                                    dataType(UpdateFlagFromMapping(mapping) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2583
                            if (comp.iState == EDCSDownload)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2584
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2585
					if ( dataType == EDCDownloadURI )//|| dataType == EDCDownloadStatus )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2586
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2587
                                    SessionL().DeploymentComponentDataL(iluid,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2588
                                            dataType, currentList);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2589
                                    status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2590
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2591
                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2592
                                    if (dataType == EDCInstallOptions)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2593
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2594
                                        InstallOptionsDataL(iluid, dataType,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2595
                                                currentList);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2596
                                        status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2597
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2598
                                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2599
                                        if (dataType == EDCConRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2600
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2601
                                            CBufBase *b = CBufFlat::NewL(4);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2602
                                            CleanupStack::PushL(b);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2603
                                            SessionL().DeploymentComponentDataL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2604
                                                    iluid, dataType, *b);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2605
                                            TPckgBuf<TInt> iap;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2606
                                            iap.Copy(b->Ptr( 0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2607
                                            CleanupStack::PopAndDestroy(b);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2608
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2609
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2610
                                            CArrayFix<TSmlDmMappingInfo>* mapArray = new CArrayFixFlat<TSmlDmMappingInfo>(4);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2611
                                            CleanupStack::PushL(mapArray);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2612
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2613
                                            Callback().GetMappingInfoListL( KNSmlDMMMSSlashIAPUri,*mapArray );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2614
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2615
                                            //TInt iap = KErrNotFound; 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2616
                                            TSmlDmMappingInfo mapInfo;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2617
                                            HBufC8 * uri = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2618
                                            TPtr8 tempURI(uri->Des());
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2619
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2620
                                            for(TInt i = 0;i<mapArray->Count();i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2621
                                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2622
                                                if(iap()==DesToInt(mapArray->At(i).iURISegLUID))
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2623
                                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2624
                                                    tempURI=mapArray->At(i).iURISeg;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2625
                                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2626
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2627
                                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2628
                                            mapArray->Reset();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2629
                                            CleanupStack::PopAndDestroy(); //mapArray
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2630
                                            if ( uri != NULL )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2631
                                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2632
                                                CleanupStack::PushL( uri );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2633
                                                currentList.InsertL( 0, *uri );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2634
                                                CleanupStack::PopAndDestroy( uri );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2635
                                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2636
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2637
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2638
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2639
                                            CNSmlDMIAPMatcher
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2640
                                                    * iapfinder =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2641
                                                            CNSmlDMIAPMatcher::NewLC( &Callback() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2642
                                            HBufC8
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2643
                                                    * uri =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2644
                                                            iapfinder->URIFromIAPIdL(iap() ) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2645
                                            CleanupStack::PopAndDestroy(iapfinder);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2646
                                            if (uri != NULL)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2647
                                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2648
                                                CleanupStack::PushL(uri) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2649
                                                currentList.InsertL( 0, *uri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2650
                                                CleanupStack::PopAndDestroy(uri) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2651
                                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2652
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2653
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2654
                                            status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2655
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2656
                                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2657
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2658
                                            RDEBUG8_2( "CSCOMOAdapter::GetComponentDataL(): ASKED NOT SUPPORTED LEAF '%S'", &mapping );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2659
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2660
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2661
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2662
                                if (comp.iState == EDCSDelivered)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2663
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2664
                                    if(mapping == KAMStateValueNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2665
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2666
                                      currentList.InsertL( 0,KAMStateValueDelivered() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2667
                                      status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2668
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2669
                                    if (dataType == EDCData || dataType
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2670
                                            == EDCMetaData || dataType
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2671
                                            == EDCInstallOptions)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2672
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2673
                                        CBufBase *raw = CBufFlat::NewL( 128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2674
                                        CleanupStack::PushL(raw);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2675
                                        SessionL().DeploymentComponentDataL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2676
                                                iluid, dataType, *raw);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2677
                                        TPtrC8 source(raw->Ptr(0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2678
                                        if (source.Length() > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2679
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2680
                                            if (dataType == EDCData)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2681
                                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2682
                                                currentList.InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2683
                                                        source);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2684
                                                SessionL().DeploymentComponentDataL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2685
                                                        iluid, EDCDataMime,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2686
                                                        currentMime);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2687
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2688
                                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2689
                                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2690
                                                if (dataType
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2691
                                                        == EDCInstallOptions)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2692
                                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2693
                                                    InstallOptionsDataL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2694
                                                            iluid, dataType,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2695
                                                            currentList, raw);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2696
                                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2697
                                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2698
                                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2699
                                                    currentList.InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2700
                                                            source);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2701
                                                    SessionL().DeploymentComponentDataL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2702
                                                            iluid,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2703
                                                            EDCMetaDataMime,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2704
                                                            currentMime);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2705
                                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2706
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2707
                                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2708
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2709
                                            // 0 data length...
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2710
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2711
                                        status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2712
                                        CleanupStack::PopAndDestroy(raw);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2713
                                        RDEBUG8_2( "CSCOMOAdapter::GetComponentDataL(): DeploymentComponentDataL called '%S'", &mapping );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2714
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2715
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2716
                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2717
                                    if (dataType == EDCStateValue)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2718
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2719
                                        if (comp.iState == EDCSActive)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2720
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2721
                                            currentList.InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2722
                                                    KAMStateValueActive() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2723
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2724
                                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2725
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2726
                                            currentList.InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2727
                                                    KAMStateValueInactive() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2728
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2729
                                        status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2730
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2731
                                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2732
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2733
                                        RDEBUG8_2( "CSCOMOAdapter::GetComponentDataL(): ERROR ASKED NOT SUPPORTED LEAF '%S'", &mapping );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2734
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2735
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2736
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2737
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2738
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2739
            RDEBUG8_3( "CSCOMOAdapter::GetComponentDataL(): WARNING Asked illegal state leaf '%S', %d", &mapping, comp.iState );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2740
            status = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2741
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2742
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2743
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2744
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2745
        RDEBUG_3( "CSCOMOAdapter::GetComponentDataL(): ERROR FAILED TO GET COMPOMENT OF ID %d: %d", iluid, err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2746
        MAPERROR( err, status,_L8("Get Component %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2747
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2748
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2749
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2750
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2751
//  CSCOMOAdapter::GetLeafLuidL(const TDesC8 &aURI, const TDesC8 & aParentMapping ) 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2752
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2753
TInt CSCOMOAdapter::GetLeafLuidL(const TDesC8 &aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2754
        const TDesC8 & aParentMapping)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2755
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2756
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2757
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2758
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2759
    TInt numSeqs( NSmlDmURI::NumOfURISegs( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2760
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2761
    TInt numSeqs(NSmlDmURI::NumOfURISegs(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2762
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2763
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2764
    TUint32 iluid( 0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2765
    //TInt numSeqs( NSmlDmURI::NumOfURISegs( aURI ) );//Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2766
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2767
    switch (numSeqs)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2768
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2769
        case 4: // must be a download leaf
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2770
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2771
            iluid = GetLuidForUserIdL(aParentMapping, EDCSDownload) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2772
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2773
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2774
        case 5: // download operation or delivered or deployed leaf
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2775
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2776
            if (URISegsUpTo(aURI, 2, ETrue) == KDownloadURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2777
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2778
                RDEBUG8_2( "CSCOMOAdapter::GetLeafLuidL(): WARNING download operation leaf '%S'", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2779
                //status = EOk; 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2780
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2781
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2782
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2783
                TPtrC8 start(URISegsUpTo(aURI, 3, ETrue) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2784
                if (start == KDeliveredURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2785
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2786
                    iluid = GetLuidForUserIdL(aParentMapping, EDCSDelivered) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2787
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2788
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2789
                    if (start == KDeployedURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2790
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2791
                        iluid = GetLuidForUserIdL(aParentMapping, EDCSActive) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2792
                        if ( (TInt32)iluid <= 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2793
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2794
                            iluid = GetLuidForUserIdL(aParentMapping,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2795
                                    EDCSInactive) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2796
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2797
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2798
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2799
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2800
                        RDEBUG8_2( "CSCOMOAdapter::GetLeafLuidL(): WARNING strange uri '%S'", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2801
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2802
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2803
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2804
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2805
        case 6: // delivered or deployed operation leaf
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2806
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2807
            //iluid = GetLuidForUserIdL( parentMapping, EDCSDownload ) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2808
            //status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2809
            RDEBUG8_2( "CSCOMOAdapter::GetLeafLuidL(): WARNING delivered or deployed operation leaf '%S'", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2810
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2811
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2812
        default: // illegal uri
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2813
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2814
            RDEBUG8_2( "CSCOMOAdapter::GetLeafLuidL(): ERROR requested luid of illegal URI '%S'", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2815
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2816
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2817
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2818
    return iluid;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2819
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2820
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2821
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2822
//  CSCOMOAdapter::FetchLeafObjectL( const TDesC8& aURI, const TDesC8& aLUID, const TDesC8& aType, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2823
//			CBufBase& aObject )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2824
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2825
void CSCOMOAdapter::FetchLeafObjectL(const TDesC8& aURI, const TDesC8& aLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2826
        const TDesC8& aType, const TInt aResultsRef, TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2827
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2828
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2829
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2830
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2831
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2832
    //Nothing
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2833
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2834
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2835
    RDEBUG8_4("CSCOMOAdapter::FetchLeafObjectL('%S', '%S', '%S'): begin", &aURI, &aLUID, &aType );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2836
    SetAdapterValue(KAMSCOMOAdapter);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2837
    CheckStateChangesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2838
    TError status(EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2839
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2840
    CBufBase *currentList = CBufFlat::NewL( 128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2841
    CleanupStack::PushL(currentList);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2842
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2843
    CBufBase *currentMime = CBufFlat::NewL( 128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2844
    CleanupStack::PushL(currentMime);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2845
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2846
    TPtrC8 mapping(NSmlDmURI::LastURISeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2847
    TPtrC8 parent(NSmlDmURI::RemoveLastSeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2848
    TPtrC8 parentMapping(NSmlDmURI::LastURISeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2849
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2850
    HBufC8 *luid= NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2851
    if (aLUID != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2852
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2853
        luid = aLUID.AllocLC();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2854
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2855
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2856
        { // try if we find it from download path
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2857
        TBuf8<256> down;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2858
        down = KDownloadURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2859
        down.Append(parentMapping);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2860
        luid = Callback().GetLuidAllocL(down);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2861
        CleanupStack::PushL(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2862
        if ( *luid != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2863
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2864
            // make it to found next time
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2865
            DirectSetMappingL(parent, *luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2866
            MoveAclL(down, parent);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2867
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2868
            // remove old
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2869
            DirectSetMappingL(down, KNullDesC8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2870
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2871
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2872
    if ( *luid != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2873
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2874
        TUint32 iluid(DesToIntL( *luid ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2875
        RDEBUG8_2( "CSCOMOAdapter::FetchLeafObjectL(): Luid is : %d", iluid );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2876
        GetComponentDataL(parent, mapping, iluid, *currentList, *currentMime,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2877
                status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2878
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2879
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2880
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2881
        TUint32 iluid(GetLeafLuidL(aURI, parentMapping) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2882
        if (iluid > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2883
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2884
            HBufC8 *l = IntToDes8LC(iluid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2885
            DirectSetMappingL(parent, *l);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2886
            CleanupStack::PopAndDestroy(l);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2887
            GetComponentDataL(parent, mapping, iluid, *currentList,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2888
                    *currentMime, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2889
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2890
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2891
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2892
            RDEBUG8_2( "CSCOMOAdapter::FetchLeafObjectL(): WARNING Faild to get luid allocation for '%S'", &parent );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2893
            if (aLUID == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2894
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2895
#ifdef __AM_LASTERROR_NODE
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2896
                if (aURI == KAMLastErrorURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2897
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2898
                    const TDesC8& error= LastError();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2899
                    RDEBUG8_2( "CSCOMOAdapter::FetchLeafObjectL(): Returning last error '%S'", &error );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2900
                    currentList->InsertL(0, error);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2901
                    status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2902
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2903
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2904
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2905
                    status = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2906
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2907
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2908
                status = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2909
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2910
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2911
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2912
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2913
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2914
    SetStatusL(aStatusRef, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2915
    if (status == EOk)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2916
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2917
        if (iInAtomic)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2918
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2919
            iBuffer.Append(TAMCommandBufferElement(aStatusRef, aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2920
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2921
        Callback().SetResultsL(aResultsRef, *currentList,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2922
                ( (currentMime->Size() > 0) ? currentMime->Ptr(0) : aType ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2923
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2924
    CleanupStack::PopAndDestroy(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2925
    CleanupStack::PopAndDestroy(currentMime); //currentMime
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2926
    CleanupStack::PopAndDestroy(currentList); //currentList
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2927
    RDEBUG("CSCOMOAdapter::FetchLeafObjectL: end" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2928
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2929
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2930
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2931
//  CSCOMOAdapter::IdListL( TDeploymentComponentState aState, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2932
//					CBufBase *aCurrentList, TBool aAppend /* = EFalse */)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2933
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2934
CSCOMOAdapter::TError CSCOMOAdapter::IdListL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2935
        TDeploymentComponentState aState, CBufBase &aCurrentList,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2936
        TBool aAppend /* = EFalse */)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2937
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2938
	RDEBUG_2( "CSCOMOAdapter::IdListL:Begin aState is %d", aState);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2939
    CSCOMOAdapter::TError ret(CSCOMOAdapter::EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2940
    RElementIdArray array;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2941
    TPtrC8 uriStart;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2942
    TBuf8<256> uri;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2943
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2944
    switch (aState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2945
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2946
        case EDCSDelivered:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2947
            uriStart.Set(KDeliveredURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2948
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2949
        case EDCSActive:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2950
        case EDCSInactive:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2951
            uriStart.Set(KDeployedURI) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2952
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2953
        case EDCSDownload:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2954
            uriStart.Set(KDownloadURI) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2955
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2956
        default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2957
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2958
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2959
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2960
    TInt err(SessionL().DeploymentComponentIdsL(array, aState) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2961
    if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2962
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2963
        TInt count(array.Count() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2964
		RDEBUG_2( "CSCOMOAdapter::IdListL: count is %d", count);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2965
        if (count && aAppend && aCurrentList.Size() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2966
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2967
				RDEBUG("CSCOMOAdapter::IdListL: Inserting list size" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2968
            aCurrentList.InsertL(aCurrentList.Size(), KAMSeparator8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2969
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2970
        for (TInt i( 0); i < count; i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2971
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2972
            TUint32 el = array[i];
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2973
            TDCUserId dc;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2974
            SessionL().DeploymentComponentUserIdL(el, dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2975
			RDEBUG_2("CSCOMOAdapter::IdListL: Node name is %S", &dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2976
            if (uriStart == KNullDesC8() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2977
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2978
					RDEBUG("CSCOMOAdapter::IdListL: uriStart == KNullDesC8()" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2979
                TDeploymentComponent comp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2980
                err = SessionL().DeploymentComponent(el, comp) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2981
                if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2982
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2983
                    switch (comp.iState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2984
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2985
                        case EDCSDelivered:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2986
                            uriStart.Set(KDeliveredURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2987
                            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2988
                        case EDCSActive:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2989
                        case EDCSInactive:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2990
                            uriStart.Set(KDeployedURI) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2991
                            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2992
                        case EDCSDownload:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2993
                            uriStart.Set(KDownloadURI) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2994
                            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2995
                        default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2996
                            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2997
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2998
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2999
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3000
            if (uriStart != KNullDesC8() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3001
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3002
                uri.Copy(uriStart);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3003
                uri.Append(dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3004
                HBufC8 *luid = DirectGetLuidAllocLC(uri); //Callback().GetLuidAllocL( uri );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3005
				RDEBUG_2( "CSCOMOAdapter::IdListL: luid is %S", luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3006
                if (KNullDesC8() == *luid)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3007
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3008
                    RDEBUG8_3( "CSCOMOAdapter::IdListL(): WARNING updating lost luid of '%S' %d", &uri, el );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3009
                    HBufC8 *l = IntToDes8LC(el);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3010
                    if ( *luid == *l)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3011
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3012
                        RDEBUG( "CSCOMOAdapter::IdListL(): WARNING CANCEL (not really updating, they're the same already" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3013
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3014
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3015
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3016
							RDEBUG("CSCOMOAdapter::IdListL: DirectSetMappingL" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3017
                        DirectSetMappingL(uri, *l);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3018
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3019
                    CleanupStack::PopAndDestroy(l);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3020
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3021
                CleanupStack::PopAndDestroy(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3022
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3023
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3024
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3025
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3026
                RDEBUG_2( "CSCOMOAdapter::IdListL(): WARNING failed to get component state of id %d, cannot check mappings ", el );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3027
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3028
            aCurrentList.InsertL(aCurrentList.Size(), dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3029
            if (i + 1 < count)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3030
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3031
					RDEBUG("CSCOMOAdapter::IdListL: Adding Separator" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3032
                aCurrentList.InsertL(aCurrentList.Size(), KAMSeparator8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3033
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3034
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3035
        ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3036
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3037
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3038
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3039
        RDEBUG_2( "CSCOMOAdapter::IdListL(): Error %d", err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3040
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3041
    array.Reset();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3042
	RDEBUG("CSCOMOAdapter::IdListL: end" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3043
    return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3044
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3045
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3046
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3047
//  CSCOMOAdapter::ChildURIListL( const TDesC8& aURI, const TDesC8& aParentLUID, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3048
//			const CArrayFix<TSmlDmMappingInfo>& /*aPreviousURISegmentList*/, const TInt aResultsRef, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3049
//			TInt aStatusRef );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3050
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3051
void CSCOMOAdapter::ChildURIListL(const TDesC8& aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3052
        const TDesC8& aParentLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3053
        const CArrayFix<TSmlDmMappingInfo>& /*aPreviousURISegmentList*/,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3054
        const TInt aResultsRef, TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3055
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3056
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3057
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3058
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3059
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3060
    //Nothing
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3061
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3062
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3063
    RDEBUG8_3 ( "CSCOMOAdapter::ChildURIListL(): begin ('%S', '%S')" , &aURI, &aParentLUID );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3064
    CheckStateChangesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3065
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3066
    TError ret(EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3067
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3068
    CBufBase *currentList = CBufFlat::NewL( 128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3069
    CleanupStack::PushL(currentList);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3070
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3071
#ifdef __TARM_SYMBIAN_CONVERGENCY	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3072
    TInt numSeqs( NSmlDmURI::NumOfURISegs( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3073
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3074
    TInt numSeqs(NSmlDmURI::NumOfURISegs(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3075
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3076
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3077
    TPtrC8 mapping(NSmlDmURI::LastURISeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3078
    if (numSeqs == 1)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3079
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3080
        currentList->InsertL( 0, KAMRootChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3081
        ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3082
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3083
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3084
        if (numSeqs == 2)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3085
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3086
            if (mapping == KAMInventoryNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3087
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3088
                currentList->InsertL( 0, KAMInventoryChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3089
                ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3090
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3091
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3092
                if (mapping == KAMDownloadNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3093
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3094
                    RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): Level 2 NODE %S", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3095
                    TDeploymentComponentState state(EDCSDownload);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3096
                    ret = IdListL(state, *currentList);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3097
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3098
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3099
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3100
                    RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): ILLEGAL LEVEL 2 NODE %S", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3101
                    User::Leave(KErrArgument);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3102
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3103
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3104
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3105
            if (numSeqs == 3)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3106
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3107
                if (mapping == KAMDeliveredNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3108
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3109
                    RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): Level 3 NODE %S", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3110
                    TDeploymentComponentState state(EDCSDelivered);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3111
                    ret = IdListL(state, *currentList);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3112
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3113
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3114
                    if (mapping == KAMDeployedNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3115
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3116
                        TDeploymentComponentState state(EDCSActive);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3117
                        ret = IdListL(state, *currentList);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3118
                        if (ret == EOk)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3119
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3120
                            state = EDCSInactive;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3121
                            ret = IdListL(state, *currentList, ETrue);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3122
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3123
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3124
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3125
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3126
                        if (aParentLUID != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3127
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3128
                            if (CheckStateL(aURI, aParentLUID) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3129
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3130
                                TPtrC8
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3131
                                        parent(NSmlDmURI::RemoveLastSeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3132
                                TPtrC8
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3133
                                        parentMapping(NSmlDmURI::LastURISeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3134
                                if (parentMapping == KAMDownloadNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3135
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3136
                                    currentList->InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3137
                                            KAMDownloadDynaChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3138
                                    ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3139
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3140
                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3141
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3142
                                    RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): ILLEGAL LEVEL 3 NODE %S", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3143
                                    User::Leave(KErrArgument);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3144
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3145
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3146
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3147
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3148
                                RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): DC has changed state %S", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3149
                                ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3150
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3151
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3152
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3153
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3154
                            RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): Level3 Node not found %S", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3155
                            ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3156
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3157
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3158
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3159
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3160
                if (numSeqs == 4)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3161
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3162
                    TPtrC8 parent(NSmlDmURI::RemoveLastSeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3163
                    TPtrC8 parentMapping(NSmlDmURI::LastURISeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3164
                    if (aParentLUID == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3165
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3166
                        RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): WARNING possibly a illegal level 4 node %S", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3167
                        ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3168
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3169
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3170
                    if (parentMapping == KAMDeliveredNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3171
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3172
                        if (GetLuid2L(aParentLUID, mapping, EDCSDelivered,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3173
                                ret) > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3174
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3175
                            currentList->InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3176
                                    KAMInventoryDeliveredDynaChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3177
                            ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3178
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3179
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3180
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3181
                        if (parentMapping == KAMDeployedNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3182
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3183
                            if (GetLuid2L(aParentLUID, mapping, EDCSActive,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3184
                                    ret) > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3185
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3186
                                currentList->InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3187
                                        KAMInventoryDynaChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3188
                                ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3189
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3190
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3191
                                if (GetLuid2L(aParentLUID, mapping,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3192
                                        EDCSInactive, ret) > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3193
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3194
                                    currentList->InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3195
                                            KAMInventoryDynaChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3196
                                    ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3197
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3198
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3199
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3200
                            if (mapping == KAMOperationsNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3201
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3202
                                if (GetLuid2L(aParentLUID, parentMapping,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3203
                                        EDCSDownload, ret) > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3204
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3205
                                    if (CheckStateL(aURI, aParentLUID) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3206
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3207
                                        currentList->InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3208
                                                KAMDownloadOperationChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3209
                                        ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3210
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3211
                                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3212
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3213
                                        RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): Level3 operations DC changed state '%S'", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3214
                                        ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3215
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3216
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3217
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3218
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3219
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3220
                                RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): Level4 Node not found '%S'", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3221
                                ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3222
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3223
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3224
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3225
                    if (numSeqs == 5)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3226
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3227
                        if (aParentLUID == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3228
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3229
                            RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): WARNING possibly a illegal level 5 node %S", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3230
                            ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3231
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3232
                        if (mapping == KAMOperationsNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3233
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3234
                            TPtrC8 parent(NSmlDmURI::RemoveLastSeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3235
                            TPtrC8
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3236
                                    parentMapping(NSmlDmURI::LastURISeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3237
                            TPtrC8 gparent(NSmlDmURI::RemoveLastSeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3238
                            TPtrC8
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3239
                                    gparentMapping(NSmlDmURI::LastURISeg(gparent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3240
                            if (gparentMapping == KAMDeliveredNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3241
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3242
                                if (GetLuid2L(aParentLUID, parentMapping,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3243
                                        EDCSDelivered, ret) > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3244
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3245
                                    currentList->InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3246
                                            KAMDeliveredOperationChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3247
                                    ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3248
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3249
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3250
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3251
                                if (gparentMapping == KAMDeployedNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3252
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3253
                                    if (GetLuid2L(aParentLUID, parentMapping,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3254
                                            EDCSActive, ret) > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3255
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3256
                                        currentList->InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3257
                                                KAMDeployedOperationChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3258
                                        ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3259
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3260
                                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3261
                                        if (GetLuid2L(aParentLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3262
                                                parentMapping, EDCSInactive,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3263
                                                ret) > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3264
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3265
                                            currentList->InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3266
                                                    KAMDeployedOperationChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3267
                                            ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3268
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3269
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3270
                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3271
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3272
                                    RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): Level5 Node not found wrong parent '%S'", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3273
                                    ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3274
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3275
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3276
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3277
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3278
                            RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): Level5 Node not found '%S'", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3279
                            ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3280
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3281
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3282
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3283
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3284
                        RDEBUG8_3( "CSCOMOAdapter::ChildURIListL(): ILLEGAL LEVEL %d NODE %S", numSeqs, &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3285
                        ret = EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3286
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3287
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3288
    SetStatusL(aStatusRef, ret);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3289
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3290
    if (ret == EOk)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3291
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3292
        if (iInAtomic)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3293
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3294
            iBuffer.Append(TAMCommandBufferElement(aStatusRef, aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3295
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3296
        Callback().SetResultsL(aResultsRef, *currentList, KNullDesC8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3297
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3298
    CleanupStack::PopAndDestroy(); //currentList
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3299
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3300
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3301
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3302
//  CSCOMOAdapter::DeliverOrDownloadL( const TDesC8 &aUserId, const TDesC8 &aURI, TInt aCnt, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3303
//		const TDesC8 &aParentMapping, MSmlDmAdapter::TError &aStatus )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3304
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3305
void CSCOMOAdapter::DeliverOrDownloadL(const TDesC8 &aUserId,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3306
        const TDesC8 &aURI, TInt aCnt, const TDesC8 &aParentMapping,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3307
        MSmlDmAdapter::TError &aStatus)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3308
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3309
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3310
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3311
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3312
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3313
    //Nothing
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3314
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3315
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3316
    switch (aCnt)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3317
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3318
        case 3:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3319
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3320
            if (aParentMapping == KAMDownloadNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3321
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3322
                TUint32 luid(SessionL().DownloadL(aUserId) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3323
                Callback().SetMappingL(aURI, *IntToDes8LC(luid) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3324
                CleanupStack::PopAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3325
                aStatus = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3326
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3327
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3328
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3329
                RDEBUG( "CSCOMOAdapter::DeliverOrDownloadL(): ERROR Illegal parent");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3330
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3331
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3332
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3333
        case 4:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3334
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3335
            if (aParentMapping == KAMDeliveredNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3336
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3337
                TUint32 luid(SessionL().DeliverL(aUserId) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3338
                Callback().SetMappingL(aURI, *IntToDes8LC(luid) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3339
                CleanupStack::PopAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3340
                aStatus = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3341
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3342
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3343
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3344
                RDEBUG( "CSCOMOAdapter::DeliverOrDownloadL(): ERROR Illegal parent");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3345
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3346
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3347
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3348
        default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3349
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3350
            RDEBUG( "CSCOMOAdapter::DeliverOrDownloadL(): ERROR Illegal URI");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3351
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3352
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3353
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3354
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3355
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3356
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3357
// CSCOMOAdapter::AddNodeObjectL( const TDesC8& aURI, const TDesC& aParentLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3358
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3359
void CSCOMOAdapter::AddNodeObjectL(const TDesC8& aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3360
        const TDesC8& aParentLUID, TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3361
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3362
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3363
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3364
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3365
    TPtrC8 mapping( NSmlDmURI::LastURISeg( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3366
    TPtrC8 parent( NSmlDmURI::RemoveLastSeg( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3367
    TPtrC8 parentMapping( NSmlDmURI::LastURISeg( parent ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3368
    TInt cnt( NSmlDmURI::NumOfURISegs( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3369
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3370
    TPtrC8 mapping(NSmlDmURI::LastURISeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3371
    TPtrC8 parent(NSmlDmURI::RemoveLastSeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3372
    TPtrC8 parentMapping(NSmlDmURI::LastURISeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3373
    TInt cnt(NSmlDmURI::NumOfURISegs(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3374
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3375
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3376
    RDEBUG8_3( "CSCOMOAdapter::AddNodeObjectL(): begin '%S', '%S'", &aURI, &aParentLUID );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3377
    SetAdapterValue(KAMSCOMOAdapter);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3378
    CheckStateChangesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3379
    TError status(EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3380
    //	TPtrC8 mapping( NSmlDmURI::LastURISeg( aURI ) );//Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3381
    //	TPtrC8 parent( NSmlDmURI::RemoveLastSeg( aURI ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3382
    //	TPtrC8 parentMapping( NSmlDmURI::LastURISeg( parent ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3383
    //	TInt cnt( NSmlDmURI::NumOfURISegs( aURI ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3384
	TUint32 iluid( GetLuidL( aParentLUID, mapping, (parentMapping == KAMDeliveredNodeName ? EDCSDelivered : ( parentMapping == KAMDownloadNodeName ? EDCSDownload : EDCSNone ) ) ) ) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3385
	if( !iluid)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3386
	    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3387
            // This is added for avoiding duplicate node creation in Delivered/Download only.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3388
	    iluid = GetLuidL( aParentLUID, mapping, (parentMapping == KAMDeliveredNodeName ? EDCSDownload:EDCSDelivered ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3389
	    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3390
    if (iluid == 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3391
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3392
        // Not found, add it ... 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3393
        DeliverOrDownloadL(mapping, aURI, cnt, parentMapping, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3394
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3395
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3396
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3397
        RDEBUG_2( "CSCOMOAdapter::AddNodeObjectL(): WARNING May Already exists '%d'", iluid );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3398
        TDeploymentComponent comp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3399
        TInt err(SessionL().DeploymentComponent(iluid, comp) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3400
        if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3401
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3402
            RDEBUG_2( "CSCOMOAdapter::AddNodeObjectL(): ERROR Already exists '%d'", iluid );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3403
            if (comp.iState == StateL(aURI) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3404
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3405
                RDEBUG( "CSCOMOAdapter::AddNodeObjectL():    (state is ok) " );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3406
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3407
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3408
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3409
                RDEBUG( "CSCOMOAdapter::AddNodeObjectL():    (state is NOK) " );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3410
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3411
            status = EAlreadyExists;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3412
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3413
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3414
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3415
            if (err == KErrNotFound)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3416
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3417
                RDEBUG_2( "CSCOMOAdapter::AddNodeObjectL(): WARNING Already exists but not found '%d'", iluid );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3418
                DeliverOrDownloadL(mapping, aURI, cnt, parentMapping, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3419
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3420
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3421
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3422
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3423
                RDEBUG_2( "CSCOMOAdapter::AddNodeObjectL(): ERROR May exists, but failed to fetch get one? '%d'", err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3424
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3425
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3426
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3427
    if (status == EOk)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3428
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3429
        if (iInAtomic)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3430
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3431
            iBuffer.Append(TAMCommandBufferElement(aStatusRef, aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3432
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3433
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3434
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3435
    //status = EAcceptedForProcessing;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3436
    //TInt error = 202;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3437
    SetStatusL(aStatusRef, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3438
    RDEBUG( "CSCOMOAdapter::AddNodeObject(): end" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3439
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3440
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3441
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3442
// CSCOMOAdapter::GetSizeL( const TDesC8& aURI, const TDesC& aParentLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3443
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3444
TInt CSCOMOAdapter::GetSizeL(const TDeplCompAttrType aDataType,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3445
        const TInt aLuid, TError &aRet)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3446
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3447
    TInt size( 0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3448
    if (aDataType == EDCStateValue)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3449
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3450
        TDeploymentComponent comp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3451
        TInt err(SessionL().DeploymentComponent(aLuid, comp) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3452
        if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3453
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3454
            if (comp.iState == EDCSActive)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3455
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3456
                size = KAMStateValueActive().Length();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3457
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3458
            else if (comp.iState == EDCSDelivered)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3459
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3460
                size = KAMStateValueDelivered().Length();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3461
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3462
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3463
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3464
                size = KAMStateValueInactive().Length() ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3465
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3466
            aRet = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3467
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3468
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3469
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3470
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3471
        size = SessionL().DeploymentComponentDataSizeL(aLuid, aDataType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3472
        aRet = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3473
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3474
    return size;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3475
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3476
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3477
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3478
// CSCOMOAdapter::FetchLeafObjectSizeL( const TDesC8& aURI, const TDesC& aParentLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3479
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3480
void CSCOMOAdapter::FetchLeafObjectSizeL(const TDesC8& aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3481
        const TDesC8& aLUID, const TDesC8& aType, TInt aResultsRef,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3482
        TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3483
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3484
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3485
    RDEBUG8_4("CSCOMOAdapter::FetchLeafObjectSizeL('%S', '%S', '%S'): begin", &aURI, &aLUID, &aType );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3486
    CheckStateChangesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3487
    TError status(EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3488
    CBufBase *currentList = CBufFlat::NewL( 128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3489
    CleanupStack::PushL(currentList);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3490
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3491
    TPtrC8 mapping(NSmlDmURI::LastURISeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3492
    TPtrC8 parent(NSmlDmURI::RemoveLastSeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3493
    TPtrC8 parentMapping(NSmlDmURI::LastURISeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3494
    TInt size( 0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3495
    HBufC8 *luid= NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3496
    if (aLUID != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3497
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3498
        luid = aLUID.AllocLC();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3499
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3500
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3501
        { // try if we find it from download path
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3502
        TBuf8<256> down;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3503
        down = KDownloadURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3504
        down.Append(parentMapping);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3505
        luid = Callback().GetLuidAllocL(down);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3506
        CleanupStack::PushL(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3507
        if ( *luid != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3508
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3509
            // make it to found next time
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3510
            DirectSetMappingL(parent, *luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3511
            MoveAclL(down, parent);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3512
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3513
            // remove old
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3514
            DirectSetMappingL(down, KNullDesC8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3515
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3516
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3517
    TDeplCompAttrType dataType(UpdateFlagFromMapping(mapping) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3518
    if ( *luid != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3519
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3520
        TUint32 iluid(DesToIntL( *luid ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3521
        RDEBUG_2( "CSCOMOAdapter::FetchLeafObjectSizeL(): Luid is : %d", iluid );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3522
        size = GetSizeL(dataType, iluid, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3523
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3524
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3525
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3526
        TUint32 iluid(GetLeafLuidL(aURI, parentMapping) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3527
        if (iluid > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3528
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3529
            HBufC8 *l = IntToDes8LC(iluid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3530
            DirectSetMappingL(parent, *l);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3531
            CleanupStack::PopAndDestroy(l);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3532
            size = GetSizeL(dataType, iluid, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3533
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3534
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3535
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3536
            RDEBUG8_2( "CSCOMOAdapter::FetchLeafObjectSizeL(): WARNING Faild to get luid allocation for '%S'", &parent );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3537
            if (aLUID == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3538
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3539
                status = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3540
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3541
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3542
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3543
    SetStatusL(aStatusRef, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3544
    if (status == EOk && size > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3545
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3546
        HBufC8 *hsize = IntToDes8LC(size);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3547
        currentList->InsertL( 0, *hsize);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3548
        if (iInAtomic)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3549
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3550
            iBuffer.Append(TAMCommandBufferElement(aStatusRef, aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3551
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3552
        Callback().SetResultsL(aResultsRef, *currentList, aType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3553
        CleanupStack::PopAndDestroy(hsize);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3554
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3555
    CleanupStack::PopAndDestroy(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3556
    CleanupStack::PopAndDestroy(currentList); //currentList	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3557
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3558
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3559
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3560
// CSCOMOAdapter::ExecuteCommandL( const TDesC8& aURI, const TDesC& aParentLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3561
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3562
void CSCOMOAdapter::ExecuteCommandL(const TDesC8& /*aURI*/,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3563
        const TDesC8& /*aLUID*/, RWriteStream*& /*aStream*/,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3564
        const TDesC8& /*aType*/, TInt /*aStatusRef*/)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3565
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3566
    RDEBUG("CSCOMOAdapter::ExecuteCommandL(stream): begin (NOT SUPPORTED)");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3567
    User::Leave(KErrNotSupported);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3568
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3569
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3570
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3571
// CSCOMOAdapter::CopyCommandL( const TDesC8& aURI, const TDesC& aParentLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3572
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3573
void CSCOMOAdapter::CopyCommandL(const TDesC8& /*aTargetURI*/,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3574
        const TDesC8& /*aTargetLUID*/, const TDesC8& /*aSourceURI*/,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3575
        const TDesC8& /*aSourceLUID*/, const TDesC8& /*aType*/,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3576
        TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3577
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3578
    RDEBUG("CSCOMOAdapter::CopyCommandL(): begin (NOT SUPPORTED)");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3579
    SetStatusL(aStatusRef, EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3580
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3581
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3582
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3583
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3584
// CSCOMOAdapter::StartAtomicL(  )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3585
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3586
void CSCOMOAdapter::StartAtomicL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3587
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3588
    RDEBUG("CSCOMOAdapter::StartAtomicL(): begin (NOT properly SUPPORTED)");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3589
    iInAtomic = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3590
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3591
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3592
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3593
// CSCOMOAdapter::CommitAtomicL(  )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3594
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3595
void CSCOMOAdapter::CommitAtomicL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3596
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3597
    RDEBUG("CSCOMOAdapter::CommitAtomicL(): begin (NOT SUPPORTED)");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3598
    iInAtomic = EFalse; // the initial statuses are already set
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3599
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3600
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3601
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3602
// CSCOMOAdapter::RollbackAtomicL(  )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3603
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3604
void CSCOMOAdapter::RollbackAtomicL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3605
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3606
    RDEBUG("CSCOMOAdapter::RollbackAtomicL(): begin (NOT properly SUPPORTED)");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3607
    TInt count(iBuffer.Count() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3608
    for (TInt i( 0); i < count; i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3609
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3610
        TAMCommandBufferElement &pm(iBuffer[i]);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3611
        SetStatusL(pm.iStatusRef, ERollbackFailed);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3612
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3613
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3614
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3615
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3616
// CSCOMOAdapter::StreamingSupport( )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3617
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3618
TBool CSCOMOAdapter::StreamingSupport(TInt& aItemSize)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3619
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3620
    RDEBUG("CSCOMOAdapter::StreamingSupport(): begin");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3621
    //aItemSize = 1024;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3622
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3623
    // After Generic alert is sent delete that entry from database and notify
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3624
    // AM server to delete the appropriate entry in its database.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3625
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3626
    if(aItemSize == KNSmlDMResetGenAlerts)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3627
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3628
      TSmlProfileId profId = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3629
      HBufC8* serverId = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3630
      TRAP_IGNORE(GetServerInfoL( profId, serverId ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3631
      
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3632
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3633
    TUint32 internalid;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3634
    RPointerArray<CAMDbItem> genericalerts;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3635
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3636
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3637
    // Get generic alert entry from Database for particular server ID.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3638
    TRAPD(err, iAMdb->GetEntryForServerIDL(genericalerts, *serverId));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3639
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3640
    if (genericalerts.Count()!= KErrNone && err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3641
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3642
          	for(TInt i=0; i<genericalerts.Count(); i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3643
    		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3644
			internalid = genericalerts[i]->iLUID;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3645
			// Delete the all the generic alert details from SCOMO adapeter DB
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3646
			// Also delete the appropriate entry from AM Server DB as well.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3647
            TRAP_IGNORE(iAMdb->DeleteFromDatabaseL(internalid));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3648
            TRAP_IGNORE(SessionL().GenericAlertSentL(internalid));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3649
    		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3650
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3651
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3652
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3653
    genericalerts.ResetAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3654
    delete serverId;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3655
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3656
    _LIT(KNull,"");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3657
    // No monitoring required after generic alert is sent
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3658
    TInt err_rep = KErrNone;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3659
    CRepository *repository1 = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3660
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3661
    TRAP(err_rep, repository1 =CRepository::NewL ( KCRUidDeviceManagementInternalKeys ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3662
  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3663
    if(err_rep == KErrNone)  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3664
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3665
    repository1 ->Set(KDevManServerIdKey ,KNull);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3666
    repository1 ->Set(KDevManIapIdKey, KErrNone);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3667
    repository1 ->Set(KDevManEnableDMNetworkMon, KErrNone);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3668
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3669
     
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3670
    if(repository1)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3671
     delete repository1;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3672
      
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3673
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3674
    aItemSize = 1024;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3675
    RDEBUG("CSCOMOAdapter::StreamingSupport(): end");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3676
    return ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3677
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3678
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3679
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3680
// CSCOMOAdapter::StreamCommittedL( )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3681
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3682
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3683
void CSCOMOAdapter::StreamCommittedL( RWriteStream& /*aStream*/)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3684
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3685
void CSCOMOAdapter::StreamCommittedL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3686
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3687
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3688
    RDEBUG("CSCOMOAdapter::StreamCommittedL(): begin");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3689
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3690
    if (iStreamOpen)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3691
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3692
        iStream.CommitL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3693
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3694
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3695
    MSmlDmAdapter::TError status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3696
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3697
    TRAPD( err, _UpdateLeafObjectL( *iStreamedURI, *iStreamedLuid, KNullDesC8(), *iStreamedType, iStatusRef, status ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3698
    ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3699
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3700
    if (err != KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3701
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3702
        RDEBUG_2("CSCOMOAdapter::StreamCommittedL(): _UpdateLeafObjectL returned error (%d)", err);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3703
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3704
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3705
    iIsStreamedContent = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3706
    iStreamOpen = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3707
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3708
    Callback().SetStatusL(iStatusRef, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3709
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3710
    RDEBUG("CSCOMOAdapter::StreamCommittedL(): end");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3711
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3712
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3713
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3714
// CSCOMOAdapter::CloseStreaming( )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3715
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3716
void CSCOMOAdapter::CloseStreaming()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3717
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3718
    if (iStreamOpen)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3719
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3720
        RDEBUG("CSCOMOAdapter::CloseStreaming(): closing");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3721
        iStreamFile.Close(); // !!! Closing this will also close the iStreamRFs because it is adopted from server
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3722
        iStreamOpen = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3723
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3724
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3725
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3726
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3727
// CSCOMOAdapter::CompleteOutstandingCmdsL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3728
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3729
void CSCOMOAdapter::CompleteOutstandingCmdsL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3730
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3731
    RDEBUG("CSCOMOAdapter::CompleteOutstandingCmdsL(): begin");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3732
    /*	iManagement.Close();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3733
     iSessionOpened = EFalse ;*/
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3734
    iBuffer.Reset();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3735
    RDEBUG("CSCOMOAdapter::CompleteOutstandingCmdsL(): Management session closed");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3736
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3737
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3738
// ------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3739
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3740
// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3741
const TImplementationProxy ImplementationTable[] =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3742
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3743
    //
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3744
            IMPLEMENTATION_PROXY_ENTRY( KAMAdapterImplUid, CSCOMOAdapter::NewL )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3745
    };
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3746
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3747
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3748
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3749
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3750
EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3751
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3752
    aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3753
    return ImplementationTable;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3754
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3755
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3756
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3757
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3758
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3759
TInt CSCOMOAdapter::DesToIntL(const TDesC8& aLuid)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3760
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3761
    TLex8 lex(aLuid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3762
    TInt value = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3763
    User::LeaveIfError(lex.Val(value) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3764
    return value;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3765
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3766
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3767
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3768
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3769
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3770
HBufC8* CSCOMOAdapter::IntToDes8LC(const TInt aLuid)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3771
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3772
    HBufC8* buf = HBufC8::NewLC( 10); //10 = max length of 32bit integer
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3773
    TPtr8 ptrBuf = buf->Des();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3774
    ptrBuf.Num(aLuid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3775
    return buf;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3776
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3777
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3778
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3779
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3780
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3781
void CSCOMOAdapter::ConstructL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3782
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3783
    iAMdb = CSCOMOAdapterDb::NewL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3784
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3785
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3786
    iDbSession.ConnectL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3787
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3788
    User::LeaveIfError(iDbSession.Connect());
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3789
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3790
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3791
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3792
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3793
// CSCOMOAdapter::SetStatusL( TInt aStatusRef, MSmlDmAdapter::TError aErrorCode ) 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3794
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3795
void CSCOMOAdapter::SetStatusL(TInt aStatusRef,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3796
        MSmlDmAdapter::TError aErrorCode)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3797
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3798
    RDEBUG_3("CSCOMOAdapter::SetStatusL( %d, %d )", aStatusRef, aErrorCode );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3799
    Callback().SetStatusL(aStatusRef, aErrorCode);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3800
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3801
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3802
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3803
// CSCOMOAdapter::SetResultsL( TInt aResultsRef, CBufBase& aObject, const TDesC8& aType )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3804
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3805
void CSCOMOAdapter::SetResultsL(TInt aResultsRef, CBufBase& aObject,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3806
        const TDesC8& aType)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3807
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3808
    Callback().SetResultsL(aResultsRef, aObject, aType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3809
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3810
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3811
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3812
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3813
// CSCOMOAdapter::FillNodeInfoL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3814
// Fills the node info in ddf structure
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3815
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3816
void CSCOMOAdapter::FillNodeInfoL(MSmlDmDDFObject& aNode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3817
        TSmlDmAccessTypes aAccTypes, MSmlDmDDFObject::TOccurence aOccurrence,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3818
        MSmlDmDDFObject::TScope aScope, MSmlDmDDFObject::TDFFormat aFormat,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3819
        const TDesC8& aDescription)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3820
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3821
    FillNodeInfoNoDefaultMimeL(aNode, aAccTypes, aOccurrence, aScope,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3822
            aFormat, aDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3823
    if (aFormat!=MSmlDmDDFObject::ENode)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3824
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3825
        aNode.AddDFTypeMimeTypeL(KAMTextPlain);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3826
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3827
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3828
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3829
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3830
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3831
// CSCOMOAdapter::FillNodeInfoNoDefaultMimeL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3832
// Fills the node info in ddf structure, without default mime type
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3833
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3834
void CSCOMOAdapter::FillNodeInfoNoDefaultMimeL(MSmlDmDDFObject& aNode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3835
        TSmlDmAccessTypes aAccTypes, MSmlDmDDFObject::TOccurence aOccurrence,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3836
        MSmlDmDDFObject::TScope aScope, MSmlDmDDFObject::TDFFormat aFormat,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3837
        const TDesC8& aDescription)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3838
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3839
    aNode.SetAccessTypesL(aAccTypes);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3840
    aNode.SetOccurenceL(aOccurrence);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3841
    aNode.SetScopeL(aScope);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3842
    aNode.SetDFFormatL(aFormat);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3843
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3844
    aNode.SetDescriptionL(aDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3845
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3846
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3847
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3848
// CSCOMOAdapter::CheckStateChangesInternalL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3849
// Updates the changed DC states to DM client mappings and ACLs
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3850
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3851
void CSCOMOAdapter::CheckStateChangesInternalL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3852
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3853
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3854
#ifdef __AM_CHECKSTATE_CHANGES
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3855
    RDEBUG( "CSCOMOAdapter::CheckStateChangesLInternal(): begin" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3856
    if ( !iUpdated)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3857
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3858
        RDEBUG( "CSCOMOAdapter::CheckStateChangesLInternal(): !iUpdated" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3859
        RElementIdArray arr;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3860
        CleanupClosePushL(arr);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3861
		SessionL().CheckStatusNodesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3862
		RElementIdArray array;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3863
		TInt err( SessionL().DeploymentComponentIdsL( array, EDCSActive ) ); //to sync with SIS/Java registry
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3864
		err = SessionL().DeploymentComponentIdsL( array, EDCSInactive ); //to sync with SIS/Java registry
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3865
		CleanupClosePushL(array);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3866
        err = SessionL().StateChangingDCIdsL(arr);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3867
        if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3868
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3869
            TInt c(arr.Count() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3870
            for (TInt i( 0); i < c; i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3871
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3872
                TDeploymentComponent comp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3873
                err = iManagement.DeploymentComponent(arr[i], comp);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3874
                if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3875
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3876
                    TDCUserId dc;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3877
                    SessionL().DeploymentComponentUserIdL(arr[i], dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3878
                    const TInt KNSmlDmMaxUriLength = 256;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3879
                    HBufC8 *uri = HBufC8::NewLC(KNSmlDmMaxUriLength);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3880
                    TPtr8 puri(uri->Des() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3881
#ifdef __TARM_SYMBIAN_CONVERGENCY					
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3882
                    RDmTreeNode uriNode;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3883
                    CleanupClosePushL(uriNode);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3884
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3885
                    RBuf8 acl;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3886
                    acl.CreateL(128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3887
                    CleanupClosePushL(acl);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3888
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3889
                    HBufC8 *newUri = HBufC8::NewLC( KNSmlDmMaxUriLength );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3890
                    TPtr8 pnewUri( newUri->Des() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3891
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3892
                    RDmTreeNode newUriNode;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3893
                    CleanupClosePushL(newUriNode);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3894
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3895
                    CBufBase* acl = CBufFlat::NewL( 128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3896
                    CleanupStack::PushL(acl);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3897
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3898
                    HBufC8 *newUri = HBufC8::NewLC(KNSmlDmMaxUriLength);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3899
                    TPtr8 pnewUri(newUri->Des() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3900
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3901
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3902
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3903
                    switch (comp.iOldState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3904
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3905
                        case EDCSDelivered:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3906
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3907
                            RDEBUG( "CSCOMOAdapter::CheckStateChangesLInternal(): Old State = EDCSDelivered" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3908
                            puri.Copy(KDeliveredURI() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3909
                            puri.Append(dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3910
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3911
                            HBufC8 *luid = DirectGetLuidAllocLC(puri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3912
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3913
                            if ( *luid == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3914
                                { // probably moved already
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3915
                                iManagement.StateChangeComplete(arr[i]);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3916
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3917
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3918
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3919
                                // "Nullify" the old mapping 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3920
								//DirectSetMappingL( puri, KNullDesC8 );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3921
								DirectRemoveMappingL(puri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3922
#ifdef __TARM_SYMBIAN_CONVERGENCY								
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3923
                                iDbSession.OpenNodeL(puri, uriNode, RDmTree::EReadOnly);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3924
                                uriNode.DmPropertyL( DevMan::EACL, acl );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3925
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3926
                                err = iDbSession.GetAclL(puri, *acl, EFalse); // no need for inherited
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3927
#endif										
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3928
                                // Determine new uri 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3929
                                switch (comp.iState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3930
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3931
                                    case EDCSActive:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3932
                                    case EDCSInactive: // both have same node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3933
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3934
                                        pnewUri.Copy(KDeployedURI() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3935
                                        pnewUri.Append(dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3936
                                        DirectSetMappingL(pnewUri, *luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3937
                                        if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3938
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3939
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3940
                                            iDbSession.OpenNodeL(pnewUri, newUriNode, RDmTree::EReadOnly);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3941
                                            uriNode.RemoveDmPropertyL( DevMan::EACL );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3942
                                            newUriNode.SetDmPropertyL( DevMan::EACL, acl );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3943
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3944
                                            err = iDbSession.DeleteAclL(puri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3945
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3946
                                            err = iDbSession.UpdateAclL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3947
                                                    pnewUri, acl->Ptr( 0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3948
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3949
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3950
                                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3951
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3952
                                            RDEBUG_2("CSCOMOAdapter::CheckStateChangesL: ERROR Failed to get acl from %d ", err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3953
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3954
                                        iManagement.StateChangeComplete(arr[i]);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3955
                                        break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3956
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3957
                                    default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3958
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3959
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3960
                                        RDEBUG_2("CSCOMOAdapter::CheckStateChangesL: WARNING Illegal state change from delivered to %d ", comp.iState );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3961
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3962
                                        break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3963
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3964
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3965
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3966
                            CleanupStack::PopAndDestroy(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3967
                            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3968
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3969
                        case EDCSDownload:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3970
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3971
                            RDEBUG( "CSCOMOAdapter::CheckStateChangesLInternal(): Old State = EDCSDownload" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3972
                            puri.Copy(KDownloadURI() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3973
                            //check DC contains SCOMODefault.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3974
                            TBuf8<256> staticnode;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3975
                            TInt staticnodeenabled = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3976
                            CRepository* cenrep = CRepository::NewLC( KCRUidPrivateApplicationManagementKeys );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3977
                            cenrep->Get( KAMDownloadPredefinedNode, staticnode ); 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3978
                            cenrep->Get( KAMStaticNodeEnabled, staticnodeenabled );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3979
                            CleanupStack::PopAndDestroy(); //cenrep
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3980
                            if (dc.Find(staticnode) != KErrNotFound && staticnodeenabled)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3981
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3982
                                puri.Append(staticnode);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3983
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3984
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3985
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3986
                                puri.Append(dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3987
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3988
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3989
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3990
                            HBufC8 *luid = DirectGetLuidAllocLC(puri); //Callback().GetLuidAllocL( puri );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3991
                            //CleanupStack::PushL( luid );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3992
                            if ( *luid == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3993
                                { // probably moved already
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3994
                                CleanupStack::PopAndDestroy(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3995
                                puri.Copy(KDeliveredURI() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3996
                                puri.Append(dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3997
                                luid = DirectGetLuidAllocLC(puri); //Callback().GetLuidAllocL( puri );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3998
                                if ( *luid == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3999
                                    { // probably moved already
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4000
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4001
                                    iManagement.StateChangeComplete(arr[i]);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4002
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4003
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4004
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4005
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4006
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4007
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4008
                                iDbSession.OpenNodeL(puri, uriNode, RDmTree::EReadOnly);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4009
                                uriNode.DmPropertyL( DevMan::EACL, acl );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4010
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4011
                                err = iDbSession.GetAclL(puri, *acl, EFalse); // no need for inherited
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4012
#endif							
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4013
                                // "Nullify" the old mapping 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4014
								//DirectSetMappingL( puri, KNullDesC8 );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4015
								DirectRemoveMappingL(puri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4016
                                switch (comp.iState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4017
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4018
                                    case EDCSActive:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4019
                                    case EDCSInactive: // both have same node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4020
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4021
                                        pnewUri.Copy(KDeployedURI() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4022
                                        pnewUri.Append(dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4023
                                        DirectSetMappingL(pnewUri, *luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4024
                                        if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4025
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4026
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4027
                                            iDbSession.OpenNodeL(pnewUri, newUriNode, RDmTree::EReadOnly);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4028
                                            uriNode.RemoveDmPropertyL( DevMan::EACL );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4029
                                            newUriNode.SetDmPropertyL( DevMan::EACL, acl );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4030
#else											
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4031
                                            err = iDbSession.DeleteAclL(puri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4032
                                            err = iDbSession.UpdateAclL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4033
                                                    pnewUri, acl->Ptr( 0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4034
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4035
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4036
                                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4037
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4038
                                            RDEBUG_2("CSCOMOAdapter::CheckStateChangesL: ERROR Failed to get acl from %d ", err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4039
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4040
                                        iManagement.StateChangeComplete(arr[i]);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4041
                                        break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4042
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4043
                                    case EDCSDelivered:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4044
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4045
                                        RDEBUG( "CSCOMOAdapter::CheckStateChangesLInternal(): Current State = EDCSDelivered" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4046
                                        pnewUri.Copy(KDeliveredURI() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4047
                                        pnewUri.Append(dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4048
                                        DirectSetMappingL(pnewUri, *luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4049
                                        if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4050
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4051
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4052
                                            iDbSession.OpenNodeL(pnewUri, newUriNode, RDmTree::EReadOnly);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4053
                                            uriNode.RemoveDmPropertyL( DevMan::EACL );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4054
                                            newUriNode.SetDmPropertyL( DevMan::EACL, acl );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4055
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4056
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4057
                                            err = iDbSession.DeleteAclL(puri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4058
                                            err = iDbSession.UpdateAclL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4059
                                                    pnewUri, acl->Ptr( 0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4060
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4061
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4062
                                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4063
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4064
                                            RDEBUG_2("CSCOMOAdapter::CheckStateChangesL: ERROR Failed to get acl from %d ", err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4065
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4066
                                        iManagement.StateChangeComplete(arr[i]);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4067
                                        break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4068
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4069
                                    default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4070
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4071
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4072
                                        RDEBUG_2("CSCOMOAdapter::CheckStateChangesL: WARNING Illegal state change from delivered to %d ", comp.iState );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4073
                                        break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4074
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4075
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4076
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4077
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4078
                            CleanupStack::PopAndDestroy(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4079
                            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4080
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4081
                        case EDCSActive:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4082
                        case EDCSInactive: // these both are in same node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4083
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4084
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4085
                            RDEBUG_3("CSCOMOAdapter::CheckStateChangesL: No need to move anything in change from %d to %d ", comp.iOldState, comp.iState );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4086
                            iManagement.StateChangeComplete(arr[i]);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4087
                            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4088
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4089
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4090
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4091
                    CleanupStack::PopAndDestroy( &newUriNode );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4092
                    CleanupStack::PopAndDestroy( newUri );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4093
                    CleanupStack::PopAndDestroy( &uriNode );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4094
                    CleanupStack::PopAndDestroy( &acl );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4095
                    CleanupStack::PopAndDestroy( uri );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4096
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4097
                    CleanupStack::PopAndDestroy(newUri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4098
                    CleanupStack::PopAndDestroy(acl);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4099
                    CleanupStack::PopAndDestroy(uri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4100
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4101
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4102
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4103
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4104
                    RDEBUG_2("CSCOMOAdapter::CheckStateChangesL: ERROR Failed to get component: %d ", err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4105
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4106
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4107
            iUpdated = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4108
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4109
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4110
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4111
            RDEBUG_2("CSCOMOAdapter::CheckStateChangesL: ERROR Failed to get state change dcs: %d ", err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4112
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4113
        CleanupStack::PopAndDestroy( &array);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4114
        CleanupStack::PopAndDestroy( &arr);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4115
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4116
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4117
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4118
        RDEBUG("CSCOMOAdapter::CheckStateChangesL: Already updated! ");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4119
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4120
    RDEBUG( "CSCOMOAdapter::CheckStateChangesL(): end" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4121
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4122
    DBG_ARGS8( "CSCOMOAdapter::CheckStateChangesL(): disabled" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4123
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4124
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4125
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4126
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4127
// CSCOMOAdapter::CheckStateChangesL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4128
// Updates acl and mapping trees to match state changes
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4129
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4130
void CSCOMOAdapter::CheckStateChangesL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4131
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4132
    iCertRequired = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4133
    RDEBUG( "CSCOMOAdapter::CheckStateChangesL(): iCertRequired = EFalse" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4134
    TRAPD( err, CheckStateChangesInternalL() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4135
    ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4136
    if (err != KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4137
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4138
        RDEBUG_2("CSCOMOAdapter::CheckStateChangesL(): warning failed to check state changes %d", err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4139
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4140
    iCertRequired = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4141
    RDEBUG( "CSCOMOAdapter::CheckStateChangesL(): iCertRequired = ETrue" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4142
    if ( !iTrustAdded)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4143
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4144
        RDEBUG( "CSCOMOAdapter::CheckStateChangesL(): Adding Trust Closing Session" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4145
        iManagement.Close();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4146
        iSessionOpened = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4147
        RApplicationManagement &session = SessionL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4148
        RDEBUG( "CSCOMOAdapter::CheckStateChangesL(): Adding Trust new session started" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4149
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4150
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4151
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4152
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4153
// CSCOMOAdapter::URISegsUpTo(const TDesC8& aURI, TInt aUpTo)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4154
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4155
TPtrC8 CSCOMOAdapter::URISegsUpTo(const TDesC8& aURI, TInt aUpTo,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4156
        TBool aInclKeno/*=EFalse*/)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4157
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4158
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4159
    TPtrC8 ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4160
    TInt numOfURISegs( 0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4161
    for (TInt i( 0); i < aURI.Length() && ret.Ptr() == NULL; i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4162
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4163
        if (aURI[i] == KNSmlDMUriSeparator)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4164
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4165
            numOfURISegs++;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4166
            if (aUpTo == numOfURISegs)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4167
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4168
                if (aInclKeno && aURI.Length() > i+1)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4169
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4170
                    ret.Set(aURI.Left(i + 1) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4171
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4172
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4173
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4174
                    ret.Set(aURI.Left(i) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4175
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4176
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4177
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4178
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4179
    return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4180
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4181
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4182
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4183
// CSCOMOAdapter::DirectGetLuidAllocLC( const TDesC8 &aURI )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4184
// -------------------------------------------------------------------------------------	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4185
HBufC8 *CSCOMOAdapter::DirectGetLuidAllocLC(const TDesC8 &aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4186
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4187
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4188
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4189
    HBufC8 *ret = Callback().GetLuidAllocL( aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4190
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4191
    HBufC8* ret = iDbSession.GetLuidAllocL(KAMAdapterImplUid, aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4192
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4193
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4194
    CleanupStack::PushL(ret);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4195
    return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4196
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4197
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4198
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4199
// CSCOMOAdapter::DirectSetMappingL( const TDesC8 &aURI, const TDesC8 &aLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4200
// -------------------------------------------------------------------------------------		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4201
TInt CSCOMOAdapter::DirectSetMappingL(const TDesC8 &aURI, const TDesC8 &aLUID)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4202
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4203
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4204
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4205
    TRAPD( err, Callback().SetMappingL( aURI, aLUID ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4206
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4207
    TInt err(iDbSession.AddMappingInfoL(KAMAdapterImplUid, aURI, aLUID) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4208
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4209
    return err;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4210
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4211
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4212
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4213
// CSCOMOAdapter::MoveAclL( const TDesC8 &aFrom, const TDesC8 &aTo )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4214
// -------------------------------------------------------------------------------------		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4215
void CSCOMOAdapter::MoveAclL(const TDesC8 &aFrom, const TDesC8 &aTo)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4216
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4217
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4218
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4219
    RDmTreeNode from;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4220
    CleanupClosePushL(from);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4221
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4222
    RDmTreeNode to;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4223
    CleanupClosePushL(to);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4224
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4225
    RBuf8 acl;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4226
    acl.CreateL(128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4227
    CleanupClosePushL(acl);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4228
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4229
    iDbSession.OpenNodeL(aFrom, from, RDmTree::EReadOnly);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4230
    TRAPD( err, from.DmPropertyL( DevMan::EACL, acl ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4231
    if ( err == KErrNone )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4232
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4233
        iDbSession.OpenNodeL(aTo, to, RDmTree::EReadOnly);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4234
        from.RemoveDmPropertyL( DevMan::EACL );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4235
        to.SetDmPropertyL( DevMan::EACL, acl );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4236
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4237
    CleanupStack::PopAndDestroy( 3, &from );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4238
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4239
    CBufBase *acl = CBufFlat::NewL( 128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4240
    CleanupStack::PushL(acl);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4241
    TInt err(iDbSession.GetAclL(aFrom, *acl, EFalse) ); // no need for inherited
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4242
    if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4243
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4244
        err = iDbSession.DeleteAclL(aFrom);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4245
        err = iDbSession.UpdateAclL(aTo, acl->Ptr( 0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4246
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4247
    CleanupStack::PopAndDestroy(acl);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4248
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4249
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4250
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4251
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4252
// CSCOMOAdapter::SetMappingL( const TDesC8 &aOriginalURI, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4253
//	const TDeploymentComponentState aTargetState, const TDesC8 &aLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4254
// -------------------------------------------------------------------------------------		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4255
void CSCOMOAdapter::SetMappingL(const TDesC8 &aOriginalURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4256
        const TDeploymentComponentState aTargetState, const TDesC8 &aLUID)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4257
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4258
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4259
    HBufC8 * targeturi= NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4260
    SetMappingLC(aOriginalURI, aTargetState, aLUID, targeturi);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4261
    CleanupStack::PopAndDestroy(targeturi);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4262
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4263
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4264
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4265
// CSCOMOAdapter::SetMappingLC( const TDesC8 &aOriginalURI, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4266
//	const TDeploymentComponentState aTargetState, const TDesC8 &aLUID, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4267
//	HBufC8 *&aNewUri )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4268
// -------------------------------------------------------------------------------------		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4269
void CSCOMOAdapter::SetMappingLC(const TDesC8 &aOriginalURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4270
        const TDeploymentComponentState aTargetState, const TDesC8 &aLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4271
        HBufC8 *&aNewUri)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4272
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4273
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4274
    // "Nullify" the mapping for argument
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4275
    DirectSetMappingL(aOriginalURI, KNullDesC8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4276
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4277
    // Determine new uri for aArgument
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4278
    TPtrC8 puri;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4279
    if (aNewUri == NULL)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4280
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4281
        TPtrC8 argMapping(NSmlDmURI::LastURISeg(aOriginalURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4282
        TPtrC8 target;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4283
        if (aTargetState == EDCSInactive || aTargetState == EDCSActive)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4284
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4285
            target.Set(KDeployedURI() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4286
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4287
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4288
            if (aTargetState == EDCSDelivered)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4289
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4290
                target.Set(KDeliveredURI() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4291
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4292
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4293
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4294
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4295
                User::Leave(KErrArgument);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4296
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4297
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4298
        aNewUri = HBufC8::NewLC(target.Length() + argMapping.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4299
        TPtr8 p(aNewUri->Des() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4300
        p.Copy(target);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4301
        p.Append(argMapping);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4302
        puri.Set(p);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4303
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4304
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4305
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4306
        puri.Set( *aNewUri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4307
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4308
    DirectSetMappingL(puri, aLUID);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4309
    MoveAclL(aOriginalURI, puri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4310
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4311
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4312
#ifdef __AM_LASTERROR_NODE
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4313
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4314
// CSCOMOAdapter::SetLastErrorL( const TDesC8& aLastError, const TInt aError )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4315
// ------------------------------------------------------------------------------------------------	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4316
void CSCOMOAdapter::SetLastErrorL(const TDesC8& aLastError, const TInt aError)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4317
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4318
    if (iLastError)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4319
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4320
        TPtrC8 p(*iLastError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4321
        RDEBUG8_2( "CSCOMOAdapter::SetLastErrorL: clearing last error %S", &p);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4322
        delete iLastError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4323
        iLastError = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4324
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4325
    iLastError = HBufC8::NewL(aLastError.Length() + 10);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4326
    iLastError->Des().Format(aLastError, aError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4327
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4328
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4329
const TDesC8& CSCOMOAdapter::LastError()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4330
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4331
    return iLastError == NULL ? KNullDesC8() : *iLastError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4332
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4333
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4334
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4335
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4336
TPtrC8 CSCOMOAdapter::LastURISeg(const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4337
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4338
    TInt i;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4339
    for (i=aURI.Length()-1; i>=0; i--)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4340
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4341
        if (aURI[i]==KNSmlDMAMSeparatorDef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4342
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4343
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4344
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4345
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4346
    if (i==0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4347
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4348
        return aURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4349
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4350
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4351
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4352
        return aURI.Mid(i+1);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4353
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4354
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4355
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4356
TInt CSCOMOAdapter::DesToInt(const TDesC8& aLuid)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4357
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4358
    TLex8 lex(aLuid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4359
    TInt value = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4360
    lex.Val(value);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4361
    return value;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4362
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4363
void CSCOMOAdapter::CheckAndAddPredefinedNodeL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4364
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4365
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4366
    RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): begin");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4367
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4368
    // Check if SCOMODefault node addition is enabled.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4369
    TInt staticnodeenabled = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4370
    CRepository* cenrep = CRepository::NewLC( KCRUidPrivateApplicationManagementKeys );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4371
    cenrep->Get( KAMStaticNodeEnabled, staticnodeenabled ); 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4372
    CleanupStack::PopAndDestroy(); //cenrep
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4373
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4374
    RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step1");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4375
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4376
    if(staticnodeenabled)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4377
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4378
      TBuf8<KMaxFullName> temp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4379
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4380
      RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step2");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4381
      GetPredefinedNodeL(temp);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4382
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4383
      RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step3");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4384
      if (temp.Length())
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4385
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4386
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4387
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4388
        RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step4");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4389
        TBuf8<KMaxFullName> temp1;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4390
        temp1.Zero();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4391
        temp1.Copy(KAMNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4392
        temp1.Append(KAMSeparator8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4393
        temp1.Append(KAMDownloadNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4394
        temp1.Append(KAMSeparator8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4395
        temp1.Append(temp);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4396
       
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4397
        HBufC8* luid = DirectGetLuidAllocLC(temp1);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4398
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4399
         RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step5");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4400
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4401
        if (luid->Length() > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4402
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4403
            CleanupStack::PopAndDestroy(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4404
            return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4405
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4406
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4407
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4408
            RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step6");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4409
            // Not found, add node and mapping ... 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4410
            //TError status(EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4411
            TPtrC8 mapping(NSmlDmURI::LastURISeg(temp1) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4412
            TPtrC8 parent(NSmlDmURI::RemoveLastSeg(temp1) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4413
            TPtrC8 parentMapping(NSmlDmURI::LastURISeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4414
            TInt cnt(NSmlDmURI::NumOfURISegs(temp1) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4415
             RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step7");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4416
            TUint32 newLuid(SessionL().DownloadL(mapping));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4417
            //Callback().SetMappingL( temp1, *IntToDes8LC( newLuid ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4418
            //CleanupStack::PopAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4419
            RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step8");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4420
            DirectSetMappingL(temp1, *IntToDes8LC(newLuid) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4421
            RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step9");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4422
            CleanupStack::PopAndDestroy(); // for IntToDes8LC()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4423
            CleanupStack::PopAndDestroy(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4424
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4425
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4426
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4427
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4428
// ---------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4429
// CAmAdapter::GetPredefinedNodeL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4430
// Gets  predefined node for Download object from cenrep 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4431
// ---------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4432
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4433
void CSCOMOAdapter::GetPredefinedNodeL(TDes8& aNode)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4434
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4435
	CRepository* centrep( NULL);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4436
	aNode.Zero();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4437
   	centrep = CRepository::NewLC( KCRUidPrivateApplicationManagementKeys );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4438
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4439
    if ( centrep )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4440
	    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4441
        TBuf8<256> temp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4442
		TInt err = centrep->Get( KAMDownloadPredefinedNode, temp );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4443
    	if (centrep->Get( KAMDownloadPredefinedNode, temp )==KErrNone && temp.Length() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4444
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4445
			temp.Trim();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4446
			aNode.Copy(temp);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4447
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4448
		CleanupStack::PopAndDestroy(centrep);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4449
	    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4450
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4451
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4452
// CAmAdapter::DirectRemoveMappingL( const TDesC8 &aURI )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4453
// -------------------------------------------------------------------------------------        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4454
TInt CSCOMOAdapter::DirectRemoveMappingL( const TDesC8 &aURI )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4455
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4456
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4457
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4458
    TRAPD( err, Callback().SetMappingL( aURI, aLUID ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4459
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4460
    TInt err( iDbSession.RemoveMappingInfoL( KAMAdapterImplUid, aURI, ETrue ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4461
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4462
    return err;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4463
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4464
TInt CSCOMOAdapter::GetAdapterValue()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4465
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4466
    TInt adapterValue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4467
    CRepository *repository = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4468
    TRAPD( err, repository = CRepository::NewL ( KCRUidPrivateApplicationManagementKeys ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4469
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4470
    RDEBUG_2("error reading cenrep %d", err);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4471
    if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4472
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4473
        err = repository->Get(KAMAdapterValue, adapterValue);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4474
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4475
    delete repository;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4476
    repository = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4477
    return adapterValue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4478
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4479
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4480
void CSCOMOAdapter::SetAdapterValue(TInt aAdapterValue)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4481
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4482
    CRepository *repository = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4483
    TRAPD( err, repository = CRepository::NewL ( KCRUidPrivateApplicationManagementKeys ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4484
    if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4485
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4486
        err = repository->Set(KAMAdapterValue, aAdapterValue);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4487
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4488
    delete repository;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4489
    repository = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4490
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4491
TBool CSCOMOAdapter::RecognizeMimeType(const TDesC8& aMimeType)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4492
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4493
    TBool isSupportedMimeType = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4494
    if ((aMimeType == KSisxMimeType )||(aMimeType == KSisMimeType )||(aMimeType == KPipMimeType )||
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4495
            (aMimeType == KJadMIMEType )||(aMimeType == KJarMIMEType )||(aMimeType == KJavaMIMEType ))
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4496
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4497
        isSupportedMimeType = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4498
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4499
    return isSupportedMimeType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4500
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4501
// End of File
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4502