applicationmanagement/omascomoadapter/src/omascomoadapter.cpp
author hgs
Fri, 15 Oct 2010 11:39:02 +0530
changeset 67 fdbfe0a95492
parent 47 d316aecb87fd
permissions -rw-r--r--
201041
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 ;
67
hgs
parents: 47
diff changeset
   980
    		CleanupStack::PushL(item);
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   981
    		HBufC8 *data = HBufC8::NewL(1024);
67
hgs
parents: 47
diff changeset
   982
        CleanupStack::PushL(data);    
hgs
parents: 47
diff changeset
   983
        	
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   984
            TPtr8 ptr = data->Des();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   985
            //ptr.Append(KDataStart);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   986
            ptr.Append(KResultCodeStart);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   987
            ptr.Append(dataresult);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   988
            ptr.Append(KResultCodeEnd);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   989
            ptr.Append(KIdentifierStart);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   990
            ptr.Append(mapping);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   991
            ptr.Append(KIdentifierEnd);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   992
            //ptr.Append(KDataEnd);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   993
67
hgs
parents: 47
diff changeset
   994
        HBufC8 *sourceuri = genericalerts[i]->iSourceURI;
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   995
    		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   996
    		item->iSource = sourceuri;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   997
67
hgs
parents: 47
diff changeset
   998
				HBufC8 *targeturi = targetURIGet.AllocL();
hgs
parents: 47
diff changeset
   999
    		CleanupStack::PushL(targeturi);  
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1000
    		item->iTarget = targeturi;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1001
    		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1002
    		HBufC8 *metatype = scomometatype.AllocL();
67
hgs
parents: 47
diff changeset
  1003
    		CleanupStack::PushL(metatype);            
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1004
    		item->iMetaType = metatype;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1005
    		            
67
hgs
parents: 47
diff changeset
  1006
    		HBufC8 *metaformat = scomometaformat.AllocL();
hgs
parents: 47
diff changeset
  1007
    		CleanupStack::PushL(metaformat);
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1008
    		item->iMetaFormat = metaformat;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1009
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1010
    		HBufC8 *metamark = scomomark.AllocL();
67
hgs
parents: 47
diff changeset
  1011
    		CleanupStack::PushL(metamark);            
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1012
    		item->iMetaMark = metamark;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1013
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1014
    		item->iData = data;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1015
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1016
    		iItemArray.AppendL(*item);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1017
            
67
hgs
parents: 47
diff changeset
  1018
        TRAP_IGNORE(privateAPI.AddDMGenericAlertRequestL(              
hgs
parents: 47
diff changeset
  1019
                    *genericalerts[i]->iCorrelator,iItemArray ));       
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1020
            
67
hgs
parents: 47
diff changeset
  1021
        CleanupStack::PopAndDestroy( metamark);            
hgs
parents: 47
diff changeset
  1022
        CleanupStack::PopAndDestroy( metaformat);           
hgs
parents: 47
diff changeset
  1023
        CleanupStack::PopAndDestroy( metatype);	            
hgs
parents: 47
diff changeset
  1024
        CleanupStack::PopAndDestroy( targeturi);	
hgs
parents: 47
diff changeset
  1025
        CleanupStack::PopAndDestroy( data);	
hgs
parents: 47
diff changeset
  1026
        CleanupStack::PopAndDestroy( item);
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1027
                    
67
hgs
parents: 47
diff changeset
  1028
        iItemArray.Reset();			
hgs
parents: 47
diff changeset
  1029
				iItemArray.Close();
hgs
parents: 47
diff changeset
  1030
        CleanupStack::PopAndDestroy( &privateAPI);
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1031
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1032
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1033
    genericalerts.ResetAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1034
    CleanupStack::PopAndDestroy(); //serverid
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1035
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1036
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1037
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1038
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1039
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1040
// CSCOMOAdapter::SessionL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1041
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1042
RApplicationManagement &CSCOMOAdapter::SessionL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1043
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1044
    if ( !iSessionOpened)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1045
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1046
        TCertInfo info;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1047
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1048
        const TUid KCentralRepositoryUid =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1049
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1050
            0x10207843
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1051
            };
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1052
        const TInt KCertKey = 0x01;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1053
        CRepository *re= NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1054
        TRAPD( errx, re = CRepository::NewL ( KCentralRepositoryUid ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1055
        if (errx == KErrNone && re)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1056
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1057
            TPckg<TCertInfo> pcert(info);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1058
            errx = re->Get(KCertKey, pcert) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1059
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1060
            RDEBUG_2("aCertInfo.iFingerprint.Length() is  %u",info.iFingerprint.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1061
            if (errx == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1062
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1063
                RDEBUG("CSCOMOAdapter::SessionL() errx == KErrNone");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1064
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1065
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1066
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1067
                if (errx != KErrNotFound)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1068
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1069
                    RDEBUG("CSCOMOAdapter::SessionL() errx != KErrNotFound");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1070
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1071
                else
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
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1076
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1077
            delete re;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1078
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1079
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1080
        if (errx == KErrNotFound || !iCertRequired)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1081
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1082
            RDEBUG("CSCOMOAdapter::SessionL() calling iManagement.Connect()");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1083
            User::LeaveIfError(iManagement.Connect() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1084
            iSessionOpened = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1085
            iTrustAdded = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1086
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1087
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1088
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1089
            RDEBUG("CSCOMOAdapter::SessionL() calling iManagement.Connect( info )");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1090
            User::LeaveIfError(iManagement.Connect(info) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1091
            iSessionOpened = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1092
            iTrustAdded = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1093
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1094
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1095
    return iManagement;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1096
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1097
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1098
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1099
//  CSCOMOAdapter::UpdateLeafObjectL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1100
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1101
void CSCOMOAdapter::UpdateLeafObjectL(const TDesC8& aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1102
        const TDesC8& aLUID, const TDesC8& aObject, const TDesC8& aType,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1103
        TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1104
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1105
    RDEBUG8_4("CSCOMOAdapter::UpdateLeafObjectL(): begin, '%S', '%S' '%S'", &aURI, &aLUID, &aType );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1106
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1107
    MSmlDmAdapter::TError status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1108
    SetAdapterValue(KAMSCOMOAdapter);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1109
    _UpdateLeafObjectL(aURI, aLUID, aObject, aType, aStatusRef, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1110
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1111
    SetStatusL(aStatusRef, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1112
    if (status == EOk)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1113
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1114
        if (iInAtomic)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1115
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1116
            iBuffer.Append(TAMCommandBufferElement(aStatusRef, aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1117
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1118
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1119
    RDEBUG_2("CSCOMOAdapter::UpdateLeafObjectL(): end (%d)", status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1120
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1121
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1122
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1123
//  CSCOMOAdapter::UpdateLeafObjectL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1124
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1125
void CSCOMOAdapter::_UpdateLeafObjectL(const TDesC8& aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1126
        const TDesC8& aLUID, const TDesC8& aObject, const TDesC8& aType,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1127
        TInt /*aStatusRef*/, MSmlDmAdapter::TError& aStatus)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1128
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1129
    RDEBUG("CSCOMOAdapter::_UpdateLeafObjectL(): begin");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1130
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1131
    CheckStateChangesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1132
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1133
    TError status(EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1134
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1135
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1136
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash( aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1137
    TInt numSeqs( NSmlDmURI::NumOfURISegs( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1138
    TPtrC8 mapping( NSmlDmURI::LastURISeg( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1139
    TPtrC8 parent( NSmlDmURI::RemoveLastSeg( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1140
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1141
    TInt numSeqs(NSmlDmURI::NumOfURISegs(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1142
    TPtrC8 mapping(NSmlDmURI::LastURISeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1143
    TPtrC8 parent(NSmlDmURI::RemoveLastSeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1144
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1145
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1146
    if (mapping == KAMNameNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1147
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1148
        if (aObject.Size() > KDeploymentComponentNameMaxLength)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1149
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1150
            aStatus = ETooLargeObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1151
            return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1152
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1153
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1154
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1155
        if (mapping == KAMVersionNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1156
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1157
            if (aObject.Size() > KDeploymentComponentVersionMaxLength)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1158
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1159
                aStatus = ETooLargeObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1160
                return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1161
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1162
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1163
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1164
	if (mapping == KAMURINodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1165
	  {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1166
	   if (aObject.Size() > KMaxUrlLength)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1167
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1168
                aStatus = ETooLargeObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1169
                return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1170
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1171
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1172
	  }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1173
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1174
            if (mapping == KAMConRefNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1175
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1176
                if (aObject.Size() > KMaxConRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1177
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1178
                    aStatus = ETooLargeObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1179
                    return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1180
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1181
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1182
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1183
                if (mapping == KAMDescriptionNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1184
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1185
                    if (aObject.Size() > 512)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1186
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1187
                        aStatus = ETooLargeObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1188
                        return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1189
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1190
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1191
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1192
               if(mapping == KAMPkgIDNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1193
               {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1194
               if(aObject.Size() > 256)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1195
               {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1196
               	aStatus = ETooLargeObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1197
                        return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1198
               }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1199
               }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1200
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1201
              if(mapping == KAMPkgTypeNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1202
              {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1203
                // ADD check for PkgType MIME Type if not supported 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1204
                // error status should be sent and operation should stop
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1205
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1206
              	if(aObject.Size() >100)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1207
              	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1208
              		aStatus = ETooLargeObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1209
                        return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1210
              	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1211
              }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1212
             
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1213
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1214
    TPtrC8 grandParent(NSmlDmURI::RemoveLastSeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1215
    TPtrC8 grandParentMapping(NSmlDmURI::LastURISeg(grandParent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1216
    RApplicationManagement &session = SessionL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1217
    TDeploymentComponentState state(EDCSNone);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1218
    if (numSeqs == 4 || numSeqs == 5)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1219
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1220
        if (numSeqs == 4)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1221
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1222
            state = EDCSDownload;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1223
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1224
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1225
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1226
            if (grandParentMapping == KAMDeliveredNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1227
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1228
                state = EDCSDelivered;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1229
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1230
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1231
                if (grandParentMapping == KAMDeployedNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1232
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1233
                    state = EDCSActive;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1234
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1235
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1236
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1237
                    RDEBUG8_3( "CSCOMOAdapter::UpdateLeafObjectL(): ILLEGAL LEVEL %d NODE %S", numSeqs, &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1238
                    User::Leave(KErrArgument);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1239
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1240
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1241
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1242
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1243
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1244
        RDEBUG8_3("CSCOMOAdapter::UpdateLeafObjectL(): ILLEGAL LEVEL %d NODE %S", numSeqs, &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1245
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1246
    if (state == EDCSDelivered || state == EDCSDownload ||state == EDCSActive
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1247
            ||state == EDCSInactive)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1248
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1249
        if (aLUID != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1250
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1251
            TInt iluid(DesToIntL(aLUID) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1252
            TDeploymentComponent comp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1253
            TInt err(session.DeploymentComponent(iluid, comp) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1254
            if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1255
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1256
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1257
                // Set default component install options for particular iluid.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1258
                TPtrC8 obj;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1259
                TAMInstallOptions opts; 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1260
                TAMInstallOptionsPckg optsb(opts);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1261
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1262
                TBuf<KMaxSizeString> drive;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1263
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1264
                CRepository *rep = CRepository::NewLC(KCRUidPrivateApplicationManagementKeys );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1265
                rep->Get(KDefaultDriveForInstall,drive);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1266
                CleanupStack::PopAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1267
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1268
                //TChar KDefaultDrive = 'c';
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1269
                TChar KDefaultDrive = drive[0]; 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1270
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1271
	 			opts.iOptions.iUpgrade = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1272
     			opts.iOptions.iOptionalItems = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1273
     			opts.iOptions.iOCSP = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1274
     			opts.iOptions.iIgnoreOCSPWarnings = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1275
					
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1276
     			opts.iOptions.iUntrusted = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1277
     			opts.iOptions.iPackageInfo = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1278
     			opts.iOptions.iCapabilities = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1279
     			opts.iOptions.iKillApp = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1280
     			opts.iOptions.iOverwrite = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1281
     			opts.iOptions.iDownload = SwiUI::EPolicyAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1282
     			opts.iOptions.iDrive = KDefaultDrive;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1283
     			opts.iOptions.iLang = ELangNone;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1284
     			opts.iOptions.iUsePhoneLang = EFalse ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1285
     			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1286
     			obj.Set(optsb);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1287
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1288
                TRAP_IGNORE( session.UpdateDeploymentComponentL( iluid, EDCInstallOptions, obj ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1289
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1290
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1291
                TDeplCompAttrType fl(UpdateFlagFromMapping(mapping) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1292
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1293
                if (mapping == KAMDataNodeName || mapping
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1294
                        == KAMDescriptorNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1295
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1296
                    TInt erx(KErrNone);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1297
                    if ((mapping == KAMDataNodeName) &&(RecognizeMimeType(aType)== EFalse))
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1298
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1299
                        User::Leave(EInvalidObject);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1300
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1301
                    if (iIsStreamedContent)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1302
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1303
                        CloseStreaming();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1304
                        TRAP( erx, session.UpdateDeploymentComponentStreamedDataL( iluid, fl, aType ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1305
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1306
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1307
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1308
                        // 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1309
                        TRAP( erx, session.UpdateDeploymentComponentDataL( iluid, fl, aObject, aType ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1310
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1311
                    MAPERROR( erx, status, _L8("Update Delivered Data or metadata %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1312
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1313
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1314
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1315
                    if (fl != EDCNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1316
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1317
                        TPtrC8 obj;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1318
                        TAMInstallOptions opts;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1319
                        TAMInstallOptionsPckg optsb(opts);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1320
                        TPckgBuf<TInt> iap;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1321
                        if (fl == EDCInstallOptions)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1322
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1323
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1324
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1325
                            if (fl == EDCConRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1326
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1327
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1328
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1329
                                //CNSmlDMIAPMatcher* iapfinder = CNSmlDMIAPMatcher::NewLC( &Callback() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1330
                                //TInt i( iapfinder->IAPIdFromURIL( aObject ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1331
                                //CleanupStack::PopAndDestroy( iapfinder );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1332
                                //iap() = i;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1333
                                CArrayFix<TSmlDmMappingInfo>* mapArray = new CArrayFixFlat<TSmlDmMappingInfo>(4);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1334
                                CleanupStack::PushL(mapArray);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1335
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1336
                                Callback().GetMappingInfoListL( KNSmlDMMMSSlashIAPUri,*mapArray );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1337
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1338
                                TInt iapValue = KErrNotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1339
                                TSmlDmMappingInfo mapInfo;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1340
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1341
                                for(TInt i = 0;i<mapArray->Count();i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1342
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1343
                                    if(LastURISeg(opts.iConRef)==mapArray->At(i).iURISeg)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1344
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1345
                                        iapValue=DesToInt(mapArray->At(i).iURISegLUID);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1346
                                        break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1347
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1348
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1349
                                iap() = iapValue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1350
                                mapArray->Reset();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1351
                                CleanupStack::PopAndDestroy(); //mapArray
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1352
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1353
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1354
                                CNSmlDMIAPMatcher
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1355
                                        * iapfinder =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1356
                                                CNSmlDMIAPMatcher::NewLC( &Callback() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1357
                                TInt i(iapfinder->IAPIdFromURIL(aObject) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1358
                                CleanupStack::PopAndDestroy(iapfinder);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1359
                                iap() = i;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1360
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1361
                                obj.Set(iap);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1362
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1363
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1364
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1365
                                obj.Set(aObject);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1366
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1367
                        TRAPD( erx, session.UpdateDeploymentComponentL( iluid, fl, obj ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1368
                        ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1369
                        MAPERROR( erx, status, _L8("Update some attribute %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1370
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1371
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1372
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1373
                        status = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1374
                        RDEBUG( "CSCOMOAdapter::UpdateLeafObjectL(): Unknown Target leaf" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1375
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1376
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1377
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1378
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1379
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1380
                RDEBUG_3( "CSCOMOAdapter::UpdateLeafObjectL(): FAILED TO GET COMPONENT OF ID %d: %d" , iluid, err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1381
                status = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1382
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1383
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1384
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1385
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1386
            RDEBUG8_2( "CSCOMOAdapter::UpdateLeafObjectL(): Faild to get luid allocation and find buffered for '%S'", &parent );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1387
            status = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1388
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1389
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1390
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1391
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1392
        RDEBUG8_2( "CSCOMOAdapter::UpdateLeafObjectL(): WARNING Tried to update illegal state leaf! '%S'", &grandParentMapping );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1393
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1394
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1395
    aStatus = status;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1396
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1397
    RDEBUG("CSCOMOAdapter::_UpdateLeafObjectL(): end");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1398
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1399
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1400
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1401
// CSCOMOAdapter::UpdateLeafObjectL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1402
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1403
void CSCOMOAdapter::UpdateLeafObjectL(const TDesC8& aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1404
        const TDesC8& aLUID, RWriteStream*& aStream, const TDesC8& aType,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1405
        TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1406
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1407
    RDEBUG8_4("CSCOMOAdapter::UpdateLeafObjectL() aStream: begin, '%S', '%S' '%S'", &aURI, &aLUID, &aType );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1408
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1409
    TError status(CSmlDmAdapter::EOk);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1410
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1411
    if (iStreamedURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1412
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1413
        delete iStreamedURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1414
        iStreamedURI = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1415
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1416
    iStreamedURI = aURI.AllocL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1417
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1418
    if (iStreamedLuid)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1419
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1420
        delete iStreamedLuid;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1421
        iStreamedLuid = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1422
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1423
    iStreamedLuid = aLUID.AllocL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1424
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1425
    if (iStreamedType)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1426
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1427
        delete iStreamedType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1428
        iStreamedType = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1429
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1430
    iStreamedType = aType.AllocL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1431
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1432
    if (!iStreamOpen)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1433
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1434
        RApplicationManagement &session = SessionL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1435
        TDeplCompAttrType attrType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1436
        TPtrC8 mapping(NSmlDmURI::LastURISeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1437
        TDeplCompAttrType fl(UpdateFlagFromMapping(mapping) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1438
        if (mapping == KAMDataNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1439
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1440
            attrType = EDCData;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1441
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1442
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1443
            if (mapping == KAMDescriptorNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1444
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1445
                attrType = EDCMetaData;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1446
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1447
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1448
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1449
                RDEBUG8_2("CSCOMOAdapter::UpdateLeafObjectL(): Unknown mapping: (%S)", &mapping);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1450
                status = CSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1451
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1452
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1453
        if (status == CSmlDmAdapter::EOk)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1454
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1455
            TInt iluid(DesToIntL(aLUID) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1456
            session.DeploymentComponentTempInstFileL(iluid, iStreamFile,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1457
                    attrType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1458
            iStream.Attach(iStreamFile);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1459
            aStream = &iStream;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1460
            iStreamOpen = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1461
            iIsStreamedContent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1462
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1463
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1464
    if ( !iInAtomic)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1465
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1466
        iStatusRef = aStatusRef;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1467
        Callback().SetStatusL(aStatusRef, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1468
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1469
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1470
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1471
        iBuffer.Append(TAMCommandBufferElement(aStatusRef, aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1472
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1473
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1474
    RDEBUG("CSCOMOAdapter::UpdateLeafObjectL() aStream : end");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1475
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1476
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1477
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1478
// CSCOMOAdapter::UpdateFlagFromMapping( const TDesC8& aMapping )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1479
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1480
TDeplCompAttrType CSCOMOAdapter::UpdateFlagFromMapping(const TDesC8& aMapping)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1481
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1482
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1483
    TDeplCompAttrType res;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1484
    if (aMapping == KAMIDNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1485
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1486
        res = EDCId;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1487
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1488
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1489
        if (aMapping == KAMNameNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1490
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1491
            res = EDCName;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1492
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1493
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1494
            if (aMapping == KAMVersionNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1495
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1496
                res = EDCVersion;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1497
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1498
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1499
                if (aMapping == KAMStateValueNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1500
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1501
                    res = EDCStateValue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1502
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1503
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1504
                    if (aMapping == KAMInstallOptsNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1505
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1506
                        res = EDCInstallOptions;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1507
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1508
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1509
                        if (aMapping == KAMDescriptorNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1510
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1511
                            res = EDCMetaData;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1512
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1513
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1514
                            if (aMapping == KAMDataNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1515
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1516
                                res = EDCData;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1517
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1518
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1519
                                if (aMapping == KAMURINodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1520
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1521
                                    res = EDCDownloadURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1522
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1523
                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1524
                                    if (aMapping == KAMStatusNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1525
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1526
                                         res = EDCStatus;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1527
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1528
                                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1529
                                        if (aMapping == KAMConRefNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1530
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1531
                                            res = EDCConRef;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1532
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1533
                                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1534
                                            if (aMapping
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1535
                                                    == KAMDescriptionNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1536
                                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1537
                                                res = EDCDescriptionRef;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1538
                                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1539
                                              else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1540
                                                if(aMapping == KAMPkgIDNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1541
                                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1542
                                                	res = EDCPkgID;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1543
                                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1544
                                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1545
                                                if(aMapping == KAMPkgTypeNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1546
                                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1547
                                                	res = EDCPkgType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1548
                                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1549
                                                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1550
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1551
                                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1552
                                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1553
                                                //User::Leave( KErrArgument );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1554
                                                res = EDCNone;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1555
                                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1556
    return res;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1557
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1558
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1559
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1560
// CSCOMOAdapter::GetLuidForUserIdL( const TDesC8 &aUserId, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1561
//		const TDeploymentComponentState aState )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1562
// ------------------------------------------------------------------------------------------------	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1563
TUint32 CSCOMOAdapter::GetLuidForUserIdL(const TDesC8 &aUserId,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1564
        const TDeploymentComponentState aState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1565
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1566
    TUint32 ret( 0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1567
    if (aState != EDCSNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1568
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1569
        RElementIdArray array;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1570
        TInt err(SessionL().DeploymentComponentIdsL(array, aState) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1571
        if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1572
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1573
            CleanupClosePushL(array);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1574
            TInt count(array.Count() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1575
            for (TInt i( 0); i < count && ret == 0; i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1576
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1577
                TUint32 el = array[i];
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1578
                TDCUserId dc;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1579
                SessionL().DeploymentComponentUserIdL(el, dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1580
                if (dc == aUserId)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1581
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1582
                    ret = el;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1583
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1584
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1585
            CleanupStack::PopAndDestroy( &array);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1586
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1587
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1588
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1589
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1590
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1591
    return ret;
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
// CSCOMOAdapter::GetLuid2L( const TDesC8 &aDMLuid, const TDesC8 &aUserId, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1596
//		const TDeploymentComponentState aState, TError &aStatus )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1597
// ------------------------------------------------------------------------------------------------	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1598
TUint32 CSCOMOAdapter::GetLuid2L(const TDesC8 &aDMLuid,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1599
        const TDesC8 &aUserId, const TDeploymentComponentState aState,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1600
        TError &aStatus)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1601
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1602
    TUint32 ret(GetLuidL(aDMLuid, aUserId, aState) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1603
    if ( (TInt32)ret <= 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1604
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1605
        aStatus = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1606
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1607
    return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1608
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1609
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1610
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1611
// CSCOMOAdapter::GetLuidL( const TDesC8 &aDMLuid, const TDesC8 &aUserId, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1612
//		const TDeploymentComponentState aState )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1613
// ------------------------------------------------------------------------------------------------	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1614
TUint32 CSCOMOAdapter::GetLuidL(const TDesC8 &aDMLuid, const TDesC8 &aUserId,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1615
        const TDeploymentComponentState aState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1616
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1617
    TUint32 ret( 0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1618
    if (aDMLuid == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1619
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1620
        ret = GetLuidForUserIdL(aUserId, aState);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1621
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1622
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1623
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1624
        ret = DesToIntL(aDMLuid) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1625
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1626
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1627
    return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1628
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1629
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1630
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1631
// CSCOMOAdapter::DeleteObjectL( const TDesC8& aURI, const TDesC8& aLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1632
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1633
void CSCOMOAdapter::DeleteObjectL(const TDesC8& aURI, const TDesC8& aLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1634
        const TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1635
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1636
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1637
    RDEBUG8_4("CSCOMOAdapter::DeleteObjectL(): begin (%S, %S, %d)" , &aURI, &aLUID, aStatusRef );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1638
    SetAdapterValue(KAMSCOMOAdapter);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1639
    CheckStateChangesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1640
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1641
    TError ret(EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1642
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1643
#ifdef __TARM_SYMBIAN_CONVERGENCY	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1644
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1645
    TInt cnt( NSmlDmURI::NumOfURISegs( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1646
    TPtrC8 mapping( NSmlDmURI::LastURISeg( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1647
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1648
    TInt cnt(NSmlDmURI::NumOfURISegs(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1649
    TPtrC8 mapping(NSmlDmURI::LastURISeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1650
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1651
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1652
	TBuf8<KMaxFullName> temp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1653
	GetPredefinedNodeL(temp);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1654
	TInt comp = mapping.Compare( temp );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1655
		if (temp.Length() && mapping.Compare( temp ) == 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1656
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1657
            MSmlDmAdapter::TError status = MSmlDmAdapter::ENotAllowed;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1658
            Callback().SetStatusL( aStatusRef, status );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1659
            return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1660
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1661
    switch (cnt)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1662
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1663
        case 3:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1664
        case 4:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1665
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1666
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1667
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1668
            TPtrC8 which( NSmlDmURI::URISeg( uriPtrc, cnt == 4 ? 3 : 2 ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1669
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1670
            TPtrC8 which(NSmlDmURI::URISeg(aURI, cnt == 4 ? 3 : 2) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1671
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1672
            if (which == KAMDeliveredNodeName || which == KAMDownloadNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1673
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1674
                TUint32 luid(GetLuidL(aLUID, mapping, (which
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1675
                        == KAMDeliveredNodeName
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1676
                                                ? EDCSDelivered
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1677
                                                   : EDCSDownload)) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1678
                if (luid > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1679
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1680
                    TRAPD( err, SessionL().RemoveL( luid ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1681
                    ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1682
                    if (err == KErrNone || err == KErrNotFound)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1683
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1684
                        ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1685
                        Callback().SetMappingL(aURI, KNullDesC8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1686
                        if (err == KErrNone && iInAtomic)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1687
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1688
                            iBuffer.Append(TAMCommandBufferElement(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1689
                                    aStatusRef, aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1690
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1691
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1692
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1693
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1694
                        MAPERROR( err, ret, _L8("Delete %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1695
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1696
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1697
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1698
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1699
                    RDEBUG( "CSCOMOAdapter::DeleteObjectL(): WARNING Object not found" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1700
                    ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1701
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1702
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1703
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1704
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1705
                RDEBUG8_2( "CSCOMOAdapter::DeleteObjectL(): ERROR Removing node %S is not supported", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1706
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1707
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1708
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1709
        default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1710
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1711
            RDEBUG8_3( "CSCOMOAdapter::DeleteObjectL(): ILLEGAL LEVEL %d NODE %S", cnt, &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1712
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1713
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1714
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1715
    SetStatusL(aStatusRef, ret);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1716
    RDEBUG( "CSCOMOAdapter::DeleteObjectL(): end" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1717
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1718
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1719
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1720
// CSCOMOAdapter::DeactivateIfInactive( const TUint aLuidi, const TDeploymentComponentState aTargetState )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1721
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1722
void CSCOMOAdapter::DeactivateIfInactive(const TUint aLuidi,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1723
        const TDeploymentComponentState aTargetState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1724
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1725
    if (aTargetState == EDCSInactive)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1726
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1727
        RDEBUG( "CSCOMOAdapter::DeactivateIfInactive():  deactivating!" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1728
        TRAPD( derr, iManagement.DeactivateL( aLuidi ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1729
        ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1730
        if (derr != KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1731
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1732
            RDEBUG_2("CSCOMOAdapter::DeactivateIfInactive(): ERROR deactivating failed %d", derr );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1733
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1734
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1735
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1736
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1737
void CSCOMOAdapter::InstallL(TUint aLuidi, const TDesC8& aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1738
        const TDesC8& aLUID, const TDeploymentComponentState aTargetState,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1739
        TError &aRet)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1740
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1741
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1742
#ifdef __TARM_SYMBIAN_CONVERGENCY	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1743
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1744
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1745
    //nothing
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1746
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1747
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1748
    TRAPD( err, SessionL().InstallL( aLuidi, aTargetState ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1749
    ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1750
    if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1751
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1752
        // Update the mappings in client to reflect new
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1753
        //		position in the management tree ( Inactive or Active..)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1754
        RDEBUG( "CSCOMOAdapter::InstallL(): Install success!" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1755
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1756
        TPtrC8 aclmapping(URISegsUpTo(aURI, 4) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1757
        SetMappingL(aclmapping, aTargetState, aLUID);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1758
        iManagement.StateChangeComplete(aLuidi);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1759
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1760
        DeactivateIfInactive(aLuidi, aTargetState);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1761
        aRet = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1762
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1763
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1764
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1765
        RDEBUG_2( "CSCOMOAdapter::InstallL(): INSTALL FAILED '%d'" , err);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1766
        MAPERROR( err, aRet, _L8("Install %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1767
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1768
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1769
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1770
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1771
// CSCOMOAdapter::DefaultMapError( const TInt aErr, TError &aRet )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1772
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1773
void CSCOMOAdapter::DefaultMapError(const TInt aErr, TError &aRet,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1774
        const TDesC8&
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1775
#ifdef __AM_LASTERROR_NODE
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1776
        aDes
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1777
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1778
)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1779
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1780
    if (aErr == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1781
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1782
        aRet = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1783
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1784
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1785
        if (aErr == KErrNotFound)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1786
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1787
            aRet = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1788
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1789
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1790
            if (aErr == KErrArgument)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1791
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1792
                aRet = EInvalidObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1793
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1794
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1795
                if (aErr == KErrAlreadyExists)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1796
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1797
                    aRet = EAlreadyExists;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1798
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1799
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1800
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1801
                    aRet = EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1802
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1803
#ifdef __AM_LASTERROR_NODE
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1804
    TInt err = KErrNone;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1805
    TRAP( err, SetErrorL( aDes, aErr ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1806
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1807
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1808
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1809
#ifdef __AM_LASTERROR_NODE	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1810
void CSCOMOAdapter::SetErrorL(const TDesC8& aDes, const TInt aErr)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1811
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1812
    if (aDes != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1813
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1814
        SetLastErrorL(aDes, aErr);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1815
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1816
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1817
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1818
        SetLastErrorL(KStdError, aErr);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1819
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1820
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1821
#endif	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1822
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1823
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1824
// CSCOMOAdapter::ExecuteCommandL( const TDesC8& aURI, const TDesC8& aLUID, const TDesC8& aArgument, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1825
//	const TDesC8& aType, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1826
//	TInt aStatusRef )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1827
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1828
TDownloadTarget CSCOMOAdapter::DownloadTargetL(const TDesC8& aCommand)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1829
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1830
    if (aCommand == KAMDownloadOperationNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1831
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1832
        return EDeliver;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1833
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1834
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1835
        if (aCommand == KAMDownloadAndInstallNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1836
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1837
            return EInstallAndActivate;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1838
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1839
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1840
            if (aCommand == KAMDownloadAndInstallAndInActivateNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1841
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1842
                return EInstall;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1843
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1844
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1845
    RDEBUG8_2( "CSCOMOAdapter::DownloadTargetL(): ASKED OPERATION NOT SUPPORTED Download '%S'", &aCommand );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1846
    User::Leave(KErrArgument);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1847
    // NOTE! will not ever come here! Only to get rid of compiler warning !!
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1848
    return EDeliver;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1849
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1850
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1851
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1852
// CSCOMOAdapter::ExecuteCommandL( const TDesC8& aURI, const TDesC8& aLUID, const TDesC8& aArgument, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1853
//	const TDesC8& aType, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1854
//	TInt aStatusRef )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1855
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1856
void CSCOMOAdapter::ExecuteCommandL(const TDesC8& aURI, const TDesC8& aLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1857
        const TDesC8& aArgument, const TDesC8& /*aType*/, TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1858
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1859
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1860
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1861
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1862
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1863
    //nothing
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1864
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1865
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1866
    RDEBUG8_3("CSCOMOAdapter::ExecuteCommandL(): begin, '%S', '%S'", &aURI, &aLUID );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1867
    SetAdapterValue(KAMSCOMOAdapter);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1868
    CheckStateChangesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1869
    TError ret(EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1870
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1871
    if (aLUID == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1872
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1873
        RDEBUG("CSCOMOAdapter::ExecuteCommandL(): WARNING no valid luid provided" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1874
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1875
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1876
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1877
    TInt cnt( NSmlDmURI::NumOfURISegs( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1878
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1879
    TInt cnt(NSmlDmURI::NumOfURISegs(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1880
#endif	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1881
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1882
    TPtrC8 mapping(NSmlDmURI::LastURISeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1883
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1884
    const TInt KDownloadMappingURILoc = 3;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1885
    switch (cnt)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1886
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1887
        case 5:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1888
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1889
            TUint32 iluid(GetLuidL(aLUID, NSmlDmURI::URISeg(aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1890
                    KDownloadMappingURILoc), EDCSDownload) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1891
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1892
            // Track the Newly added delivered  node to make sure that this reference
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1893
            // of delivered node is removed from Tree DB.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1894
            // This delivered node is removed only if Execute command is successful
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1895
            // by either adding Install, Install& activate etc.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1896
            // This Fix would be applicable in case of DM 1.2. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1897
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1898
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1899
            TPtrC8 urival(URISegsUpTo(aURI, KDownloadMappingURILoc));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1900
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1901
            if (iUriDel)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1902
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1903
                delete iUriDel;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1904
                iUriDel = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1905
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1906
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1907
            iUriDel = urival.AllocL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1908
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1909
            RDEBUG_2("CSCOMOAdapter::ExecuteCommandL(): luid is %d", iluid );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1910
            if (iluid > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1911
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1912
                TDownloadTarget target = DownloadTargetL(mapping);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1913
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1914
                TRAPD( errx, SessionL().StartDownloadL( iluid, target ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1915
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1916
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1917
                //Check If Sync is supported. Default is ASyncReporting.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1918
                //If ASyncSupported is 0 mean Sync reporting is supported.  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1919
                TInt ASyncSupported = -1;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1920
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1921
                CRepository *repository=CRepository::NewLC ( KCRUidPrivateApplicationManagementKeys );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1922
                repository->Get(KAsyncEnabled,ASyncSupported);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1923
                CleanupStack::PopAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1924
                    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1925
				if(errx == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1926
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1927
                if (ASyncSupported)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1928
                    ASyncReportL(iluid, aArgument, target, aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1929
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1930
                    SyncReportL(iluid, aArgument, target, aURI, ret);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1931
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1932
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1933
                if (target == EInstall || target == EInstallAndActivate)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1934
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1935
                    TInt err(iDbSession.RemoveMappingInfoL(KAMAdapterImplUid,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1936
                            *iUriDel, iluid) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1937
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1938
                if (errx == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1939
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1940
                    RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): StartDownloadL Successful " );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1941
                    if (ASyncSupported)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1942
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1943
                       
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1944
                       ret = EAcceptedForProcessing;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1945
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1946
                        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1947
                    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1948
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1949
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1950
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1951
                    RDEBUG_2( "CSCOMOAdapter::ExecuteCommandL(): StartDownloadL FAILED '%d'", errx );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1952
                    if (errx == KErrNotFound)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1953
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1954
                        ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1955
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1956
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1957
                        if (errx == KErrArgument)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1958
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1959
                            ret = EInvalidObject ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1960
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1961
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1962
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1963
                            ret = EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1964
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1965
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1966
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1967
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1968
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1969
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1970
                ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1971
                RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 5 Not found node" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1972
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1973
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1974
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1975
        case 6:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1976
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1977
            const TInt KInventoryMappingURILoc = 4;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1978
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1979
            // Track the Newly added delivered  node to make sure that this reference
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1980
            // of delivered node is removed from Tree DB.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1981
            // This delivered node is removed only if Execute command is successful
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1982
            // by either adding Install, Install& activate etc.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1983
            // This Fix would be applicable in case of DM 1.2. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1984
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1985
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1986
            TPtrC8 urival(URISegsUpTo(aURI, KInventoryMappingURILoc));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1987
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1988
            if (iUriDel)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1989
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1990
                delete iUriDel;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1991
                iUriDel = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1992
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1993
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1994
            iUriDel = urival.AllocL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1995
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1996
            if (mapping == KAMInstallNodeName || mapping
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1997
                    == KAMInstallInactiveNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1998
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1999
                TUint32 iluid(GetLuidL(aLUID, NSmlDmURI::URISeg(aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2000
                        KInventoryMappingURILoc), EDCSDelivered) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2001
                if (iluid > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2002
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2003
                    TDeploymentComponentState targetstate = ((mapping
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2004
                            == KAMInstallNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2005
                                                   ? EDCSActive
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2006
                                                      : EDCSInactive);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2007
                    InstallL(iluid, aURI, aLUID, targetstate, ret);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2008
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2009
                    TInt err(iDbSession.RemoveMappingInfoL(KAMAdapterImplUid,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2010
                            *iUriDel, iluid) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2011
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2012
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2013
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2014
                    ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2015
                    RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 install Not found node" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2016
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2017
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2018
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2019
                if (mapping == KAMRemoveNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2020
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2021
                    TPtrC8 parent( NSmlDmURI::RemoveLastSeg( urival ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2022
                    TPtrC8 ParentMapping( NSmlDmURI::LastURISeg( parent ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2023
                    TUint32 iluid(0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2024
                    if ( ParentMapping == KAMDeliveredNodeName )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2025
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2026
                        iluid = GetLuidL(aLUID, NSmlDmURI::URISeg(aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2027
                                                    KInventoryMappingURILoc), EDCSDelivered) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2028
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2029
                    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2030
                    else if ( ParentMapping == KAMDeployedNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2031
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2032
                        iluid = GetLuidL(aLUID, NSmlDmURI::URISeg(aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2033
                                KInventoryMappingURILoc), EDCSActive) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2034
                        if ( (TInt32)iluid <= 0)
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), EDCSInactive) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2038
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2039
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2040
                    if (iluid > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2041
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2042
                        TRAPD( err, SessionL().RemoveL( iluid ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2043
                        ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2044
                        if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2045
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2046
                            RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): Remove success!" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2047
                            TPtrC8 aclmapping(URISegsUpTo(aURI, 4) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2048
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2049
                            // "Nullify" the mapping for argument
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2050
                           err = iDbSession.RemoveMappingInfoL(KAMAdapterImplUid, aclmapping);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2051
                            if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2052
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2053
                                ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2054
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2055
                            if (iInAtomic)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2056
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2057
                                iBuffer.Append(TAMCommandBufferElement(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2058
                                        aStatusRef, aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2059
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2060
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2061
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2062
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2063
                            RDEBUG_2( "CSCOMOAdapter::ExecuteCommandL(): Remove FAILED '%d'", err);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2064
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2065
                            if (err == SwiUI::KSWInstErrUserCancel)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2066
                                ret = EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2067
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2068
                                MAPERROR( err, ret, _L8("Execute Remove %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2069
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2070
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2071
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2072
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2073
                        ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2074
                        RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 remove Not found node" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2075
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2076
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2077
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2078
                            if (mapping == KAMActivateNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2079
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2080
                                //DBG_ARGS8( "CSCOMOAdapter::ExecuteCommandL(): Activating " );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2081
                                TUint32 iluid(GetLuidL(aLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2082
                                        NSmlDmURI::URISeg(aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2083
                                                KInventoryMappingURILoc),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2084
                                        EDCSActive) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2085
                                if ( (TInt32)iluid <= 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2086
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2087
                                    iluid = GetLuidL(aLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2088
                                            NSmlDmURI::URISeg(aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2089
                                                    KInventoryMappingURILoc),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2090
                                            EDCSInactive) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2091
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2092
                                if (iluid > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2093
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2094
                                    TRAP_IGNORE( SessionL().ActivateL( iluid ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2095
                                    ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2096
								
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2097
                                    //MAPERROR( erx, ret, _L8("Activate %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2098
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2099
                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2100
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2101
                                    ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2102
                                    RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 Activate Not found node" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2103
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2104
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2105
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2106
                                if (mapping == KAMDeActivateNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2107
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2108
                                    //DBG_ARGS8( "CSCOMOAdapter::ExecuteCommandL(): Inactivating " );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2109
                                    TUint32 iluid(GetLuidL(aLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2110
                                            NSmlDmURI::URISeg(aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2111
                                                    KInventoryMappingURILoc),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2112
                                            EDCSActive) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2113
                                    if ( (TInt32)iluid <= 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2114
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2115
                                        iluid
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2116
                                                = GetLuidL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2117
                                                        aLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2118
                                                        NSmlDmURI::URISeg(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2119
                                                                aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2120
                                                                KInventoryMappingURILoc),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2121
                                                        EDCSInactive) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2122
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2123
                                    if (iluid > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2124
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2125
                                        TRAP_IGNORE(SessionL().DeactivateL( iluid ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2126
                                        ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2127
										ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2128
                                        //MAPERROR( erx, ret,_L8("Dectivate %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2129
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2130
                                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2131
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2132
                                        ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2133
                                        RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 DeActivate Not found node" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2134
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2135
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2136
                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2137
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2138
                                    RDEBUG8_2( "CSCOMOAdapter::ExecuteCommandL(): ASKED NOT SUPPORTED OPERATION '%S'", &mapping );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2139
                                    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2140
                                    ret = EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2141
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2142
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2143
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2144
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2145
        default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2146
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2147
            RDEBUG8_3( "CSCOMOAdapter::ExecuteCommandL(): ILLEGAL LEVEL %d NODE %S", cnt, &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2148
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2149
            ret = EInvalidObject;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2150
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2151
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2152
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2153
    SetStatusL(aStatusRef, ret) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2154
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2155
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2156
void CSCOMOAdapter::ASyncReportL(TUint32 aLuid, const TDesC8& aArgument,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2157
        const TDownloadTarget aTarget,const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2158
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2159
    // while sending generic alert
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2160
    // adapter uses entry stored in database and constructs generic alert
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2161
    // using SyncML framework API.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2162
    TInt index = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2163
	// Default max retry count is 5. It is also cenep configurable
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2164
	// Cenrep configuration responsible can change the max retry 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2165
	// count
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2166
    TInt retrycount = 5;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2167
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2168
    CRepository *repository = CRepository::NewLC ( KCRUidPrivateApplicationManagementKeys );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2169
    repository->Get(KMaxRetryCount,retrycount);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2170
    CleanupStack::PopAndDestroy(); //repository
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2171
      
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2172
    TSmlProfileId profId = KErrNotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2173
    HBufC8* serverId= NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2174
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2175
    //Retrive Server Information
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2176
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2177
    GetServerInfoL(profId, serverId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2178
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2179
    CleanupStack::PushL(serverId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2180
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2181
    //Add Download entry to database
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2182
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2183
    iAMdb->SaveToDatabaseL(index, aLuid, profId, retrycount, aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2184
           *serverId, aArgument);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2185
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2186
    CleanupStack::PopAndDestroy(serverId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2187
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2188
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2189
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2190
void CSCOMOAdapter::SyncReportL(TUint32 aLuid, const TDesC8& aArgument,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2191
        const TDownloadTarget aTarget,const TDesC8& aURI, TError &aRet )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2192
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2193
    TInt status = KStatusSuccess;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2194
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2195
    RProperty counter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2196
    TInt r=counter.Attach(KUidPSApplicationManagementKeys, KSyncNotifier,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2197
            EOwnerThread);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2198
    User::LeaveIfError(r);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2199
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2200
    /*CSyncService *syncService = CSyncService::NewL(NULL, KDevManServiceStart);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2201
    if (syncService)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2202
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2203
        syncService->EnableProgressNoteL(EFalse);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2204
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2205
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2206
    delete syncService;*/
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2207
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2208
    // wait for the previously attached ‘counter’ property to be updated
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2209
    TRequestStatus s;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2210
    counter.Subscribe(s);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2211
    User::WaitForRequest(s);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2212
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2213
    CRepository *repository = CRepository::NewLC ( KCRUidPrivateApplicationManagementKeys );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2214
    repository->Get(KAMSyncStatus,status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2215
    CleanupStack::PopAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2216
                		   
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2217
		switch(status)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2218
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2219
			case KStatusUserCancelled:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2220
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2221
				aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2222
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2223
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2224
			               
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2225
			case KStatusDowloadFailedOOM:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2226
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2227
				aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2228
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2229
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2230
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2231
			case KStatusAlternateDownldAuthFail:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2232
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2233
			    aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2234
			    break;	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2235
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2236
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2237
			case KStatusDownloadFailed:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2238
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2239
				aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2240
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2241
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2242
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2243
			case KStatusPkgValidationFailed:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2244
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2245
				aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2246
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2247
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2248
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2249
			case KStatusInstallFailedOOM:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2250
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2251
				aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2252
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2253
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2254
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2255
			case KStatusInstallFailed:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2256
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2257
				aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2258
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2259
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2260
		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2261
		  case KStatusUnSupportedEnvironment:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2262
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2263
				aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2264
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2265
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2266
			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2267
			case KStatusAltDowldUnavailable:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2268
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2269
				aRet = MSmlDmAdapter::EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2270
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2271
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2272
		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2273
			default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2274
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2275
			    aRet = MSmlDmAdapter::EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2276
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2277
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2278
		}                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2279
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2280
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2281
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2282
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2283
void CSCOMOAdapter::GetServerInfoL(TSmlProfileId& aProfId, HBufC8*& aServerId) const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2284
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2285
    // Open session
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2286
    RSyncMLSession session;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2287
    session.OpenL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2288
    CleanupClosePushL(session);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2289
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2290
    // get current job's id (and usage type)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2291
    TSmlJobId jobId = KErrNotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2292
    TSmlUsageType type = ESmlDevMan;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2293
    session.CurrentJobL(jobId, type);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2294
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2295
    // open currently running job
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2296
    RSyncMLDevManJob dmJob;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2297
    dmJob.OpenL(session, jobId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2298
    CleanupClosePushL(dmJob);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2299
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2300
    // get job's profile id
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2301
    aProfId = dmJob.Profile();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2302
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2303
    // open profile using id in read-only mode
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2304
    RSyncMLDevManProfile dmProf;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2305
    dmProf.OpenL(session, aProfId, ESmlOpenRead);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2306
    CleanupClosePushL(dmProf);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2307
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2308
    // get profile's server id
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2309
    aServerId = dmProf.ServerId().AllocL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2310
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2311
    // close handles
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2312
    CleanupStack::PopAndDestroy( &dmProf);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2313
    CleanupStack::PopAndDestroy( &dmJob);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2314
    CleanupStack::PopAndDestroy( &session);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2315
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2316
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2317
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2318
// CSCOMOAdapter::UpdateL( 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2319
// 	const TUint aLuidi, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2320
// 	const TDesC8& aURI, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2321
// 	const TDesC8& aSourceLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2322
// 	const TDeploymentComponentState aTargetState,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2323
// 	TError &aRet
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2324
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2325
void CSCOMOAdapter::UpdateL(const TUint aLuidi, const TDesC8& aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2326
        const TDesC8& aSourceLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2327
        const TDeploymentComponentState aTargetState, TError &aRet)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2328
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2329
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2330
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2331
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2332
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2333
    //nothing
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2334
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2335
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2336
    CBufBase *delivered = CBufFlat::NewL( 128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2337
    CleanupStack::PushL(delivered);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2338
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2339
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2340
    TPtrC8 aclmapping( NSmlDmURI::URISeg( uriPtrc, 4 ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2341
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2342
    TPtrC8 aclmapping(NSmlDmURI::URISeg(aURI, 4) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2343
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2344
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2345
    HBufC8 *targetURI = HBufC8::NewLC(KDeployedURI().Length() + aclmapping.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2346
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2347
    TPtr8 targetPtr(targetURI->Des() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2348
    targetPtr.Copy(KDeployedURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2349
    targetPtr.Append(aclmapping);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2350
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2351
    HBufC8 *deployed = Callback().GetLuidAllocL(targetPtr) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2352
    CleanupStack::PushL(deployed);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2353
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2354
    //DBG_ARGS8( "CSCOMOAdapter::UpdateL(): Updating '%S' luid: '%S'" ), &targetPtr, &(*deployed));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2355
    if ( *deployed == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2356
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2357
        //DBG_ARGS8( "CSCOMOAdapter::UpdateL(): Failed to find to update target '%S'" ), &targetPtr );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2358
        aRet = EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2359
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2360
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2361
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2362
        // Found delivered & active or inactive components! Do update!
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2363
        TInt depluid(DesToIntL( *deployed ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2364
        TRAPD( erx, SessionL().UpdateL( aLuidi, depluid ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2365
        ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2366
        MAPERROR( erx, aRet,_L8("Update %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2367
        if (erx == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2368
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2369
            SetMappingLC(aclmapping, aTargetState, aSourceLUID, targetURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2370
            DeactivateIfInactive(aLuidi, aTargetState);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2371
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2372
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2373
    CleanupStack::PopAndDestroy(deployed) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2374
    CleanupStack::PopAndDestroy(targetURI) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2375
    CleanupStack::PopAndDestroy(delivered) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2376
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2377
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2378
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2379
//  CSCOMOAdapter::CheckStateL( const TDeploymentComponent &aComp, const TDesC8& aURI
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2380
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2381
TBool CSCOMOAdapter::CheckStateL(const TDeploymentComponent &aComp,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2382
        const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2383
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2384
	TBool ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2385
	if ((aComp.iState ==  EDCSDelivered) || (aComp.iState == EDCSActive) || ( aComp.iState == EDCSInactive) || (aComp.iState == EDCSDownload))
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2386
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2387
        // Check for map & __TARM_SYMBIAN_CONVERGENCY also ?
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2388
        ret = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2389
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2390
	else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2391
	    ret = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2392
	return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2393
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2394
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2395
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2396
//  CSCOMOAdapter::StateL( const TDeploymentComponent &aComp, const TDesC8& aURI
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2397
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2398
TDeploymentComponentState CSCOMOAdapter::StateL(const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2399
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2400
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2401
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2402
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2403
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2404
    //nothing
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2405
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2406
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2407
    TDeploymentComponentState ret(EDCSNone);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2408
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2409
    TInt cnt( NSmlDmURI::NumOfURISegs( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2410
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2411
    TInt cnt(NSmlDmURI::NumOfURISegs(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2412
#endif	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2413
    if (cnt > 2)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2414
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2415
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2416
        TPtrC8 map( NSmlDmURI::URISeg( uriPtrc, 2 ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2417
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2418
        TPtrC8 map(NSmlDmURI::URISeg(aURI, 2) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2419
#endif	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2420
        if (map == KAMInventoryNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2421
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2422
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2423
            TPtrC8 map( NSmlDmURI::URISeg( uriPtrc, 2 ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2424
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2425
            TPtrC8 map(NSmlDmURI::URISeg(aURI, 2) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2426
#endif	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2427
            map.Set(NSmlDmURI::URISeg(aURI, 3) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2428
            if (map == KAMDeployedNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2429
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2430
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2431
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2432
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2433
                if (map == KAMDeliveredNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2434
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2435
                    ret = EDCSDelivered;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2436
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2437
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2438
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2439
                    User::Leave(KErrArgument);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2440
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2441
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2442
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2443
            if (map == KAMDownloadNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2444
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2445
                ret = EDCSDownload;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2446
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2447
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2448
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2449
                User::Leave(KErrArgument);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2450
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2451
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2452
    return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2453
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2454
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2455
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2456
//  CSCOMOAdapter::CheckStateL( const TDesC8& aURI, const TDesC8& aLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2457
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2458
TBool CSCOMOAdapter::CheckStateL(const TDesC8& aURI, const TDesC8& aLUID)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2459
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2460
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2461
    TUint32 iluid(DesToIntL(aLUID) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2462
    TDeploymentComponent comp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2463
    TInt err(SessionL().DeploymentComponent(iluid, comp) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2464
    TBool ret(EFalse);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2465
    if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2466
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2467
        ret = CheckStateL(comp, aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2468
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2469
    return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2470
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2471
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2472
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2473
//  CSCOMOAdapter::InstallOptionsDataL(const TUint32 iluid, const TDeplCompAttrType& aDataType, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2474
//		CBufBase &aBuf, CBufBase *aRaw/*= NULL*/)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2475
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2476
void CSCOMOAdapter::InstallOptionsDataL(const TUint32 iluid,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2477
        const TDeplCompAttrType& aDataType, CBufBase &aBuf, CBufBase *aRaw/*= NULL*/)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2478
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2479
    TAMInstallOptionsPckgBuf iop;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2480
    TBool pushed(EFalse);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2481
    if ( !aRaw)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2482
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2483
        aRaw = CBufFlat::NewL(32);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2484
        CleanupStack::PushL(aRaw);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2485
        pushed = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2486
        SessionL().DeploymentComponentDataL(iluid, aDataType, *aRaw);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2487
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2488
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2489
    iop.Copy(aRaw->Ptr( 0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2490
    if (pushed)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2491
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2492
        CleanupStack::PopAndDestroy(aRaw);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2493
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2494
    InstallOptionsParser::SerializeOptionsL(iop(), aBuf);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2495
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2496
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2497
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2498
//  CSCOMOAdapter::GetComponentDataL( const TDesC8& parent, const TDesC8& mapping, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2499
//		const TUint32 iluid, CBufBase *currentList, CBufBase *currentMime, TError &status )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2500
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2501
void CSCOMOAdapter::GetComponentDataL(const TDesC8& parent,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2502
        const TDesC8& mapping, const TUint32 iluid, CBufBase &currentList,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2503
        CBufBase &currentMime, TError &status)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2504
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2505
    TDeploymentComponent comp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2506
    TInt err(SessionL().DeploymentComponent(iluid, comp) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2507
    if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2508
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2509
        RDEBUG_3( "CSCOMOAdapter::GetComponentDataL(): DeploymentComponent response: %d, state: %d", err, comp.iState );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2510
        if (CheckStateL(comp, parent) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2511
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2512
            if (mapping == KAMPkgIDNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2513
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2514
                currentList.InsertL( 0, comp.iPkgID);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2515
                status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2516
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2517
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2518
                if (mapping == KAMNameNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2519
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2520
                    currentList.InsertL( 0, comp.iName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2521
                    status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2522
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2523
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2524
                    if (mapping == KAMVersionNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2525
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2526
                        currentList.InsertL( 0, comp.iVersion);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2527
                        status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2528
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2529
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2530
                   if(mapping == KAMIDNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2531
                   {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2532
                   	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2533
                        currentList.InsertL( 0, comp.iId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2534
                        status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2535
                        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2536
                   }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2537
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2538
                   if(mapping == KAMPkgIDRefNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2539
                   {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2540
                   	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2541
                        currentList.InsertL( 0, comp.iPkgIDRef);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2542
                        status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2543
                        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2544
                   }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2545
				else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2546
                   if(mapping == KAMPkgIDNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2547
                   {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2548
                   	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2549
                        currentList.InsertL( 0, comp.iPkgID);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2550
                        status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2551
                        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2552
                   }               
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2553
				else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2554
                   if(mapping == KAMPkgTypeNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2555
                   {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2556
                   	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2557
                        currentList.InsertL( 0, comp.iPkgType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2558
                        status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2559
                        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2560
                   }             
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2561
                else 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2562
                   if ( mapping == KAMStatusNodeName )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2563
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2564
                TDeplCompAttrType dataType( UpdateFlagFromMapping( mapping ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2565
                SessionL().DeploymentComponentDataL( iluid, dataType, currentList );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2566
                status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2567
                }			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2568
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2569
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2570
                        if (mapping == KAMDescriptionNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2571
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2572
                            currentList.InsertL(0, comp.iDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2573
                            status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2574
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2575
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2576
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2577
                            TDeplCompAttrType
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2578
                                    dataType(UpdateFlagFromMapping(mapping) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2579
                            if (comp.iState == EDCSDownload)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2580
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2581
					if ( dataType == EDCDownloadURI )//|| dataType == EDCDownloadStatus )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2582
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2583
                                    SessionL().DeploymentComponentDataL(iluid,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2584
                                            dataType, currentList);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2585
                                    status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2586
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2587
                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2588
                                    if (dataType == EDCInstallOptions)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2589
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2590
                                        InstallOptionsDataL(iluid, dataType,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2591
                                                currentList);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2592
                                        status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2593
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2594
                                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2595
                                        if (dataType == EDCConRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2596
                                            {
67
hgs
parents: 47
diff changeset
  2597
                                            CBufBase *b = CBufFlat::NewL(12);
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2598
                                            CleanupStack::PushL(b);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2599
                                            SessionL().DeploymentComponentDataL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2600
                                                    iluid, dataType, *b);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2601
                                            TPckgBuf<TInt> iap;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2602
                                            iap.Copy(b->Ptr( 0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2603
                                            CleanupStack::PopAndDestroy(b);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2604
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2605
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2606
                                            CArrayFix<TSmlDmMappingInfo>* mapArray = new CArrayFixFlat<TSmlDmMappingInfo>(4);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2607
                                            CleanupStack::PushL(mapArray);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2608
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2609
                                            Callback().GetMappingInfoListL( KNSmlDMMMSSlashIAPUri,*mapArray );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2610
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2611
                                            //TInt iap = KErrNotFound; 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2612
                                            TSmlDmMappingInfo mapInfo;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2613
                                            HBufC8 * uri = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2614
                                            TPtr8 tempURI(uri->Des());
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2615
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2616
                                            for(TInt i = 0;i<mapArray->Count();i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2617
                                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2618
                                                if(iap()==DesToInt(mapArray->At(i).iURISegLUID))
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2619
                                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2620
                                                    tempURI=mapArray->At(i).iURISeg;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2621
                                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2622
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2623
                                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2624
                                            mapArray->Reset();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2625
                                            CleanupStack::PopAndDestroy(); //mapArray
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2626
                                            if ( uri != NULL )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2627
                                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2628
                                                CleanupStack::PushL( uri );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2629
                                                currentList.InsertL( 0, *uri );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2630
                                                CleanupStack::PopAndDestroy( uri );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2631
                                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2632
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2633
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2634
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2635
                                            CNSmlDMIAPMatcher
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2636
                                                    * iapfinder =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2637
                                                            CNSmlDMIAPMatcher::NewLC( &Callback() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2638
                                            HBufC8
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2639
                                                    * uri =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2640
                                                            iapfinder->URIFromIAPIdL(iap() ) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2641
                                            CleanupStack::PopAndDestroy(iapfinder);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2642
                                            if (uri != NULL)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2643
                                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2644
                                                CleanupStack::PushL(uri) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2645
                                                currentList.InsertL( 0, *uri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2646
                                                CleanupStack::PopAndDestroy(uri) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2647
                                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2648
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2649
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2650
                                            status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2651
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2652
                                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2653
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2654
                                            RDEBUG8_2( "CSCOMOAdapter::GetComponentDataL(): ASKED NOT SUPPORTED LEAF '%S'", &mapping );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2655
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2656
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2657
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2658
                                if (comp.iState == EDCSDelivered)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2659
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2660
                                    if(mapping == KAMStateValueNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2661
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2662
                                      currentList.InsertL( 0,KAMStateValueDelivered() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2663
                                      status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2664
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2665
                                    if (dataType == EDCData || dataType
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2666
                                            == EDCMetaData || dataType
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2667
                                            == EDCInstallOptions)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2668
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2669
                                        CBufBase *raw = CBufFlat::NewL( 128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2670
                                        CleanupStack::PushL(raw);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2671
                                        SessionL().DeploymentComponentDataL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2672
                                                iluid, dataType, *raw);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2673
                                        TPtrC8 source(raw->Ptr(0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2674
                                        if (source.Length() > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2675
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2676
                                            if (dataType == EDCData)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2677
                                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2678
                                                currentList.InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2679
                                                        source);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2680
                                                SessionL().DeploymentComponentDataL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2681
                                                        iluid, EDCDataMime,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2682
                                                        currentMime);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2683
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2684
                                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2685
                                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2686
                                                if (dataType
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2687
                                                        == EDCInstallOptions)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2688
                                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2689
                                                    InstallOptionsDataL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2690
                                                            iluid, dataType,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2691
                                                            currentList, raw);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2692
                                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2693
                                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2694
                                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2695
                                                    currentList.InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2696
                                                            source);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2697
                                                    SessionL().DeploymentComponentDataL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2698
                                                            iluid,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2699
                                                            EDCMetaDataMime,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2700
                                                            currentMime);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2701
                                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2702
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2703
                                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2704
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2705
                                            // 0 data length...
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2706
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2707
                                        status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2708
                                        CleanupStack::PopAndDestroy(raw);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2709
                                        RDEBUG8_2( "CSCOMOAdapter::GetComponentDataL(): DeploymentComponentDataL called '%S'", &mapping );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2710
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2711
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2712
                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2713
                                    if (dataType == EDCStateValue)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2714
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2715
                                        if (comp.iState == EDCSActive)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2716
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2717
                                            currentList.InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2718
                                                    KAMStateValueActive() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2719
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2720
                                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2721
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2722
                                            currentList.InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2723
                                                    KAMStateValueInactive() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2724
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2725
                                        status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2726
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2727
                                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2728
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2729
                                        RDEBUG8_2( "CSCOMOAdapter::GetComponentDataL(): ERROR ASKED NOT SUPPORTED LEAF '%S'", &mapping );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2730
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2731
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2732
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2733
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2734
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2735
            RDEBUG8_3( "CSCOMOAdapter::GetComponentDataL(): WARNING Asked illegal state leaf '%S', %d", &mapping, comp.iState );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2736
            status = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2737
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2738
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2739
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2740
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2741
        RDEBUG_3( "CSCOMOAdapter::GetComponentDataL(): ERROR FAILED TO GET COMPOMENT OF ID %d: %d", iluid, err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2742
        MAPERROR( err, status,_L8("Get Component %d") );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2743
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2744
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2745
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2746
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2747
//  CSCOMOAdapter::GetLeafLuidL(const TDesC8 &aURI, const TDesC8 & aParentMapping ) 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2748
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2749
TInt CSCOMOAdapter::GetLeafLuidL(const TDesC8 &aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2750
        const TDesC8 & aParentMapping)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2751
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2752
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2753
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2754
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2755
    TInt numSeqs( NSmlDmURI::NumOfURISegs( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2756
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2757
    TInt numSeqs(NSmlDmURI::NumOfURISegs(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2758
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2759
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2760
    TUint32 iluid( 0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2761
    //TInt numSeqs( NSmlDmURI::NumOfURISegs( aURI ) );//Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2762
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2763
    switch (numSeqs)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2764
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2765
        case 4: // must be a download leaf
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2766
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2767
            iluid = GetLuidForUserIdL(aParentMapping, EDCSDownload) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2768
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2769
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2770
        case 5: // download operation or delivered or deployed leaf
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2771
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2772
            if (URISegsUpTo(aURI, 2, ETrue) == KDownloadURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2773
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2774
                RDEBUG8_2( "CSCOMOAdapter::GetLeafLuidL(): WARNING download operation leaf '%S'", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2775
                //status = EOk; 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2776
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2777
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2778
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2779
                TPtrC8 start(URISegsUpTo(aURI, 3, ETrue) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2780
                if (start == KDeliveredURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2781
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2782
                    iluid = GetLuidForUserIdL(aParentMapping, EDCSDelivered) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2783
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2784
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2785
                    if (start == KDeployedURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2786
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2787
                        iluid = GetLuidForUserIdL(aParentMapping, EDCSActive) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2788
                        if ( (TInt32)iluid <= 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2789
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2790
                            iluid = GetLuidForUserIdL(aParentMapping,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2791
                                    EDCSInactive) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2792
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2793
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2794
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2795
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2796
                        RDEBUG8_2( "CSCOMOAdapter::GetLeafLuidL(): WARNING strange uri '%S'", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2797
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2798
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2799
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2800
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2801
        case 6: // delivered or deployed operation leaf
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2802
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2803
            //iluid = GetLuidForUserIdL( parentMapping, EDCSDownload ) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2804
            //status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2805
            RDEBUG8_2( "CSCOMOAdapter::GetLeafLuidL(): WARNING delivered or deployed operation leaf '%S'", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2806
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2807
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2808
        default: // illegal uri
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2809
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2810
            RDEBUG8_2( "CSCOMOAdapter::GetLeafLuidL(): ERROR requested luid of illegal URI '%S'", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2811
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2812
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2813
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2814
    return iluid;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2815
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2816
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2817
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2818
//  CSCOMOAdapter::FetchLeafObjectL( const TDesC8& aURI, const TDesC8& aLUID, const TDesC8& aType, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2819
//			CBufBase& aObject )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2820
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2821
void CSCOMOAdapter::FetchLeafObjectL(const TDesC8& aURI, const TDesC8& aLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2822
        const TDesC8& aType, const TInt aResultsRef, TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2823
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2824
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2825
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2826
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2827
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2828
    //Nothing
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2829
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2830
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2831
    RDEBUG8_4("CSCOMOAdapter::FetchLeafObjectL('%S', '%S', '%S'): begin", &aURI, &aLUID, &aType );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2832
    SetAdapterValue(KAMSCOMOAdapter);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2833
    CheckStateChangesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2834
    TError status(EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2835
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2836
    CBufBase *currentList = CBufFlat::NewL( 128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2837
    CleanupStack::PushL(currentList);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2838
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2839
    CBufBase *currentMime = CBufFlat::NewL( 128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2840
    CleanupStack::PushL(currentMime);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2841
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2842
    TPtrC8 mapping(NSmlDmURI::LastURISeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2843
    TPtrC8 parent(NSmlDmURI::RemoveLastSeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2844
    TPtrC8 parentMapping(NSmlDmURI::LastURISeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2845
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2846
    HBufC8 *luid= NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2847
    if (aLUID != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2848
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2849
        luid = aLUID.AllocLC();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2850
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2851
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2852
        { // try if we find it from download path
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2853
        TBuf8<256> down;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2854
        down = KDownloadURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2855
        down.Append(parentMapping);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2856
        luid = Callback().GetLuidAllocL(down);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2857
        CleanupStack::PushL(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2858
        if ( *luid != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2859
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2860
            // make it to found next time
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2861
            DirectSetMappingL(parent, *luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2862
            MoveAclL(down, parent);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2863
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2864
            // remove old
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2865
            DirectSetMappingL(down, KNullDesC8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2866
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2867
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2868
    if ( *luid != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2869
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2870
        TUint32 iluid(DesToIntL( *luid ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2871
        RDEBUG8_2( "CSCOMOAdapter::FetchLeafObjectL(): Luid is : %d", iluid );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2872
        GetComponentDataL(parent, mapping, iluid, *currentList, *currentMime,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2873
                status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2874
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2875
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2876
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2877
        TUint32 iluid(GetLeafLuidL(aURI, parentMapping) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2878
        if (iluid > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2879
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2880
            HBufC8 *l = IntToDes8LC(iluid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2881
            DirectSetMappingL(parent, *l);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2882
            CleanupStack::PopAndDestroy(l);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2883
            GetComponentDataL(parent, mapping, iluid, *currentList,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2884
                    *currentMime, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2885
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2886
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2887
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2888
            RDEBUG8_2( "CSCOMOAdapter::FetchLeafObjectL(): WARNING Faild to get luid allocation for '%S'", &parent );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2889
            if (aLUID == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2890
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2891
#ifdef __AM_LASTERROR_NODE
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2892
                if (aURI == KAMLastErrorURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2893
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2894
                    const TDesC8& error= LastError();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2895
                    RDEBUG8_2( "CSCOMOAdapter::FetchLeafObjectL(): Returning last error '%S'", &error );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2896
                    currentList->InsertL(0, error);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2897
                    status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2898
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2899
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2900
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2901
                    status = ENotFound;
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
                status = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2905
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2906
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2907
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2908
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2909
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2910
    SetStatusL(aStatusRef, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2911
    if (status == EOk)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2912
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2913
        if (iInAtomic)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2914
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2915
            iBuffer.Append(TAMCommandBufferElement(aStatusRef, aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2916
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2917
        Callback().SetResultsL(aResultsRef, *currentList,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2918
                ( (currentMime->Size() > 0) ? currentMime->Ptr(0) : aType ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2919
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2920
    CleanupStack::PopAndDestroy(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2921
    CleanupStack::PopAndDestroy(currentMime); //currentMime
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2922
    CleanupStack::PopAndDestroy(currentList); //currentList
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2923
    RDEBUG("CSCOMOAdapter::FetchLeafObjectL: end" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2924
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2925
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2926
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2927
//  CSCOMOAdapter::IdListL( TDeploymentComponentState aState, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2928
//					CBufBase *aCurrentList, TBool aAppend /* = EFalse */)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2929
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2930
CSCOMOAdapter::TError CSCOMOAdapter::IdListL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2931
        TDeploymentComponentState aState, CBufBase &aCurrentList,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2932
        TBool aAppend /* = EFalse */)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2933
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2934
	RDEBUG_2( "CSCOMOAdapter::IdListL:Begin aState is %d", aState);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2935
    CSCOMOAdapter::TError ret(CSCOMOAdapter::EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2936
    RElementIdArray array;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2937
    TPtrC8 uriStart;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2938
    TBuf8<256> uri;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2939
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2940
    switch (aState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2941
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2942
        case EDCSDelivered:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2943
            uriStart.Set(KDeliveredURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2944
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2945
        case EDCSActive:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2946
        case EDCSInactive:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2947
            uriStart.Set(KDeployedURI) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2948
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2949
        case EDCSDownload:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2950
            uriStart.Set(KDownloadURI) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2951
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2952
        default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2953
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2954
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2955
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2956
    TInt err(SessionL().DeploymentComponentIdsL(array, aState) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2957
    if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2958
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2959
        TInt count(array.Count() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2960
		RDEBUG_2( "CSCOMOAdapter::IdListL: count is %d", count);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2961
        if (count && aAppend && aCurrentList.Size() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2962
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2963
				RDEBUG("CSCOMOAdapter::IdListL: Inserting list size" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2964
            aCurrentList.InsertL(aCurrentList.Size(), KAMSeparator8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2965
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2966
        for (TInt i( 0); i < count; i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2967
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2968
            TUint32 el = array[i];
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2969
            TDCUserId dc;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2970
            SessionL().DeploymentComponentUserIdL(el, dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2971
			RDEBUG_2("CSCOMOAdapter::IdListL: Node name is %S", &dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2972
            if (uriStart == KNullDesC8() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2973
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2974
					RDEBUG("CSCOMOAdapter::IdListL: uriStart == KNullDesC8()" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2975
                TDeploymentComponent comp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2976
                err = SessionL().DeploymentComponent(el, comp) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2977
                if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2978
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2979
                    switch (comp.iState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2980
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2981
                        case EDCSDelivered:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2982
                            uriStart.Set(KDeliveredURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2983
                            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2984
                        case EDCSActive:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2985
                        case EDCSInactive:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2986
                            uriStart.Set(KDeployedURI) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2987
                            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2988
                        case EDCSDownload:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2989
                            uriStart.Set(KDownloadURI) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2990
                            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2991
                        default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2992
                            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2993
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2994
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2995
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2996
            if (uriStart != KNullDesC8() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2997
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2998
                uri.Copy(uriStart);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2999
                uri.Append(dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3000
                HBufC8 *luid = DirectGetLuidAllocLC(uri); //Callback().GetLuidAllocL( uri );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3001
				RDEBUG_2( "CSCOMOAdapter::IdListL: luid is %S", luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3002
                if (KNullDesC8() == *luid)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3003
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3004
                    RDEBUG8_3( "CSCOMOAdapter::IdListL(): WARNING updating lost luid of '%S' %d", &uri, el );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3005
                    HBufC8 *l = IntToDes8LC(el);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3006
                    if ( *luid == *l)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3007
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3008
                        RDEBUG( "CSCOMOAdapter::IdListL(): WARNING CANCEL (not really updating, they're the same already" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3009
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3010
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3011
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3012
							RDEBUG("CSCOMOAdapter::IdListL: DirectSetMappingL" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3013
                        DirectSetMappingL(uri, *l);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3014
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3015
                    CleanupStack::PopAndDestroy(l);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3016
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3017
                CleanupStack::PopAndDestroy(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3018
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3019
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3020
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3021
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3022
                RDEBUG_2( "CSCOMOAdapter::IdListL(): WARNING failed to get component state of id %d, cannot check mappings ", el );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3023
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3024
            aCurrentList.InsertL(aCurrentList.Size(), dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3025
            if (i + 1 < count)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3026
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3027
					RDEBUG("CSCOMOAdapter::IdListL: Adding Separator" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3028
                aCurrentList.InsertL(aCurrentList.Size(), KAMSeparator8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3029
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3030
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3031
        ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3032
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3033
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3034
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3035
        RDEBUG_2( "CSCOMOAdapter::IdListL(): Error %d", err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3036
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3037
    array.Reset();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3038
	RDEBUG("CSCOMOAdapter::IdListL: end" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3039
    return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3040
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3041
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3042
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3043
//  CSCOMOAdapter::ChildURIListL( const TDesC8& aURI, const TDesC8& aParentLUID, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3044
//			const CArrayFix<TSmlDmMappingInfo>& /*aPreviousURISegmentList*/, const TInt aResultsRef, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3045
//			TInt aStatusRef );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3046
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3047
void CSCOMOAdapter::ChildURIListL(const TDesC8& aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3048
        const TDesC8& aParentLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3049
        const CArrayFix<TSmlDmMappingInfo>& /*aPreviousURISegmentList*/,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3050
        const TInt aResultsRef, TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3051
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3052
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3053
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3054
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3055
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3056
    //Nothing
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3057
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3058
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3059
    RDEBUG8_3 ( "CSCOMOAdapter::ChildURIListL(): begin ('%S', '%S')" , &aURI, &aParentLUID );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3060
    CheckStateChangesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3061
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3062
    TError ret(EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3063
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3064
    CBufBase *currentList = CBufFlat::NewL( 128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3065
    CleanupStack::PushL(currentList);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3066
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3067
#ifdef __TARM_SYMBIAN_CONVERGENCY	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3068
    TInt numSeqs( NSmlDmURI::NumOfURISegs( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3069
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3070
    TInt numSeqs(NSmlDmURI::NumOfURISegs(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3071
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3072
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3073
    TPtrC8 mapping(NSmlDmURI::LastURISeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3074
    if (numSeqs == 1)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3075
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3076
        currentList->InsertL( 0, KAMRootChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3077
        ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3078
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3079
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3080
        if (numSeqs == 2)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3081
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3082
            if (mapping == KAMInventoryNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3083
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3084
                currentList->InsertL( 0, KAMInventoryChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3085
                ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3086
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3087
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3088
                if (mapping == KAMDownloadNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3089
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3090
                    RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): Level 2 NODE %S", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3091
                    TDeploymentComponentState state(EDCSDownload);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3092
                    ret = IdListL(state, *currentList);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3093
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3094
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3095
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3096
                    RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): ILLEGAL LEVEL 2 NODE %S", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3097
                    User::Leave(KErrArgument);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3098
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3099
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3100
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3101
            if (numSeqs == 3)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3102
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3103
                if (mapping == KAMDeliveredNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3104
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3105
                    RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): Level 3 NODE %S", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3106
                    TDeploymentComponentState state(EDCSDelivered);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3107
                    ret = IdListL(state, *currentList);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3108
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3109
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3110
                    if (mapping == KAMDeployedNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3111
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3112
                        TDeploymentComponentState state(EDCSActive);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3113
                        ret = IdListL(state, *currentList);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3114
                        if (ret == EOk)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3115
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3116
                            state = EDCSInactive;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3117
                            ret = IdListL(state, *currentList, ETrue);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3118
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3119
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3120
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3121
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3122
                        if (aParentLUID != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3123
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3124
                            if (CheckStateL(aURI, aParentLUID) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3125
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3126
                                TPtrC8
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3127
                                        parent(NSmlDmURI::RemoveLastSeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3128
                                TPtrC8
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3129
                                        parentMapping(NSmlDmURI::LastURISeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3130
                                if (parentMapping == KAMDownloadNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3131
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3132
                                    currentList->InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3133
                                            KAMDownloadDynaChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3134
                                    ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3135
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3136
                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3137
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3138
                                    RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): ILLEGAL LEVEL 3 NODE %S", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3139
                                    User::Leave(KErrArgument);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3140
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3141
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3142
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3143
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3144
                                RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): DC has changed state %S", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3145
                                ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3146
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3147
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3148
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3149
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3150
                            RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): Level3 Node not found %S", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3151
                            ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3152
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3153
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3154
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3155
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3156
                if (numSeqs == 4)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3157
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3158
                    TPtrC8 parent(NSmlDmURI::RemoveLastSeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3159
                    TPtrC8 parentMapping(NSmlDmURI::LastURISeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3160
                    if (aParentLUID == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3161
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3162
                        RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): WARNING possibly a illegal level 4 node %S", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3163
                        ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3164
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3165
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3166
                    if (parentMapping == KAMDeliveredNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3167
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3168
                        if (GetLuid2L(aParentLUID, mapping, EDCSDelivered,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3169
                                ret) > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3170
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3171
                            currentList->InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3172
                                    KAMInventoryDeliveredDynaChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3173
                            ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3174
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3175
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3176
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3177
                        if (parentMapping == KAMDeployedNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3178
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3179
                            if (GetLuid2L(aParentLUID, mapping, EDCSActive,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3180
                                    ret) > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3181
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3182
                                currentList->InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3183
                                        KAMInventoryDynaChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3184
                                ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3185
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3186
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3187
                                if (GetLuid2L(aParentLUID, mapping,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3188
                                        EDCSInactive, ret) > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3189
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3190
                                    currentList->InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3191
                                            KAMInventoryDynaChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3192
                                    ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3193
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3194
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3195
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3196
                            if (mapping == KAMOperationsNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3197
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3198
                                if (GetLuid2L(aParentLUID, parentMapping,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3199
                                        EDCSDownload, ret) > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3200
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3201
                                    if (CheckStateL(aURI, aParentLUID) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3202
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3203
                                        currentList->InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3204
                                                KAMDownloadOperationChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3205
                                        ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3206
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3207
                                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3208
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3209
                                        RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): Level3 operations DC changed state '%S'", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3210
                                        ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3211
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3212
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3213
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3214
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3215
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3216
                                RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): Level4 Node not found '%S'", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3217
                                ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3218
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3219
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3220
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3221
                    if (numSeqs == 5)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3222
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3223
                        if (aParentLUID == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3224
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3225
                            RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): WARNING possibly a illegal level 5 node %S", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3226
                            ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3227
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3228
                        if (mapping == KAMOperationsNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3229
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3230
                            TPtrC8 parent(NSmlDmURI::RemoveLastSeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3231
                            TPtrC8
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3232
                                    parentMapping(NSmlDmURI::LastURISeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3233
                            TPtrC8 gparent(NSmlDmURI::RemoveLastSeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3234
                            TPtrC8
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3235
                                    gparentMapping(NSmlDmURI::LastURISeg(gparent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3236
                            if (gparentMapping == KAMDeliveredNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3237
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3238
                                if (GetLuid2L(aParentLUID, parentMapping,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3239
                                        EDCSDelivered, ret) > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3240
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3241
                                    currentList->InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3242
                                            KAMDeliveredOperationChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3243
                                    ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3244
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3245
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3246
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3247
                                if (gparentMapping == KAMDeployedNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3248
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3249
                                    if (GetLuid2L(aParentLUID, parentMapping,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3250
                                            EDCSActive, ret) > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3251
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3252
                                        currentList->InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3253
                                                KAMDeployedOperationChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3254
                                        ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3255
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3256
                                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3257
                                        if (GetLuid2L(aParentLUID,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3258
                                                parentMapping, EDCSInactive,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3259
                                                ret) > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3260
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3261
                                            currentList->InsertL( 0,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3262
                                                    KAMDeployedOperationChilds);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3263
                                            ret = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3264
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3265
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3266
                                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3267
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3268
                                    RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): Level5 Node not found wrong parent '%S'", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3269
                                    ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3270
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3271
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3272
                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3273
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3274
                            RDEBUG8_2( "CSCOMOAdapter::ChildURIListL(): Level5 Node not found '%S'", &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3275
                            ret = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3276
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3277
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3278
                    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3279
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3280
                        RDEBUG8_3( "CSCOMOAdapter::ChildURIListL(): ILLEGAL LEVEL %d NODE %S", numSeqs, &aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3281
                        ret = EError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3282
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3283
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3284
    SetStatusL(aStatusRef, ret);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3285
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3286
    if (ret == EOk)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3287
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3288
        if (iInAtomic)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3289
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3290
            iBuffer.Append(TAMCommandBufferElement(aStatusRef, aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3291
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3292
        Callback().SetResultsL(aResultsRef, *currentList, KNullDesC8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3293
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3294
    CleanupStack::PopAndDestroy(); //currentList
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3295
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3296
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3297
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3298
//  CSCOMOAdapter::DeliverOrDownloadL( const TDesC8 &aUserId, const TDesC8 &aURI, TInt aCnt, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3299
//		const TDesC8 &aParentMapping, MSmlDmAdapter::TError &aStatus )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3300
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3301
void CSCOMOAdapter::DeliverOrDownloadL(const TDesC8 &aUserId,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3302
        const TDesC8 &aURI, TInt aCnt, const TDesC8 &aParentMapping,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3303
        MSmlDmAdapter::TError &aStatus)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3304
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3305
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3306
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3307
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3308
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3309
    //Nothing
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3310
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3311
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3312
    switch (aCnt)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3313
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3314
        case 3:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3315
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3316
            if (aParentMapping == KAMDownloadNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3317
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3318
                TUint32 luid(SessionL().DownloadL(aUserId) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3319
                Callback().SetMappingL(aURI, *IntToDes8LC(luid) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3320
                CleanupStack::PopAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3321
                aStatus = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3322
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3323
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3324
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3325
                RDEBUG( "CSCOMOAdapter::DeliverOrDownloadL(): ERROR Illegal parent");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3326
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3327
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3328
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3329
        case 4:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3330
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3331
            if (aParentMapping == KAMDeliveredNodeName)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3332
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3333
                TUint32 luid(SessionL().DeliverL(aUserId) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3334
                Callback().SetMappingL(aURI, *IntToDes8LC(luid) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3335
                CleanupStack::PopAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3336
                aStatus = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3337
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3338
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3339
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3340
                RDEBUG( "CSCOMOAdapter::DeliverOrDownloadL(): ERROR Illegal parent");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3341
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3342
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3343
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3344
        default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3345
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3346
            RDEBUG( "CSCOMOAdapter::DeliverOrDownloadL(): ERROR Illegal URI");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3347
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3348
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3349
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3350
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3351
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3352
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3353
// CSCOMOAdapter::AddNodeObjectL( const TDesC8& aURI, const TDesC& aParentLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3354
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3355
void CSCOMOAdapter::AddNodeObjectL(const TDesC8& aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3356
        const TDesC8& aParentLUID, TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3357
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3358
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3359
#ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3360
    TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3361
    TPtrC8 mapping( NSmlDmURI::LastURISeg( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3362
    TPtrC8 parent( NSmlDmURI::RemoveLastSeg( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3363
    TPtrC8 parentMapping( NSmlDmURI::LastURISeg( parent ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3364
    TInt cnt( NSmlDmURI::NumOfURISegs( uriPtrc ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3365
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3366
    TPtrC8 mapping(NSmlDmURI::LastURISeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3367
    TPtrC8 parent(NSmlDmURI::RemoveLastSeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3368
    TPtrC8 parentMapping(NSmlDmURI::LastURISeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3369
    TInt cnt(NSmlDmURI::NumOfURISegs(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3370
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3371
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3372
    RDEBUG8_3( "CSCOMOAdapter::AddNodeObjectL(): begin '%S', '%S'", &aURI, &aParentLUID );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3373
    SetAdapterValue(KAMSCOMOAdapter);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3374
    CheckStateChangesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3375
    TError status(EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3376
    //	TPtrC8 mapping( NSmlDmURI::LastURISeg( aURI ) );//Dipak
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3377
    //	TPtrC8 parent( NSmlDmURI::RemoveLastSeg( aURI ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3378
    //	TPtrC8 parentMapping( NSmlDmURI::LastURISeg( parent ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3379
    //	TInt cnt( NSmlDmURI::NumOfURISegs( aURI ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3380
	TUint32 iluid( GetLuidL( aParentLUID, mapping, (parentMapping == KAMDeliveredNodeName ? EDCSDelivered : ( parentMapping == KAMDownloadNodeName ? EDCSDownload : EDCSNone ) ) ) ) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3381
	if( !iluid)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3382
	    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3383
            // This is added for avoiding duplicate node creation in Delivered/Download only.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3384
	    iluid = GetLuidL( aParentLUID, mapping, (parentMapping == KAMDeliveredNodeName ? EDCSDownload:EDCSDelivered ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3385
	    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3386
    if (iluid == 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3387
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3388
        // Not found, add it ... 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3389
        DeliverOrDownloadL(mapping, aURI, cnt, parentMapping, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3390
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3391
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3392
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3393
        RDEBUG_2( "CSCOMOAdapter::AddNodeObjectL(): WARNING May Already exists '%d'", iluid );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3394
        TDeploymentComponent comp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3395
        TInt err(SessionL().DeploymentComponent(iluid, comp) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3396
        if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3397
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3398
            RDEBUG_2( "CSCOMOAdapter::AddNodeObjectL(): ERROR Already exists '%d'", iluid );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3399
            if (comp.iState == StateL(aURI) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3400
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3401
                RDEBUG( "CSCOMOAdapter::AddNodeObjectL():    (state is ok) " );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3402
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3403
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3404
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3405
                RDEBUG( "CSCOMOAdapter::AddNodeObjectL():    (state is NOK) " );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3406
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3407
            status = EAlreadyExists;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3408
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3409
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3410
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3411
            if (err == KErrNotFound)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3412
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3413
                RDEBUG_2( "CSCOMOAdapter::AddNodeObjectL(): WARNING Already exists but not found '%d'", iluid );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3414
                DeliverOrDownloadL(mapping, aURI, cnt, parentMapping, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3415
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3416
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3417
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3418
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3419
                RDEBUG_2( "CSCOMOAdapter::AddNodeObjectL(): ERROR May exists, but failed to fetch get one? '%d'", err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3420
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3421
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3422
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3423
    if (status == EOk)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3424
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3425
        if (iInAtomic)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3426
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3427
            iBuffer.Append(TAMCommandBufferElement(aStatusRef, aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3428
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3429
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3430
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3431
    //status = EAcceptedForProcessing;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3432
    //TInt error = 202;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3433
    SetStatusL(aStatusRef, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3434
    RDEBUG( "CSCOMOAdapter::AddNodeObject(): end" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3435
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3436
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3437
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3438
// CSCOMOAdapter::GetSizeL( const TDesC8& aURI, const TDesC& aParentLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3439
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3440
TInt CSCOMOAdapter::GetSizeL(const TDeplCompAttrType aDataType,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3441
        const TInt aLuid, TError &aRet)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3442
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3443
    TInt size( 0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3444
    if (aDataType == EDCStateValue)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3445
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3446
        TDeploymentComponent comp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3447
        TInt err(SessionL().DeploymentComponent(aLuid, comp) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3448
        if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3449
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3450
            if (comp.iState == EDCSActive)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3451
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3452
                size = KAMStateValueActive().Length();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3453
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3454
            else if (comp.iState == EDCSDelivered)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3455
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3456
                size = KAMStateValueDelivered().Length();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3457
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3458
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3459
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3460
                size = KAMStateValueInactive().Length() ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3461
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3462
            aRet = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3463
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3464
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3465
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3466
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3467
        size = SessionL().DeploymentComponentDataSizeL(aLuid, aDataType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3468
        aRet = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3469
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3470
    return size;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3471
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3472
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3473
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3474
// CSCOMOAdapter::FetchLeafObjectSizeL( const TDesC8& aURI, const TDesC& aParentLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3475
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3476
void CSCOMOAdapter::FetchLeafObjectSizeL(const TDesC8& aURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3477
        const TDesC8& aLUID, const TDesC8& aType, TInt aResultsRef,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3478
        TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3479
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3480
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3481
    RDEBUG8_4("CSCOMOAdapter::FetchLeafObjectSizeL('%S', '%S', '%S'): begin", &aURI, &aLUID, &aType );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3482
    CheckStateChangesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3483
    TError status(EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3484
    CBufBase *currentList = CBufFlat::NewL( 128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3485
    CleanupStack::PushL(currentList);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3486
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3487
    TPtrC8 mapping(NSmlDmURI::LastURISeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3488
    TPtrC8 parent(NSmlDmURI::RemoveLastSeg(aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3489
    TPtrC8 parentMapping(NSmlDmURI::LastURISeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3490
    TInt size( 0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3491
    HBufC8 *luid= NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3492
    if (aLUID != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3493
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3494
        luid = aLUID.AllocLC();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3495
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3496
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3497
        { // try if we find it from download path
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3498
        TBuf8<256> down;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3499
        down = KDownloadURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3500
        down.Append(parentMapping);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3501
        luid = Callback().GetLuidAllocL(down);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3502
        CleanupStack::PushL(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3503
        if ( *luid != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3504
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3505
            // make it to found next time
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3506
            DirectSetMappingL(parent, *luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3507
            MoveAclL(down, parent);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3508
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3509
            // remove old
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3510
            DirectSetMappingL(down, KNullDesC8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3511
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3512
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3513
    TDeplCompAttrType dataType(UpdateFlagFromMapping(mapping) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3514
    if ( *luid != KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3515
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3516
        TUint32 iluid(DesToIntL( *luid ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3517
        RDEBUG_2( "CSCOMOAdapter::FetchLeafObjectSizeL(): Luid is : %d", iluid );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3518
        size = GetSizeL(dataType, iluid, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3519
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3520
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3521
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3522
        TUint32 iluid(GetLeafLuidL(aURI, parentMapping) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3523
        if (iluid > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3524
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3525
            HBufC8 *l = IntToDes8LC(iluid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3526
            DirectSetMappingL(parent, *l);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3527
            CleanupStack::PopAndDestroy(l);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3528
            size = GetSizeL(dataType, iluid, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3529
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3530
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3531
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3532
            RDEBUG8_2( "CSCOMOAdapter::FetchLeafObjectSizeL(): WARNING Faild to get luid allocation for '%S'", &parent );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3533
            if (aLUID == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3534
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3535
                status = ENotFound;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3536
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3537
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3538
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3539
    SetStatusL(aStatusRef, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3540
    if (status == EOk && size > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3541
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3542
        HBufC8 *hsize = IntToDes8LC(size);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3543
        currentList->InsertL( 0, *hsize);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3544
        if (iInAtomic)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3545
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3546
            iBuffer.Append(TAMCommandBufferElement(aStatusRef, aURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3547
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3548
        Callback().SetResultsL(aResultsRef, *currentList, aType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3549
        CleanupStack::PopAndDestroy(hsize);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3550
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3551
    CleanupStack::PopAndDestroy(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3552
    CleanupStack::PopAndDestroy(currentList); //currentList	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3553
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3554
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3555
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3556
// CSCOMOAdapter::ExecuteCommandL( const TDesC8& aURI, const TDesC& aParentLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3557
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3558
void CSCOMOAdapter::ExecuteCommandL(const TDesC8& /*aURI*/,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3559
        const TDesC8& /*aLUID*/, RWriteStream*& /*aStream*/,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3560
        const TDesC8& /*aType*/, TInt /*aStatusRef*/)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3561
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3562
    RDEBUG("CSCOMOAdapter::ExecuteCommandL(stream): begin (NOT SUPPORTED)");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3563
    User::Leave(KErrNotSupported);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3564
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3565
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3566
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3567
// CSCOMOAdapter::CopyCommandL( const TDesC8& aURI, const TDesC& aParentLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3568
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3569
void CSCOMOAdapter::CopyCommandL(const TDesC8& /*aTargetURI*/,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3570
        const TDesC8& /*aTargetLUID*/, const TDesC8& /*aSourceURI*/,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3571
        const TDesC8& /*aSourceLUID*/, const TDesC8& /*aType*/,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3572
        TInt aStatusRef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3573
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3574
    RDEBUG("CSCOMOAdapter::CopyCommandL(): begin (NOT SUPPORTED)");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3575
    SetStatusL(aStatusRef, EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3576
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3577
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3578
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3579
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3580
// CSCOMOAdapter::StartAtomicL(  )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3581
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3582
void CSCOMOAdapter::StartAtomicL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3583
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3584
    RDEBUG("CSCOMOAdapter::StartAtomicL(): begin (NOT properly SUPPORTED)");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3585
    iInAtomic = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3586
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3587
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3588
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3589
// CSCOMOAdapter::CommitAtomicL(  )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3590
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3591
void CSCOMOAdapter::CommitAtomicL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3592
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3593
    RDEBUG("CSCOMOAdapter::CommitAtomicL(): begin (NOT SUPPORTED)");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3594
    iInAtomic = EFalse; // the initial statuses are already set
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3595
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3596
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3597
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3598
// CSCOMOAdapter::RollbackAtomicL(  )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3599
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3600
void CSCOMOAdapter::RollbackAtomicL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3601
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3602
    RDEBUG("CSCOMOAdapter::RollbackAtomicL(): begin (NOT properly SUPPORTED)");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3603
    TInt count(iBuffer.Count() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3604
    for (TInt i( 0); i < count; i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3605
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3606
        TAMCommandBufferElement &pm(iBuffer[i]);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3607
        SetStatusL(pm.iStatusRef, ERollbackFailed);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3608
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3609
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3610
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3611
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3612
// CSCOMOAdapter::StreamingSupport( )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3613
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3614
TBool CSCOMOAdapter::StreamingSupport(TInt& aItemSize)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3615
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3616
    RDEBUG("CSCOMOAdapter::StreamingSupport(): begin");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3617
    //aItemSize = 1024;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3618
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3619
    // After Generic alert is sent delete that entry from database and notify
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3620
    // AM server to delete the appropriate entry in its database.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3621
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3622
    if(aItemSize == KNSmlDMResetGenAlerts)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3623
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3624
      TSmlProfileId profId = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3625
      HBufC8* serverId = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3626
      TRAP_IGNORE(GetServerInfoL( profId, serverId ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3627
      
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3628
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3629
    TUint32 internalid;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3630
    RPointerArray<CAMDbItem> genericalerts;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3631
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3632
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3633
    // Get generic alert entry from Database for particular server ID.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3634
    TRAPD(err, iAMdb->GetEntryForServerIDL(genericalerts, *serverId));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3635
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3636
    if (genericalerts.Count()!= KErrNone && err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3637
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3638
          	for(TInt i=0; i<genericalerts.Count(); i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3639
    		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3640
			internalid = genericalerts[i]->iLUID;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3641
			// Delete the all the generic alert details from SCOMO adapeter DB
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3642
			// Also delete the appropriate entry from AM Server DB as well.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3643
            TRAP_IGNORE(iAMdb->DeleteFromDatabaseL(internalid));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3644
            TRAP_IGNORE(SessionL().GenericAlertSentL(internalid));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3645
    		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3646
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3647
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3648
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3649
    genericalerts.ResetAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3650
    delete serverId;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3651
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3652
    _LIT(KNull,"");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3653
    // No monitoring required after generic alert is sent
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3654
    TInt err_rep = KErrNone;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3655
    CRepository *repository1 = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3656
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3657
    TRAP(err_rep, repository1 =CRepository::NewL ( KCRUidDeviceManagementInternalKeys ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3658
  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3659
    if(err_rep == KErrNone)  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3660
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3661
    repository1 ->Set(KDevManServerIdKey ,KNull);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3662
    repository1 ->Set(KDevManIapIdKey, KErrNone);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3663
    repository1 ->Set(KDevManEnableDMNetworkMon, KErrNone);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3664
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3665
     
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3666
    if(repository1)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3667
     delete repository1;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3668
      
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3669
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3670
    aItemSize = 1024;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3671
    RDEBUG("CSCOMOAdapter::StreamingSupport(): end");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3672
    return ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3673
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3674
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3675
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3676
// CSCOMOAdapter::StreamCommittedL( )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3677
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3678
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3679
void CSCOMOAdapter::StreamCommittedL( RWriteStream& /*aStream*/)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3680
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3681
void CSCOMOAdapter::StreamCommittedL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3682
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3683
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3684
    RDEBUG("CSCOMOAdapter::StreamCommittedL(): begin");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3685
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3686
    if (iStreamOpen)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3687
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3688
        iStream.CommitL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3689
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3690
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3691
    MSmlDmAdapter::TError status = EOk;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3692
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3693
    TRAPD( err, _UpdateLeafObjectL( *iStreamedURI, *iStreamedLuid, KNullDesC8(), *iStreamedType, iStatusRef, status ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3694
    ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3695
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3696
    if (err != KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3697
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3698
        RDEBUG_2("CSCOMOAdapter::StreamCommittedL(): _UpdateLeafObjectL returned error (%d)", err);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3699
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3700
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3701
    iIsStreamedContent = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3702
    iStreamOpen = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3703
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3704
    Callback().SetStatusL(iStatusRef, status);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3705
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3706
    RDEBUG("CSCOMOAdapter::StreamCommittedL(): end");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3707
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3708
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3709
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3710
// CSCOMOAdapter::CloseStreaming( )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3711
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3712
void CSCOMOAdapter::CloseStreaming()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3713
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3714
    if (iStreamOpen)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3715
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3716
        RDEBUG("CSCOMOAdapter::CloseStreaming(): closing");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3717
        iStreamFile.Close(); // !!! Closing this will also close the iStreamRFs because it is adopted from server
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3718
        iStreamOpen = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3719
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3720
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3721
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3722
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3723
// CSCOMOAdapter::CompleteOutstandingCmdsL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3724
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3725
void CSCOMOAdapter::CompleteOutstandingCmdsL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3726
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3727
    RDEBUG("CSCOMOAdapter::CompleteOutstandingCmdsL(): begin");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3728
    /*	iManagement.Close();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3729
     iSessionOpened = EFalse ;*/
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3730
    iBuffer.Reset();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3731
    RDEBUG("CSCOMOAdapter::CompleteOutstandingCmdsL(): Management session closed");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3732
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3733
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3734
// ------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3735
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3736
// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3737
const TImplementationProxy ImplementationTable[] =
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3738
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3739
    //
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3740
            IMPLEMENTATION_PROXY_ENTRY( KAMAdapterImplUid, CSCOMOAdapter::NewL )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3741
    };
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3742
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3743
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3744
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3745
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3746
EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3747
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3748
    aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3749
    return ImplementationTable;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3750
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3751
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3752
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3753
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3754
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3755
TInt CSCOMOAdapter::DesToIntL(const TDesC8& aLuid)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3756
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3757
    TLex8 lex(aLuid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3758
    TInt value = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3759
    User::LeaveIfError(lex.Val(value) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3760
    return value;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3761
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3762
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3763
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3764
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3765
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3766
HBufC8* CSCOMOAdapter::IntToDes8LC(const TInt aLuid)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3767
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3768
    HBufC8* buf = HBufC8::NewLC( 10); //10 = max length of 32bit integer
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3769
    TPtr8 ptrBuf = buf->Des();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3770
    ptrBuf.Num(aLuid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3771
    return buf;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3772
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3773
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3774
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3775
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3776
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3777
void CSCOMOAdapter::ConstructL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3778
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3779
    iAMdb = CSCOMOAdapterDb::NewL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3780
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3781
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3782
    iDbSession.ConnectL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3783
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3784
    User::LeaveIfError(iDbSession.Connect());
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3785
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3786
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3787
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3788
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3789
// CSCOMOAdapter::SetStatusL( TInt aStatusRef, MSmlDmAdapter::TError aErrorCode ) 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3790
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3791
void CSCOMOAdapter::SetStatusL(TInt aStatusRef,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3792
        MSmlDmAdapter::TError aErrorCode)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3793
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3794
    RDEBUG_3("CSCOMOAdapter::SetStatusL( %d, %d )", aStatusRef, aErrorCode );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3795
    Callback().SetStatusL(aStatusRef, aErrorCode);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3796
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3797
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3798
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3799
// CSCOMOAdapter::SetResultsL( TInt aResultsRef, CBufBase& aObject, const TDesC8& aType )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3800
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3801
void CSCOMOAdapter::SetResultsL(TInt aResultsRef, CBufBase& aObject,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3802
        const TDesC8& aType)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3803
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3804
    Callback().SetResultsL(aResultsRef, aObject, aType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3805
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3806
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3807
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3808
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3809
// CSCOMOAdapter::FillNodeInfoL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3810
// Fills the node info in ddf structure
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3811
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3812
void CSCOMOAdapter::FillNodeInfoL(MSmlDmDDFObject& aNode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3813
        TSmlDmAccessTypes aAccTypes, MSmlDmDDFObject::TOccurence aOccurrence,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3814
        MSmlDmDDFObject::TScope aScope, MSmlDmDDFObject::TDFFormat aFormat,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3815
        const TDesC8& aDescription)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3816
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3817
    FillNodeInfoNoDefaultMimeL(aNode, aAccTypes, aOccurrence, aScope,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3818
            aFormat, aDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3819
    if (aFormat!=MSmlDmDDFObject::ENode)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3820
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3821
        aNode.AddDFTypeMimeTypeL(KAMTextPlain);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3822
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3823
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3824
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3825
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3826
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3827
// CSCOMOAdapter::FillNodeInfoNoDefaultMimeL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3828
// Fills the node info in ddf structure, without default mime type
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3829
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3830
void CSCOMOAdapter::FillNodeInfoNoDefaultMimeL(MSmlDmDDFObject& aNode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3831
        TSmlDmAccessTypes aAccTypes, MSmlDmDDFObject::TOccurence aOccurrence,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3832
        MSmlDmDDFObject::TScope aScope, MSmlDmDDFObject::TDFFormat aFormat,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3833
        const TDesC8& aDescription)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3834
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3835
    aNode.SetAccessTypesL(aAccTypes);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3836
    aNode.SetOccurenceL(aOccurrence);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3837
    aNode.SetScopeL(aScope);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3838
    aNode.SetDFFormatL(aFormat);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3839
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3840
    aNode.SetDescriptionL(aDescription);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3841
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3842
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3843
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3844
// CSCOMOAdapter::CheckStateChangesInternalL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3845
// Updates the changed DC states to DM client mappings and ACLs
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3846
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3847
void CSCOMOAdapter::CheckStateChangesInternalL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3848
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3849
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3850
#ifdef __AM_CHECKSTATE_CHANGES
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3851
    RDEBUG( "CSCOMOAdapter::CheckStateChangesLInternal(): begin" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3852
    if ( !iUpdated)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3853
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3854
        RDEBUG( "CSCOMOAdapter::CheckStateChangesLInternal(): !iUpdated" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3855
        RElementIdArray arr;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3856
        CleanupClosePushL(arr);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3857
		SessionL().CheckStatusNodesL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3858
		RElementIdArray array;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3859
		TInt err( SessionL().DeploymentComponentIdsL( array, EDCSActive ) ); //to sync with SIS/Java registry
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3860
		err = SessionL().DeploymentComponentIdsL( array, EDCSInactive ); //to sync with SIS/Java registry
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3861
		CleanupClosePushL(array);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3862
        err = SessionL().StateChangingDCIdsL(arr);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3863
        if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3864
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3865
            TInt c(arr.Count() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3866
            for (TInt i( 0); i < c; i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3867
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3868
                TDeploymentComponent comp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3869
                err = iManagement.DeploymentComponent(arr[i], comp);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3870
                if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3871
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3872
                    TDCUserId dc;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3873
                    SessionL().DeploymentComponentUserIdL(arr[i], dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3874
                    const TInt KNSmlDmMaxUriLength = 256;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3875
                    HBufC8 *uri = HBufC8::NewLC(KNSmlDmMaxUriLength);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3876
                    TPtr8 puri(uri->Des() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3877
#ifdef __TARM_SYMBIAN_CONVERGENCY					
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3878
                    RDmTreeNode uriNode;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3879
                    CleanupClosePushL(uriNode);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3880
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3881
                    RBuf8 acl;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3882
                    acl.CreateL(128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3883
                    CleanupClosePushL(acl);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3884
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3885
                    HBufC8 *newUri = HBufC8::NewLC( KNSmlDmMaxUriLength );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3886
                    TPtr8 pnewUri( newUri->Des() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3887
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3888
                    RDmTreeNode newUriNode;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3889
                    CleanupClosePushL(newUriNode);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3890
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3891
                    CBufBase* acl = CBufFlat::NewL( 128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3892
                    CleanupStack::PushL(acl);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3893
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3894
                    HBufC8 *newUri = HBufC8::NewLC(KNSmlDmMaxUriLength);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3895
                    TPtr8 pnewUri(newUri->Des() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3896
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3897
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3898
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3899
                    switch (comp.iOldState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3900
                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3901
                        case EDCSDelivered:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3902
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3903
                            RDEBUG( "CSCOMOAdapter::CheckStateChangesLInternal(): Old State = EDCSDelivered" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3904
                            puri.Copy(KDeliveredURI() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3905
                            puri.Append(dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3906
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3907
                            HBufC8 *luid = DirectGetLuidAllocLC(puri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3908
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3909
                            if ( *luid == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3910
                                { // probably moved already
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3911
                                iManagement.StateChangeComplete(arr[i]);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3912
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3913
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3914
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3915
                                // "Nullify" the old mapping 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3916
								//DirectSetMappingL( puri, KNullDesC8 );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3917
								DirectRemoveMappingL(puri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3918
#ifdef __TARM_SYMBIAN_CONVERGENCY								
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3919
                                iDbSession.OpenNodeL(puri, uriNode, RDmTree::EReadOnly);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3920
                                uriNode.DmPropertyL( DevMan::EACL, acl );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3921
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3922
                                err = iDbSession.GetAclL(puri, *acl, EFalse); // no need for inherited
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3923
#endif										
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3924
                                // Determine new uri 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3925
                                switch (comp.iState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3926
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3927
                                    case EDCSActive:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3928
                                    case EDCSInactive: // both have same node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3929
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3930
                                        pnewUri.Copy(KDeployedURI() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3931
                                        pnewUri.Append(dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3932
                                        DirectSetMappingL(pnewUri, *luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3933
                                        if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3934
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3935
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3936
                                            iDbSession.OpenNodeL(pnewUri, newUriNode, RDmTree::EReadOnly);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3937
                                            uriNode.RemoveDmPropertyL( DevMan::EACL );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3938
                                            newUriNode.SetDmPropertyL( DevMan::EACL, acl );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3939
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3940
                                            err = iDbSession.DeleteAclL(puri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3941
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3942
                                            err = iDbSession.UpdateAclL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3943
                                                    pnewUri, acl->Ptr( 0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3944
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3945
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3946
                                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3947
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3948
                                            RDEBUG_2("CSCOMOAdapter::CheckStateChangesL: ERROR Failed to get acl from %d ", err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3949
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3950
                                        iManagement.StateChangeComplete(arr[i]);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3951
                                        break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3952
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3953
                                    default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3954
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3955
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3956
                                        RDEBUG_2("CSCOMOAdapter::CheckStateChangesL: WARNING Illegal state change from delivered to %d ", comp.iState );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3957
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3958
                                        break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3959
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3960
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3961
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3962
                            CleanupStack::PopAndDestroy(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3963
                            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3964
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3965
                        case EDCSDownload:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3966
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3967
                            RDEBUG( "CSCOMOAdapter::CheckStateChangesLInternal(): Old State = EDCSDownload" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3968
                            puri.Copy(KDownloadURI() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3969
                            //check DC contains SCOMODefault.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3970
                            TBuf8<256> staticnode;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3971
                            TInt staticnodeenabled = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3972
                            CRepository* cenrep = CRepository::NewLC( KCRUidPrivateApplicationManagementKeys );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3973
                            cenrep->Get( KAMDownloadPredefinedNode, staticnode ); 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3974
                            cenrep->Get( KAMStaticNodeEnabled, staticnodeenabled );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3975
                            CleanupStack::PopAndDestroy(); //cenrep
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3976
                            if (dc.Find(staticnode) != KErrNotFound && staticnodeenabled)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3977
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3978
                                puri.Append(staticnode);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3979
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3980
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3981
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3982
                                puri.Append(dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3983
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3984
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3985
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3986
                            HBufC8 *luid = DirectGetLuidAllocLC(puri); //Callback().GetLuidAllocL( puri );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3987
                            //CleanupStack::PushL( luid );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3988
                            if ( *luid == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3989
                                { // probably moved already
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3990
                                CleanupStack::PopAndDestroy(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3991
                                puri.Copy(KDeliveredURI() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3992
                                puri.Append(dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3993
                                luid = DirectGetLuidAllocLC(puri); //Callback().GetLuidAllocL( puri );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3994
                                if ( *luid == KNullDesC8)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3995
                                    { // probably moved already
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3996
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3997
                                    iManagement.StateChangeComplete(arr[i]);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3998
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  3999
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4000
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4001
                            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4002
                                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4003
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4004
                                iDbSession.OpenNodeL(puri, uriNode, RDmTree::EReadOnly);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4005
                                uriNode.DmPropertyL( DevMan::EACL, acl );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4006
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4007
                                err = iDbSession.GetAclL(puri, *acl, EFalse); // no need for inherited
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4008
#endif							
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4009
                                // "Nullify" the old mapping 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4010
								//DirectSetMappingL( puri, KNullDesC8 );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4011
								DirectRemoveMappingL(puri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4012
                                switch (comp.iState)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4013
                                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4014
                                    case EDCSActive:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4015
                                    case EDCSInactive: // both have same node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4016
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4017
                                        pnewUri.Copy(KDeployedURI() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4018
                                        pnewUri.Append(dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4019
                                        DirectSetMappingL(pnewUri, *luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4020
                                        if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4021
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4022
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4023
                                            iDbSession.OpenNodeL(pnewUri, newUriNode, RDmTree::EReadOnly);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4024
                                            uriNode.RemoveDmPropertyL( DevMan::EACL );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4025
                                            newUriNode.SetDmPropertyL( DevMan::EACL, acl );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4026
#else											
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4027
                                            err = iDbSession.DeleteAclL(puri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4028
                                            err = iDbSession.UpdateAclL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4029
                                                    pnewUri, acl->Ptr( 0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4030
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4031
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4032
                                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4033
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4034
                                            RDEBUG_2("CSCOMOAdapter::CheckStateChangesL: ERROR Failed to get acl from %d ", err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4035
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4036
                                        iManagement.StateChangeComplete(arr[i]);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4037
                                        break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4038
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4039
                                    case EDCSDelivered:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4040
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4041
                                        RDEBUG( "CSCOMOAdapter::CheckStateChangesLInternal(): Current State = EDCSDelivered" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4042
                                        pnewUri.Copy(KDeliveredURI() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4043
                                        pnewUri.Append(dc);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4044
                                        DirectSetMappingL(pnewUri, *luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4045
                                        if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4046
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4047
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4048
                                            iDbSession.OpenNodeL(pnewUri, newUriNode, RDmTree::EReadOnly);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4049
                                            uriNode.RemoveDmPropertyL( DevMan::EACL );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4050
                                            newUriNode.SetDmPropertyL( DevMan::EACL, acl );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4051
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4052
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4053
                                            err = iDbSession.DeleteAclL(puri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4054
                                            err = iDbSession.UpdateAclL(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4055
                                                    pnewUri, acl->Ptr( 0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4056
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4057
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4058
                                        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4059
                                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4060
                                            RDEBUG_2("CSCOMOAdapter::CheckStateChangesL: ERROR Failed to get acl from %d ", err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4061
                                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4062
                                        iManagement.StateChangeComplete(arr[i]);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4063
                                        break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4064
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4065
                                    default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4066
                                        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4067
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4068
                                        RDEBUG_2("CSCOMOAdapter::CheckStateChangesL: WARNING Illegal state change from delivered to %d ", comp.iState );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4069
                                        break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4070
                                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4071
                                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4072
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4073
                                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4074
                            CleanupStack::PopAndDestroy(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4075
                            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4076
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4077
                        case EDCSActive:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4078
                        case EDCSInactive: // these both are in same node
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4079
                            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4080
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4081
                            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
  4082
                            iManagement.StateChangeComplete(arr[i]);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4083
                            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4084
                            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4085
                        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4086
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4087
                    CleanupStack::PopAndDestroy( &newUriNode );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4088
                    CleanupStack::PopAndDestroy( newUri );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4089
                    CleanupStack::PopAndDestroy( &uriNode );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4090
                    CleanupStack::PopAndDestroy( &acl );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4091
                    CleanupStack::PopAndDestroy( uri );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4092
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4093
                    CleanupStack::PopAndDestroy(newUri);
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
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4097
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4098
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4099
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4100
                    RDEBUG_2("CSCOMOAdapter::CheckStateChangesL: ERROR Failed to get component: %d ", err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4101
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4102
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4103
            iUpdated = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4104
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4105
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4106
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4107
            RDEBUG_2("CSCOMOAdapter::CheckStateChangesL: ERROR Failed to get state change dcs: %d ", err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4108
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4109
        CleanupStack::PopAndDestroy( &array);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4110
        CleanupStack::PopAndDestroy( &arr);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4111
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4112
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4113
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4114
        RDEBUG("CSCOMOAdapter::CheckStateChangesL: Already updated! ");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4115
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4116
    RDEBUG( "CSCOMOAdapter::CheckStateChangesL(): end" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4117
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4118
    DBG_ARGS8( "CSCOMOAdapter::CheckStateChangesL(): disabled" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4119
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4120
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4121
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4122
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4123
// CSCOMOAdapter::CheckStateChangesL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4124
// Updates acl and mapping trees to match state changes
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4125
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4126
void CSCOMOAdapter::CheckStateChangesL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4127
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4128
    iCertRequired = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4129
    RDEBUG( "CSCOMOAdapter::CheckStateChangesL(): iCertRequired = EFalse" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4130
    TRAPD( err, CheckStateChangesInternalL() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4131
    ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4132
    if (err != KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4133
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4134
        RDEBUG_2("CSCOMOAdapter::CheckStateChangesL(): warning failed to check state changes %d", err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4135
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4136
    iCertRequired = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4137
    RDEBUG( "CSCOMOAdapter::CheckStateChangesL(): iCertRequired = ETrue" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4138
    if ( !iTrustAdded)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4139
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4140
        RDEBUG( "CSCOMOAdapter::CheckStateChangesL(): Adding Trust Closing Session" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4141
        iManagement.Close();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4142
        iSessionOpened = EFalse;
67
hgs
parents: 47
diff changeset
  4143
//        RApplicationManagement &session = SessionL(); // coverity Fix
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4144
        RDEBUG( "CSCOMOAdapter::CheckStateChangesL(): Adding Trust new session started" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4145
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4146
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4147
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4148
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4149
// CSCOMOAdapter::URISegsUpTo(const TDesC8& aURI, TInt aUpTo)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4150
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4151
TPtrC8 CSCOMOAdapter::URISegsUpTo(const TDesC8& aURI, TInt aUpTo,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4152
        TBool aInclKeno/*=EFalse*/)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4153
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4154
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4155
    TPtrC8 ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4156
    TInt numOfURISegs( 0);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4157
    for (TInt i( 0); i < aURI.Length() && ret.Ptr() == NULL; i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4158
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4159
        if (aURI[i] == KNSmlDMUriSeparator)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4160
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4161
            numOfURISegs++;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4162
            if (aUpTo == numOfURISegs)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4163
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4164
                if (aInclKeno && aURI.Length() > i+1)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4165
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4166
                    ret.Set(aURI.Left(i + 1) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4167
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4168
                else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4169
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4170
                    ret.Set(aURI.Left(i) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4171
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4172
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4173
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4174
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4175
    return ret;
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
// CSCOMOAdapter::DirectGetLuidAllocLC( const TDesC8 &aURI )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4180
// -------------------------------------------------------------------------------------	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4181
HBufC8 *CSCOMOAdapter::DirectGetLuidAllocLC(const TDesC8 &aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4182
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4183
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4184
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4185
    HBufC8 *ret = Callback().GetLuidAllocL( aURI );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4186
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4187
    HBufC8* ret = iDbSession.GetLuidAllocL(KAMAdapterImplUid, aURI);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4188
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4189
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4190
    CleanupStack::PushL(ret);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4191
    return ret;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4192
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4193
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4194
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4195
// CSCOMOAdapter::DirectSetMappingL( const TDesC8 &aURI, const TDesC8 &aLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4196
// -------------------------------------------------------------------------------------		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4197
TInt CSCOMOAdapter::DirectSetMappingL(const TDesC8 &aURI, const TDesC8 &aLUID)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4198
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4199
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4200
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4201
    TRAPD( err, Callback().SetMappingL( aURI, aLUID ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4202
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4203
    TInt err(iDbSession.AddMappingInfoL(KAMAdapterImplUid, aURI, aLUID) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4204
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4205
    return err;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4206
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4207
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4208
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4209
// CSCOMOAdapter::MoveAclL( const TDesC8 &aFrom, const TDesC8 &aTo )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4210
// -------------------------------------------------------------------------------------		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4211
void CSCOMOAdapter::MoveAclL(const TDesC8 &aFrom, const TDesC8 &aTo)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4212
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4213
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4214
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4215
    RDmTreeNode from;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4216
    CleanupClosePushL(from);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4217
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4218
    RDmTreeNode to;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4219
    CleanupClosePushL(to);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4220
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4221
    RBuf8 acl;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4222
    acl.CreateL(128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4223
    CleanupClosePushL(acl);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4224
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4225
    iDbSession.OpenNodeL(aFrom, from, RDmTree::EReadOnly);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4226
    TRAPD( err, from.DmPropertyL( DevMan::EACL, acl ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4227
    if ( err == KErrNone )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4228
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4229
        iDbSession.OpenNodeL(aTo, to, RDmTree::EReadOnly);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4230
        from.RemoveDmPropertyL( DevMan::EACL );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4231
        to.SetDmPropertyL( DevMan::EACL, acl );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4232
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4233
    CleanupStack::PopAndDestroy( 3, &from );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4234
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4235
    CBufBase *acl = CBufFlat::NewL( 128);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4236
    CleanupStack::PushL(acl);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4237
    TInt err(iDbSession.GetAclL(aFrom, *acl, EFalse) ); // no need for inherited
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4238
    if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4239
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4240
        err = iDbSession.DeleteAclL(aFrom);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4241
        err = iDbSession.UpdateAclL(aTo, acl->Ptr( 0) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4242
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4243
    CleanupStack::PopAndDestroy(acl);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4244
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4245
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4246
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4247
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4248
// CSCOMOAdapter::SetMappingL( const TDesC8 &aOriginalURI, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4249
//	const TDeploymentComponentState aTargetState, const TDesC8 &aLUID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4250
// -------------------------------------------------------------------------------------		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4251
void CSCOMOAdapter::SetMappingL(const TDesC8 &aOriginalURI,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4252
        const TDeploymentComponentState aTargetState, const TDesC8 &aLUID)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4253
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4254
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4255
    HBufC8 * targeturi= NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4256
    SetMappingLC(aOriginalURI, aTargetState, aLUID, targeturi);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4257
    CleanupStack::PopAndDestroy(targeturi);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4258
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4259
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4260
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4261
// CSCOMOAdapter::SetMappingLC( const TDesC8 &aOriginalURI, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4262
//	const TDeploymentComponentState aTargetState, const TDesC8 &aLUID, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4263
//	HBufC8 *&aNewUri )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4264
// -------------------------------------------------------------------------------------		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4265
void 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
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4270
    // "Nullify" the mapping for argument
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4271
    DirectSetMappingL(aOriginalURI, KNullDesC8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4272
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4273
    // Determine new uri for aArgument
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4274
    TPtrC8 puri;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4275
    if (aNewUri == NULL)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4276
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4277
        TPtrC8 argMapping(NSmlDmURI::LastURISeg(aOriginalURI) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4278
        TPtrC8 target;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4279
        if (aTargetState == EDCSInactive || aTargetState == EDCSActive)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4280
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4281
            target.Set(KDeployedURI() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4282
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4283
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4284
            if (aTargetState == EDCSDelivered)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4285
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4286
                target.Set(KDeliveredURI() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4287
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4288
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4289
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4290
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4291
                User::Leave(KErrArgument);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4292
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4293
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4294
        aNewUri = HBufC8::NewLC(target.Length() + argMapping.Length() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4295
        TPtr8 p(aNewUri->Des() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4296
        p.Copy(target);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4297
        p.Append(argMapping);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4298
        puri.Set(p);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4299
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4300
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4301
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4302
        puri.Set( *aNewUri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4303
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4304
    DirectSetMappingL(puri, aLUID);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4305
    MoveAclL(aOriginalURI, puri);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4306
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4307
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4308
#ifdef __AM_LASTERROR_NODE
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4309
// ------------------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4310
// CSCOMOAdapter::SetLastErrorL( const TDesC8& aLastError, const TInt aError )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4311
// ------------------------------------------------------------------------------------------------	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4312
void CSCOMOAdapter::SetLastErrorL(const TDesC8& aLastError, const TInt aError)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4313
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4314
    if (iLastError)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4315
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4316
        TPtrC8 p(*iLastError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4317
        RDEBUG8_2( "CSCOMOAdapter::SetLastErrorL: clearing last error %S", &p);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4318
        delete iLastError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4319
        iLastError = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4320
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4321
    iLastError = HBufC8::NewL(aLastError.Length() + 10);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4322
    iLastError->Des().Format(aLastError, aError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4323
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4324
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4325
const TDesC8& CSCOMOAdapter::LastError()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4326
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4327
    return iLastError == NULL ? KNullDesC8() : *iLastError;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4328
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4329
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4330
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4331
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4332
TPtrC8 CSCOMOAdapter::LastURISeg(const TDesC8& aURI)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4333
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4334
    TInt i;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4335
    for (i=aURI.Length()-1; i>=0; i--)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4336
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4337
        if (aURI[i]==KNSmlDMAMSeparatorDef)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4338
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4339
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4340
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4341
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4342
    if (i==0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4343
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4344
        return aURI;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4345
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4346
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4347
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4348
        return aURI.Mid(i+1);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4349
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4350
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4351
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4352
TInt CSCOMOAdapter::DesToInt(const TDesC8& aLuid)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4353
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4354
    TLex8 lex(aLuid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4355
    TInt value = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4356
    lex.Val(value);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4357
    return value;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4358
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4359
void CSCOMOAdapter::CheckAndAddPredefinedNodeL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4360
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4361
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4362
    RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): begin");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4363
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4364
    // Check if SCOMODefault node addition is enabled.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4365
    TInt staticnodeenabled = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4366
    CRepository* cenrep = CRepository::NewLC( KCRUidPrivateApplicationManagementKeys );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4367
    cenrep->Get( KAMStaticNodeEnabled, staticnodeenabled ); 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4368
    CleanupStack::PopAndDestroy(); //cenrep
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4369
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4370
    RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step1");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4371
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4372
    if(staticnodeenabled)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4373
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4374
      TBuf8<KMaxFullName> temp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4375
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4376
      RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step2");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4377
      GetPredefinedNodeL(temp);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4378
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4379
      RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step3");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4380
      if (temp.Length())
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4381
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4382
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4383
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4384
        RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step4");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4385
        TBuf8<KMaxFullName> temp1;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4386
        temp1.Zero();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4387
        temp1.Copy(KAMNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4388
        temp1.Append(KAMSeparator8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4389
        temp1.Append(KAMDownloadNodeName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4390
        temp1.Append(KAMSeparator8);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4391
        temp1.Append(temp);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4392
       
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4393
        HBufC8* luid = DirectGetLuidAllocLC(temp1);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4394
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4395
         RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step5");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4396
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4397
        if (luid->Length() > 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4398
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4399
            CleanupStack::PopAndDestroy(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4400
            return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4401
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4402
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4403
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4404
            RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step6");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4405
            // Not found, add node and mapping ... 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4406
            //TError status(EError);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4407
            TPtrC8 mapping(NSmlDmURI::LastURISeg(temp1) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4408
            TPtrC8 parent(NSmlDmURI::RemoveLastSeg(temp1) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4409
            TPtrC8 parentMapping(NSmlDmURI::LastURISeg(parent) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4410
            TInt cnt(NSmlDmURI::NumOfURISegs(temp1) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4411
             RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step7");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4412
            TUint32 newLuid(SessionL().DownloadL(mapping));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4413
            //Callback().SetMappingL( temp1, *IntToDes8LC( newLuid ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4414
            //CleanupStack::PopAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4415
            RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step8");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4416
            DirectSetMappingL(temp1, *IntToDes8LC(newLuid) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4417
            RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step9");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4418
            CleanupStack::PopAndDestroy(); // for IntToDes8LC()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4419
            CleanupStack::PopAndDestroy(luid);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4420
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4421
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4422
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4423
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4424
// ---------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4425
// CAmAdapter::GetPredefinedNodeL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4426
// Gets  predefined node for Download object from cenrep 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4427
// ---------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4428
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4429
void CSCOMOAdapter::GetPredefinedNodeL(TDes8& aNode)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4430
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4431
	CRepository* centrep( NULL);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4432
	aNode.Zero();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4433
   	centrep = CRepository::NewLC( KCRUidPrivateApplicationManagementKeys );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4434
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4435
    if ( centrep )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4436
	    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4437
        TBuf8<256> temp;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4438
		TInt err = centrep->Get( KAMDownloadPredefinedNode, temp );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4439
    	if (centrep->Get( KAMDownloadPredefinedNode, temp )==KErrNone && temp.Length() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4440
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4441
			temp.Trim();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4442
			aNode.Copy(temp);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4443
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4444
		CleanupStack::PopAndDestroy(centrep);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4445
	    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4446
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4447
// -------------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4448
// CAmAdapter::DirectRemoveMappingL( const TDesC8 &aURI )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4449
// -------------------------------------------------------------------------------------        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4450
TInt CSCOMOAdapter::DirectRemoveMappingL( const TDesC8 &aURI )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4451
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4452
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4453
#ifdef __TARM_SYMBIAN_CONVERGENCY
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4454
    TRAPD( err, Callback().SetMappingL( aURI, aLUID ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4455
#else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4456
    TInt err( iDbSession.RemoveMappingInfoL( KAMAdapterImplUid, aURI, ETrue ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4457
#endif
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4458
    return err;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4459
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4460
TInt CSCOMOAdapter::GetAdapterValue()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4461
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4462
    TInt adapterValue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4463
    CRepository *repository = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4464
    TRAPD( err, repository = CRepository::NewL ( KCRUidPrivateApplicationManagementKeys ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4465
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4466
    RDEBUG_2("error reading cenrep %d", err);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4467
    if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4468
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4469
        err = repository->Get(KAMAdapterValue, adapterValue);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4470
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4471
    delete repository;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4472
    repository = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4473
    return adapterValue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4474
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4475
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4476
void CSCOMOAdapter::SetAdapterValue(TInt aAdapterValue)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4477
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4478
    CRepository *repository = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4479
    TRAPD( err, repository = CRepository::NewL ( KCRUidPrivateApplicationManagementKeys ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4480
    if (err == KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4481
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4482
        err = repository->Set(KAMAdapterValue, aAdapterValue);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4483
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4484
    delete repository;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4485
    repository = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4486
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4487
TBool CSCOMOAdapter::RecognizeMimeType(const TDesC8& aMimeType)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4488
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4489
    TBool isSupportedMimeType = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4490
    if ((aMimeType == KSisxMimeType )||(aMimeType == KSisMimeType )||(aMimeType == KPipMimeType )||
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4491
            (aMimeType == KJadMIMEType )||(aMimeType == KJarMIMEType )||(aMimeType == KJavaMIMEType ))
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4492
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4493
        isSupportedMimeType = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4494
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4495
    return isSupportedMimeType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4496
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4497
// End of File
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  4498